Pages
@@ -929,4 +929,3 @@
Ruby Gems Used in RDoc 6.4.0.
Based on Darkfish by Michael Granger.
-
diff --git a/doc/js/search_index.js b/doc/js/search_index.js
index 09af9a3..5a12595 100644
--- a/doc/js/search_index.js
+++ b/doc/js/search_index.js
@@ -1 +1 @@
-var search_data = {"index":{"searchIndex":["api","accumulatefilteredsegmentstask","compressiontask","compressiontestassessmenttask","compressiontestevaltask","compressiontesttask","cursor","displayresultstask","exceptionagent","fileloadertask","fileobject","filtersegmentstask","finalreporttask","flowbots","apierror","agenterror","batchprocessor","cli","configurationerror","exceptionagent","exceptionhandler","filediscovery","fileloader","filenotfounderror","flowboterror","grammarprocessor","nlpprocessor","task","tasknotfounderror","textprocessingworkflow","textprocessor","textsegmentprocessor","texttaggerprocessor","texttokenizeprocessor","topicmodelprocessor","topicmodeltrainerworkflow","topicmodeltrainerworkflowtest","unifiedfileprocessingpipeline","workflowerror","workflows","flowiseapiclient","inputretrieval","jongleur","workertask","lemma","llmanalysistask","loadfileobjecttask","loadtextfilestask","logging","markdownyaml","document0","yamlfrontmatter0","yamlfrontmatter1","markdownyamlparser","microagenttask","monadicerror","nlpanalysistask","object","preprocessfileobjecttask","redisconnection","rediskeys","runrubyteststask","segment","sublayer","actions","runtestcommandaction","speechtotextaction","texttospeechaction","writefileaction","tty","markdown","converter","promptx","task","textsegmenttask","texttaggertask","texttokenizetask","tokenizesegmentstask","topic","topicmodelingtask","traintopicmodeltask","ui","box","scrollablebox","word","workflowagent","workfloworchestrator","_nt_document()","_nt_markdown_content()","_nt_newline()","_nt_yaml_front_matter()","add_agent()","add_lemma()","add_lemmas()","add_lemmas_to_textfile()","add_segment()","add_segments()","add_topics()","add_word()","add_words()","add_words_to_segment()","after_delete()","after_save()","analyze_transitivity()","call()","call()","call()","call()","classify_file()","clean_segments()","clean_segments_for_modeling()","clean_segments_for_modeling()","cleanup()","comparison_box()","complete()","completed()","configure_logger_for()","convert_p()","create_doc()","create_new_model()","create_or_fetch_file_object()","create_scrollable_box()","create_with_timestamp()","current_batch()","define_workflow()","determine_preprocessing_method()","discover_files()","discover_files()","display_boxes()","display_filtered_segments()","display_results()","display_workflows()","duration()","ensure_model_exists()","eval_result_box()","exception_box()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","exit_on_failure?()","extract_main_topics()","extract_markdown_content()","extract_metadata()","extract_pdf_metadata()","extract_relevant_files()","extract_text()","extract_text_from_pdf()","extract_text_json()","extract_workflow_description()","extract_yaml_front_matter()","fail()","failed()","fallback_exception_report()","fetch_unprocessed_file_ids()","file_count()","file_types_pattern()","filter_segment_words()","filter_segment_words()","filter_segments()","find_or_create_by_path()","flush_redis_cache()","flush_redis_cache()","footer()","format_analysis()","format_exception()","format_exception_report()","format_file_info()","format_nlp_result()","format_output()","generate_analysis_prompt()","generate_exception_prompt()","get()","get_documents()","get_input_for_analysis()","get_object_attributes()","get_object_bucket()","get_object_by_name()","get_object_collections()","get_object_indexed_attributes()","get_object_references()","get_objects()","get_objects_by_collection()","get_objects_by_query()","get_objects_by_reference()","get_objects_by_regex()","get_workflows()","handle_exception()","handle_response()","header()","identify_speech_acts()","in_progress()","infer_topics()","info()","info_box()","initialize()","latest()","list_and_select()","load_components()","load_engtagger()","load_existing_model()","load_file_structure()","load_grammar()","load_model()","load_or_create_model()","load_state()","load_tasks()","load_workflows()","log_exception()","log_level()","logger()","logger_for()","main()","main_menu()","markdown_content()","multi_column_box()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","newline1()","newline2()","notify_exception()","parse()","parse_pdf()","pending()","perform_additional_tasks()","pos()","predict()","preprocess_file()","preprocess_json()","preprocess_markdown_yaml()","preprocess_pdf()","preprocess_plain_text()","print_boxes()","print_navigation_info()","process()","process()","process()","process()","process()","process()","process()","process_batch()","process_batch()","process_batch()","process_batch()","process_exception()","process_exception()","process_file()","process_files()","process_files()","process_single_file()","process_single_file()","process_text()","prompt()","prompt_for_file()","prompt_for_folder()","prompt_for_folder()","prompt_for_folder()","readline()","retrieve_file_metadata()","retrieve_file_object()","retrieve_file_path()","retrieve_file_path()","retrieve_filtered_words()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_nlp_result()","retrieve_segment_texts()","retrieve_segments()","retrieve_word_texts()","retrieve_word_texts()","retrieve_words()","retrieve_words()","root()","run()","run()","run()","run()","run_workflow()","save_model()","save_state()","say()","segment_array()","segment_string()","select_workflow()","set()","setup_redis()","setup_workflow()","setup_workflow()","shutdown()","side_by_side_boxes()","spinner()","splat_sort()","stop_running_workflows()","store_fileobject_id()","store_analysis_result()","store_exception_report()","store_file_data()","store_file_object_id()","store_preprocessed_data()","store_result()","store_result()","store_segments()","store_textfile_id()","store_topic_result()","store_topics()","tokenize_array()","tokenize_string()","train_model()","train_topic_model()","train_topic_model()","train_topic_model()","update_file_object()","update_segment_with_nlp_data()","update_state()","upsert_document()","version()","workflows()","write_markdown()","write_markdown_report()","write_markdown_report()","yaml_front_matter()","license","readme"],"longSearchIndex":["api","accumulatefilteredsegmentstask","compressiontask","compressiontestassessmenttask","compressiontestevaltask","compressiontesttask","cursor","displayresultstask","exceptionagent","fileloadertask","fileobject","filtersegmentstask","finalreporttask","flowbots","flowbots::apierror","flowbots::agenterror","flowbots::batchprocessor","flowbots::cli","flowbots::configurationerror","flowbots::exceptionagent","flowbots::exceptionhandler","flowbots::filediscovery","flowbots::fileloader","flowbots::filenotfounderror","flowbots::flowboterror","flowbots::grammarprocessor","flowbots::nlpprocessor","flowbots::task","flowbots::tasknotfounderror","flowbots::textprocessingworkflow","flowbots::textprocessor","flowbots::textsegmentprocessor","flowbots::texttaggerprocessor","flowbots::texttokenizeprocessor","flowbots::topicmodelprocessor","flowbots::topicmodeltrainerworkflow","flowbots::topicmodeltrainerworkflowtest","flowbots::unifiedfileprocessingpipeline","flowbots::workflowerror","flowbots::workflows","flowiseapiclient","inputretrieval","jongleur","jongleur::workertask","lemma","llmanalysistask","loadfileobjecttask","loadtextfilestask","logging","markdownyaml","markdownyaml::document0","markdownyaml::yamlfrontmatter0","markdownyaml::yamlfrontmatter1","markdownyamlparser","microagenttask","monadicerror","nlpanalysistask","object","preprocessfileobjecttask","redisconnection","rediskeys","runrubyteststask","segment","sublayer","sublayer::actions","sublayer::actions::runtestcommandaction","sublayer::actions::speechtotextaction","sublayer::actions::texttospeechaction","sublayer::actions::writefileaction","tty","tty::markdown","tty::markdown::converter","tty::promptx","task","textsegmenttask","texttaggertask","texttokenizetask","tokenizesegmentstask","topic","topicmodelingtask","traintopicmodeltask","ui","ui::box","ui::scrollablebox","word","workflowagent","workfloworchestrator","markdownyaml#_nt_document()","markdownyaml#_nt_markdown_content()","markdownyaml#_nt_newline()","markdownyaml#_nt_yaml_front_matter()","workfloworchestrator#add_agent()","fileobject#add_lemma()","fileobject#add_lemmas()","nlpanalysistask#add_lemmas_to_textfile()","fileobject#add_segment()","fileobject#add_segments()","fileobject#add_topics()","segment#add_word()","segment#add_words()","nlpanalysistask#add_words_to_segment()","fileobject#after_delete()","fileobject#after_save()","flowbots::texttaggerprocessor#analyze_transitivity()","sublayer::actions::runtestcommandaction#call()","sublayer::actions::speechtotextaction#call()","sublayer::actions::texttospeechaction#call()","sublayer::actions::writefileaction#call()","flowbots::fileloader#classify_file()","accumulatefilteredsegmentstask#clean_segments()","flowbots::topicmodeltrainerworkflow#clean_segments_for_modeling()","flowbots::topicmodeltrainerworkflowtest#clean_segments_for_modeling()","workfloworchestrator#cleanup()","ui::box#comparison_box()","task#complete()","task::completed()","logging::configure_logger_for()","tty::markdown::converter#convert_p()","flowbots::nlpprocessor#create_doc()","flowbots::topicmodelprocessor#create_new_model()","flowbots::textprocessingworkflow#create_or_fetch_file_object()","ui::scrollablebox::create_scrollable_box()","task::create_with_timestamp()","fileobject::current_batch()","workfloworchestrator#define_workflow()","preprocessfileobjecttask#determine_preprocessing_method()","flowbots::batchprocessor#discover_files()","flowbots::filediscovery::discover_files()","ui::scrollablebox::display_boxes()","filtersegmentstask#display_filtered_segments()","displayresultstask#display_results()","flowbots::workflows#display_workflows()","task#duration()","flowbots::topicmodelprocessor#ensure_model_exists()","ui::box#eval_result_box()","ui::box#exception_box()","accumulatefilteredsegmentstask#execute()","compressiontask#execute()","compressiontestassessmenttask#execute()","compressiontestevaltask#execute()","compressiontesttask#execute()","displayresultstask#execute()","fileloadertask#execute()","filtersegmentstask#execute()","finalreporttask#execute()","flowbots::task#execute()","llmanalysistask#execute()","loadfileobjecttask#execute()","loadtextfilestask#execute()","microagenttask#execute()","nlpanalysistask#execute()","preprocessfileobjecttask#execute()","runrubyteststask#execute()","task#execute()","textsegmenttask#execute()","texttaggertask#execute()","texttokenizetask#execute()","tokenizesegmentstask#execute()","topicmodelingtask#execute()","traintopicmodeltask#execute()","flowbots::cli::exit_on_failure?()","flowbots::texttaggerprocessor#extract_main_topics()","flowbots::grammarprocessor#extract_markdown_content()","preprocessfileobjecttask#extract_metadata()","preprocessfileobjecttask#extract_pdf_metadata()","flowbots::exceptionagent#extract_relevant_files()","flowbots::fileloader#extract_text()","preprocessfileobjecttask#extract_text_from_pdf()","flowbots::fileloader#extract_text_json()","flowbots::workflows#extract_workflow_description()","flowbots::grammarprocessor#extract_yaml_front_matter()","task#fail()","task::failed()","flowbots::exceptionagent#fallback_exception_report()","flowbots::textprocessingworkflow#fetch_unprocessed_file_ids()","flowbots::filediscovery::file_count()","flowbots::batchprocessor#file_types_pattern()","filtersegmentstask#filter_segment_words()","topicmodelingtask#filter_segment_words()","filtersegmentstask#filter_segments()","fileobject::find_or_create_by_path()","flowbots::topicmodeltrainerworkflowtest#flush_redis_cache()","flowbots::unifiedfileprocessingpipeline#flush_redis_cache()","ui#footer()","displayresultstask#format_analysis()","exceptionagent#format_exception()","flowbots::exceptionagent#format_exception_report()","displayresultstask#format_file_info()","llmanalysistask#format_nlp_result()","object#format_output()","llmanalysistask#generate_analysis_prompt()","flowbots::exceptionagent#generate_exception_prompt()","rediskeys::get()","topicmodelingtask#get_documents()","microagenttask#get_input_for_analysis()","object#get_object_attributes()","object#get_object_bucket()","object#get_object_by_name()","object#get_object_collections()","object#get_object_indexed_attributes()","object#get_object_references()","object#get_objects()","object#get_objects_by_collection()","object#get_objects_by_query()","object#get_objects_by_reference()","object#get_objects_by_regex()","flowbots::workflows#get_workflows()","flowbots::exceptionhandler::handle_exception()","flowiseapiclient#handle_response()","ui#header()","flowbots::texttaggerprocessor#identify_speech_acts()","task::in_progress()","flowbots::topicmodelprocessor#infer_topics()","ui#info()","ui::box#info_box()","flowbots::initialize()","fileobject::latest()","flowbots::workflows#list_and_select()","flowbots::load_components()","flowbots::texttaggerprocessor#load_engtagger()","flowbots::topicmodelprocessor#load_existing_model()","flowbots::exceptionagent#load_file_structure()","flowbots::grammarprocessor#load_grammar()","flowbots::nlpprocessor#load_model()","flowbots::topicmodelprocessor#load_or_create_model()","workflowagent#load_state()","flowbots::task::load_tasks()","flowbots::workflows::load_workflows()","flowbots::exceptionhandler::log_exception()","logging::log_level()","logging#logger()","logging::logger_for()","object#main()","ui#main_menu()","markdownyaml::document0#markdown_content()","ui::box#multi_column_box()","exceptionagent::new()","flowbots::batchprocessor::new()","flowbots::exceptionagent::new()","flowbots::fileloader::new()","flowbots::flowboterror::new()","flowbots::grammarprocessor::new()","flowbots::nlpprocessor::new()","flowbots::task::new()","flowbots::textprocessingworkflow::new()","flowbots::textprocessor::new()","flowbots::textsegmentprocessor::new()","flowbots::texttaggerprocessor::new()","flowbots::texttokenizeprocessor::new()","flowbots::topicmodelprocessor::new()","flowbots::topicmodeltrainerworkflow::new()","flowbots::topicmodeltrainerworkflowtest::new()","flowbots::unifiedfileprocessingpipeline::new()","flowbots::workflows::new()","flowiseapiclient::new()","microagenttask::new()","redisconnection::new()","sublayer::actions::runtestcommandaction::new()","sublayer::actions::speechtotextaction::new()","sublayer::actions::texttospeechaction::new()","sublayer::actions::writefileaction::new()","tty::promptx::new()","topicmodelingtask::new()","workflowagent::new()","workfloworchestrator::new()","markdownyaml::yamlfrontmatter1#newline1()","markdownyaml::yamlfrontmatter1#newline2()","flowbots::exceptionhandler::notify_exception()","flowbots::grammarprocessor#parse()","flowbots::fileloader#parse_pdf()","task::pending()","flowbots::textprocessingworkflow#perform_additional_tasks()","cursor::pos()","flowiseapiclient#predict()","preprocessfileobjecttask#preprocess_file()","preprocessfileobjecttask#preprocess_json()","preprocessfileobjecttask#preprocess_markdown_yaml()","preprocessfileobjecttask#preprocess_pdf()","preprocessfileobjecttask#preprocess_plain_text()","ui::scrollablebox::print_boxes()","ui::scrollablebox::print_navigation_info()","flowbots::nlpprocessor#process()","flowbots::textprocessor#process()","flowbots::textsegmentprocessor#process()","flowbots::texttaggerprocessor#process()","flowbots::texttokenizeprocessor#process()","flowbots::unifiedfileprocessingpipeline#process()","workflowagent#process()","flowbots::batchprocessor#process_batch()","flowbots::textprocessingworkflow#process_batch()","flowbots::topicmodeltrainerworkflowtest#process_batch()","flowbots::unifiedfileprocessingpipeline#process_batch()","exceptionagent#process_exception()","flowbots::exceptionagent#process_exception()","flowbots::unifiedfileprocessingpipeline#process_file()","flowbots::batchprocessor#process_files()","flowbots::topicmodeltrainerworkflowtest#process_files()","flowbots::textprocessingworkflow#process_single_file()","flowbots::unifiedfileprocessingpipeline#process_single_file()","flowbots::cli#process_text()","ui#prompt()","flowbots::textprocessingworkflow#prompt_for_file()","flowbots::batchprocessor#prompt_for_folder()","flowbots::topicmodeltrainerworkflow#prompt_for_folder()","flowbots::topicmodeltrainerworkflowtest#prompt_for_folder()","tty::promptx#readline()","llmanalysistask#retrieve_file_metadata()","inputretrieval#retrieve_file_object()","inputretrieval#retrieve_file_path()","loadfileobjecttask#retrieve_file_path()","topicmodelingtask#retrieve_filtered_words()","accumulatefilteredsegmentstask#retrieve_input()","displayresultstask#retrieve_input()","fileloadertask#retrieve_input()","filtersegmentstask#retrieve_input()","inputretrieval#retrieve_input()","llmanalysistask#retrieve_input()","loadtextfilestask#retrieve_input()","nlpanalysistask#retrieve_input()","task#retrieve_input()","textsegmenttask#retrieve_input()","texttaggertask#retrieve_input()","tokenizesegmentstask#retrieve_input()","topicmodelingtask#retrieve_input()","llmanalysistask#retrieve_nlp_result()","fileobject#retrieve_segment_texts()","fileobject#retrieve_segments()","fileobject#retrieve_word_texts()","segment#retrieve_word_texts()","fileobject#retrieve_words()","segment#retrieve_words()","markdownyaml#root()","flowbots::textprocessingworkflow#run()","flowbots::topicmodeltrainerworkflow#run()","flowbots::topicmodeltrainerworkflowtest#run()","flowbots::workflows#run()","workfloworchestrator#run_workflow()","flowbots::topicmodelprocessor#save_model()","workflowagent#save_state()","ui#say()","flowbots::textsegmentprocessor#segment_array()","flowbots::textsegmentprocessor#segment_string()","flowbots::workflows#select_workflow()","rediskeys::set()","flowbots::setup_redis()","flowbots::topicmodeltrainerworkflowtest#setup_workflow()","flowbots::unifiedfileprocessingpipeline#setup_workflow()","flowbots::shutdown()","ui::scrollablebox#side_by_side_boxes()","ui#spinner()","api#splat_sort()","flowbots::stop_running_workflows()","fileloadertask#store_fileobject_id()","llmanalysistask#store_analysis_result()","exceptionagent#store_exception_report()","flowbots::fileloader#store_file_data()","loadfileobjecttask#store_file_object_id()","preprocessfileobjecttask#store_preprocessed_data()","microagenttask#store_result()","texttaggertask#store_result()","textsegmenttask#store_segments()","loadtextfilestask#store_textfile_id()","topicmodelingtask#store_topic_result()","topicmodelingtask#store_topics()","flowbots::texttokenizeprocessor#tokenize_array()","flowbots::texttokenizeprocessor#tokenize_string()","flowbots::topicmodelprocessor#train_model()","flowbots::cli#train_topic_model()","flowbots::topicmodeltrainerworkflow#train_topic_model()","flowbots::topicmodeltrainerworkflowtest#train_topic_model()","accumulatefilteredsegmentstask#update_file_object()","nlpanalysistask#update_segment_with_nlp_data()","workflowagent#update_state()","flowiseapiclient#upsert_document()","flowbots::cli#version()","flowbots::cli#workflows()","llmanalysistask#write_markdown()","flowbots::exceptionagent#write_markdown_report()","llmanalysistask#write_markdown_report()","markdownyaml::document0#yaml_front_matter()","",""],"info":[["API","","API.html","","
… (Ohm model definitions from OhmModels.rb) …\n"],["AccumulateFilteredSegmentsTask","","AccumulateFilteredSegmentsTask.html","","
Task to accumulate filtered segments from all processed files.\n"],["CompressionTask","","CompressionTask.html","","
This task compresses a prompt using a WorkflowAgent.\n"],["CompressionTestAssessmentTask","","CompressionTestAssessmentTask.html","","
This task assesses a compression test evaluation using a WorkflowAgent.\n"],["CompressionTestEvalTask","","CompressionTestEvalTask.html","","
This task evaluates a compression test design using a WorkflowAgent.\n"],["CompressionTestTask","","CompressionTestTask.html","","
This task designs a test for a compressed prompt using a WorkflowAgent.\n"],["Cursor","","Cursor.html","",""],["DisplayResultsTask","","DisplayResultsTask.html","","
This task displays the results of the text processing workflow.\n"],["ExceptionAgent","","ExceptionAgent.html","",""],["FileLoaderTask","","FileLoaderTask.html","","
This task loads a text file and stores its ID in Redis.\n"],["FileObject","","FileObject.html","",""],["FilterSegmentsTask","","FilterSegmentsTask.html","","
lib/tasks/filter_segments_task.rb\n"],["FinalReportTask","","FinalReportTask.html","","
This task generates a final report using a WorkflowAgent.\n"],["Flowbots","","Flowbots.html","","
Module for Flowbots application.\n"],["Flowbots::APIError","","Flowbots/APIError.html","","
Error raised when there is a problem with an API call.\n"],["Flowbots::AgentError","","Flowbots/AgentError.html","","
Error raised when there is a problem with an agent.\n"],["Flowbots::BatchProcessor","","Flowbots/BatchProcessor.html","","
The BatchProcessor
class provides a mechanism for processing files in batches.\nIt is particularly useful ...\n"],["Flowbots::CLI","","Flowbots/CLI.html","","
This class provides a command-line interface (CLI) for interacting with the Flowbots application.\n"],["Flowbots::ConfigurationError","","Flowbots/ConfigurationError.html","","
Error raised when there is a problem with the configuration.\n"],["Flowbots::ExceptionAgent","","Flowbots/ExceptionAgent.html","","
This class handles exceptions in the Flowbots application.\n"],["Flowbots::ExceptionHandler","","Flowbots/ExceptionHandler.html","","
This class handles exceptions in the Flowbots application.\n"],["Flowbots::FileDiscovery","","Flowbots/FileDiscovery.html","","
This module provides file discovery utilities for Flowbots.\n"],["Flowbots::FileLoader","","Flowbots/FileLoader.html","","
This class handles loading and processing text files.\n"],["Flowbots::FileNotFoundError","","Flowbots/FileNotFoundError.html","","
Custom error class for workflow file not found.\n"],["Flowbots::FlowbotError","","Flowbots/FlowbotError.html","","
Base class for all Flowbots errors.\n"],["Flowbots::GrammarProcessor","","Flowbots/GrammarProcessor.html","","
This class handles parsing text using a specified grammar.\n"],["Flowbots::NLPProcessor","","Flowbots/NLPProcessor.html","","
This class provides functionality for performing natural language processing (NLP) analysis on text. …\n"],["Flowbots::Task","","Flowbots/Task.html","","
This module encapsulates tasks used in Flowbots workflows.\n"],["Flowbots::TaskNotFoundError","","Flowbots/TaskNotFoundError.html","","
Custom error class for task not found.\n"],["Flowbots::TextProcessingWorkflow","","Flowbots/TextProcessingWorkflow.html","","
This class defines a workflow for processing text files, either individually or in batch mode.\nIt utilizes ...\n"],["Flowbots::TextProcessor","","Flowbots/TextProcessor.html","","
This class provides a base class for text processors in the Flowbots application.\n"],["Flowbots::TextSegmentProcessor","","Flowbots/TextSegmentProcessor.html","","
This class provides functionality for segmenting text into smaller units.\n"],["Flowbots::TextTaggerProcessor","","Flowbots/TextTaggerProcessor.html","","
This class provides functionality for tagging text using the EngTagger library.\n"],["Flowbots::TextTokenizeProcessor","","Flowbots/TextTokenizeProcessor.html","","
This class provides functionality for tokenizing text.\n"],["Flowbots::TopicModelProcessor","","Flowbots/TopicModelProcessor.html","","
This class provides functionality for processing text using a topic model.\n"],["Flowbots::TopicModelTrainerWorkflow","","Flowbots/TopicModelTrainerWorkflow.html","","
This class defines a workflow for training a topic model using a collection of text files.\nIt utilizes ...\n"],["Flowbots::TopicModelTrainerWorkflowtest","","Flowbots/TopicModelTrainerWorkflowtest.html","",""],["Flowbots::UnifiedFileProcessingPipeline","","Flowbots/UnifiedFileProcessingPipeline.html","","
This class defines a pipeline for processing files, either individually or in batches.\nIt utilizes a ...\n"],["Flowbots::WorkflowError","","Flowbots/WorkflowError.html","","
Error raised when there is a problem with a workflow.\n"],["Flowbots::Workflows","","Flowbots/Workflows.html","","
This class manages workflows in the Flowbots application.\n"],["FlowiseApiClient","","FlowiseApiClient.html","","
This class provides an interface for interacting with the Flowise API.\n"],["InputRetrieval","","InputRetrieval.html","","
Module for retrieving input data.\n"],["Jongleur","","Jongleur.html","",""],["Jongleur::WorkerTask","","Jongleur/WorkerTask.html","","
Define a Redis connection for Jongleur::WorkerTask\n
Jongleur::WorkerTask is a class that defines a task …\n"],["Lemma","","Lemma.html","",""],["LlmAnalysisTask","","LlmAnalysisTask.html","","
This task performs LLM analysis on a text file using a pre-trained model.\n
This task performs LLM analysis …\n"],["LoadFileObjectTask","","LoadFileObjectTask.html","","
Task to load a FileObject based on a file path stored in Redis.\n"],["LoadTextFilesTask","","LoadTextFilesTask.html","","
Task to load text files and store their IDs in Redis.\n"],["Logging","","Logging.html","",""],["MarkdownYaml","","MarkdownYaml.html","","
Autogenerated from a Treetop grammar. Edits may be lost.\n"],["MarkdownYaml::Document0","","MarkdownYaml/Document0.html","","
The Document node represents the entire document structure.\nIt contains the YAML front matter and the ...\n"],["MarkdownYaml::YamlFrontMatter0","","MarkdownYaml/YamlFrontMatter0.html","","
The YamlFrontMatter node represents the YAML front matter section.\n"],["MarkdownYaml::YamlFrontMatter1","","MarkdownYaml/YamlFrontMatter1.html","","
The YamlFrontMatter node represents the YAML front matter section.\n"],["MarkdownYamlParser","","MarkdownYamlParser.html","","
The MarkdownYamlParser class is responsible for parsing the Markdown YAML grammar.\n"],["MicroAgentTask","","MicroAgentTask.html","",""],["MonadicError","","MonadicError.html","",""],["NlpAnalysisTask","","NlpAnalysisTask.html","","
This task performs natural language processing (NLP) analysis on the segments of a text file.\n"],["Object","","Object.html","",""],["PreprocessFileObjectTask","","PreprocessFileObjectTask.html","","
Task to preprocess a FileObject.\n"],["RedisConnection","","RedisConnection.html","","
Class to manage Redis connection.\n"],["RedisKeys","","RedisKeys.html","","
Module for managing Redis keys used in the Flowbots application.\n"],["RunRubyTestsTask","","RunRubyTestsTask.html","","
This task runs Ruby tests from a file.\n"],["Segment","","Segment.html","",""],["Sublayer","","Sublayer.html","","
blueprints.sublayer.com/blueprints/70562717-70c5-4406-a792-358d169f9f0b\n"],["Sublayer::Actions","","Sublayer/Actions.html","",""],["Sublayer::Actions::RunTestCommandAction","","Sublayer/Actions/RunTestCommandAction.html","",""],["Sublayer::Actions::SpeechToTextAction","","Sublayer/Actions/SpeechToTextAction.html","",""],["Sublayer::Actions::TextToSpeechAction","","Sublayer/Actions/TextToSpeechAction.html","",""],["Sublayer::Actions::WriteFileAction","","Sublayer/Actions/WriteFileAction.html","",""],["TTY","","TTY.html","",""],["TTY::Markdown","","TTY/Markdown.html","",""],["TTY::Markdown::Converter","","TTY/Markdown/Converter.html","","
Converts a Kramdown::Document tree to a terminal friendly output\n"],["TTY::PromptX","","TTY/PromptX.html","",""],["Task","","Task.html","",""],["TextSegmentTask","","TextSegmentTask.html","","
This task segments the text content of a Textfile into smaller units.\n"],["TextTaggerTask","","TextTaggerTask.html","","
This class performs text tagging on a given text.\n"],["TextTokenizeTask","","TextTokenizeTask.html","","
This task tokenizes the segments of a text file.\n"],["TokenizeSegmentsTask","","TokenizeSegmentsTask.html","","
This task tokenizes the segments of a text file.\n"],["Topic","","Topic.html","",""],["TopicModelingTask","","TopicModelingTask.html","","
This task performs topic modeling on a text file using a pre-trained model.\n"],["TrainTopicModelTask","","TrainTopicModelTask.html","","
This task trains a topic model using filtered segments from multiple batches.\n"],["UI","","UI.html","","
This module provides user interface (UI) elements and functions for the Flowbots application.\n
This module …\n"],["UI::Box","","UI/Box.html","","
This module provides methods for creating and displaying boxes in the UI.\n"],["UI::ScrollableBox","","UI/ScrollableBox.html","","
This module provides methods for creating and displaying scrollable boxes in the UI.\n"],["Word","","Word.html","",""],["WorkflowAgent","","WorkflowAgent.html","","
This class represents an agent in a workflow.\nClass representing an individual agent within a workflow ...\n"],["WorkflowOrchestrator","","WorkflowOrchestrator.html","","
Orchestrates the execution of workflows in the Flowbots application.\n
The WorkflowOrchestrator is responsible …\n"],["_nt_document","MarkdownYaml","MarkdownYaml.html#method-i-_nt_document","()","
Parses the document node.\n
@return [Treetop::Runtime::SyntaxNode] The parsed document node.\n"],["_nt_markdown_content","MarkdownYaml","MarkdownYaml.html#method-i-_nt_markdown_content","()","
Parses the Markdown content node.\n
@return [Treetop::Runtime::SyntaxNode] The parsed Markdown content node. …\n"],["_nt_newline","MarkdownYaml","MarkdownYaml.html#method-i-_nt_newline","()","
Parses the newline node.\n
@return [Treetop::Runtime::SyntaxNode] The parsed newline node.\n"],["_nt_yaml_front_matter","MarkdownYaml","MarkdownYaml.html#method-i-_nt_yaml_front_matter","()","
Parses the YAML front matter node.\n
@return [Treetop::Runtime::SyntaxNode] The parsed YAML front matter …\n"],["add_agent","WorkflowOrchestrator","WorkflowOrchestrator.html#method-i-add_agent","(role, cartridge_file, author: \"@b08x\")","
Adds an agent to the orchestrator.\n
@param role [String] The role of the agent in the workflow.\n@param ...\n"],["add_lemma","FileObject","FileObject.html#method-i-add_lemma","(lemma_data)",""],["add_lemmas","FileObject","FileObject.html#method-i-add_lemmas","(lemmas_data)",""],["add_lemmas_to_textfile","NlpAnalysisTask","NlpAnalysisTask.html#method-i-add_lemmas_to_textfile","(textfile, lemma_counts)","
Adds lemmas to a FileObject.\n
Converts the lemma counts hash to an array of lemma data and adds it to the …\n"],["add_segment","FileObject","FileObject.html#method-i-add_segment","(text)",""],["add_segments","FileObject","FileObject.html#method-i-add_segments","(new_segments)",""],["add_topics","FileObject","FileObject.html#method-i-add_topics","(new_topics)",""],["add_word","Segment","Segment.html#method-i-add_word","(word_data)",""],["add_words","Segment","Segment.html#method-i-add_words","(new_words)",""],["add_words_to_segment","NlpAnalysisTask","NlpAnalysisTask.html#method-i-add_words_to_segment","(segment, processed_tokens)","
Adds processed words to a segment.\n
Extracts word information from the processed tokens and adds it to …\n"],["after_delete","FileObject","FileObject.html#method-i-after_delete","()",""],["after_save","FileObject","FileObject.html#method-i-after_save","()",""],["analyze_transitivity","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-i-analyze_transitivity","(text)","
Analyzes the transitivity of sentences in the given text.\n
@param text [String] The text to analyze.\n
@return …\n"],["call","Sublayer::Actions::RunTestCommandAction","Sublayer/Actions/RunTestCommandAction.html#method-i-call","()",""],["call","Sublayer::Actions::SpeechToTextAction","Sublayer/Actions/SpeechToTextAction.html#method-i-call","()",""],["call","Sublayer::Actions::TextToSpeechAction","Sublayer/Actions/TextToSpeechAction.html#method-i-call","()",""],["call","Sublayer::Actions::WriteFileAction","Sublayer/Actions/WriteFileAction.html#method-i-call","()","
Writes the contents to the file in binary mode\n@return [void]\n"],["classify_file","Flowbots::FileLoader","Flowbots/FileLoader.html#method-i-classify_file","(file_path)","
Classifies the file type based on its MIME type.\n
@param file_path [String] The path to the file.\n
@return …\n"],["clean_segments","AccumulateFilteredSegmentsTask","AccumulateFilteredSegmentsTask.html#method-i-clean_segments","(segments)","
Cleans the given segments by removing unwanted segments and words.\n
@param segments [Array<Array<String>>] …\n"],["clean_segments_for_modeling","Flowbots::TopicModelTrainerWorkflow","Flowbots/TopicModelTrainerWorkflow.html#method-i-clean_segments_for_modeling","(segments)","
Cleans the segments for topic modeling by removing unwanted segments and words.\n
@param segments [Array<Array<String>>] …\n"],["clean_segments_for_modeling","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-clean_segments_for_modeling","(segments)",""],["cleanup","WorkflowOrchestrator","WorkflowOrchestrator.html#method-i-cleanup","()","
Performs cleanup operations for the workflow.\n
This method is called after the workflow has finished or …\n"],["comparison_box","UI::Box","UI/Box.html#method-i-comparison_box","(text1, text2, title1: \"Text 1\", title2: \"Text 2\")","
Creates a box containing two texts side-by-side for comparison.\n
@param text1 [String] The first text to …\n"],["complete","Task","Task.html#method-i-complete","(result=nil)",""],["completed","Task","Task.html#method-c-completed","()",""],["configure_logger_for","Logging","Logging.html#method-c-configure_logger_for","(_classname, _methodname)","
Configures a logger for the specified class and method.\n
@param <em>classname [String] The name of …\n"],["convert_p","TTY::Markdown::Converter","TTY/Markdown/Converter.html#method-i-convert_p","(ell, opts)",""],["create_doc","Flowbots::NLPProcessor","Flowbots/NLPProcessor.html#method-i-create_doc","(segment)","
Creates a Spacy::Doc object from the given segment’s tokens.\n
@param segment [Segment] The Segment …\n"],["create_new_model","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-create_new_model","()","
Creates a new topic model with the specified parameters.\n
@return [void]\n"],["create_or_fetch_file_object","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-create_or_fetch_file_object","(file_path)","
Creates or fetches a FileObject for the given file path.\n
@param file_path [String, Hash] The path to the …\n"],["create_scrollable_box","UI::ScrollableBox","UI/ScrollableBox.html#method-c-create_scrollable_box","(text, width, height, title)","
Creates a scrollable box data structure.\n
@param text [String] The text to display in the box.\n@param width ...\n"],["create_with_timestamp","Task","Task.html#method-c-create_with_timestamp","(attributes={})",""],["current_batch","FileObject","FileObject.html#method-c-current_batch","()",""],["define_workflow","WorkflowOrchestrator","WorkflowOrchestrator.html#method-i-define_workflow","(workflow_definition)","
Defines the workflow structure using a task graph.\n
The workflow definition is a hash that outlines the …\n"],["determine_preprocessing_method","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-determine_preprocessing_method","(file_object)","
Determines the preprocessing method based on the file extension.\n
@param file_object [FileObject] The …\n"],["discover_files","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-i-discover_files","()","
Discovers all files within the input folder that match the specified file types.\n
@return [Array<String>] …\n"],["discover_files","Flowbots::FileDiscovery","Flowbots/FileDiscovery.html#method-c-discover_files","(directory)","
Discovers files in the given directory and groups them by type.\n
@param directory [String] The directory …\n"],["display_boxes","UI::ScrollableBox","UI/ScrollableBox.html#method-c-display_boxes","(box1, box2, box_height)","
Displays the scrollable boxes and handles user navigation.\n
@param box1 [Hash] The data for the first box. …\n"],["display_filtered_segments","FilterSegmentsTask","FilterSegmentsTask.html#method-i-display_filtered_segments","(filtered_segments)",""],["display_results","DisplayResultsTask","DisplayResultsTask.html#method-i-display_results","(textfile, analysis_result)","
Displays the results of the text processing workflow.\n
@param textfile [Textfile] The processed Textfile …\n"],["display_workflows","Flowbots::Workflows","Flowbots/Workflows.html#method-i-display_workflows","(workflows)","
Displays a list of available workflows in a table format.\n
@param workflows [Array<Array(String, String …\n"],["duration","Task","Task.html#method-i-duration","()",""],["ensure_model_exists","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-ensure_model_exists","()","
Ensures that the topic model exists, loading or creating it if necessary.\n
@return [void]\n"],["eval_result_box","UI::Box","UI/Box.html#method-i-eval_result_box","(result, title: \"Evaluation Result\")","
Creates a box displaying the evaluation result with a success style.\n
@param result [String] The evaluation …\n"],["exception_box","UI::Box","UI/Box.html#method-i-exception_box","(message)","
Creates a box displaying an exception message with an error style.\n
@param message [String] The exception …\n"],["execute","AccumulateFilteredSegmentsTask","AccumulateFilteredSegmentsTask.html#method-i-execute","()","
Executes the task to accumulate and clean filtered segments.\n
Retrieves filtered segments from Redis, cleans …\n"],["execute","CompressionTask","CompressionTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","CompressionTestAssessmentTask","CompressionTestAssessmentTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","CompressionTestEvalTask","CompressionTestEvalTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","CompressionTestTask","CompressionTestTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","DisplayResultsTask","DisplayResultsTask.html#method-i-execute","()","
Executes the task to display the results of the text processing workflow.\n
Retrieves the processed Textfile …\n"],["execute","FileLoaderTask","FileLoaderTask.html#method-i-execute","()","
Executes the task to load a FileObject and store its ID in Redis.\n
Retrieves the input file path, processes …\n"],["execute","FilterSegmentsTask","FilterSegmentsTask.html#method-i-execute","()",""],["execute","FinalReportTask","FinalReportTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","Flowbots::Task","Flowbots/Task.html#method-i-execute","()","
Executes the task.\n
This method must be implemented in subclasses.\n
@return [void]\n@raise [NotImplementedError] ...\n"],["execute","LlmAnalysisTask","LlmAnalysisTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n"],["execute","LoadFileObjectTask","LoadFileObjectTask.html#method-i-execute","()","
Executes the task to load a FileObject.\n
Retrieves the file path from Redis, finds or creates a FileObject …\n"],["execute","LoadTextFilesTask","LoadTextFilesTask.html#method-i-execute","()","
Executes the task to load a text file using the Flowbots::FileLoader.\n
Retrieves the file path from Redis …\n"],["execute","MicroAgentTask","MicroAgentTask.html#method-i-execute","()",""],["execute","NlpAnalysisTask","NlpAnalysisTask.html#method-i-execute","()","
Executes the task.\n
Retrieves the FileObject from Redis, processes each segment using the NLPProcessor …\n"],["execute","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-execute","()","
Executes the task to preprocess a FileObject.\n
Retrieves the FileObject from Redis, determines the appropriate …\n"],["execute","RunRubyTestsTask","RunRubyTestsTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","Task","Task.html#method-i-execute","()",""],["execute","TextSegmentTask","TextSegmentTask.html#method-i-execute","()","
Executes the task to segment the text content of a FileObject.\n
Retrieves the FileObject from Redis, extracts …\n"],["execute","TextTaggerTask","TextTaggerTask.html#method-i-execute","()","
Executes the text tagging task.\n
Retrieves the FileObject from Redis, extracts its preprocessed content, …\n"],["execute","TextTokenizeTask","TextTokenizeTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n"],["execute","TokenizeSegmentsTask","TokenizeSegmentsTask.html#method-i-execute","()","
Executes the task to tokenize the segments of a FileObject.\n
Retrieves the FileObject from Redis, tokenizes …\n"],["execute","TopicModelingTask","TopicModelingTask.html#method-i-execute","()",""],["execute","TrainTopicModelTask","TrainTopicModelTask.html#method-i-execute","()","
Executes the task to train a topic model using accumulated filtered segments.\n
Retrieves the current batch …\n"],["exit_on_failure?","Flowbots::CLI","Flowbots/CLI.html#method-c-exit_on_failure-3F","()","
Defines whether the CLI should exit with a non-zero status code when an error occurs.\n
@return [Boolean] …\n"],["extract_main_topics","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-i-extract_main_topics","(text, limit=5)","
Extracts the main topics from the given text.\n
@param text [String] The text to extract topics from.\n@param ...\n"],["extract_markdown_content","Flowbots::GrammarProcessor","Flowbots/GrammarProcessor.html#method-i-extract_markdown_content","(parse_result)","
Extracts the Markdown content from the parse result.\n
@param parse_result [Treetop::Runtime::SyntaxNode] …\n"],["extract_metadata","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-extract_metadata","(yaml_front_matter)","
Extracts metadata from YAML front matter.\n
@param yaml_front_matter [String] The YAML front matter string. …\n"],["extract_pdf_metadata","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-extract_pdf_metadata","(pdf_path)","
Extracts metadata from a PDF file.\n
@param pdf_path [String] The path to the PDF file.\n
@return [Hash] The …\n"],["extract_relevant_files","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-extract_relevant_files","(exception)","
Extracts relevant files from the exception backtrace.\n
@param exception [Exception] The exception object. …\n"],["extract_text","Flowbots::FileLoader","Flowbots/FileLoader.html#method-i-extract_text","(file_type, file_path)","
Extracts the text content from a file based on its type.\n
@param file_type [Symbol] The file type.\n@param ...\n"],["extract_text_from_pdf","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-extract_text_from_pdf","(pdf_path)","
Extracts text content from a PDF file.\n
@param pdf_path [String] The path to the PDF file.\n
@return [String] …\n"],["extract_text_json","Flowbots::FileLoader","Flowbots/FileLoader.html#method-i-extract_text_json","(file_path)",""],["extract_workflow_description","Flowbots::Workflows","Flowbots/Workflows.html#method-i-extract_workflow_description","(file)","
Extracts the description of a workflow from its file.\nThe description is assumed to be the first line ...\n"],["extract_yaml_front_matter","Flowbots::GrammarProcessor","Flowbots/GrammarProcessor.html#method-i-extract_yaml_front_matter","(parse_result)","
Extracts the YAML front matter from the parse result.\n
@param parse_result [Treetop::Runtime::SyntaxNode] …\n"],["fail","Task","Task.html#method-i-fail","(error_message)",""],["failed","Task","Task.html#method-c-failed","()",""],["fallback_exception_report","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-fallback_exception_report","(exception_details)","
Generates a fallback exception report if the agent fails to generate a report.\n
@param exception_details …\n"],["fetch_unprocessed_file_ids","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-fetch_unprocessed_file_ids","()","
Fetches the IDs of unprocessed files.\n
@return [Array<Integer>] An array of unprocessed file IDs …\n"],["file_count","Flowbots::FileDiscovery","Flowbots/FileDiscovery.html#method-c-file_count","(files)","
Counts the number of files for each file type.\n
@param files [Hash] A hash where keys are file types and …\n"],["file_types_pattern","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-i-file_types_pattern","()","
Constructs a regular expression pattern from the file_types
array.\n
@return [String] The regular expression …\n"],["filter_segment_words","FilterSegmentsTask","FilterSegmentsTask.html#method-i-filter_segment_words","(segment)",""],["filter_segment_words","TopicModelingTask","TopicModelingTask.html#method-i-filter_segment_words","(segment)","
Filters words from a segment based on their POS tags.\n
@param segment [Segment] The segment to filter words …\n"],["filter_segments","FilterSegmentsTask","FilterSegmentsTask.html#method-i-filter_segments","(file_object)",""],["find_or_create_by_path","FileObject","FileObject.html#method-c-find_or_create_by_path","(file_path, attributes={})",""],["flush_redis_cache","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-flush_redis_cache","()",""],["flush_redis_cache","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-flush_redis_cache","()","
Flushes the Redis cache.\n
@return [void]\n"],["footer","UI","UI.html#method-i-footer","()","
Displays the Flowbots footer in a framed box.\n
@return [void]\n"],["format_analysis","DisplayResultsTask","DisplayResultsTask.html#method-i-format_analysis","(analysis_result)","
Formats the analysis results for display.\n
@param analysis_result [String, Hash] The LLM analysis results. …\n"],["format_exception","ExceptionAgent","ExceptionAgent.html#method-i-format_exception","(exception)",""],["format_exception_report","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-format_exception_report","(agent_response, exception_details)","
Formats the exception report based on the agent’s response.\n
@param agent_response [String] The response …\n"],["format_file_info","DisplayResultsTask","DisplayResultsTask.html#method-i-format_file_info","(textfile)","
Formats the file information for display.\n
@param textfile [Textfile] The processed Textfile object.\n
@return …\n"],["format_nlp_result","LlmAnalysisTask","LlmAnalysisTask.html#method-i-format_nlp_result","(nlp_result)","
Formats the NLP results for display in the prompt.\n
@param nlp_result [Array] The NLP results for the segments …\n"],["format_output","Object","Object.html#method-i-format_output","(objects)",""],["generate_analysis_prompt","LlmAnalysisTask","LlmAnalysisTask.html#method-i-generate_analysis_prompt","(textfile, content, metadata, nlp_result)","\n
Please structure your response in a clear, concise manner. Thank you!
\n
PROMPT\nend\n"],["generate_exception_prompt","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-generate_exception_prompt","(exception_details)","
Generates a prompt for the exception handler agent.\n
@param exception_details [Hash] A hash containing …\n"],["get","RedisKeys","RedisKeys.html#method-c-get","(key)","
Retrieves the value associated with the given key from Redis.\n
@param key [String] The Redis key.\n@return ...\n"],["get_documents","TopicModelingTask","TopicModelingTask.html#method-i-get_documents","()",""],["get_input_for_analysis","MicroAgentTask","MicroAgentTask.html#method-i-get_input_for_analysis","()",""],["get_object_attributes","Object","Object.html#method-i-get_object_attributes","(object_bucket)",""],["get_object_bucket","Object","Object.html#method-i-get_object_bucket","(object_bucket)",""],["get_object_by_name","Object","Object.html#method-i-get_object_by_name","(object_bucket, object_name)",""],["get_object_collections","Object","Object.html#method-i-get_object_collections","(object_bucket)",""],["get_object_indexed_attributes","Object","Object.html#method-i-get_object_indexed_attributes","(object_bucket)",""],["get_object_references","Object","Object.html#method-i-get_object_references","(object_bucket)",""],["get_objects","Object","Object.html#method-i-get_objects","(object_bucket, object_name, query=nil)",""],["get_objects_by_collection","Object","Object.html#method-i-get_objects_by_collection","(object_bucket, collection_name)",""],["get_objects_by_query","Object","Object.html#method-i-get_objects_by_query","(object_bucket, query)",""],["get_objects_by_reference","Object","Object.html#method-i-get_objects_by_reference","(object_bucket, reference_name, reference_value)",""],["get_objects_by_regex","Object","Object.html#method-i-get_objects_by_regex","(object_bucket, regex)",""],["get_workflows","Flowbots::Workflows","Flowbots/Workflows.html#method-i-get_workflows","()","
Retrieves a list of available workflows from the WORKFLOW_DIR directory.\n
@return [Array<Array(String …\n"],["handle_exception","Flowbots::ExceptionHandler","Flowbots/ExceptionHandler.html#method-c-handle_exception","(classname=nil, exception)","
Handles an exception by generating a report and notifying relevant parties.\n
@param classname [String] …\n"],["handle_response","FlowiseApiClient","FlowiseApiClient.html#method-i-handle_response","(response)","
Handles the response from the Flowise API.\n
@param response [Faraday::Response] The response from the …\n"],["header","UI","UI.html#method-i-header","()","
Displays the Flowbots header in a framed box.\n
@return [void]\n"],["identify_speech_acts","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-i-identify_speech_acts","(text)","
Identifies the speech acts in the given text.\n
@param text [String] The text to analyze.\n
@return [Array] …\n"],["in_progress","Task","Task.html#method-c-in_progress","()",""],["infer_topics","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-infer_topics","(document)","
Infers the topics for a given document.\n
@param document [String] The document to infer topics for.\n
@return …\n"],["info","UI","UI.html#method-i-info","(text)","
Displays an information message in a framed box.\n
@param text [String] The text to display in the info …\n"],["info_box","UI::Box","UI/Box.html#method-i-info_box","(message, title: \"Info\")","
Creates a box displaying an information message with an info style.\n
@param message [String] The information …\n"],["initialize","Flowbots","Flowbots.html#method-c-initialize","()","
Initializes the Flowbots application.\n
@return [void]\n"],["latest","FileObject","FileObject.html#method-c-latest","(limit=nil)",""],["list_and_select","Flowbots::Workflows","Flowbots/Workflows.html#method-i-list_and_select","()","
Lists available workflows and allows the user to select one.\n
@return [String, nil] The name of the selected …\n"],["load_components","Flowbots","Flowbots.html#method-c-load_components","()","
Loads the necessary components for the application.\n
@return [void]\n"],["load_engtagger","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-i-load_engtagger","()","
Loads the EngTagger library.\n
@return [void]\n"],["load_existing_model","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-load_existing_model","()","
Loads an existing topic model from the specified path.\n
@return [void]\n"],["load_file_structure","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-load_file_structure","()","
Loads the file structure from the flowbots.json file.\n
@return [Hash] The file structure.\n"],["load_grammar","Flowbots::GrammarProcessor","Flowbots/GrammarProcessor.html#method-i-load_grammar","()","
Loads the grammar file and creates a parser instance.\n
@return [void]\n"],["load_model","Flowbots::NLPProcessor","Flowbots/NLPProcessor.html#method-i-load_model","()","
Loads the NLP model from the specified environment variable.\n
@return [void]\n"],["load_or_create_model","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-load_or_create_model","()","
Loads an existing topic model or creates a new one if it doesn’t exist.\n
@return [void]\n"],["load_state","WorkflowAgent","WorkflowAgent.html#method-i-load_state","()","
Loads the agent’s state from Redis.\n
@return [void]\n"],["load_tasks","Flowbots::Task","Flowbots/Task.html#method-c-load_tasks","()","
Loads all task files from the TASK_DIR directory.\n
@return [void]\n"],["load_workflows","Flowbots::Workflows","Flowbots/Workflows.html#method-c-load_workflows","()","
Class method to load all workflow files from the WORKFLOW_DIR directory.\nIt also checks for user-defined ...\n"],["log_exception","Flowbots::ExceptionHandler","Flowbots/ExceptionHandler.html#method-c-log_exception","(exception)","
Logs an exception to the application’s logger.\n
@param exception [Exception] The exception object. …\n"],["log_level","Logging","Logging.html#method-c-log_level","()","
Returns the default log level.\n
@return [Integer] The log level.\n"],["logger","Logging","Logging.html#method-i-logger","()","
Returns the logger for the current class and method.\n
@return [Logger] The logger object.\n"],["logger_for","Logging","Logging.html#method-c-logger_for","(classname, methodname)","
Returns the logger for the specified class and method.\n
@param classname [String] The name of the class. …\n"],["main","Object","Object.html#method-i-main","()",""],["main_menu","UI","UI.html#method-i-main_menu","()","
Displays the main menu and prompts the user for a choice.\n
@return [Symbol] The value of the selected choice. …\n"],["markdown_content","MarkdownYaml::Document0","MarkdownYaml/Document0.html#method-i-markdown_content","()","
The Markdown content section of the document.\n
@return [Treetop::Runtime::SyntaxNode] The Markdown content …\n"],["multi_column_box","UI::Box","UI/Box.html#method-i-multi_column_box","(data, titles)","
Creates a box displaying data in multiple columns with headers.\n
@param data [Array<Array>] A 2D …\n"],["new","ExceptionAgent","ExceptionAgent.html#method-c-new","(agent_role, cartridge_file)",""],["new","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-c-new","(input_folder_path, batch_size=10, file_types=nil)","
Initializes a new BatchProcessor
instance.\n
@param input_folder_path [String] The path to the folder containing …\n"],["new","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-c-new","()","
Initializes a new instance of the ExceptionAgent class.\n
@return [void]\n"],["new","Flowbots::FileLoader","Flowbots/FileLoader.html#method-c-new","(file_path)","
Initializes a new FileLoader instance.\n
@param file_path [String] The path to the file to be loaded.\n
@return …\n"],["new","Flowbots::FlowbotError","Flowbots/FlowbotError.html#method-c-new","(message, error_code, details={})","
Initializes a new FlowbotError.\n
@param message [String] The error message.\n@param error_code [String] ...\n"],["new","Flowbots::GrammarProcessor","Flowbots/GrammarProcessor.html#method-c-new","(grammar_name)","
Initializes a new GrammarProcessor instance.\n
@param grammar_name [String] The name of the grammar to use …\n"],["new","Flowbots::NLPProcessor","Flowbots/NLPProcessor.html#method-c-new","()","
Initializes a new NLPProcessor instance.\n
@return [void]\n"],["new","Flowbots::Task","Flowbots/Task.html#method-c-new","(options={})","
Initializes a new Task instance.\n
@param options [Hash] A hash of options for the task.\n
@return [void]\n"],["new","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-c-new","(input_file_path=nil, batch_mode=false)","
Initializes a new TextProcessingWorkflow instance.\n
@param input_file_path [String, nil] The path to the …\n"],["new","Flowbots::TextProcessor","Flowbots/TextProcessor.html#method-c-new","()","
Initializes a new TextProcessor instance.\n
@return [void]\n"],["new","Flowbots::TextSegmentProcessor","Flowbots/TextSegmentProcessor.html#method-c-new","()","
Initializes a new TextSegmentProcessor instance.\n
@return [void]\n"],["new","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-c-new","()","
Initializes a new TextTaggerProcessor instance.\n
@return [void]\n"],["new","Flowbots::TextTokenizeProcessor","Flowbots/TextTokenizeProcessor.html#method-c-new","()","
Initializes a new TextTokenizeProcessor instance.\n
@return [void]\n"],["new","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-c-new","()","
Initializes a new TopicModelProcessor instance.\n
@return [void]\n"],["new","Flowbots::TopicModelTrainerWorkflow","Flowbots/TopicModelTrainerWorkflow.html#method-c-new","(input_folder_path=nil)","
Initializes a new TopicModelTrainerWorkflow instance.\n
@param input_folder_path [String, nil] The path …\n"],["new","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-c-new","(input_folder_path=nil)",""],["new","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-c-new","(input_path, batch_size: 10, file_types: %w[md markdown txt pdf json])","
Initializes a new UnifiedFileProcessingPipeline instance.\n
@param input_path [String] The path to the file …\n"],["new","Flowbots::Workflows","Flowbots/Workflows.html#method-c-new","()","
Initializes a new Workflows instance.\n
@return [void]\n"],["new","FlowiseApiClient","FlowiseApiClient.html#method-c-new","(base_url)","
Initializes a new FlowiseApiClient instance.\n
@param base_url [String] The base URL of the Flowise API …\n"],["new","MicroAgentTask","MicroAgentTask.html#method-c-new","(agent_role, cartridge_file)",""],["new","RedisConnection","RedisConnection.html#method-c-new","()","
Initializes a new RedisConnection instance.\n
@return [void]\n"],["new","Sublayer::Actions::RunTestCommandAction","Sublayer/Actions/RunTestCommandAction.html#method-c-new","(test_command:)",""],["new","Sublayer::Actions::SpeechToTextAction","Sublayer/Actions/SpeechToTextAction.html#method-c-new","(audio_data)",""],["new","Sublayer::Actions::TextToSpeechAction","Sublayer/Actions/TextToSpeechAction.html#method-c-new","(text)",""],["new","Sublayer::Actions::WriteFileAction","Sublayer/Actions/WriteFileAction.html#method-c-new","(file_contents:, file_path:)","
Initializes the action with the contents to write and the target file path\n@param [String] file_contents ...\n"],["new","TTY::PromptX","TTY/PromptX.html#method-c-new","(active_color:, prefix:, history: true)",""],["new","TopicModelingTask","TopicModelingTask.html#method-c-new","(model_params)",""],["new","WorkflowAgent","WorkflowAgent.html#method-c-new","(role, cartridge_file)","
Initializes a new WorkflowAgent instance.\n
@param role [String] The role of the agent.\n@param cartridge_file ...\n"],["new","WorkflowOrchestrator","WorkflowOrchestrator.html#method-c-new","()","
Initializes a new WorkflowOrchestrator instance.\n
@return [void]\n"],["newline1","MarkdownYaml::YamlFrontMatter1","MarkdownYaml/YamlFrontMatter1.html#method-i-newline1","()","
The first newline character after the “—” delimiter.\n
@return [Treetop::Runtime::SyntaxNode] …\n"],["newline2","MarkdownYaml::YamlFrontMatter1","MarkdownYaml/YamlFrontMatter1.html#method-i-newline2","()","
The second newline character after the “—” delimiter.\n
@return [Treetop::Runtime::SyntaxNode] …\n"],["notify_exception","Flowbots::ExceptionHandler","Flowbots/ExceptionHandler.html#method-c-notify_exception","(report)","
Notifies relevant parties about an exception.\n
@param report [String] The formatted exception report.\n
@return …\n"],["parse","Flowbots::GrammarProcessor","Flowbots/GrammarProcessor.html#method-i-parse","(text)","
Parses the given text using the specified grammar.\n
@param text [String] The text to parse.\n
@return [Hash, …\n"],["parse_pdf","Flowbots::FileLoader","Flowbots/FileLoader.html#method-i-parse_pdf","(file_path)","
Parses a PDF file and extracts its text content.\n
@param file_path [String] The path to the PDF file.\n
@return …\n"],["pending","Task","Task.html#method-c-pending","()",""],["perform_additional_tasks","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-perform_additional_tasks","(file_id)","
Performs additional tasks for the given file ID.\n
Defines the workflow for additional tasks and runs the …\n"],["pos","Cursor","Cursor.html#method-c-pos","()",""],["predict","FlowiseApiClient","FlowiseApiClient.html#method-i-predict","(chatflow_id, options={})","
Sends a prediction request to the Flowise API.\n
@param chatflow_id [String] The ID of the chatflow to use …\n"],["preprocess_file","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-preprocess_file","(file_object)","
Preprocesses the file based on its extension.\n
@param file_object [FileObject] The FileObject to preprocess. …\n"],["preprocess_json","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-preprocess_json","(file_object)","
Preprocesses JSON files.\n
@param file_object [FileObject] The FileObject to preprocess.\n
@return [Array( …\n"],["preprocess_markdown_yaml","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-preprocess_markdown_yaml","(file_object)","
Preprocesses Markdown files with YAML front matter.\n
@param file_object [FileObject] The FileObject to …\n"],["preprocess_pdf","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-preprocess_pdf","(file_object)","
Preprocesses PDF files.\n
@param file_object [FileObject] The FileObject to preprocess.\n
@return [Array(String …\n"],["preprocess_plain_text","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-preprocess_plain_text","(file_object)","
Preprocesses plain text files.\n
@param file_object [FileObject] The FileObject to preprocess.\n
@return [Array( …\n"],["print_boxes","UI::ScrollableBox","UI/ScrollableBox.html#method-c-print_boxes","(box1, box2, box_height)","
Prints the scrollable boxes to the console.\n
@param box1 [Hash] The data for the first box.\n@param box2 ...\n"],["print_navigation_info","UI::ScrollableBox","UI/ScrollableBox.html#method-c-print_navigation_info","(box1, box2)","
Prints navigation information for the scrollable boxes.\n
@param box1 [Hash] The data for the first box. …\n"],["process","Flowbots::NLPProcessor","Flowbots/NLPProcessor.html#method-i-process","(segment, options={})","
Processes the given segment using the loaded NLP model and returns a hash of processed tokens.\n
@param …\n"],["process","Flowbots::TextProcessor","Flowbots/TextProcessor.html#method-i-process","(text)","
Processes the given text.\n
This method must be implemented in subclasses.\n
@param text [String] The text …\n"],["process","Flowbots::TextSegmentProcessor","Flowbots/TextSegmentProcessor.html#method-i-process","(text, opts={})","
Segments the given text using the specified options.\n
@param text [String, Array] The text to be segmented. …\n"],["process","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-i-process","(text, options={})","
Processes the given text using the EngTagger library and returns a hash of tagged results.\n
@param text …\n"],["process","Flowbots::TextTokenizeProcessor","Flowbots/TextTokenizeProcessor.html#method-i-process","(text, opts={})","
Tokenizes the given text using the specified options.\n
@param text [String, Array] The text to be tokenized. …\n"],["process","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-process","()","
Processes the file(s) specified in the input path.\n
@return [void]\n"],["process","WorkflowAgent","WorkflowAgent.html#method-i-process","(input)","
Processes the given input using the agent’s cartridge.\n
@param input [String] The input to process. …\n"],["process_batch","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-i-process_batch","(batch_files)","
Processes a single batch of files.\n
@param batch_files [Array<String>] An array of file paths for …\n"],["process_batch","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-process_batch","()","
Processes files in batch mode.\n
Fetches unprocessed file IDs and performs additional tasks for each file. …\n"],["process_batch","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-process_batch","(batch_files)",""],["process_batch","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-process_batch","()","
Processes a batch of files using the batch processor.\n
@return [void]\n"],["process_exception","ExceptionAgent","ExceptionAgent.html#method-i-process_exception","(exception)",""],["process_exception","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-process_exception","(classname, exception)","
Processes an exception and generates a report.\n
@param classname [String] The name of the class where the …\n"],["process_file","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-process_file","(file_path)","
Processes a single file by setting the current file path in Redis and running the workflow.\n
@param file_path …\n"],["process_files","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-i-process_files","(&block)","
Processes the files in batches.\n
This method iterates through the files in the input folder, divides them …\n"],["process_files","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-process_files","()",""],["process_single_file","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-process_single_file","()","
Processes a single file.\n
Creates or fetches the FileObject for the input file and performs additional …\n"],["process_single_file","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-process_single_file","()","
Processes a single file.\n
@return [void]\n"],["process_text","Flowbots::CLI","Flowbots/CLI.html#method-i-process_text","(file)","
Processes a text file using the text processing workflow.\n
@param file [String] The path to the text file. …\n"],["prompt","UI","UI.html#method-i-prompt","()","
Returns the TTY::Prompt instance used for user interaction.\n
@return [TTY::Prompt] The TTY::Prompt instance. …\n"],["prompt_for_file","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-prompt_for_file","()","
Prompts the user to select a file using the gum file
command.\n
@return [String] The path to the selected …\n"],["prompt_for_folder","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-i-prompt_for_folder","()","
Prompts the user to select a folder using the gum file
command.\n
@return [String] The path to the selected …\n"],["prompt_for_folder","Flowbots::TopicModelTrainerWorkflow","Flowbots/TopicModelTrainerWorkflow.html#method-i-prompt_for_folder","()","
Prompts the user to select a folder using the gum file
command.\n
@return [String] The path to the selected …\n"],["prompt_for_folder","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-prompt_for_folder","()",""],["readline","TTY::PromptX","TTY/PromptX.html#method-i-readline","(text = \"\")",""],["retrieve_file_metadata","LlmAnalysisTask","LlmAnalysisTask.html#method-i-retrieve_file_metadata","()","
Retrieves the file metadata from Redis.\n
@return [Hash] The file metadata.\n"],["retrieve_file_object","InputRetrieval","InputRetrieval.html#method-i-retrieve_file_object","()","
Retrieves the FileObject from Redis.\n
@return [FileObject, nil] The retrieved FileObject or nil if no …\n"],["retrieve_file_path","InputRetrieval","InputRetrieval.html#method-i-retrieve_file_path","()","
Retrieves the file path from Redis.\n
@return [String] The retrieved file path.\n@raise [ArgumentError] ...\n"],["retrieve_file_path","LoadFileObjectTask","LoadFileObjectTask.html#method-i-retrieve_file_path","()","
Retrieves the file path from Redis.\n
@return [String] The file path retrieved from Redis.\n"],["retrieve_filtered_words","TopicModelingTask","TopicModelingTask.html#method-i-retrieve_filtered_words","(textfile)","
Retrieves filtered words from the segments of the given FileObject.\n
@param textfile [FileObject] The …\n"],["retrieve_input","AccumulateFilteredSegmentsTask","AccumulateFilteredSegmentsTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","DisplayResultsTask","DisplayResultsTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","FileLoaderTask","FileLoaderTask.html#method-i-retrieve_input","()","
Retrieves the input file path from Redis.\n
@return [String] The input file path.\n"],["retrieve_input","FilterSegmentsTask","FilterSegmentsTask.html#method-i-retrieve_input","()",""],["retrieve_input","InputRetrieval","InputRetrieval.html#method-i-retrieve_input","()","
Retrieves the input data for a task.\n
This method first attempts to retrieve a FileObject from Redis.\n ...\n"],["retrieve_input","LlmAnalysisTask","LlmAnalysisTask.html#method-i-retrieve_input","()",""],["retrieve_input","LoadTextFilesTask","LoadTextFilesTask.html#method-i-retrieve_input","()","
Retrieves the input file path from Redis.\n
@return [String] The input file path.\n"],["retrieve_input","NlpAnalysisTask","NlpAnalysisTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","Task","Task.html#method-i-retrieve_input","()",""],["retrieve_input","TextSegmentTask","TextSegmentTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","TextTaggerTask","TextTaggerTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","TokenizeSegmentsTask","TokenizeSegmentsTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","TopicModelingTask","TopicModelingTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_nlp_result","LlmAnalysisTask","LlmAnalysisTask.html#method-i-retrieve_nlp_result","(textfile)","
Retrieves the NLP results for the segments of the Textfile.\n
@param textfile [Textfile] The Textfile object. …\n"],["retrieve_segment_texts","FileObject","FileObject.html#method-i-retrieve_segment_texts","()",""],["retrieve_segments","FileObject","FileObject.html#method-i-retrieve_segments","()",""],["retrieve_word_texts","FileObject","FileObject.html#method-i-retrieve_word_texts","()",""],["retrieve_word_texts","Segment","Segment.html#method-i-retrieve_word_texts","()",""],["retrieve_words","FileObject","FileObject.html#method-i-retrieve_words","()",""],["retrieve_words","Segment","Segment.html#method-i-retrieve_words","()",""],["root","MarkdownYaml","MarkdownYaml.html#method-i-root","()","
The root node of the grammar.\n
@return [Treetop::Runtime::SyntaxNode] The root node of the grammar.\n"],["run","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-run","()","
Runs the text processing workflow.\n
Sets up the workflow, processes the file(s), and performs additional …\n"],["run","Flowbots::TopicModelTrainerWorkflow","Flowbots/TopicModelTrainerWorkflow.html#method-i-run","()","
Runs the topic model trainer workflow.\n
Sets up the workflow, processes the files, and trains the topic …\n"],["run","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-run","()",""],["run","Flowbots::Workflows","Flowbots/Workflows.html#method-i-run","(workflow_name)","
Runs the specified workflow.\n
@param workflow_name [String] The name of the workflow to run.\n
@return [void] …\n"],["run_workflow","WorkflowOrchestrator","WorkflowOrchestrator.html#method-i-run_workflow","()","
Runs the defined workflow.\n
This method initiates the workflow execution, managing the lifecycle of tasks …\n"],["save_model","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-save_model","()","
Saves the topic model to the specified path.\n
@return [void]\n"],["save_state","WorkflowAgent","WorkflowAgent.html#method-i-save_state","()","
Saves the agent’s state to Redis.\n
@return [void]\n"],["say","UI","UI.html#method-i-say","(type, statement)","
Displays a message to the user with the specified type and logs it.\n
@param type [Symbol] The type of message …\n"],["segment_array","Flowbots::TextSegmentProcessor","Flowbots/TextSegmentProcessor.html#method-i-segment_array","()","
Segments an array of text.\n
@return [Array] An array of segments.\n"],["segment_string","Flowbots::TextSegmentProcessor","Flowbots/TextSegmentProcessor.html#method-i-segment_string","(txt)","
Segments a single string.\n
@param txt [String] The text to be segmented.\n
@return [Array] An array of segments. …\n"],["select_workflow","Flowbots::Workflows","Flowbots/Workflows.html#method-i-select_workflow","(workflows)","
Prompts the user to select a workflow from the list of available workflows.\n
@param workflows [Array<Array( …\n"],["set","RedisKeys","RedisKeys.html#method-c-set","(key, value)","
Sets the value associated with the given key in Redis.\n
@param key [String] The Redis key.\n@param value ...\n"],["setup_redis","Flowbots","Flowbots.html#method-c-setup_redis","()","
Sets up the Redis connection for Ohm.\n
@return [void]\n@raise [Ohm::Error] If there is an error connecting ...\n"],["setup_workflow","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-setup_workflow","()",""],["setup_workflow","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-setup_workflow","()","
Sets up the workflow by defining the task graph and adding agents to the orchestrator.\n
@return [void] …\n"],["shutdown","Flowbots","Flowbots.html#method-c-shutdown","()","
Shuts down the Flowbots application.\n
@return [void]\n"],["side_by_side_boxes","UI::ScrollableBox","UI/ScrollableBox.html#method-i-side_by_side_boxes","(text1, text2, title1: \"Box 1\", title2: \"Box 2\")","
Creates and displays two scrollable boxes side-by-side for comparison.\n
@param text1 [String] The text …\n"],["spinner","UI","UI.html#method-i-spinner","(text)","
Creates and returns a TTY::Spinner instance with the specified text.\n
@param text [String] The text to …\n"],["splat_sort","API","API.html#method-i-splat_sort","(splat_vals)","
… (Add routes for other object buckets and their attributes) …\n"],["stop_running_workflows","Flowbots","Flowbots.html#method-c-stop_running_workflows","()","
Stops any running workflows.\n
@return [void]\n"],["store_FileObject_id","FileLoaderTask","FileLoaderTask.html#method-i-store_FileObject_id","(id)","
Stores the FileObject ID in Redis.\n
@param id [Integer] The ID of the FileObject.\n
@return [void]\n"],["store_analysis_result","LlmAnalysisTask","LlmAnalysisTask.html#method-i-store_analysis_result","(textfile, result)","
Stores the analysis result in the Textfile.\n
@param textfile [Textfile] The Textfile object.\n@param result ...\n"],["store_exception_report","ExceptionAgent","ExceptionAgent.html#method-i-store_exception_report","(report)",""],["store_file_data","Flowbots::FileLoader","Flowbots/FileLoader.html#method-i-store_file_data","(file_path, extracted_text)","
Stores the file data in the database.\n
@param file_path [String] The path to the file.\n@param extracted_text ...\n"],["store_file_object_id","LoadFileObjectTask","LoadFileObjectTask.html#method-i-store_file_object_id","(id)","
Stores the FileObject ID in Redis.\n
@param id [Integer] The ID of the FileObject to store.\n@return [void] ...\n"],["store_preprocessed_data","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-store_preprocessed_data","(content, metadata)","
Stores the preprocessed content and metadata in the FileObject.\n
@param content [String] The preprocessed …\n"],["store_result","MicroAgentTask","MicroAgentTask.html#method-i-store_result","(result)",""],["store_result","TextTaggerTask","TextTaggerTask.html#method-i-store_result","(file_object, result, main_topics, speech_acts, transitivity)","
Stores the tagging results in the FileObject.\n
@param file_object [FileObject] The FileObject to store …\n"],["store_segments","TextSegmentTask","TextSegmentTask.html#method-i-store_segments","(textfile, segments)","
Stores the given segments in the given FileObject.\n
@param textfile [FileObject] The FileObject to store …\n"],["store_textfile_id","LoadTextFilesTask","LoadTextFilesTask.html#method-i-store_textfile_id","(id)","
Stores the Textfile ID in Redis.\n
@param id [Integer] The ID of the Textfile.\n
@return [void]\n"],["store_topic_result","TopicModelingTask","TopicModelingTask.html#method-i-store_topic_result","(textfile, result)","
Stores the topic modeling results in the given FileObject.\n
Extracts unique words from the topic results, …\n"],["store_topics","TopicModelingTask","TopicModelingTask.html#method-i-store_topics","(topics)",""],["tokenize_array","Flowbots::TextTokenizeProcessor","Flowbots/TextTokenizeProcessor.html#method-i-tokenize_array","()","
Tokenizes an array of strings.\n
@return [Array] An array of tokens.\n"],["tokenize_string","Flowbots::TextTokenizeProcessor","Flowbots/TextTokenizeProcessor.html#method-i-tokenize_string","(str)","
Tokenizes a single string.\n
@param str [String] The string to be tokenized.\n
@return [Array] An array of …\n"],["train_model","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-train_model","(documents, iterations=100)","
Trains a topic model using the provided documents.\n
@param documents [Array] An array of documents to train …\n"],["train_topic_model","Flowbots::CLI","Flowbots/CLI.html#method-i-train_topic_model","(folder)","
Trains a topic model using text files in the specified folder.\n
@param folder [String] The path to the …\n"],["train_topic_model","Flowbots::TopicModelTrainerWorkflow","Flowbots/TopicModelTrainerWorkflow.html#method-i-train_topic_model","()","
Trains the topic model using the filtered segments from the processed files.\n
Retrieves the filtered segments …\n"],["train_topic_model","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-train_topic_model","()",""],["update_file_object","AccumulateFilteredSegmentsTask","AccumulateFilteredSegmentsTask.html#method-i-update_file_object","(cleaned_segments)","
Updates the FileObject with the given cleaned segments.\n
@param cleaned_segments [Array<Array<String>>] …\n"],["update_segment_with_nlp_data","NlpAnalysisTask","NlpAnalysisTask.html#method-i-update_segment_with_nlp_data","(segment, processed_tokens, lemma_counts)","
Updates a segment with NLP data.\n
Extracts relevant NLP information from the processed tokens and updates …\n"],["update_state","WorkflowAgent","WorkflowAgent.html#method-i-update_state","(response)","
Updates the agent’s state with the latest response.\n
@param response [String] The agent’s response. …\n"],["upsert_document","FlowiseApiClient","FlowiseApiClient.html#method-i-upsert_document","(chatflow_id, file_path, local_ai_config={})","
Sends a document upsert request to the Flowise API.\n
@param chatflow_id [String] The ID of the chatflow …\n"],["version","Flowbots::CLI","Flowbots/CLI.html#method-i-version","()","
Displays the Flowbots version and Ruby environment information.\n
@return [void]\n"],["workflows","Flowbots::CLI","Flowbots/CLI.html#method-i-workflows","()","
Lists available workflows, allows the user to select one, and runs it.\n
@return [void]\n"],["write_markdown","LlmAnalysisTask","LlmAnalysisTask.html#method-i-write_markdown","(textfile, analysis_result)","
Writes the LLM analysis result to a Markdown file.\n
@param textfile [Textfile] The Textfile object.\n@param ...\n"],["write_markdown_report","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-write_markdown_report","(report, exception_details)","
Writes the exception report to a markdown file.\n
@param report [String] The exception report.\n@param exception_details ...\n"],["write_markdown_report","LlmAnalysisTask","LlmAnalysisTask.html#method-i-write_markdown_report","(result)","
Writes the exception report to a markdown file.\n
@param report [String] The exception report.\n@param exception_details ...\n"],["yaml_front_matter","MarkdownYaml::Document0","MarkdownYaml/Document0.html#method-i-yaml_front_matter","()","
The YAML front matter section of the document.\n
@return [Treetop::Runtime::SyntaxNode] The YAML front matter …\n"],["LICENSE","","LICENSE.html","","
The MIT License (MIT)\n
Copyright © 2024 Robert Pannick\n
Permission is hereby granted, free of charge, to …\n"],["README","","README_md.html","","
Flowbots\n
Flowbots is an advanced text processing and analysis system that combines the power of nano-bots, …\n"]]}}
\ No newline at end of file
+var search_data = {"index":{"searchIndex":["api","accumulatefilteredsegmentstask","compressiontask","compressiontestassessmenttask","compressiontestevaltask","compressiontesttask","cursor","displayresultstask","exceptionagent","fileloadertask","fileobject","filtersegmentstask","finalreporttask","flowbots","apierror","agenterror","batchprocessor","cli","configurationerror","exceptionagent","exceptionhandler","filediscovery","fileloader","filenotfounderror","flowboterror","grammarprocessor","nlpprocessor","task","tasknotfounderror","textprocessingworkflow","textprocessor","textsegmentprocessor","texttaggerprocessor","texttokenizeprocessor","topicmodelprocessor","topicmodeltrainerworkflow","topicmodeltrainerworkflowtest","unifiedfileprocessingpipeline","workflowerror","workflows","flowiseapiclient","inputretrieval","jongleur","workertask","lemma","llmanalysistask","loadfileobjecttask","loadtextfilestask","logging","markdownyaml","document0","yamlfrontmatter0","yamlfrontmatter1","markdownyamlparser","microagenttask","monadicerror","nlpanalysistask","object","preprocessfileobjecttask","redisconnection","rediskeys","runrubyteststask","segment","sublayer","actions","runtestcommandaction","speechtotextaction","texttospeechaction","writefileaction","tty","markdown","converter","promptx","task","textsegmenttask","texttaggertask","texttokenizetask","tokenizesegmentstask","topic","topicmodelingtask","traintopicmodeltask","ui","box","scrollablebox","word","workflowagent","workfloworchestrator","_nt_document()","_nt_markdown_content()","_nt_newline()","_nt_yaml_front_matter()","add_agent()","add_lemma()","add_lemmas()","add_lemmas_to_textfile()","add_segment()","add_segments()","add_topics()","add_word()","add_words()","add_words_to_segment()","after_delete()","after_save()","analyze_transitivity()","call()","call()","call()","call()","classify_file()","clean_segments()","clean_segments_for_modeling()","clean_segments_for_modeling()","cleanup()","comparison_box()","complete()","completed()","configure_logger_for()","convert_p()","create_doc()","create_new_model()","create_or_fetch_file_object()","create_scrollable_box()","create_with_timestamp()","current_batch()","define_workflow()","determine_preprocessing_method()","discover_files()","discover_files()","display_boxes()","display_filtered_segments()","display_results()","display_workflows()","duration()","ensure_model_exists()","eval_result_box()","exception_box()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","execute()","exit_on_failure?()","extract_main_topics()","extract_markdown_content()","extract_metadata()","extract_pdf_metadata()","extract_relevant_files()","extract_text()","extract_text_from_pdf()","extract_text_json()","extract_workflow_description()","extract_yaml_front_matter()","fail()","failed()","fallback_exception_report()","fetch_unprocessed_file_ids()","file_count()","file_types_pattern()","filter_segment_words()","filter_segment_words()","filter_segments()","find_or_create_by_path()","flush_redis_cache()","flush_redis_cache()","footer()","format_analysis()","format_exception()","format_exception_report()","format_file_info()","format_nlp_result()","format_output()","generate_analysis_prompt()","generate_exception_prompt()","get()","get_documents()","get_input_for_analysis()","get_object_attributes()","get_object_bucket()","get_object_by_name()","get_object_collections()","get_object_indexed_attributes()","get_object_references()","get_objects()","get_objects_by_collection()","get_objects_by_query()","get_objects_by_reference()","get_objects_by_regex()","get_workflows()","handle_exception()","handle_response()","header()","identify_speech_acts()","in_progress()","infer_topics()","info()","info_box()","initialize()","latest()","list_and_select()","load_components()","load_engtagger()","load_existing_model()","load_file_structure()","load_grammar()","load_model()","load_or_create_model()","load_state()","load_tasks()","load_workflows()","log_exception()","log_level()","logger()","logger_for()","main()","main_menu()","markdown_content()","multi_column_box()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","new()","newline1()","newline2()","notify_exception()","parse()","parse_pdf()","pending()","perform_additional_tasks()","pos()","predict()","preprocess_file()","preprocess_json()","preprocess_markdown_yaml()","preprocess_pdf()","preprocess_plain_text()","print_boxes()","print_navigation_info()","process()","process()","process()","process()","process()","process()","process()","process_batch()","process_batch()","process_batch()","process_batch()","process_exception()","process_exception()","process_file()","process_files()","process_files()","process_single_file()","process_single_file()","process_text()","prompt()","prompt_for_file()","prompt_for_folder()","prompt_for_folder()","prompt_for_folder()","readline()","retrieve_file_metadata()","retrieve_file_object()","retrieve_file_path()","retrieve_file_path()","retrieve_filtered_words()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_input()","retrieve_nlp_result()","retrieve_segment_texts()","retrieve_segments()","retrieve_word_texts()","retrieve_word_texts()","retrieve_words()","retrieve_words()","root()","run()","run()","run()","run()","run_workflow()","save_model()","save_state()","say()","segment_array()","segment_string()","select_workflow()","set()","setup_redis()","setup_workflow()","setup_workflow()","shutdown()","side_by_side_boxes()","spinner()","splat_sort()","stop_running_workflows()","store_fileobject_id()","store_analysis_result()","store_exception_report()","store_file_data()","store_file_object_id()","store_preprocessed_data()","store_result()","store_result()","store_segments()","store_textfile_id()","store_topic_result()","store_topics()","tokenize_array()","tokenize_string()","train_model()","train_topic_model()","train_topic_model()","train_topic_model()","update_file_object()","update_segment_with_nlp_data()","update_state()","upsert_document()","version()","workflows()","write_markdown()","write_markdown_report()","write_markdown_report()","yaml_front_matter()","license","readme"],"longSearchIndex":["api","accumulatefilteredsegmentstask","compressiontask","compressiontestassessmenttask","compressiontestevaltask","compressiontesttask","cursor","displayresultstask","exceptionagent","fileloadertask","fileobject","filtersegmentstask","finalreporttask","flowbots","flowbots::apierror","flowbots::agenterror","flowbots::batchprocessor","flowbots::cli","flowbots::configurationerror","flowbots::exceptionagent","flowbots::exceptionhandler","flowbots::filediscovery","flowbots::fileloader","flowbots::filenotfounderror","flowbots::flowboterror","flowbots::grammarprocessor","flowbots::nlpprocessor","flowbots::task","flowbots::tasknotfounderror","flowbots::textprocessingworkflow","flowbots::textprocessor","flowbots::textsegmentprocessor","flowbots::texttaggerprocessor","flowbots::texttokenizeprocessor","flowbots::topicmodelprocessor","flowbots::topicmodeltrainerworkflow","flowbots::topicmodeltrainerworkflowtest","flowbots::unifiedfileprocessingpipeline","flowbots::workflowerror","flowbots::workflows","flowiseapiclient","inputretrieval","jongleur","jongleur::workertask","lemma","llmanalysistask","loadfileobjecttask","loadtextfilestask","logging","markdownyaml","markdownyaml::document0","markdownyaml::yamlfrontmatter0","markdownyaml::yamlfrontmatter1","markdownyamlparser","microagenttask","monadicerror","nlpanalysistask","object","preprocessfileobjecttask","redisconnection","rediskeys","runrubyteststask","segment","sublayer","sublayer::actions","sublayer::actions::runtestcommandaction","sublayer::actions::speechtotextaction","sublayer::actions::texttospeechaction","sublayer::actions::writefileaction","tty","tty::markdown","tty::markdown::converter","tty::promptx","task","textsegmenttask","texttaggertask","texttokenizetask","tokenizesegmentstask","topic","topicmodelingtask","traintopicmodeltask","ui","ui::box","ui::scrollablebox","word","workflowagent","workfloworchestrator","markdownyaml#_nt_document()","markdownyaml#_nt_markdown_content()","markdownyaml#_nt_newline()","markdownyaml#_nt_yaml_front_matter()","workfloworchestrator#add_agent()","fileobject#add_lemma()","fileobject#add_lemmas()","nlpanalysistask#add_lemmas_to_textfile()","fileobject#add_segment()","fileobject#add_segments()","fileobject#add_topics()","segment#add_word()","segment#add_words()","nlpanalysistask#add_words_to_segment()","fileobject#after_delete()","fileobject#after_save()","flowbots::texttaggerprocessor#analyze_transitivity()","sublayer::actions::runtestcommandaction#call()","sublayer::actions::speechtotextaction#call()","sublayer::actions::texttospeechaction#call()","sublayer::actions::writefileaction#call()","flowbots::fileloader#classify_file()","accumulatefilteredsegmentstask#clean_segments()","flowbots::topicmodeltrainerworkflow#clean_segments_for_modeling()","flowbots::topicmodeltrainerworkflowtest#clean_segments_for_modeling()","workfloworchestrator#cleanup()","ui::box#comparison_box()","task#complete()","task::completed()","logging::configure_logger_for()","tty::markdown::converter#convert_p()","flowbots::nlpprocessor#create_doc()","flowbots::topicmodelprocessor#create_new_model()","flowbots::textprocessingworkflow#create_or_fetch_file_object()","ui::scrollablebox::create_scrollable_box()","task::create_with_timestamp()","fileobject::current_batch()","workfloworchestrator#define_workflow()","preprocessfileobjecttask#determine_preprocessing_method()","flowbots::batchprocessor#discover_files()","flowbots::filediscovery::discover_files()","ui::scrollablebox::display_boxes()","filtersegmentstask#display_filtered_segments()","displayresultstask#display_results()","flowbots::workflows#display_workflows()","task#duration()","flowbots::topicmodelprocessor#ensure_model_exists()","ui::box#eval_result_box()","ui::box#exception_box()","accumulatefilteredsegmentstask#execute()","compressiontask#execute()","compressiontestassessmenttask#execute()","compressiontestevaltask#execute()","compressiontesttask#execute()","displayresultstask#execute()","fileloadertask#execute()","filtersegmentstask#execute()","finalreporttask#execute()","flowbots::task#execute()","llmanalysistask#execute()","loadfileobjecttask#execute()","loadtextfilestask#execute()","microagenttask#execute()","nlpanalysistask#execute()","preprocessfileobjecttask#execute()","runrubyteststask#execute()","task#execute()","textsegmenttask#execute()","texttaggertask#execute()","texttokenizetask#execute()","tokenizesegmentstask#execute()","topicmodelingtask#execute()","traintopicmodeltask#execute()","flowbots::cli::exit_on_failure?()","flowbots::texttaggerprocessor#extract_main_topics()","flowbots::grammarprocessor#extract_markdown_content()","preprocessfileobjecttask#extract_metadata()","preprocessfileobjecttask#extract_pdf_metadata()","flowbots::exceptionagent#extract_relevant_files()","flowbots::fileloader#extract_text()","preprocessfileobjecttask#extract_text_from_pdf()","flowbots::fileloader#extract_text_json()","flowbots::workflows#extract_workflow_description()","flowbots::grammarprocessor#extract_yaml_front_matter()","task#fail()","task::failed()","flowbots::exceptionagent#fallback_exception_report()","flowbots::textprocessingworkflow#fetch_unprocessed_file_ids()","flowbots::filediscovery::file_count()","flowbots::batchprocessor#file_types_pattern()","filtersegmentstask#filter_segment_words()","topicmodelingtask#filter_segment_words()","filtersegmentstask#filter_segments()","fileobject::find_or_create_by_path()","flowbots::topicmodeltrainerworkflowtest#flush_redis_cache()","flowbots::unifiedfileprocessingpipeline#flush_redis_cache()","ui#footer()","displayresultstask#format_analysis()","exceptionagent#format_exception()","flowbots::exceptionagent#format_exception_report()","displayresultstask#format_file_info()","llmanalysistask#format_nlp_result()","object#format_output()","llmanalysistask#generate_analysis_prompt()","flowbots::exceptionagent#generate_exception_prompt()","rediskeys::get()","topicmodelingtask#get_documents()","microagenttask#get_input_for_analysis()","object#get_object_attributes()","object#get_object_bucket()","object#get_object_by_name()","object#get_object_collections()","object#get_object_indexed_attributes()","object#get_object_references()","object#get_objects()","object#get_objects_by_collection()","object#get_objects_by_query()","object#get_objects_by_reference()","object#get_objects_by_regex()","flowbots::workflows#get_workflows()","flowbots::exceptionhandler::handle_exception()","flowiseapiclient#handle_response()","ui#header()","flowbots::texttaggerprocessor#identify_speech_acts()","task::in_progress()","flowbots::topicmodelprocessor#infer_topics()","ui#info()","ui::box#info_box()","flowbots::initialize()","fileobject::latest()","flowbots::workflows#list_and_select()","flowbots::load_components()","flowbots::texttaggerprocessor#load_engtagger()","flowbots::topicmodelprocessor#load_existing_model()","flowbots::exceptionagent#load_file_structure()","flowbots::grammarprocessor#load_grammar()","flowbots::nlpprocessor#load_model()","flowbots::topicmodelprocessor#load_or_create_model()","workflowagent#load_state()","flowbots::task::load_tasks()","flowbots::workflows::load_workflows()","flowbots::exceptionhandler::log_exception()","logging::log_level()","logging#logger()","logging::logger_for()","object#main()","ui#main_menu()","markdownyaml::document0#markdown_content()","ui::box#multi_column_box()","exceptionagent::new()","flowbots::batchprocessor::new()","flowbots::exceptionagent::new()","flowbots::fileloader::new()","flowbots::flowboterror::new()","flowbots::grammarprocessor::new()","flowbots::nlpprocessor::new()","flowbots::task::new()","flowbots::textprocessingworkflow::new()","flowbots::textprocessor::new()","flowbots::textsegmentprocessor::new()","flowbots::texttaggerprocessor::new()","flowbots::texttokenizeprocessor::new()","flowbots::topicmodelprocessor::new()","flowbots::topicmodeltrainerworkflow::new()","flowbots::topicmodeltrainerworkflowtest::new()","flowbots::unifiedfileprocessingpipeline::new()","flowbots::workflows::new()","flowiseapiclient::new()","microagenttask::new()","redisconnection::new()","sublayer::actions::runtestcommandaction::new()","sublayer::actions::speechtotextaction::new()","sublayer::actions::texttospeechaction::new()","sublayer::actions::writefileaction::new()","tty::promptx::new()","topicmodelingtask::new()","workflowagent::new()","workfloworchestrator::new()","markdownyaml::yamlfrontmatter1#newline1()","markdownyaml::yamlfrontmatter1#newline2()","flowbots::exceptionhandler::notify_exception()","flowbots::grammarprocessor#parse()","flowbots::fileloader#parse_pdf()","task::pending()","flowbots::textprocessingworkflow#perform_additional_tasks()","cursor::pos()","flowiseapiclient#predict()","preprocessfileobjecttask#preprocess_file()","preprocessfileobjecttask#preprocess_json()","preprocessfileobjecttask#preprocess_markdown_yaml()","preprocessfileobjecttask#preprocess_pdf()","preprocessfileobjecttask#preprocess_plain_text()","ui::scrollablebox::print_boxes()","ui::scrollablebox::print_navigation_info()","flowbots::nlpprocessor#process()","flowbots::textprocessor#process()","flowbots::textsegmentprocessor#process()","flowbots::texttaggerprocessor#process()","flowbots::texttokenizeprocessor#process()","flowbots::unifiedfileprocessingpipeline#process()","workflowagent#process()","flowbots::batchprocessor#process_batch()","flowbots::textprocessingworkflow#process_batch()","flowbots::topicmodeltrainerworkflowtest#process_batch()","flowbots::unifiedfileprocessingpipeline#process_batch()","exceptionagent#process_exception()","flowbots::exceptionagent#process_exception()","flowbots::unifiedfileprocessingpipeline#process_file()","flowbots::batchprocessor#process_files()","flowbots::topicmodeltrainerworkflowtest#process_files()","flowbots::textprocessingworkflow#process_single_file()","flowbots::unifiedfileprocessingpipeline#process_single_file()","flowbots::cli#process_text()","ui#prompt()","flowbots::textprocessingworkflow#prompt_for_file()","flowbots::batchprocessor#prompt_for_folder()","flowbots::topicmodeltrainerworkflow#prompt_for_folder()","flowbots::topicmodeltrainerworkflowtest#prompt_for_folder()","tty::promptx#readline()","llmanalysistask#retrieve_file_metadata()","inputretrieval#retrieve_file_object()","inputretrieval#retrieve_file_path()","loadfileobjecttask#retrieve_file_path()","topicmodelingtask#retrieve_filtered_words()","accumulatefilteredsegmentstask#retrieve_input()","displayresultstask#retrieve_input()","fileloadertask#retrieve_input()","filtersegmentstask#retrieve_input()","inputretrieval#retrieve_input()","llmanalysistask#retrieve_input()","loadtextfilestask#retrieve_input()","nlpanalysistask#retrieve_input()","task#retrieve_input()","textsegmenttask#retrieve_input()","texttaggertask#retrieve_input()","tokenizesegmentstask#retrieve_input()","topicmodelingtask#retrieve_input()","llmanalysistask#retrieve_nlp_result()","fileobject#retrieve_segment_texts()","fileobject#retrieve_segments()","fileobject#retrieve_word_texts()","segment#retrieve_word_texts()","fileobject#retrieve_words()","segment#retrieve_words()","markdownyaml#root()","flowbots::textprocessingworkflow#run()","flowbots::topicmodeltrainerworkflow#run()","flowbots::topicmodeltrainerworkflowtest#run()","flowbots::workflows#run()","workfloworchestrator#run_workflow()","flowbots::topicmodelprocessor#save_model()","workflowagent#save_state()","ui#say()","flowbots::textsegmentprocessor#segment_array()","flowbots::textsegmentprocessor#segment_string()","flowbots::workflows#select_workflow()","rediskeys::set()","flowbots::setup_redis()","flowbots::topicmodeltrainerworkflowtest#setup_workflow()","flowbots::unifiedfileprocessingpipeline#setup_workflow()","flowbots::shutdown()","ui::scrollablebox#side_by_side_boxes()","ui#spinner()","api#splat_sort()","flowbots::stop_running_workflows()","fileloadertask#store_fileobject_id()","llmanalysistask#store_analysis_result()","exceptionagent#store_exception_report()","flowbots::fileloader#store_file_data()","loadfileobjecttask#store_file_object_id()","preprocessfileobjecttask#store_preprocessed_data()","microagenttask#store_result()","texttaggertask#store_result()","textsegmenttask#store_segments()","loadtextfilestask#store_textfile_id()","topicmodelingtask#store_topic_result()","topicmodelingtask#store_topics()","flowbots::texttokenizeprocessor#tokenize_array()","flowbots::texttokenizeprocessor#tokenize_string()","flowbots::topicmodelprocessor#train_model()","flowbots::cli#train_topic_model()","flowbots::topicmodeltrainerworkflow#train_topic_model()","flowbots::topicmodeltrainerworkflowtest#train_topic_model()","accumulatefilteredsegmentstask#update_file_object()","nlpanalysistask#update_segment_with_nlp_data()","workflowagent#update_state()","flowiseapiclient#upsert_document()","flowbots::cli#version()","flowbots::cli#workflows()","llmanalysistask#write_markdown()","flowbots::exceptionagent#write_markdown_report()","llmanalysistask#write_markdown_report()","markdownyaml::document0#yaml_front_matter()","",""],"info":[["API","","API.html","","
… (Ohm model definitions from OhmModels.rb) …\n"],["AccumulateFilteredSegmentsTask","","AccumulateFilteredSegmentsTask.html","","
Task to accumulate filtered segments from all processed files.\n"],["CompressionTask","","CompressionTask.html","","
This task compresses a prompt using a WorkflowAgent.\n"],["CompressionTestAssessmentTask","","CompressionTestAssessmentTask.html","","
This task assesses a compression test evaluation using a WorkflowAgent.\n"],["CompressionTestEvalTask","","CompressionTestEvalTask.html","","
This task evaluates a compression test design using a WorkflowAgent.\n"],["CompressionTestTask","","CompressionTestTask.html","","
This task designs a test for a compressed prompt using a WorkflowAgent.\n"],["Cursor","","Cursor.html","",""],["DisplayResultsTask","","DisplayResultsTask.html","","
This task displays the results of the text processing workflow.\n"],["ExceptionAgent","","ExceptionAgent.html","",""],["FileLoaderTask","","FileLoaderTask.html","","
This task loads a text file and stores its ID in Redis.\n"],["FileObject","","FileObject.html","",""],["FilterSegmentsTask","","FilterSegmentsTask.html","","
lib/tasks/filter_segments_task.rb\n"],["FinalReportTask","","FinalReportTask.html","","
This task generates a final report using a WorkflowAgent.\n"],["Flowbots","","Flowbots.html","","
Module for Flowbots application.\n"],["Flowbots::APIError","","Flowbots/APIError.html","","
Error raised when there is a problem with an API call.\n"],["Flowbots::AgentError","","Flowbots/AgentError.html","","
Error raised when there is a problem with an agent.\n"],["Flowbots::BatchProcessor","","Flowbots/BatchProcessor.html","","
The BatchProcessor
class provides a mechanism for processing files in batches.\nIt is particularly useful ...\n"],["Flowbots::CLI","","Flowbots/CLI.html","","
This class provides a command-line interface (CLI) for interacting with the Flowbots application.\n"],["Flowbots::ConfigurationError","","Flowbots/ConfigurationError.html","","
Error raised when there is a problem with the configuration.\n"],["Flowbots::ExceptionAgent","","Flowbots/ExceptionAgent.html","","
This class handles exceptions in the Flowbots application.\n"],["Flowbots::ExceptionHandler","","Flowbots/ExceptionHandler.html","","
This class handles exceptions in the Flowbots application.\n"],["Flowbots::FileDiscovery","","Flowbots/FileDiscovery.html","","
This module provides file discovery utilities for Flowbots.\n"],["Flowbots::FileLoader","","Flowbots/FileLoader.html","","
This class handles loading and processing text files.\n"],["Flowbots::FileNotFoundError","","Flowbots/FileNotFoundError.html","","
Custom error class for workflow file not found.\n"],["Flowbots::FlowbotError","","Flowbots/FlowbotError.html","","
Base class for all Flowbots errors.\n"],["Flowbots::GrammarProcessor","","Flowbots/GrammarProcessor.html","","
This class handles parsing text using a specified grammar.\n"],["Flowbots::NLPProcessor","","Flowbots/NLPProcessor.html","","
This class provides functionality for performing natural language processing (NLP) analysis on text. …\n"],["Flowbots::Task","","Flowbots/Task.html","","
This module encapsulates tasks used in Flowbots workflows.\n"],["Flowbots::TaskNotFoundError","","Flowbots/TaskNotFoundError.html","","
Custom error class for task not found.\n"],["Flowbots::TextProcessingWorkflow","","Flowbots/TextProcessingWorkflow.html","","
This class defines a workflow for processing text files, either individually or in batch mode.\nIt utilizes ...\n"],["Flowbots::TextProcessor","","Flowbots/TextProcessor.html","","
This class provides a base class for text processors in the Flowbots application.\n"],["Flowbots::TextSegmentProcessor","","Flowbots/TextSegmentProcessor.html","","
This class provides functionality for segmenting text into smaller units.\n"],["Flowbots::TextTaggerProcessor","","Flowbots/TextTaggerProcessor.html","","
This class provides functionality for tagging text using the EngTagger library.\n"],["Flowbots::TextTokenizeProcessor","","Flowbots/TextTokenizeProcessor.html","","
This class provides functionality for tokenizing text.\n"],["Flowbots::TopicModelProcessor","","Flowbots/TopicModelProcessor.html","","
This class provides functionality for processing text using a topic model.\n"],["Flowbots::TopicModelTrainerWorkflow","","Flowbots/TopicModelTrainerWorkflow.html","","
This class defines a workflow for training a topic model using a collection of text files.\nIt utilizes ...\n"],["Flowbots::TopicModelTrainerWorkflowtest","","Flowbots/TopicModelTrainerWorkflowtest.html","",""],["Flowbots::UnifiedFileProcessingPipeline","","Flowbots/UnifiedFileProcessingPipeline.html","","
This class defines a pipeline for processing files, either individually or in batches.\nIt utilizes a ...\n"],["Flowbots::WorkflowError","","Flowbots/WorkflowError.html","","
Error raised when there is a problem with a workflow.\n"],["Flowbots::Workflows","","Flowbots/Workflows.html","","
This class manages workflows in the Flowbots application.\n"],["FlowiseApiClient","","FlowiseApiClient.html","","
This class provides an interface for interacting with the Flowise API.\n"],["InputRetrieval","","InputRetrieval.html","","
Module for retrieving input data.\n"],["Jongleur","","Jongleur.html","",""],["Jongleur::WorkerTask","","Jongleur/WorkerTask.html","","
Define a Redis connection for Jongleur::WorkerTask\n
Jongleur::WorkerTask is a class that defines a task …\n"],["Lemma","","Lemma.html","",""],["LlmAnalysisTask","","LlmAnalysisTask.html","","
This task performs LLM analysis on a text file using a pre-trained model.\n
This task performs LLM analysis …\n"],["LoadFileObjectTask","","LoadFileObjectTask.html","","
Task to load a FileObject based on a file path stored in Redis.\n"],["LoadTextFilesTask","","LoadTextFilesTask.html","","
Task to load text files and store their IDs in Redis.\n"],["Logging","","Logging.html","",""],["MarkdownYaml","","MarkdownYaml.html","","
Autogenerated from a Treetop grammar. Edits may be lost.\n"],["MarkdownYaml::Document0","","MarkdownYaml/Document0.html","","
The Document node represents the entire document structure.\nIt contains the YAML front matter and the ...\n"],["MarkdownYaml::YamlFrontMatter0","","MarkdownYaml/YamlFrontMatter0.html","","
The YamlFrontMatter node represents the YAML front matter section.\n"],["MarkdownYaml::YamlFrontMatter1","","MarkdownYaml/YamlFrontMatter1.html","","
The YamlFrontMatter node represents the YAML front matter section.\n"],["MarkdownYamlParser","","MarkdownYamlParser.html","","
The MarkdownYamlParser class is responsible for parsing the Markdown YAML grammar.\n"],["MicroAgentTask","","MicroAgentTask.html","",""],["MonadicError","","MonadicError.html","",""],["NlpAnalysisTask","","NlpAnalysisTask.html","","
This task performs natural language processing (NLP) analysis on the segments of a text file.\n"],["Object","","Object.html","",""],["PreprocessFileObjectTask","","PreprocessFileObjectTask.html","","
Task to preprocess a FileObject.\n"],["RedisConnection","","RedisConnection.html","","
Class to manage Redis connection.\n"],["RedisKeys","","RedisKeys.html","","
Module for managing Redis keys used in the Flowbots application.\n"],["RunRubyTestsTask","","RunRubyTestsTask.html","","
This task runs Ruby tests from a file.\n"],["Segment","","Segment.html","",""],["Sublayer","","Sublayer.html","","
blueprints.sublayer.com/blueprints/70562717-70c5-4406-a792-358d169f9f0b\n"],["Sublayer::Actions","","Sublayer/Actions.html","",""],["Sublayer::Actions::RunTestCommandAction","","Sublayer/Actions/RunTestCommandAction.html","",""],["Sublayer::Actions::SpeechToTextAction","","Sublayer/Actions/SpeechToTextAction.html","",""],["Sublayer::Actions::TextToSpeechAction","","Sublayer/Actions/TextToSpeechAction.html","",""],["Sublayer::Actions::WriteFileAction","","Sublayer/Actions/WriteFileAction.html","",""],["TTY","","TTY.html","",""],["TTY::Markdown","","TTY/Markdown.html","",""],["TTY::Markdown::Converter","","TTY/Markdown/Converter.html","","
Converts a Kramdown::Document tree to a terminal friendly output\n"],["TTY::PromptX","","TTY/PromptX.html","",""],["Task","","Task.html","",""],["TextSegmentTask","","TextSegmentTask.html","","
This task segments the text content of a Textfile into smaller units.\n"],["TextTaggerTask","","TextTaggerTask.html","","
This class performs text tagging on a given text.\n"],["TextTokenizeTask","","TextTokenizeTask.html","","
This task tokenizes the segments of a text file.\n"],["TokenizeSegmentsTask","","TokenizeSegmentsTask.html","","
This task tokenizes the segments of a text file.\n"],["Topic","","Topic.html","",""],["TopicModelingTask","","TopicModelingTask.html","","
This task performs topic modeling on a text file using a pre-trained model.\n"],["TrainTopicModelTask","","TrainTopicModelTask.html","","
This task trains a topic model using filtered segments from multiple batches.\n"],["UI","","UI.html","","
This module provides user interface (UI) elements and functions for the Flowbots application.\n
This module …\n"],["UI::Box","","UI/Box.html","","
This module provides methods for creating and displaying boxes in the UI.\n"],["UI::ScrollableBox","","UI/ScrollableBox.html","","
This module provides methods for creating and displaying scrollable boxes in the UI.\n"],["Word","","Word.html","",""],["WorkflowAgent","","WorkflowAgent.html","","
This class represents an agent in a workflow.\nClass representing an individual agent within a workflow ...\n"],["WorkflowOrchestrator","","WorkflowOrchestrator.html","","
Orchestrates the execution of workflows in the Flowbots application.\n
The WorkflowOrchestrator is responsible …\n"],["_nt_document","MarkdownYaml","MarkdownYaml.html#method-i-_nt_document","()","
Parses the document node.\n
@return [Treetop::Runtime::SyntaxNode] The parsed document node.\n"],["_nt_markdown_content","MarkdownYaml","MarkdownYaml.html#method-i-_nt_markdown_content","()","
Parses the Markdown content node.\n
@return [Treetop::Runtime::SyntaxNode] The parsed Markdown content node. …\n"],["_nt_newline","MarkdownYaml","MarkdownYaml.html#method-i-_nt_newline","()","
Parses the newline node.\n
@return [Treetop::Runtime::SyntaxNode] The parsed newline node.\n"],["_nt_yaml_front_matter","MarkdownYaml","MarkdownYaml.html#method-i-_nt_yaml_front_matter","()","
Parses the YAML front matter node.\n
@return [Treetop::Runtime::SyntaxNode] The parsed YAML front matter …\n"],["add_agent","WorkflowOrchestrator","WorkflowOrchestrator.html#method-i-add_agent","(role, cartridge_file, author: \"@b08x\")","
Adds an agent to the orchestrator.\n
@param role [String] The role of the agent in the workflow.\n@param ...\n"],["add_lemma","FileObject","FileObject.html#method-i-add_lemma","(lemma_data)",""],["add_lemmas","FileObject","FileObject.html#method-i-add_lemmas","(lemmas_data)",""],["add_lemmas_to_textfile","NlpAnalysisTask","NlpAnalysisTask.html#method-i-add_lemmas_to_textfile","(textfile, lemma_counts)","
Adds lemmas to a FileObject.\n
Converts the lemma counts hash to an array of lemma data and adds it to the …\n"],["add_segment","FileObject","FileObject.html#method-i-add_segment","(text)",""],["add_segments","FileObject","FileObject.html#method-i-add_segments","(new_segments)",""],["add_topics","FileObject","FileObject.html#method-i-add_topics","(new_topics)",""],["add_word","Segment","Segment.html#method-i-add_word","(word_data)",""],["add_words","Segment","Segment.html#method-i-add_words","(new_words)",""],["add_words_to_segment","NlpAnalysisTask","NlpAnalysisTask.html#method-i-add_words_to_segment","(segment, processed_tokens)","
Adds processed words to a segment.\n
Extracts word information from the processed tokens and adds it to …\n"],["after_delete","FileObject","FileObject.html#method-i-after_delete","()",""],["after_save","FileObject","FileObject.html#method-i-after_save","()",""],["analyze_transitivity","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-i-analyze_transitivity","(text)","
Analyzes the transitivity of sentences in the given text.\n
@param text [String] The text to analyze.\n
@return …\n"],["call","Sublayer::Actions::RunTestCommandAction","Sublayer/Actions/RunTestCommandAction.html#method-i-call","()",""],["call","Sublayer::Actions::SpeechToTextAction","Sublayer/Actions/SpeechToTextAction.html#method-i-call","()",""],["call","Sublayer::Actions::TextToSpeechAction","Sublayer/Actions/TextToSpeechAction.html#method-i-call","()",""],["call","Sublayer::Actions::WriteFileAction","Sublayer/Actions/WriteFileAction.html#method-i-call","()","
Writes the contents to the file in binary mode\n@return [void]\n"],["classify_file","Flowbots::FileLoader","Flowbots/FileLoader.html#method-i-classify_file","(file_path)","
Classifies the file type based on its MIME type.\n
@param file_path [String] The path to the file.\n
@return …\n"],["clean_segments","AccumulateFilteredSegmentsTask","AccumulateFilteredSegmentsTask.html#method-i-clean_segments","(segments)","
Cleans the given segments by removing unwanted segments and words.\n
@param segments [Array<Array<String>>] …\n"],["clean_segments_for_modeling","Flowbots::TopicModelTrainerWorkflow","Flowbots/TopicModelTrainerWorkflow.html#method-i-clean_segments_for_modeling","(segments)","
Cleans the segments for topic modeling by removing unwanted segments and words.\n
@param segments [Array<Array<String>>] …\n"],["clean_segments_for_modeling","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-clean_segments_for_modeling","(segments)",""],["cleanup","WorkflowOrchestrator","WorkflowOrchestrator.html#method-i-cleanup","()","
Performs cleanup operations for the workflow.\n
This method is called after the workflow has finished or …\n"],["comparison_box","UI::Box","UI/Box.html#method-i-comparison_box","(text1, text2, title1: \"Text 1\", title2: \"Text 2\")","
Creates a box containing two texts side-by-side for comparison.\n
@param text1 [String] The first text to …\n"],["complete","Task","Task.html#method-i-complete","(result=nil)",""],["completed","Task","Task.html#method-c-completed","()",""],["configure_logger_for","Logging","Logging.html#method-c-configure_logger_for","(_classname, _methodname)","
Configures a logger for the specified class and method.\n
@param <em>classname [String] The name of …\n"],["convert_p","TTY::Markdown::Converter","TTY/Markdown/Converter.html#method-i-convert_p","(ell, opts)",""],["create_doc","Flowbots::NLPProcessor","Flowbots/NLPProcessor.html#method-i-create_doc","(segment)","
Creates a Spacy::Doc object from the given segment’s tokens.\n
@param segment [Segment] The Segment …\n"],["create_new_model","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-create_new_model","()","
Creates a new topic model with the specified parameters.\n
@return [void]\n"],["create_or_fetch_file_object","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-create_or_fetch_file_object","(file_path)","
Creates or fetches a FileObject for the given file path.\n
@param file_path [String, Hash] The path to the …\n"],["create_scrollable_box","UI::ScrollableBox","UI/ScrollableBox.html#method-c-create_scrollable_box","(text, width, height, title)","
Creates a scrollable box data structure.\n
@param text [String] The text to display in the box.\n@param width ...\n"],["create_with_timestamp","Task","Task.html#method-c-create_with_timestamp","(attributes={})",""],["current_batch","FileObject","FileObject.html#method-c-current_batch","()",""],["define_workflow","WorkflowOrchestrator","WorkflowOrchestrator.html#method-i-define_workflow","(workflow_definition)","
Defines the workflow structure using a task graph.\n
The workflow definition is a hash that outlines the …\n"],["determine_preprocessing_method","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-determine_preprocessing_method","(file_object)","
Determines the preprocessing method based on the file extension.\n
@param file_object [FileObject] The …\n"],["discover_files","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-i-discover_files","()","
Discovers all files within the input folder that match the specified file types.\n
@return [Array<String>] …\n"],["discover_files","Flowbots::FileDiscovery","Flowbots/FileDiscovery.html#method-c-discover_files","(directory)","
Discovers files in the given directory and groups them by type.\n
@param directory [String] The directory …\n"],["display_boxes","UI::ScrollableBox","UI/ScrollableBox.html#method-c-display_boxes","(box1, box2, box_height)","
Displays the scrollable boxes and handles user navigation.\n
@param box1 [Hash] The data for the first box. …\n"],["display_filtered_segments","FilterSegmentsTask","FilterSegmentsTask.html#method-i-display_filtered_segments","(filtered_segments)",""],["display_results","DisplayResultsTask","DisplayResultsTask.html#method-i-display_results","(textfile, analysis_result)","
Displays the results of the text processing workflow.\n
@param textfile [Textfile] The processed Textfile …\n"],["display_workflows","Flowbots::Workflows","Flowbots/Workflows.html#method-i-display_workflows","(workflows)","
Displays a list of available workflows in a table format.\n
@param workflows [Array<Array(String, String …\n"],["duration","Task","Task.html#method-i-duration","()",""],["ensure_model_exists","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-ensure_model_exists","()","
Ensures that the topic model exists, loading or creating it if necessary.\n
@return [void]\n"],["eval_result_box","UI::Box","UI/Box.html#method-i-eval_result_box","(result, title: \"Evaluation Result\")","
Creates a box displaying the evaluation result with a success style.\n
@param result [String] The evaluation …\n"],["exception_box","UI::Box","UI/Box.html#method-i-exception_box","(message)","
Creates a box displaying an exception message with an error style.\n
@param message [String] The exception …\n"],["execute","AccumulateFilteredSegmentsTask","AccumulateFilteredSegmentsTask.html#method-i-execute","()","
Executes the task to accumulate and clean filtered segments.\n
Retrieves filtered segments from Redis, cleans …\n"],["execute","CompressionTask","CompressionTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","CompressionTestAssessmentTask","CompressionTestAssessmentTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","CompressionTestEvalTask","CompressionTestEvalTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","CompressionTestTask","CompressionTestTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","DisplayResultsTask","DisplayResultsTask.html#method-i-execute","()","
Executes the task to display the results of the text processing workflow.\n
Retrieves the processed Textfile …\n"],["execute","FileLoaderTask","FileLoaderTask.html#method-i-execute","()","
Executes the task to load a FileObject and store its ID in Redis.\n
Retrieves the input file path, processes …\n"],["execute","FilterSegmentsTask","FilterSegmentsTask.html#method-i-execute","()",""],["execute","FinalReportTask","FinalReportTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","Flowbots::Task","Flowbots/Task.html#method-i-execute","()","
Executes the task.\n
This method must be implemented in subclasses.\n
@return [void]\n@raise [NotImplementedError] ...\n"],["execute","LlmAnalysisTask","LlmAnalysisTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n"],["execute","LoadFileObjectTask","LoadFileObjectTask.html#method-i-execute","()","
Executes the task to load a FileObject.\n
Retrieves the file path from Redis, finds or creates a FileObject …\n"],["execute","LoadTextFilesTask","LoadTextFilesTask.html#method-i-execute","()","
Executes the task to load a text file using the Flowbots::FileLoader.\n
Retrieves the file path from Redis …\n"],["execute","MicroAgentTask","MicroAgentTask.html#method-i-execute","()",""],["execute","NlpAnalysisTask","NlpAnalysisTask.html#method-i-execute","()","
Executes the task.\n
Retrieves the FileObject from Redis, processes each segment using the NLPProcessor …\n"],["execute","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-execute","()","
Executes the task to preprocess a FileObject.\n
Retrieves the FileObject from Redis, determines the appropriate …\n"],["execute","RunRubyTestsTask","RunRubyTestsTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n@raises [StandardError] If an error occurs during the task execution. ...\n"],["execute","Task","Task.html#method-i-execute","()",""],["execute","TextSegmentTask","TextSegmentTask.html#method-i-execute","()","
Executes the task to segment the text content of a FileObject.\n
Retrieves the FileObject from Redis, extracts …\n"],["execute","TextTaggerTask","TextTaggerTask.html#method-i-execute","()","
Executes the text tagging task.\n
Retrieves the FileObject from Redis, extracts its preprocessed content, …\n"],["execute","TextTokenizeTask","TextTokenizeTask.html#method-i-execute","()","
Executes the task.\n
@return [void]\n"],["execute","TokenizeSegmentsTask","TokenizeSegmentsTask.html#method-i-execute","()","
Executes the task to tokenize the segments of a FileObject.\n
Retrieves the FileObject from Redis, tokenizes …\n"],["execute","TopicModelingTask","TopicModelingTask.html#method-i-execute","()",""],["execute","TrainTopicModelTask","TrainTopicModelTask.html#method-i-execute","()","
Executes the task to train a topic model using accumulated filtered segments.\n
Retrieves the current batch …\n"],["exit_on_failure?","Flowbots::CLI","Flowbots/CLI.html#method-c-exit_on_failure-3F","()","
Defines whether the CLI should exit with a non-zero status code when an error occurs.\n
@return [Boolean] …\n"],["extract_main_topics","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-i-extract_main_topics","(text, limit=5)","
Extracts the main topics from the given text.\n
@param text [String] The text to extract topics from.\n@param ...\n"],["extract_markdown_content","Flowbots::GrammarProcessor","Flowbots/GrammarProcessor.html#method-i-extract_markdown_content","(parse_result)","
Extracts the Markdown content from the parse result.\n
@param parse_result [Treetop::Runtime::SyntaxNode] …\n"],["extract_metadata","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-extract_metadata","(yaml_front_matter)","
Extracts metadata from YAML front matter.\n
@param yaml_front_matter [String] The YAML front matter string. …\n"],["extract_pdf_metadata","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-extract_pdf_metadata","(pdf_path)","
Extracts metadata from a PDF file.\n
@param pdf_path [String] The path to the PDF file.\n
@return [Hash] The …\n"],["extract_relevant_files","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-extract_relevant_files","(exception)","
Extracts relevant files from the exception backtrace.\n
@param exception [Exception] The exception object. …\n"],["extract_text","Flowbots::FileLoader","Flowbots/FileLoader.html#method-i-extract_text","(file_type, file_path)","
Extracts the text content from a file based on its type.\n
@param file_type [Symbol] The file type.\n@param ...\n"],["extract_text_from_pdf","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-extract_text_from_pdf","(pdf_path)","
Extracts text content from a PDF file.\n
@param pdf_path [String] The path to the PDF file.\n
@return [String] …\n"],["extract_text_json","Flowbots::FileLoader","Flowbots/FileLoader.html#method-i-extract_text_json","(file_path)",""],["extract_workflow_description","Flowbots::Workflows","Flowbots/Workflows.html#method-i-extract_workflow_description","(file)","
Extracts the description of a workflow from its file.\nThe description is assumed to be the first line ...\n"],["extract_yaml_front_matter","Flowbots::GrammarProcessor","Flowbots/GrammarProcessor.html#method-i-extract_yaml_front_matter","(parse_result)","
Extracts the YAML front matter from the parse result.\n
@param parse_result [Treetop::Runtime::SyntaxNode] …\n"],["fail","Task","Task.html#method-i-fail","(error_message)",""],["failed","Task","Task.html#method-c-failed","()",""],["fallback_exception_report","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-fallback_exception_report","(exception_details)","
Generates a fallback exception report if the agent fails to generate a report.\n
@param exception_details …\n"],["fetch_unprocessed_file_ids","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-fetch_unprocessed_file_ids","()","
Fetches the IDs of unprocessed files.\n
@return [Array<Integer>] An array of unprocessed file IDs …\n"],["file_count","Flowbots::FileDiscovery","Flowbots/FileDiscovery.html#method-c-file_count","(files)","
Counts the number of files for each file type.\n
@param files [Hash] A hash where keys are file types and …\n"],["file_types_pattern","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-i-file_types_pattern","()","
Constructs a regular expression pattern from the file_types
array.\n
@return [String] The regular expression …\n"],["filter_segment_words","FilterSegmentsTask","FilterSegmentsTask.html#method-i-filter_segment_words","(segment)",""],["filter_segment_words","TopicModelingTask","TopicModelingTask.html#method-i-filter_segment_words","(segment)","
Filters words from a segment based on their POS tags.\n
@param segment [Segment] The segment to filter words …\n"],["filter_segments","FilterSegmentsTask","FilterSegmentsTask.html#method-i-filter_segments","(file_object)",""],["find_or_create_by_path","FileObject","FileObject.html#method-c-find_or_create_by_path","(file_path, attributes={})",""],["flush_redis_cache","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-flush_redis_cache","()",""],["flush_redis_cache","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-flush_redis_cache","()","
Flushes the Redis cache.\n
@return [void]\n"],["footer","UI","UI.html#method-i-footer","()","
Displays the Flowbots footer in a framed box.\n
@return [void]\n"],["format_analysis","DisplayResultsTask","DisplayResultsTask.html#method-i-format_analysis","(analysis_result)","
Formats the analysis results for display.\n
@param analysis_result [String, Hash] The LLM analysis results. …\n"],["format_exception","ExceptionAgent","ExceptionAgent.html#method-i-format_exception","(exception)",""],["format_exception_report","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-format_exception_report","(agent_response, exception_details)","
Formats the exception report based on the agent’s response.\n
@param agent_response [String] The response …\n"],["format_file_info","DisplayResultsTask","DisplayResultsTask.html#method-i-format_file_info","(textfile)","
Formats the file information for display.\n
@param textfile [Textfile] The processed Textfile object.\n
@return …\n"],["format_nlp_result","LlmAnalysisTask","LlmAnalysisTask.html#method-i-format_nlp_result","(nlp_result)","
Formats the NLP results for display in the prompt.\n
@param nlp_result [Array] The NLP results for the segments …\n"],["format_output","Object","Object.html#method-i-format_output","(objects)",""],["generate_analysis_prompt","LlmAnalysisTask","LlmAnalysisTask.html#method-i-generate_analysis_prompt","(textfile, content, metadata, nlp_result)","\n
Please structure your response in a clear, concise manner. Thank you!
\n
PROMPT\nend\n"],["generate_exception_prompt","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-generate_exception_prompt","(exception_details)","
Generates a prompt for the exception handler agent.\n
@param exception_details [Hash] A hash containing …\n"],["get","RedisKeys","RedisKeys.html#method-c-get","(key)","
Retrieves the value associated with the given key from Redis.\n
@param key [String] The Redis key.\n@return ...\n"],["get_documents","TopicModelingTask","TopicModelingTask.html#method-i-get_documents","()",""],["get_input_for_analysis","MicroAgentTask","MicroAgentTask.html#method-i-get_input_for_analysis","()",""],["get_object_attributes","Object","Object.html#method-i-get_object_attributes","(object_bucket)",""],["get_object_bucket","Object","Object.html#method-i-get_object_bucket","(object_bucket)",""],["get_object_by_name","Object","Object.html#method-i-get_object_by_name","(object_bucket, object_name)",""],["get_object_collections","Object","Object.html#method-i-get_object_collections","(object_bucket)",""],["get_object_indexed_attributes","Object","Object.html#method-i-get_object_indexed_attributes","(object_bucket)",""],["get_object_references","Object","Object.html#method-i-get_object_references","(object_bucket)",""],["get_objects","Object","Object.html#method-i-get_objects","(object_bucket, object_name, query=nil)",""],["get_objects_by_collection","Object","Object.html#method-i-get_objects_by_collection","(object_bucket, collection_name)",""],["get_objects_by_query","Object","Object.html#method-i-get_objects_by_query","(object_bucket, query)",""],["get_objects_by_reference","Object","Object.html#method-i-get_objects_by_reference","(object_bucket, reference_name, reference_value)",""],["get_objects_by_regex","Object","Object.html#method-i-get_objects_by_regex","(object_bucket, regex)",""],["get_workflows","Flowbots::Workflows","Flowbots/Workflows.html#method-i-get_workflows","()","
Retrieves a list of available workflows from the WORKFLOW_DIR directory.\n
@return [Array<Array(String …\n"],["handle_exception","Flowbots::ExceptionHandler","Flowbots/ExceptionHandler.html#method-c-handle_exception","(classname=nil, exception)","
Handles an exception by generating a report and notifying relevant parties.\n
@param classname [String] …\n"],["handle_response","FlowiseApiClient","FlowiseApiClient.html#method-i-handle_response","(response)","
Handles the response from the Flowise API.\n
@param response [Faraday::Response] The response from the …\n"],["header","UI","UI.html#method-i-header","()","
Displays the Flowbots header in a framed box.\n
@return [void]\n"],["identify_speech_acts","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-i-identify_speech_acts","(text)","
Identifies the speech acts in the given text.\n
@param text [String] The text to analyze.\n
@return [Array] …\n"],["in_progress","Task","Task.html#method-c-in_progress","()",""],["infer_topics","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-infer_topics","(document)","
Infers the topics for a given document.\n
@param document [String] The document to infer topics for.\n
@return …\n"],["info","UI","UI.html#method-i-info","(text)","
Displays an information message in a framed box.\n
@param text [String] The text to display in the info …\n"],["info_box","UI::Box","UI/Box.html#method-i-info_box","(message, title: \"Info\")","
Creates a box displaying an information message with an info style.\n
@param message [String] The information …\n"],["initialize","Flowbots","Flowbots.html#method-c-initialize","()","
Initializes the Flowbots application.\n
@return [void]\n"],["latest","FileObject","FileObject.html#method-c-latest","(limit=nil)",""],["list_and_select","Flowbots::Workflows","Flowbots/Workflows.html#method-i-list_and_select","()","
Lists available workflows and allows the user to select one.\n
@return [String, nil] The name of the selected …\n"],["load_components","Flowbots","Flowbots.html#method-c-load_components","()","
Loads the necessary components for the application.\n
@return [void]\n"],["load_engtagger","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-i-load_engtagger","()","
Loads the EngTagger library.\n
@return [void]\n"],["load_existing_model","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-load_existing_model","()","
Loads an existing topic model from the specified path.\n
@return [void]\n"],["load_file_structure","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-load_file_structure","()","
Loads the file structure from the flowbots.json file.\n
@return [Hash] The file structure.\n"],["load_grammar","Flowbots::GrammarProcessor","Flowbots/GrammarProcessor.html#method-i-load_grammar","()","
Loads the grammar file and creates a parser instance.\n
@return [void]\n"],["load_model","Flowbots::NLPProcessor","Flowbots/NLPProcessor.html#method-i-load_model","()","
Loads the NLP model from the specified environment variable.\n
@return [void]\n"],["load_or_create_model","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-load_or_create_model","()","
Loads an existing topic model or creates a new one if it doesn’t exist.\n
@return [void]\n"],["load_state","WorkflowAgent","WorkflowAgent.html#method-i-load_state","()","
Loads the agent’s state from Redis.\n
@return [void]\n"],["load_tasks","Flowbots::Task","Flowbots/Task.html#method-c-load_tasks","()","
Loads all task files from the TASK_DIR directory.\n
@return [void]\n"],["load_workflows","Flowbots::Workflows","Flowbots/Workflows.html#method-c-load_workflows","()","
Class method to load all workflow files from the WORKFLOW_DIR directory.\nIt also checks for user-defined ...\n"],["log_exception","Flowbots::ExceptionHandler","Flowbots/ExceptionHandler.html#method-c-log_exception","(exception)","
Logs an exception to the application’s logger.\n
@param exception [Exception] The exception object. …\n"],["log_level","Logging","Logging.html#method-c-log_level","()","
Returns the default log level.\n
@return [Integer] The log level.\n"],["logger","Logging","Logging.html#method-i-logger","()","
Returns the logger for the current class and method.\n
@return [Logger] The logger object.\n"],["logger_for","Logging","Logging.html#method-c-logger_for","(classname, methodname)","
Returns the logger for the specified class and method.\n
@param classname [String] The name of the class. …\n"],["main","Object","Object.html#method-i-main","()",""],["main_menu","UI","UI.html#method-i-main_menu","()","
Displays the main menu and prompts the user for a choice.\n
@return [Symbol] The value of the selected choice. …\n"],["markdown_content","MarkdownYaml::Document0","MarkdownYaml/Document0.html#method-i-markdown_content","()","
The Markdown content section of the document.\n
@return [Treetop::Runtime::SyntaxNode] The Markdown content …\n"],["multi_column_box","UI::Box","UI/Box.html#method-i-multi_column_box","(data, titles)","
Creates a box displaying data in multiple columns with headers.\n
@param data [Array<Array>] A 2D …\n"],["new","ExceptionAgent","ExceptionAgent.html#method-c-new","(agent_role, cartridge_file)",""],["new","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-c-new","(input_folder_path, batch_size=10, file_types=nil)","
Initializes a new BatchProcessor
instance.\n
@param input_folder_path [String] The path to the folder containing …\n"],["new","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-c-new","()","
Initializes a new instance of the ExceptionAgent class.\n
@return [void]\n"],["new","Flowbots::FileLoader","Flowbots/FileLoader.html#method-c-new","(file_path)","
Initializes a new FileLoader instance.\n
@param file_path [String] The path to the file to be loaded.\n
@return …\n"],["new","Flowbots::FlowbotError","Flowbots/FlowbotError.html#method-c-new","(message, error_code, details={})","
Initializes a new FlowbotError.\n
@param message [String] The error message.\n@param error_code [String] ...\n"],["new","Flowbots::GrammarProcessor","Flowbots/GrammarProcessor.html#method-c-new","(grammar_name)","
Initializes a new GrammarProcessor instance.\n
@param grammar_name [String] The name of the grammar to use …\n"],["new","Flowbots::NLPProcessor","Flowbots/NLPProcessor.html#method-c-new","()","
Initializes a new NLPProcessor instance.\n
@return [void]\n"],["new","Flowbots::Task","Flowbots/Task.html#method-c-new","(options={})","
Initializes a new Task instance.\n
@param options [Hash] A hash of options for the task.\n
@return [void]\n"],["new","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-c-new","(input_file_path=nil, batch_mode=false)","
Initializes a new TextProcessingWorkflow instance.\n
@param input_file_path [String, nil] The path to the …\n"],["new","Flowbots::TextProcessor","Flowbots/TextProcessor.html#method-c-new","()","
Initializes a new TextProcessor instance.\n
@return [void]\n"],["new","Flowbots::TextSegmentProcessor","Flowbots/TextSegmentProcessor.html#method-c-new","()","
Initializes a new TextSegmentProcessor instance.\n
@return [void]\n"],["new","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-c-new","()","
Initializes a new TextTaggerProcessor instance.\n
@return [void]\n"],["new","Flowbots::TextTokenizeProcessor","Flowbots/TextTokenizeProcessor.html#method-c-new","()","
Initializes a new TextTokenizeProcessor instance.\n
@return [void]\n"],["new","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-c-new","()","
Initializes a new TopicModelProcessor instance.\n
@return [void]\n"],["new","Flowbots::TopicModelTrainerWorkflow","Flowbots/TopicModelTrainerWorkflow.html#method-c-new","(input_folder_path=nil)","
Initializes a new TopicModelTrainerWorkflow instance.\n
@param input_folder_path [String, nil] The path …\n"],["new","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-c-new","(input_folder_path=nil)",""],["new","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-c-new","(input_path, batch_size: 10, file_types: %w[md markdown txt pdf json])","
Initializes a new UnifiedFileProcessingPipeline instance.\n
@param input_path [String] The path to the file …\n"],["new","Flowbots::Workflows","Flowbots/Workflows.html#method-c-new","()","
Initializes a new Workflows instance.\n
@return [void]\n"],["new","FlowiseApiClient","FlowiseApiClient.html#method-c-new","(base_url)","
Initializes a new FlowiseApiClient instance.\n
@param base_url [String] The base URL of the Flowise API …\n"],["new","MicroAgentTask","MicroAgentTask.html#method-c-new","(agent_role, cartridge_file)",""],["new","RedisConnection","RedisConnection.html#method-c-new","()","
Initializes a new RedisConnection instance.\n
@return [void]\n"],["new","Sublayer::Actions::RunTestCommandAction","Sublayer/Actions/RunTestCommandAction.html#method-c-new","(test_command:)",""],["new","Sublayer::Actions::SpeechToTextAction","Sublayer/Actions/SpeechToTextAction.html#method-c-new","(audio_data)",""],["new","Sublayer::Actions::TextToSpeechAction","Sublayer/Actions/TextToSpeechAction.html#method-c-new","(text)",""],["new","Sublayer::Actions::WriteFileAction","Sublayer/Actions/WriteFileAction.html#method-c-new","(file_contents:, file_path:)","
Initializes the action with the contents to write and the target file path\n@param [String] file_contents ...\n"],["new","TTY::PromptX","TTY/PromptX.html#method-c-new","(active_color:, prefix:, history: true)",""],["new","TopicModelingTask","TopicModelingTask.html#method-c-new","(model_params)",""],["new","WorkflowAgent","WorkflowAgent.html#method-c-new","(role, cartridge_file)","
Initializes a new WorkflowAgent instance.\n
@param role [String] The role of the agent.\n@param cartridge_file ...\n"],["new","WorkflowOrchestrator","WorkflowOrchestrator.html#method-c-new","()","
Initializes a new WorkflowOrchestrator instance.\n
@return [void]\n"],["newline1","MarkdownYaml::YamlFrontMatter1","MarkdownYaml/YamlFrontMatter1.html#method-i-newline1","()","
The first newline character after the “—” delimiter.\n
@return [Treetop::Runtime::SyntaxNode] …\n"],["newline2","MarkdownYaml::YamlFrontMatter1","MarkdownYaml/YamlFrontMatter1.html#method-i-newline2","()","
The second newline character after the “—” delimiter.\n
@return [Treetop::Runtime::SyntaxNode] …\n"],["notify_exception","Flowbots::ExceptionHandler","Flowbots/ExceptionHandler.html#method-c-notify_exception","(report)","
Notifies relevant parties about an exception.\n
@param report [String] The formatted exception report.\n
@return …\n"],["parse","Flowbots::GrammarProcessor","Flowbots/GrammarProcessor.html#method-i-parse","(text)","
Parses the given text using the specified grammar.\n
@param text [String] The text to parse.\n
@return [Hash, …\n"],["parse_pdf","Flowbots::FileLoader","Flowbots/FileLoader.html#method-i-parse_pdf","(file_path)","
Parses a PDF file and extracts its text content.\n
@param file_path [String] The path to the PDF file.\n
@return …\n"],["pending","Task","Task.html#method-c-pending","()",""],["perform_additional_tasks","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-perform_additional_tasks","(file_id)","
Performs additional tasks for the given file ID.\n
Defines the workflow for additional tasks and runs the …\n"],["pos","Cursor","Cursor.html#method-c-pos","()",""],["predict","FlowiseApiClient","FlowiseApiClient.html#method-i-predict","(chatflow_id, options={})","
Sends a prediction request to the Flowise API.\n
@param chatflow_id [String] The ID of the chatflow to use …\n"],["preprocess_file","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-preprocess_file","(file_object)","
Preprocesses the file based on its extension.\n
@param file_object [FileObject] The FileObject to preprocess. …\n"],["preprocess_json","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-preprocess_json","(file_object)","
Preprocesses JSON files.\n
@param file_object [FileObject] The FileObject to preprocess.\n
@return [Array( …\n"],["preprocess_markdown_yaml","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-preprocess_markdown_yaml","(file_object)","
Preprocesses Markdown files with YAML front matter.\n
@param file_object [FileObject] The FileObject to …\n"],["preprocess_pdf","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-preprocess_pdf","(file_object)","
Preprocesses PDF files.\n
@param file_object [FileObject] The FileObject to preprocess.\n
@return [Array(String …\n"],["preprocess_plain_text","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-preprocess_plain_text","(file_object)","
Preprocesses plain text files.\n
@param file_object [FileObject] The FileObject to preprocess.\n
@return [Array( …\n"],["print_boxes","UI::ScrollableBox","UI/ScrollableBox.html#method-c-print_boxes","(box1, box2, box_height)","
Prints the scrollable boxes to the console.\n
@param box1 [Hash] The data for the first box.\n@param box2 ...\n"],["print_navigation_info","UI::ScrollableBox","UI/ScrollableBox.html#method-c-print_navigation_info","(box1, box2)","
Prints navigation information for the scrollable boxes.\n
@param box1 [Hash] The data for the first box. …\n"],["process","Flowbots::NLPProcessor","Flowbots/NLPProcessor.html#method-i-process","(segment, options={})","
Processes the given segment using the loaded NLP model and returns a hash of processed tokens.\n
@param …\n"],["process","Flowbots::TextProcessor","Flowbots/TextProcessor.html#method-i-process","(text)","
Processes the given text.\n
This method must be implemented in subclasses.\n
@param text [String] The text …\n"],["process","Flowbots::TextSegmentProcessor","Flowbots/TextSegmentProcessor.html#method-i-process","(text, opts={})","
Segments the given text using the specified options.\n
@param text [String, Array] The text to be segmented. …\n"],["process","Flowbots::TextTaggerProcessor","Flowbots/TextTaggerProcessor.html#method-i-process","(text, options={})","
Processes the given text using the EngTagger library and returns a hash of tagged results.\n
@param text …\n"],["process","Flowbots::TextTokenizeProcessor","Flowbots/TextTokenizeProcessor.html#method-i-process","(text, opts={})","
Tokenizes the given text using the specified options.\n
@param text [String, Array] The text to be tokenized. …\n"],["process","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-process","()","
Processes the file(s) specified in the input path.\n
@return [void]\n"],["process","WorkflowAgent","WorkflowAgent.html#method-i-process","(input)","
Processes the given input using the agent’s cartridge.\n
@param input [String] The input to process. …\n"],["process_batch","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-i-process_batch","(batch_files)","
Processes a single batch of files.\n
@param batch_files [Array<String>] An array of file paths for …\n"],["process_batch","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-process_batch","()","
Processes files in batch mode.\n
Fetches unprocessed file IDs and performs additional tasks for each file. …\n"],["process_batch","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-process_batch","(batch_files)",""],["process_batch","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-process_batch","()","
Processes a batch of files using the batch processor.\n
@return [void]\n"],["process_exception","ExceptionAgent","ExceptionAgent.html#method-i-process_exception","(exception)",""],["process_exception","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-process_exception","(classname, exception)","
Processes an exception and generates a report.\n
@param classname [String] The name of the class where the …\n"],["process_file","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-process_file","(file_path)","
Processes a single file by setting the current file path in Redis and running the workflow.\n
@param file_path …\n"],["process_files","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-i-process_files","(&block)","
Processes the files in batches.\n
This method iterates through the files in the input folder, divides them …\n"],["process_files","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-process_files","()",""],["process_single_file","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-process_single_file","()","
Processes a single file.\n
Creates or fetches the FileObject for the input file and performs additional …\n"],["process_single_file","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-process_single_file","()","
Processes a single file.\n
@return [void]\n"],["process_text","Flowbots::CLI","Flowbots/CLI.html#method-i-process_text","(file)","
Processes a text file using the text processing workflow.\n
@param file [String] The path to the text file. …\n"],["prompt","UI","UI.html#method-i-prompt","()","
Returns the TTY::Prompt instance used for user interaction.\n
@return [TTY::Prompt] The TTY::Prompt instance. …\n"],["prompt_for_file","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-prompt_for_file","()","
Prompts the user to select a file using the gum file
command.\n
@return [String] The path to the selected …\n"],["prompt_for_folder","Flowbots::BatchProcessor","Flowbots/BatchProcessor.html#method-i-prompt_for_folder","()","
Prompts the user to select a folder using the gum file
command.\n
@return [String] The path to the selected …\n"],["prompt_for_folder","Flowbots::TopicModelTrainerWorkflow","Flowbots/TopicModelTrainerWorkflow.html#method-i-prompt_for_folder","()","
Prompts the user to select a folder using the gum file
command.\n
@return [String] The path to the selected …\n"],["prompt_for_folder","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-prompt_for_folder","()",""],["readline","TTY::PromptX","TTY/PromptX.html#method-i-readline","(text = \"\")",""],["retrieve_file_metadata","LlmAnalysisTask","LlmAnalysisTask.html#method-i-retrieve_file_metadata","()","
Retrieves the file metadata from Redis.\n
@return [Hash] The file metadata.\n"],["retrieve_file_object","InputRetrieval","InputRetrieval.html#method-i-retrieve_file_object","()","
Retrieves the FileObject from Redis.\n
@return [FileObject, nil] The retrieved FileObject or nil if no …\n"],["retrieve_file_path","InputRetrieval","InputRetrieval.html#method-i-retrieve_file_path","()","
Retrieves the file path from Redis.\n
@return [String] The retrieved file path.\n@raise [ArgumentError] ...\n"],["retrieve_file_path","LoadFileObjectTask","LoadFileObjectTask.html#method-i-retrieve_file_path","()","
Retrieves the file path from Redis.\n
@return [String] The file path retrieved from Redis.\n"],["retrieve_filtered_words","TopicModelingTask","TopicModelingTask.html#method-i-retrieve_filtered_words","(textfile)","
Retrieves filtered words from the segments of the given FileObject.\n
@param textfile [FileObject] The …\n"],["retrieve_input","AccumulateFilteredSegmentsTask","AccumulateFilteredSegmentsTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","DisplayResultsTask","DisplayResultsTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","FileLoaderTask","FileLoaderTask.html#method-i-retrieve_input","()","
Retrieves the input file path from Redis.\n
@return [String] The input file path.\n"],["retrieve_input","FilterSegmentsTask","FilterSegmentsTask.html#method-i-retrieve_input","()",""],["retrieve_input","InputRetrieval","InputRetrieval.html#method-i-retrieve_input","()","
Retrieves the input data for a task.\n
This method first attempts to retrieve a FileObject from Redis.\n ...\n"],["retrieve_input","LlmAnalysisTask","LlmAnalysisTask.html#method-i-retrieve_input","()",""],["retrieve_input","LoadTextFilesTask","LoadTextFilesTask.html#method-i-retrieve_input","()","
Retrieves the input file path from Redis.\n
@return [String] The input file path.\n"],["retrieve_input","NlpAnalysisTask","NlpAnalysisTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","Task","Task.html#method-i-retrieve_input","()",""],["retrieve_input","TextSegmentTask","TextSegmentTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","TextTaggerTask","TextTaggerTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","TokenizeSegmentsTask","TokenizeSegmentsTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_input","TopicModelingTask","TopicModelingTask.html#method-i-retrieve_input","()","
Retrieves the input for the task, which is the current FileObject.\n
@return [FileObject] The current FileObject …\n"],["retrieve_nlp_result","LlmAnalysisTask","LlmAnalysisTask.html#method-i-retrieve_nlp_result","(textfile)","
Retrieves the NLP results for the segments of the Textfile.\n
@param textfile [Textfile] The Textfile object. …\n"],["retrieve_segment_texts","FileObject","FileObject.html#method-i-retrieve_segment_texts","()",""],["retrieve_segments","FileObject","FileObject.html#method-i-retrieve_segments","()",""],["retrieve_word_texts","FileObject","FileObject.html#method-i-retrieve_word_texts","()",""],["retrieve_word_texts","Segment","Segment.html#method-i-retrieve_word_texts","()",""],["retrieve_words","FileObject","FileObject.html#method-i-retrieve_words","()",""],["retrieve_words","Segment","Segment.html#method-i-retrieve_words","()",""],["root","MarkdownYaml","MarkdownYaml.html#method-i-root","()","
The root node of the grammar.\n
@return [Treetop::Runtime::SyntaxNode] The root node of the grammar.\n"],["run","Flowbots::TextProcessingWorkflow","Flowbots/TextProcessingWorkflow.html#method-i-run","()","
Runs the text processing workflow.\n
Sets up the workflow, processes the file(s), and performs additional …\n"],["run","Flowbots::TopicModelTrainerWorkflow","Flowbots/TopicModelTrainerWorkflow.html#method-i-run","()","
Runs the topic model trainer workflow.\n
Sets up the workflow, processes the files, and trains the topic …\n"],["run","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-run","()",""],["run","Flowbots::Workflows","Flowbots/Workflows.html#method-i-run","(workflow_name)","
Runs the specified workflow.\n
@param workflow_name [String] The name of the workflow to run.\n
@return [void] …\n"],["run_workflow","WorkflowOrchestrator","WorkflowOrchestrator.html#method-i-run_workflow","()","
Runs the defined workflow.\n
This method initiates the workflow execution, managing the lifecycle of tasks …\n"],["save_model","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-save_model","()","
Saves the topic model to the specified path.\n
@return [void]\n"],["save_state","WorkflowAgent","WorkflowAgent.html#method-i-save_state","()","
Saves the agent’s state to Redis.\n
@return [void]\n"],["say","UI","UI.html#method-i-say","(type, statement)","
Displays a message to the user with the specified type and logs it.\n
@param type [Symbol] The type of message …\n"],["segment_array","Flowbots::TextSegmentProcessor","Flowbots/TextSegmentProcessor.html#method-i-segment_array","()","
Segments an array of text.\n
@return [Array] An array of segments.\n"],["segment_string","Flowbots::TextSegmentProcessor","Flowbots/TextSegmentProcessor.html#method-i-segment_string","(txt)","
Segments a single string.\n
@param txt [String] The text to be segmented.\n
@return [Array] An array of segments. …\n"],["select_workflow","Flowbots::Workflows","Flowbots/Workflows.html#method-i-select_workflow","(workflows)","
Prompts the user to select a workflow from the list of available workflows.\n
@param workflows [Array<Array( …\n"],["set","RedisKeys","RedisKeys.html#method-c-set","(key, value)","
Sets the value associated with the given key in Redis.\n
@param key [String] The Redis key.\n@param value ...\n"],["setup_redis","Flowbots","Flowbots.html#method-c-setup_redis","()","
Sets up the Redis connection for Ohm.\n
@return [void]\n@raise [Ohm::Error] If there is an error connecting ...\n"],["setup_workflow","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-setup_workflow","()",""],["setup_workflow","Flowbots::UnifiedFileProcessingPipeline","Flowbots/UnifiedFileProcessingPipeline.html#method-i-setup_workflow","()","
Sets up the workflow by defining the task graph and adding agents to the orchestrator.\n
@return [void] …\n"],["shutdown","Flowbots","Flowbots.html#method-c-shutdown","()","
Shuts down the Flowbots application.\n
@return [void]\n"],["side_by_side_boxes","UI::ScrollableBox","UI/ScrollableBox.html#method-i-side_by_side_boxes","(text1, text2, title1: \"Box 1\", title2: \"Box 2\")","
Creates and displays two scrollable boxes side-by-side for comparison.\n
@param text1 [String] The text …\n"],["spinner","UI","UI.html#method-i-spinner","(text)","
Creates and returns a TTY::Spinner instance with the specified text.\n
@param text [String] The text to …\n"],["splat_sort","API","API.html#method-i-splat_sort","(splat_vals)","
… (Add routes for other object buckets and their attributes) …\n"],["stop_running_workflows","Flowbots","Flowbots.html#method-c-stop_running_workflows","()","
Stops any running workflows.\n
@return [void]\n"],["store_FileObject_id","FileLoaderTask","FileLoaderTask.html#method-i-store_FileObject_id","(id)","
Stores the FileObject ID in Redis.\n
@param id [Integer] The ID of the FileObject.\n
@return [void]\n"],["store_analysis_result","LlmAnalysisTask","LlmAnalysisTask.html#method-i-store_analysis_result","(textfile, result)","
Stores the analysis result in the Textfile.\n
@param textfile [Textfile] The Textfile object.\n@param result ...\n"],["store_exception_report","ExceptionAgent","ExceptionAgent.html#method-i-store_exception_report","(report)",""],["store_file_data","Flowbots::FileLoader","Flowbots/FileLoader.html#method-i-store_file_data","(file_path, extracted_text)","
Stores the file data in the database.\n
@param file_path [String] The path to the file.\n@param extracted_text ...\n"],["store_file_object_id","LoadFileObjectTask","LoadFileObjectTask.html#method-i-store_file_object_id","(id)","
Stores the FileObject ID in Redis.\n
@param id [Integer] The ID of the FileObject to store.\n@return [void] ...\n"],["store_preprocessed_data","PreprocessFileObjectTask","PreprocessFileObjectTask.html#method-i-store_preprocessed_data","(content, metadata)","
Stores the preprocessed content and metadata in the FileObject.\n
@param content [String] The preprocessed …\n"],["store_result","MicroAgentTask","MicroAgentTask.html#method-i-store_result","(result)",""],["store_result","TextTaggerTask","TextTaggerTask.html#method-i-store_result","(file_object, result, main_topics, speech_acts, transitivity)","
Stores the tagging results in the FileObject.\n
@param file_object [FileObject] The FileObject to store …\n"],["store_segments","TextSegmentTask","TextSegmentTask.html#method-i-store_segments","(textfile, segments)","
Stores the given segments in the given FileObject.\n
@param textfile [FileObject] The FileObject to store …\n"],["store_textfile_id","LoadTextFilesTask","LoadTextFilesTask.html#method-i-store_textfile_id","(id)","
Stores the Textfile ID in Redis.\n
@param id [Integer] The ID of the Textfile.\n
@return [void]\n"],["store_topic_result","TopicModelingTask","TopicModelingTask.html#method-i-store_topic_result","(textfile, result)","
Stores the topic modeling results in the given FileObject.\n
Extracts unique words from the topic results, …\n"],["store_topics","TopicModelingTask","TopicModelingTask.html#method-i-store_topics","(topics)",""],["tokenize_array","Flowbots::TextTokenizeProcessor","Flowbots/TextTokenizeProcessor.html#method-i-tokenize_array","()","
Tokenizes an array of strings.\n
@return [Array] An array of tokens.\n"],["tokenize_string","Flowbots::TextTokenizeProcessor","Flowbots/TextTokenizeProcessor.html#method-i-tokenize_string","(str)","
Tokenizes a single string.\n
@param str [String] The string to be tokenized.\n
@return [Array] An array of …\n"],["train_model","Flowbots::TopicModelProcessor","Flowbots/TopicModelProcessor.html#method-i-train_model","(documents, iterations=100)","
Trains a topic model using the provided documents.\n
@param documents [Array] An array of documents to train …\n"],["train_topic_model","Flowbots::CLI","Flowbots/CLI.html#method-i-train_topic_model","(folder)","
Trains a topic model using text files in the specified folder.\n
@param folder [String] The path to the …\n"],["train_topic_model","Flowbots::TopicModelTrainerWorkflow","Flowbots/TopicModelTrainerWorkflow.html#method-i-train_topic_model","()","
Trains the topic model using the filtered segments from the processed files.\n
Retrieves the filtered segments …\n"],["train_topic_model","Flowbots::TopicModelTrainerWorkflowtest","Flowbots/TopicModelTrainerWorkflowtest.html#method-i-train_topic_model","()",""],["update_file_object","AccumulateFilteredSegmentsTask","AccumulateFilteredSegmentsTask.html#method-i-update_file_object","(cleaned_segments)","
Updates the FileObject with the given cleaned segments.\n
@param cleaned_segments [Array<Array<String>>] …\n"],["update_segment_with_nlp_data","NlpAnalysisTask","NlpAnalysisTask.html#method-i-update_segment_with_nlp_data","(segment, processed_tokens, lemma_counts)","
Updates a segment with NLP data.\n
Extracts relevant NLP information from the processed tokens and updates …\n"],["update_state","WorkflowAgent","WorkflowAgent.html#method-i-update_state","(response)","
Updates the agent’s state with the latest response.\n
@param response [String] The agent’s response. …\n"],["upsert_document","FlowiseApiClient","FlowiseApiClient.html#method-i-upsert_document","(chatflow_id, file_path, local_ai_config={})","
Sends a document upsert request to the Flowise API.\n
@param chatflow_id [String] The ID of the chatflow …\n"],["version","Flowbots::CLI","Flowbots/CLI.html#method-i-version","()","
Displays the Flowbots version and Ruby environment information.\n
@return [void]\n"],["workflows","Flowbots::CLI","Flowbots/CLI.html#method-i-workflows","()","
Lists available workflows, allows the user to select one, and runs it.\n
@return [void]\n"],["write_markdown","LlmAnalysisTask","LlmAnalysisTask.html#method-i-write_markdown","(textfile, analysis_result)","
Writes the LLM analysis result to a Markdown file.\n
@param textfile [Textfile] The Textfile object.\n@param ...\n"],["write_markdown_report","Flowbots::ExceptionAgent","Flowbots/ExceptionAgent.html#method-i-write_markdown_report","(report, exception_details)","
Writes the exception report to a markdown file.\n
@param report [String] The exception report.\n@param exception_details ...\n"],["write_markdown_report","LlmAnalysisTask","LlmAnalysisTask.html#method-i-write_markdown_report","(result)","
Writes the exception report to a markdown file.\n
@param report [String] The exception report.\n@param exception_details ...\n"],["yaml_front_matter","MarkdownYaml::Document0","MarkdownYaml/Document0.html#method-i-yaml_front_matter","()","
The YAML front matter section of the document.\n
@return [Treetop::Runtime::SyntaxNode] The YAML front matter …\n"],["LICENSE","","LICENSE.html","","
The MIT License (MIT)\n
Copyright © 2024 Robert Pannick\n
Permission is hereby granted, free of charge, to …\n"],["README","","README_md.html","","
Flowbots\n
Flowbots is an advanced text processing and analysis system that combines the power of nano-bots, …\n"]]}}
diff --git a/doc/js/search_index.js.gz b/doc/js/search_index.js.gz
index 5f34bca..d238667 100644
Binary files a/doc/js/search_index.js.gz and b/doc/js/search_index.js.gz differ
diff --git a/doc/table_of_contents.html b/doc/table_of_contents.html
index 02beeea..5a93339 100644
--- a/doc/table_of_contents.html
+++ b/doc/table_of_contents.html
@@ -1810,4 +1810,3 @@
Methods
Generated by RDoc 6.4.0.
Based on Darkfish by Michael Granger.
-
diff --git a/examples/agileBloom.rb b/examples/agileBloom.rb
new file mode 100644
index 0000000..cd3690c
--- /dev/null
+++ b/examples/agileBloom.rb
@@ -0,0 +1,173 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require 'ohm'
+require 'ohm/contrib'
+
+class Agent < Ohm::Model
+ include Ohm::DataTypes
+ include Ohm::Callbacks
+
+ attribute :name
+ attribute :role
+ attribute :state, Type::Hash
+ collection :messages, :Message
+ collection :episodic_memories, :EpisodicMemory
+ collection :semantic_memories, :SemanticMemory
+ collection :reflections, :Reflection
+ index :name
+ index :role
+
+ def store_episodic_memory(content)
+ EpisodicMemory.create(agent: self, content: content, timestamp: Time.now)
+ end
+
+ def update_semantic_memory(content)
+ SemanticMemory.create(agent: self, content: content, timestamp: Time.now)
+ end
+
+ def reflect(content)
+ Reflection.create(agent: self, content: content, timestamp: Time.now)
+ end
+
+ def retrieve_memories(type, query)
+ case type
+ when :episodic
+ episodic_memories.find(content: query).first
+ when :semantic
+ semantic_memories.find(content: query).first
+ when :reflection
+ reflections.find(content: query).first
+ end
+ end
+end
+
+class WorkflowAgent
+ attr_reader :agent, :cartridge_file
+
+ def initialize(role, cartridge_file)
+ @agent = Agent.find(role: role).first || Agent.create(role: role, name: role)
+ @cartridge_file = cartridge_file
+ @bot = NanoBot.new(cartridge: cartridge_file)
+ end
+
+ def process(input)
+ response = @bot.eval(input)
+ @agent.store_episodic_memory("Processed input: #{input}")
+ @agent.reflect("Generated response: #{response}")
+ response
+ end
+end
+
+class MicroAgentTask < Jongleur::WorkerTask
+ def initialize(agent_role, cartridge_file)
+ @workflow_agent = WorkflowAgent.new(agent_role, cartridge_file)
+ end
+
+ def execute
+ input = get_input_for_analysis
+ result = @workflow_agent.process(input)
+ store_result(result)
+ update_agent_knowledge(result)
+ end
+
+ private
+
+ def get_input_for_analysis
+ JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("task_input_#{self.class.name}"))
+ end
+
+ def store_result(result)
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("task_result_#{self.class.name}", result.to_json)
+ end
+
+ def update_agent_knowledge(result)
+ @workflow_agent.agent.update_semantic_memory("Learned from task: #{result}")
+ end
+end
+
+class DialogueManager
+ def start_conversation(agents)
+ conversation = Conversation.create(
+ topic: "General",
+ start_time: Time.now
+ )
+ agents.each { |agent| conversation.participants.add(agent) }
+ conversation
+ end
+
+ def send_message(conversation, sender, content)
+ receiver = (conversation.participants.to_a - [sender]).first
+ Message.create(
+ content: content,
+ timestamp: Time.now,
+ sender: sender,
+ receiver: receiver,
+ conversation: conversation
+ )
+ end
+
+ def end_conversation(conversation)
+ conversation.update(end_time: Time.now)
+ end
+end
+
+class Reasoner
+ def causal_reasoning(query)
+ "Causal reasoning result for: #{query}"
+ end
+
+ def temporal_reasoning(query)
+ "Temporal reasoning result for: #{query}"
+ end
+
+ def analogical_reasoning(query)
+ "Analogical reasoning result for: #{query}"
+ end
+end
+
+# Example of specific MicroAgentTasks
+class DataAnalysisTask < MicroAgentTask
+ def execute
+ super
+ # Additional data analysis specific logic
+ end
+end
+
+class NaturalLanguageProcessingTask < MicroAgentTask
+ def execute
+ super
+ # Additional NLP specific logic
+ end
+end
+
+class DecisionMakingTask < MicroAgentTask
+ def execute
+ super
+ # Additional decision making specific logic
+ end
+end
+
+# Workflow Orchestrator
+class WorkflowOrchestrator
+ def initialize
+ @tasks = []
+ end
+
+ def add_task(task_class, agent_role, cartridge_file)
+ @tasks << task_class.new(agent_role, cartridge_file)
+ end
+
+ def run_workflow
+ @tasks.each do |task|
+ task.execute
+ end
+ end
+end
+
+# Usage example
+orchestrator = WorkflowOrchestrator.new
+orchestrator.add_task(DataAnalysisTask, "data_analyst", "data_analysis_cartridge.yml")
+orchestrator.add_task(NaturalLanguageProcessingTask, "nlp_expert", "nlp_cartridge.yml")
+orchestrator.add_task(DecisionMakingTask, "decision_maker", "decision_making_cartridge.yml")
+orchestrator.run_workflow
diff --git a/examples/crazy-story-gen.rb b/examples/crazy-story-gen.rb
new file mode 100755
index 0000000..ae02339
--- /dev/null
+++ b/examples/crazy-story-gen.rb
@@ -0,0 +1,134 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+lib_dir = File.expand_path(File.join(__dir__, '..', 'lib'))
+$LOAD_PATH.unshift lib_dir unless $LOAD_PATH.include?(lib_dir)
+
+require "flowbots"
+
+# # Centralized error handling with detailed logging
+def handle_error(task_name, error)
+ logger = Cogger::Client.new
+ logger.error "Error in #{task_name}: #{error.message}\nBacktrace:\n#{error.backtrace.join("\n")}"
+ raise # Re-raise to halt the workflow
+end
+
+class ResearcherTask < Jongleur::WorkerTask
+ def execute
+ # spinner = Flowbots::UI.spinner("ResearcherTask")
+ # spinner.auto_spin
+
+ agent = WorkflowAgent.new("researcher", "#{CARTRIDGE_DIR}/researcher.yml")
+ agent.load_state
+
+ result = agent.process("Documentation-Driven Development for Stateful Multi-Agent Workflows")
+ agent.save_state
+ @@redis.set("research_result", result.to_json)
+
+ # spinner.stop("research task completed")
+ #
+ # result.split(". ").each do |word|
+ # print word unless word.nil?
+ # sleep 0.25
+ # end
+
+ puts "\n\n"
+
+ sleep 3
+ rescue StandardError => e
+ handle_error("ResearcherTask", e)
+ raise
+ end
+end
+
+class WriterTask1 < Jongleur::WorkerTask
+ def execute
+ # spinner = Flowbots::UI.spinner("WriterTask2")
+ # spinner.auto_spin
+
+ agent = WorkflowAgent.new("writer1", "#{CARTRIDGE_DIR}/writer.yml")
+ agent.load_state
+ research_result = JSON.parse(@@redis.get("research_result"))
+ article = agent.process("#{research_result}")
+ agent.save_state
+ @@redis.rpush("articles", article)
+
+ # spinner.stop("first draft completed")
+
+ puts "\n\n---\n\n"
+
+ sleep 1
+
+
+ rescue StandardError => e
+ handle_error("WriterTask1", e)
+ raise
+ end
+end
+
+class WriterTask2 < Jongleur::WorkerTask
+ def execute
+ # spinner = Flowbots::UI.spinner("WriterTask2")
+ # spinner.auto_spin
+
+ agent = WorkflowAgent.new("writer2", "#{CARTRIDGE_DIR}/writer.yml")
+ agent.load_state
+ research_result = JSON.parse(@@redis.get("research_result"))
+ article = agent.process("Generate a contrasting narrative based on: #{research_result}")
+ agent.save_state
+ @@redis.rpush("articles", article)
+
+ # spinner.stop("contrasting statement task completed")
+
+ puts "\n\n---\n\n"
+
+ sleep 1
+
+ rescue StandardError => e
+ handle_error("WriterTask2", e)
+ raise
+ end
+end
+
+class EditorTask < Jongleur::WorkerTask
+ @desc = 'this is task D'
+ def execute
+ agent = WorkflowAgent.new("editor", "#{CARTRIDGE_DIR}/editor.yml")
+ articles = @@redis.lrange("articles", 0, -1)
+
+ # spinner = Flowbots::UI.spinner("EditorTask")
+ # spinner.auto_spin
+
+ final_result = agent.process("Braid the articles: #{articles.join('\n\n')}")
+
+ # spinner.stop("research task completed")
+
+ puts "\n\n---\n\n"
+
+ puts final_result
+
+ rescue StandardError => e
+ handle_error("EditorTask", e)
+ raise
+ end
+end
+
+clear = `tput clear cup 5`
+puts clear
+
+# Example usage
+orchestrator = WorkflowOrchestrator.new
+orchestrator.add_agent("researcher", "researcher.yml")
+orchestrator.add_agent("writer1", "writer.yml")
+orchestrator.add_agent("writer2", "writer.yml")
+orchestrator.add_agent("editor", "editor.yml")
+
+workflow_graph = {
+ ResearcherTask: %i[WriterTask1 WriterTask2],
+ WriterTask1: [],
+ WriterTask2: [:EditorTask]
+}
+
+orchestrator.define_workflow(workflow_graph)
+
+orchestrator.run_workflow
diff --git a/examples/crazy-story-genv2.rb b/examples/crazy-story-genv2.rb
new file mode 100644
index 0000000..d4b9fd1
--- /dev/null
+++ b/examples/crazy-story-genv2.rb
@@ -0,0 +1,130 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+lib_dir = File.expand_path(File.join(__dir__, "..", "lib"))
+$LOAD_PATH.unshift lib_dir unless $LOAD_PATH.include?(lib_dir)
+
+require "flowbots"
+
+# # Centralized error handling with detailed logging
+def handle_error(task_name, error)
+ logger = Cogger::Client.new
+ logger.error "Error in #{task_name}: #{error.message}\nBacktrace:\n#{error.backtrace.join("\n")}"
+ raise # Re-raise to halt the workflow
+end
+
+class ResearcherTask < Jongleur::WorkerTask
+ def execute
+ # spinner = Flowbots::UI.spinner("ResearcherTask")
+ # spinner.auto_spin
+
+ agent = WorkflowAgent.new("researcher", "#{CARTRIDGE_DIR}/researcher.yml")
+ agent.load_state
+
+ result = agent.process("Documentation-Driven Development for Stateful Multi-Agent Workflows")
+ agent.save_state
+ @@redis.set("research_result", result.to_json)
+
+ # spinner.stop("research task completed")
+ #
+ # result.split(". ").each do |word|
+ # print word unless word.nil?
+ # sleep 0.25
+ # end
+
+ puts "\n\n"
+
+ sleep 3
+ rescue StandardError => e
+ handle_error("ResearcherTask", e)
+ raise
+ end
+end
+
+class WriterTask1 < Jongleur::WorkerTask
+ def execute
+ # spinner = Flowbots::UI.spinner("WriterTask2")
+ # spinner.auto_spin
+
+ agent = WorkflowAgent.new("writer1", "#{CARTRIDGE_DIR}/writer.yml")
+ agent.load_state
+ research_result = JSON.parse(@@redis.get("research_result"))
+ article = agent.process("#{research_result}")
+ agent.save_state
+ @@redis.rpush("articles", article)
+
+ # spinner.stop("first draft completed")
+
+ puts "\n\n---\n\n"
+
+ sleep 1
+ rescue StandardError => e
+ handle_error("WriterTask1", e)
+ raise
+ end
+end
+
+class WriterTask2 < Jongleur::WorkerTask
+ def execute
+ # spinner = Flowbots::UI.spinner("WriterTask2")
+ # spinner.auto_spin
+
+ agent = WorkflowAgent.new("writer2", "#{CARTRIDGE_DIR}/writer.yml")
+ agent.load_state
+ research_result = JSON.parse(@@redis.get("research_result"))
+ article = agent.process("Generate a contrasting narrative based on: #{research_result}")
+ agent.save_state
+ @@redis.rpush("articles", article)
+
+ # spinner.stop("contrasting statement task completed")
+
+ puts "\n\n---\n\n"
+
+ sleep 1
+ rescue StandardError => e
+ handle_error("WriterTask2", e)
+ raise
+ end
+end
+
+class EditorTask < Jongleur::WorkerTask
+ @desc = "this is task D"
+ def execute
+ agent = WorkflowAgent.new("editor", "#{CARTRIDGE_DIR}/editor.yml")
+ articles = @@redis.lrange("articles", 0, -1)
+
+ # spinner = Flowbots::UI.spinner("EditorTask")
+ # spinner.auto_spin
+
+ final_result = agent.process("Braid the articles: #{articles.join('\n\n')}")
+
+ # spinner.stop("research task completed")
+
+ puts "\n\n---\n\n"
+
+ puts final_result
+ rescue StandardError => e
+ handle_error("EditorTask", e)
+ raise
+ end
+end
+
+clear = `tput clear cup 5`
+puts clear
+
+# Example usage
+orchestrator = WorkflowOrchestrator.new
+orchestrator.add_agent("researcher", "researcher.yml")
+orchestrator.add_agent("writer1", "writer.yml")
+orchestrator.add_agent("writer2", "writer.yml")
+orchestrator.add_agent("editor", "editor.yml")
+
+workflow_graph = {
+ ResearcherTask: %i[WriterTask1 WriterTask2],
+ WriterTask1: [],
+ WriterTask2: [:EditorTask]
+}
+
+orchestrator.define_workflow(workflow_graph)
+
+orchestrator.run_workflow
diff --git a/examples/llm_analysis.rb b/examples/llm_analysis.rb
new file mode 100644
index 0000000..14fb353
--- /dev/null
+++ b/examples/llm_analysis.rb
@@ -0,0 +1,49 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+class LlmAnalysis < Flowbots::Task
+ def execute
+ Flowbots::UI.info "Starting LLMAnalysisTask"
+
+ begin
+ agent = WorkflowAgent.new(
+ "advanced_analysis",
+ File.join(CARTRIDGE_DIR, "@b08x", "cartridges", "assistants/agileBloomMini.yml")
+ )
+
+ logger.debug "Created WorkflowAgent instance"
+
+ agent.load_state
+ logger.debug "Loaded agent state"
+
+ processed_text = JSON.parse(@@redis.get("processed_text"))
+ topics = JSON.parse(@@redis.get("topics"))
+ # binding.pry # Breakpoint 5: After retrieving processed text and topics
+ logger.debug "Retrieved processed text and topics from Redis"
+
+ logger.debug "Processing with agent"
+
+ begin
+ analysis_result = agent.process("#{processed_text.join(' ')}\nTopics: #{topics}")
+ rescue Faraday::ForbiddenError => e
+ logger.fatal e.message.to_s
+ logger.fatal e.backtrace.join("\n").to_s
+ end
+ # binding.pry # Breakpoint 6: After agent processing
+ logger.debug "Agent processing completed"
+
+ agent.save_state
+ logger.debug "Saved agent state"
+
+ @@redis.set("analysis_result", analysis_result.to_json)
+ logger.debug "Stored analysis result in Redis"
+
+ logger.info "LLMAnalysisTask completed"
+ rescue StandardError => e
+ logger.error "Error in LLMAnalysisTask: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ # binding.pry if PRYDEBUG # Breakpoint 7: If an error occurs
+ raise
+ end
+ end
+end
diff --git a/examples/text_analysis_workflow2.rb b/examples/text_analysis_workflow2.rb
new file mode 100644
index 0000000..f9b0db9
--- /dev/null
+++ b/examples/text_analysis_workflow2.rb
@@ -0,0 +1,121 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+# Description: Analyze text using NLP, topic modeling, and summarization
+
+module Flowbots
+ class TextAnalysisWorkflow
+ include Logging
+
+ def initialize
+ @orchestrator = WorkflowOrchestrator.new
+ setup_agents
+ define_workflow
+ end
+
+ def run
+ logger.info "Starting Text Analysis Workflow"
+ Flowbots::UI.say(:ok, "Starting Text Analysis Workflow")
+
+ input_file_path = prompt_for_file
+ user_query = prompt_for_query
+
+ input_text = process_input_file(input_file_path)
+ result = execute_workflow(input_text, user_query)
+
+ display_results(result)
+
+ logger.info "Text Analysis Workflow completed"
+ Flowbots::UI.say(:ok, "Text Analysis Workflow completed")
+ end
+
+ private
+
+ def setup_agents
+ @orchestrator.add_agent('nlp_expert', 'nlp_techniques_and_tools.yml')
+ @orchestrator.add_agent('topic_modeler', 'topic_modeling_expert.yml')
+ @orchestrator.add_agent('summarizer', 'text_summarization_expert.yml')
+ end
+
+ def define_workflow
+ workflow_graph = {
+ NlpAnalysisTask: [:TopicModelingTask],
+ TopicModelingTask: [:SummaryTask],
+ SummaryTask: []
+ }
+ @orchestrator.define_workflow(workflow_graph)
+ end
+
+ def prompt_for_file
+ Flowbots::UI.say(:ok, "Please select an input file:")
+ get_file_path = `gum file`.chomp.strip
+ file_path = File.join(get_file_path)
+ unless File.exist?(file_path)
+ raise FlowbotError.new("File not found", "FILENOTFOUND")
+ end
+ file_path
+ end
+
+ def prompt_for_query
+ Flowbots::UI.say(:ok, "Please enter your query about the text:")
+ gets.chomp
+ end
+
+ def process_input_file(file_path)
+ Flowbots::UI.say(:ok, "Processing input file: #{file_path}")
+ File.read(file_path)
+ end
+
+ def execute_workflow(input_text, user_query)
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("input_text", input_text)
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("user_query", user_query)
+
+ @orchestrator.run_workflow
+
+ {
+ nlp_result: JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("nlp_result")),
+ topic_result: JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("topic_result")),
+ summary: JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("summary_result"))
+ }
+ end
+
+ def display_results(result)
+ Flowbots::UI.say(:ok, "Analysis Results:")
+ puts UIBox.info_box("NLP Analysis", result[:nlp_result])
+ puts UIBox.info_box("Topic Modeling", result[:topic_result])
+ puts UIBox.eval_result_box(result[:summary], title: "Summary")
+ end
+ end
+
+ class NlpAnalysisTask < Jongleur::WorkerTask
+ def execute
+ input_text = Jongleur::WorkerTask.class_variable_get(:@@redis).get("input_text")
+ nlp_processor = Flowbots::NLPProcessor.instance
+ result = nlp_processor.process(input_text)
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("nlp_result", result.to_json)
+ end
+ end
+
+ class TopicModelingTask < Jongleur::WorkerTask
+ def execute
+ input_text = Jongleur::WorkerTask.class_variable_get(:@@redis).get("input_text")
+ topic_processor = Flowbots::TopicModelProcessor.instance
+ result = topic_processor.process([input_text])
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("topic_result", result.to_json)
+ end
+ end
+
+ class SummaryTask < Jongleur::WorkerTask
+ def execute
+ nlp_result = JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("nlp_result"))
+ topic_result = JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("topic_result"))
+ user_query = Jongleur::WorkerTask.class_variable_get(:@@redis).get("user_query")
+
+ agent = WorkflowAgent.new("summarizer", File.join(CARTRIDGE_DIR, "text_summarization_expert.yml"))
+ input = "NLP Analysis: #{nlp_result}\n\nTopic Modeling: #{topic_result}\n\nUser Query: #{user_query}"
+ summary = agent.process(input)
+
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("summary_result", summary.to_json)
+ end
+ end
+end
diff --git a/examples/tree-of-thoughts.rb b/examples/tree-of-thoughts.rb
new file mode 100644
index 0000000..673fc6b
--- /dev/null
+++ b/examples/tree-of-thoughts.rb
@@ -0,0 +1,233 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require "helper"
+
+require "cogger"
+require "jongleur"
+require "json"
+require "nano-bots"
+require "redis"
+require "yaml"
+
+require "dotenv"
+
+begin
+ Dotenv.load(File.join(__dir__, "..", ".env"))
+rescue StandardError => e
+ puts "hey"
+end
+
+require "logging"
+
+include Logging
+
+CARTRIDGE_DIR = File.expand_path("../nano-bots/cartridges/", __dir__)
+
+p Dir.new(CARTRIDGE_DIR).entries
+
+require "ui"
+
+class Jongleur::WorkerTask
+ begin
+ @@redis = Redis.new(host: "localhost", port: 6379, db: 15)
+ # @@redis.flushall
+ # exit
+ rescue Redis::CannotConnectError => e
+ handle_error(self.class.name, e)
+ exit
+ end
+end
+
+class WorkflowOrchestrator
+ def initialize
+ @agents = {}
+ end
+
+ def add_agent(role, cartridge_file)
+ cartridge_path = File.join(CARTRIDGE_DIR, cartridge_file)
+
+ raise "Cartridge file not found: \"#{cartridge_path}\"" unless File.exist?(cartridge_path)
+
+ @agents[role] = WorkflowAgent.new(role, cartridge_path)
+ end
+
+ def define_workflow(workflow_definition)
+ Jongleur::API.add_task_graph(workflow_definition)
+ end
+
+ def run_workflow
+ Jongleur::API.print_graph("/tmp")
+
+ Jongleur::API.run do |on|
+ on.completed do |task_matrix|
+ puts "Workflow completed"
+ puts task_matrix
+ end
+ end
+ end
+end
+
+class WorkflowAgent
+ def initialize(role, cartridge_file)
+ @role = role
+ @state = {}
+ @bot = NanoBot.new(
+ cartridge: cartridge_file
+ )
+ end
+
+ def process(input)
+ @bot.eval(input) do |content, fragment, finished, meta|
+ @response = content unless content.nil?
+ print fragment unless fragment.nil?
+ sleep 0.325
+ end
+
+ update_state(@response)
+ @response
+ end
+
+ def save_state
+ Jongleur::WorkerTask.class_variable_get(:@@redis).hset(
+ Process.pid.to_s,
+ "agent:#{@role}",
+ @state.to_json
+ )
+ end
+
+ def load_state
+ state_json = Jongleur::WorkerTask.class_variable_get(:@@redis).hget(
+ Process.pid.to_s,
+ "agent:#{@role}"
+ )
+ @state = JSON.parse(state_json) if state_json
+ end
+
+ private
+
+ def update_state(response)
+ @state[:last_response] = response
+ end
+end
+
+class ThoughtGeneratorTask < Jongleur::WorkerTask
+ def execute
+ agent = WorkflowAgent.new("thought_generator", "thought_generator.yml")
+ agent.load_state
+ prompt = if @@redis.exists?("current_thoughts")
+ "Expand on these thoughts: #{@@redis.get('current_thoughts')}"
+ else
+ "Generate initial thoughts on semantic and emotional context analysis for threat modeling"
+ end
+ result = agent.process(prompt)
+ agent.save_state
+ @@redis.set("new_thoughts", result.to_json)
+ end
+end
+
+class ThoughtEvaluatorTask < Jongleur::WorkerTask
+ def execute
+ agent = WorkflowAgent.new("thought_evaluator", "thought_evaluator.yml")
+ agent.load_state
+ thoughts = JSON.parse(@@redis.get("new_thoughts"))
+ result = agent.process("Evaluate and rank these thoughts: #{thoughts}")
+ agent.save_state
+ @@redis.set("evaluation_results", result.to_json)
+ end
+end
+
+class ContextAnalyzerTask < Jongleur::WorkerTask
+ def execute
+ agent = WorkflowAgent.new("context_analyzer", "context_analyzer.yml")
+ agent.load_state
+ best_thoughts = JSON.parse(@@redis.get("evaluation_results"))
+ result = agent.process("Analyze the semantic context based on these thoughts: #{best_thoughts}")
+ agent.save_state
+ @@redis.set("semantic_analysis", result.to_json)
+ end
+end
+
+class ThreatIdentifierTask < Jongleur::WorkerTask
+ def execute
+ agent = WorkflowAgent.new("threat_identifier", "threat_identifier.yml")
+ agent.load_state
+ semantic_analysis = JSON.parse(@@redis.get("semantic_analysis"))
+ result = agent.process("Identify potential threats based on: #{semantic_analysis}")
+ agent.save_state
+ @@redis.set("threat_identification", result.to_json)
+ end
+end
+
+class EmotionalAssessorTask < Jongleur::WorkerTask
+ def execute
+ agent = WorkflowAgent.new("emotional_assessor", "emotional_assessor.yml")
+ agent.load_state
+ semantic_analysis = JSON.parse(@@redis.get("semantic_analysis"))
+ threat_identification = JSON.parse(@@redis.get("threat_identification"))
+ result = agent.process("Assess emotional state and intentions based on: #{semantic_analysis} and #{threat_identification}")
+ agent.save_state
+ @@redis.set("emotional_assessment", result.to_json)
+ end
+end
+
+class CulturalAnalyzerTask < Jongleur::WorkerTask
+ def execute
+ agent = WorkflowAgent.new("cultural_analyzer", "cultural_analyzer.yml")
+ agent.load_state
+ all_data = {
+ semantic: JSON.parse(@@redis.get("semantic_analysis")),
+ threats: JSON.parse(@@redis.get("threat_identification")),
+ emotional: JSON.parse(@@redis.get("emotional_assessment"))
+ }
+ result = agent.process("Analyze cultural and contextual nuances based on: #{all_data}")
+ agent.save_state
+ @@redis.set("cultural_analysis", result.to_json)
+ end
+end
+
+class PromptGeneratorTask < Jongleur::WorkerTask
+ def execute
+ agent = WorkflowAgent.new("prompt_generator", "prompt_generator.yml")
+ agent.load_state
+ all_analyses = {
+ semantic: JSON.parse(@@redis.get("semantic_analysis")),
+ threats: JSON.parse(@@redis.get("threat_identification")),
+ emotional: JSON.parse(@@redis.get("emotional_assessment")),
+ cultural: JSON.parse(@@redis.get("cultural_analysis"))
+ }
+ result = agent.process("Generate targeted prompts based on all analyses: #{all_analyses}")
+ agent.save_state
+ @@redis.set("generated_prompts", result.to_json)
+ puts "Generated Prompts:"
+ puts result
+ end
+end
+
+# Workflow definition
+workflow_graph = {
+ ThoughtGeneratorTask: [:ThoughtEvaluatorTask],
+ ThoughtEvaluatorTask: %i[ThoughtGeneratorTask ContextAnalyzerTask],
+ ContextAnalyzerTask: %i[ThreatIdentifierTask EmotionalAssessorTask],
+ ThreatIdentifierTask: [:EmotionalAssessorTask],
+ EmotionalAssessorTask: [:CulturalAnalyzerTask],
+ CulturalAnalyzerTask: [:PromptGeneratorTask],
+ PromptGeneratorTask: []
+}
+
+# Orchestrator setup and execution
+orchestrator = WorkflowOrchestrator.new
+orchestrator.add_agent("thought_generator", "thought_generator.yml")
+orchestrator.add_agent("thought_evaluator", "thought_evaluator.yml")
+orchestrator.add_agent("context_analyzer", "context_analyzer.yml")
+orchestrator.add_agent("threat_identifier", "threat_identifier.yml")
+orchestrator.add_agent("emotional_assessor", "emotional_assessor.yml")
+orchestrator.add_agent("cultural_analyzer", "cultural_analyzer.yml")
+orchestrator.add_agent("prompt_generator", "prompt_generator.yml")
+
+orchestrator.define_workflow(workflow_graph)
+
+# Run the workflow multiple times to simulate the tree of thoughts expansion
+3.times do
+ orchestrator.run_workflow
+end
diff --git a/exception_reports/exception_report_20240716_115957.md b/exception_reports/exception_report_20240716_115957.md
new file mode 100644
index 0000000..3da021f
--- /dev/null
+++ b/exception_reports/exception_report_20240716_115957.md
@@ -0,0 +1,67 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Flowbots Topic Model Processor
+
+**Summary:**
+
+The Flowbots CLI encountered a "no implicit conversion of nil into Hash" error while attempting to process text using the TopicModelProcessor. This suggests an issue with handling data expected to be in a Hash format, which is currently nil.
+
+**Technical Details:**
+
+* **Error Class:** Flowbots::CLI
+* **Error Message:** no implicit conversion of nil into Hash
+* **Affected Component:** TopicModelProcessor
+
+**Backtrace:**
+
+The error originated in the `load_model` method of `TopicModelProcessor` (line 108). The backtrace suggests the error occurred during initialization of the TopicModelProcessor and TextProcessor classes, ultimately stemming from the `process_text` command in the Flowbots CLI.
+
+**Relevant Code:**
+
+The error likely occurs within the `store_topics` method of `TopicModelProcessor.rb` due to the use of `result[1]` which accesses the second element of the `result` array. Upon inspection of the `process` method, it is evident that the `result` array is populated with the output of `infer_topics`, which can return `nil` under certain conditions. Attempting to access the second element of a `nil` value would result in the observed error.
+
+**Potential Causes:**
+
+* The `infer_topics` method returns `nil` when `topic_dist` is `nil`. This could be caused by an issue with the LDA model inference or the input text provided to the model.
+* A variable or method is expected to return a Hash, but it returns nil instead. This could be due to incorrect data handling or an unexpected condition.
+
+**Next Steps:**
+
+1. **Debug `infer_topics`:** Investigate why `topic_dist` is nil in certain cases and address the root cause. This may involve analyzing the input text, the LDA model parameters, or the `infer` method of the Tomoto library.
+2. **Implement Error Handling:** Modify the `store_topics` method to gracefully handle cases where `result` might not contain the expected data. This could involve checking the return value of `infer_topics` and taking appropriate action, such as logging an error or using a default value.
+
+**Recommendation:**
+
+Thorough debugging of the `infer_topics` method and implementation of robust error handling within `store_topics` will be crucial to resolve this issue and prevent similar errors in the future.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** no implicit conversion of nil into Hash
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:108:in `load_model'
+/home/b08x/Workspace/flowbots/lib/processors/TextProcessor.rb:16:in `initialize'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:22:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `block in instance'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `synchronize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `instance'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:15:in `initialize'
+/home/b08x/Workspace/flowbots/lib/cli.rb:48:in `new'
+/home/b08x/Workspace/flowbots/lib/cli.rb:48:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_120556.md b/exception_reports/exception_report_20240716_120556.md
new file mode 100644
index 0000000..0d5bd48
--- /dev/null
+++ b/exception_reports/exception_report_20240716_120556.md
@@ -0,0 +1,61 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Topic Modeling Failure
+
+**Summary:** The Flowbots CLI encountered an error during topic modeling, specifically while attempting to train the model. The error message indicates that no valid words were found in the provided documents.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** No valid words found in the provided documents
+* **Affected Component:** TopicModelProcessor
+* **Trigger:** Execution of the `process_text` command in the CLI.
+* **Root Cause:** The TopicModelProcessor's `train_model` method requires a set of documents containing valid words to function correctly. The error suggests that the documents passed to this method were either empty or did not contain any words recognized by the model.
+
+**Backtrace:** The error originated in the `train_model` method of the `TopicModelProcessor` class (TopicModelProcessor.rb:101), specifically within the `ensure_model_exists` method (TopicModelProcessor.rb:60) called during processing.
+
+**Relevant Code:** Refer to the following files:
+
+* **TopicModelProcessor.rb:** The core logic for topic model training and inference.
+* **topic_modeling_task.rb:** Defines the task responsible for retrieving processed documents and executing topic modeling.
+* **text_processing_workflow.rb:** Manages the overall text processing workflow, including NLP analysis and topic modeling.
+* **cli.rb:** Processes the `process_text` command and initiates the text processing workflow.
+
+**Next Steps:**
+
+1. **Investigate Document Content:** Examine the documents being passed to the `train_model` method to determine why they are considered empty or lacking valid words. This may involve reviewing:
+ * The source of the input documents.
+ * Any preprocessing steps applied to the documents before topic modeling.
+2. **Review Preprocessing:** Verify that the NLP preprocessing steps (e.g., tokenization, stop word removal) are functioning as intended and not inadvertently removing all words from the documents.
+3. **Validate Model Configuration:** Confirm that the topic model is configured correctly and that its vocabulary is compatible with the expected vocabulary of the processed documents.
+
+This error highlights a critical issue within the topic modeling pipeline. Resolving this will require a thorough investigation of the document processing and model training stages to ensure valid input data for the topic model.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** No valid words found in the provided documents
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:101:in `train_model'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:60:in `ensure_model_exists'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:42:in `process'
+/home/b08x/Workspace/flowbots/lib/tasks/topic_modeling_task.rb:10:in `execute'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:65:in `run_topic_modeling'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:25:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_120827.md b/exception_reports/exception_report_20240716_120827.md
new file mode 100644
index 0000000..c915c59
--- /dev/null
+++ b/exception_reports/exception_report_20240716_120827.md
@@ -0,0 +1,59 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Topic Model Training Failure
+
+**Summary:** The Flowbots application encountered an error during the topic modeling workflow. The specific error message indicates that no valid words were found in the provided documents, preventing the topic model from being trained.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** No valid words found in the provided documents
+* **Relevant Code:**
+ * TopicModelProcessor.rb (specifically the `train_model` method)
+ * topic_modeling_task.rb
+ * text_processing_workflow.rb
+ * cli.rb
+* **Backtrace:** The backtrace points to the `train_model` method within the `TopicModelProcessor` class as the origin of the error. It highlights the sequence of calls leading to the error, starting from the command line invocation of the text processing workflow.
+
+**Potential Causes:**
+
+1. **Empty Documents:** The input documents provided for training the topic model might be empty. This could be due to issues in prior processing steps, such as text segmentation or data loading.
+2. **Data Preprocessing Errors:** The NLP pipeline, responsible for preparing the text data for the topic model, may contain errors that remove all meaningful words from the documents. This could involve overly aggressive stop word removal, stemming, or lemmatization.
+3. **Incorrect Data Format:** The input data format might not be compatible with the topic modeling library's requirements. This could involve improper text encoding, incorrect delimiters, or unexpected special characters.
+
+**Next Steps:**
+
+1. **Verify Input Data:** Investigate the content of the documents being passed to the `train_model` method. Ensure they are not empty and contain valid words after preprocessing.
+2. **Review NLP Pipeline:** Audit the NLP processing steps performed before topic modeling to identify potential issues that could remove all valid words. Examine the stop word list, stemming/lemmatization rules, and other preprocessing steps.
+3. **Validate Data Format:** Check the input data format to confirm it aligns with the expected format of the topic modeling library. Pay close attention to text encoding, delimiters, and special characters.
+
+This error requires immediate attention as it prevents the successful execution of the topic modeling workflow.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** No valid words found in the provided documents
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:101:in `train_model'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:60:in `ensure_model_exists'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:42:in `process'
+/home/b08x/Workspace/flowbots/lib/tasks/topic_modeling_task.rb:10:in `execute'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:65:in `run_topic_modeling'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:25:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_121921.md b/exception_reports/exception_report_20240716_121921.md
new file mode 100644
index 0000000..9919534
--- /dev/null
+++ b/exception_reports/exception_report_20240716_121921.md
@@ -0,0 +1,63 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Topic Model Saving Failure
+
+**Summary:** The Flowbots application encountered a fatal error while attempting to save a trained topic model. The error message "writing type 'j' is failed" suggests a problem occurred during the serialization or writing process of the model data.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** writing type 'j' is failed
+
+**Backtrace Analysis:**
+
+The error originated during the model saving process within the `TopicModelProcessor` class:
+
+1. The `save_model` method in `TopicModelProcessor.rb` invoked the `save` method of a `Tomoto::LDA` object.
+2. The `_save` method (line 42 in `tomoto/lda.rb` within the `tomoto` gem) attempted to write data, likely a character identified as type 'j', which resulted in the failure.
+
+**Potential Causes:**
+
+* **Disk Space:** Insufficient disk space could prevent the model file from being written.
+* **File Permissions:** Incorrect file permissions on the target directory or model file path could block the write operation.
+* **Data Encoding Issue:** An unexpected character encoding issue within the model data or the saving process might be causing the 'j' type write failure.
+* **Tomoto Gem Issue:** There could be an underlying issue within the `tomoto` gem itself related to data serialization or file writing.
+
+**Recommended Actions:**
+
+1. **Verify Disk Space and Permissions:** Check the available disk space and permissions on the directory where the model is being saved (`TOPIC_MODEL_PATH`).
+2. **Inspect Model Data:** Investigate the contents of the `Tomoto::LDA` object being saved for any unusual characters or encoding issues.
+3. **Test Tomoto Gem:** Consider testing the `tomoto` gem version used in the project for known issues and update if necessary.
+4. **Debug Saving Process:** Implement additional logging or debugging statements around the `_save` method within the `tomoto` gem to pinpoint the exact location and cause of the error.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** writing type 'j' is failed
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/tomoto-0.4.0-x86_64-linux/lib/tomoto/lda.rb:42:in `_save'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/tomoto-0.4.0-x86_64-linux/lib/tomoto/lda.rb:42:in `save'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:161:in `save_model'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:135:in `train_model'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:60:in `ensure_model_exists'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:42:in `process'
+/home/b08x/Workspace/flowbots/lib/tasks/topic_modeling_task.rb:10:in `execute'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:65:in `run_topic_modeling'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:25:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_122845.md b/exception_reports/exception_report_20240716_122845.md
new file mode 100644
index 0000000..c6c23a7
--- /dev/null
+++ b/exception_reports/exception_report_20240716_122845.md
@@ -0,0 +1,69 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Undefined Method 'topic_distribution'
+
+**Summary:**
+
+The application encountered a fatal error during the topic modeling stage of the text processing workflow. The error message "undefined method `topic_distribution'" suggests the Tomoto::LDA model instance lacks this method, causing the application to crash.
+
+**Technical Details:**
+
+* **Error Class:** Flowbots::CLI
+* **Error Message:** undefined method `topic_distribution' for #
+* **Root Cause:** The `topic_distribution` method is being called on a `Tomoto::LDA` object which does not define that method. This is occurring within the `store_all_topics` method of the `TopicModelProcessor` class.
+* **Location:** The error originates in the `TopicModelProcessor.rb` file, line 223, within the `store_all_topics` method.
+* **Backtrace:** The error propagates through the following call stack:
+ - `store_all_topics` (TopicModelProcessor.rb:218)
+ - `train_model` (TopicModelProcessor.rb:146)
+ - `ensure_model_exists` (TopicModelProcessor.rb:60)
+ - `process` (TopicModelProcessor.rb:42)
+ - ... (See full backtrace provided)
+* **Impact:** The error halts the text processing workflow, preventing topic modeling and subsequent analysis.
+
+**Possible Causes:**
+
+1. **Outdated Tomoto Gem:** The version of the `tomoto` gem used might not include the `topic_distribution` method.
+2. **Method Name Mismatch:** The method might be named differently in the current `tomoto` gem version.
+3. **Incorrect Object Type:** An object other than a `Tomoto::LDA` instance might be inadvertently used, leading to the error.
+
+**Next Steps:**
+
+1. **Verify Gem Version:** Confirm the installed `tomoto` gem version and compare it with the official documentation.
+2. **Inspect `Tomoto::LDA` Methods:** Verify if the `topic_distribution` method exists or if an alternative method achieves the same functionality.
+3. **Code Review:** Carefully review the `store_all_topics` method in `TopicModelProcessor.rb` to ensure the correct object type is used and the method call is accurate.
+4. **Debugging:** Use debugging tools to step through the code execution and pinpoint the exact location where the error occurs.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `topic_distribution' for #":one", :min_cf=>"3", :min_df=>"2", :rm_top=>"4", :k=>"20", :alpha=>"0.1", :eta=>"0.01", :seed=>"42"}, @prepared=true>
+
+ vector: @model.topic_distribution(k).to_json
+ ^^^^^^^^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:223:in `block in store_all_topics'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:218:in `times'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:218:in `store_all_topics'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:146:in `train_model'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:60:in `ensure_model_exists'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:42:in `process'
+/home/b08x/Workspace/flowbots/lib/tasks/topic_modeling_task.rb:10:in `execute'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:65:in `run_topic_modeling'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:25:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_123021.md b/exception_reports/exception_report_20240716_123021.md
new file mode 100644
index 0000000..9361de6
--- /dev/null
+++ b/exception_reports/exception_report_20240716_123021.md
@@ -0,0 +1,66 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Undefined Method 'topic_distribution'
+
+**Summary:**
+
+The application encountered a fatal error during the topic modeling process. The error message "undefined method `topic_distribution' for #":one", :min_cf=>"3", :min_df=>"2", :rm_top=>"4", :k=>"20", :alpha=>"0.1", :eta=>"0.01", :seed=>"42"}, @prepared=true>
+* **Location:** `TopicModelProcessor.rb:221` inside the `store_all_topics` method
+* **Cause:** The `@model` object, an instance of `Tomoto::LDA`, is being sent a message to call the `topic_distribution` method which does not exist in the `Tomoto::LDA` class definition.
+* **Backtrace:** The provided backtrace shows the sequence of method calls that led to the error. It starts with the `store_all_topics` method call in `TopicModelProcessor.rb:216` and goes back to the `process_text` method in `cli.rb:49`.
+
+**Relevant Files:**
+
+* `TopicModelProcessor.rb`
+* `topic_modeling_task.rb`
+* `text_processing_workflow.rb`
+* `cli.rb`
+* `command.rb`
+* `thor_ext.rb`
+
+**Next Steps:**
+
+1. **Verify Method Existence:** Confirm if the `topic_distribution` method exists in the `Tomoto::LDA` class definition. Consult the Tomoto documentation if needed.
+2. **Investigate Alternative:** If the method does not exist, identify the correct method for accessing the topic distribution data from the `Tomoto::LDA` object.
+3. **Implement Solution:** Update the `store_all_topics` method in `TopicModelProcessor.rb` to utilize the appropriate method for retrieving topic distribution.
+4. **Test:** Thoroughly test the application after implementing the fix to ensure the error is resolved.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `topic_distribution' for #":one", :min_cf=>"3", :min_df=>"2", :rm_top=>"4", :k=>"20", :alpha=>"0.1", :eta=>"0.01", :seed=>"42"}, @prepared=true>
+
+ vector: @model.topic_distribution(k).to_json
+ ^^^^^^^^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:221:in `block in store_all_topics'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:216:in `times'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:216:in `store_all_topics'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:146:in `train_model'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:60:in `ensure_model_exists'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:42:in `process'
+/home/b08x/Workspace/flowbots/lib/tasks/topic_modeling_task.rb:10:in `execute'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:65:in `run_topic_modeling'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:25:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_123526.md b/exception_reports/exception_report_20240716_123526.md
new file mode 100644
index 0000000..ba31ae8
--- /dev/null
+++ b/exception_reports/exception_report_20240716_123526.md
@@ -0,0 +1,64 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Undefined Method `topic_distribution`
+
+**Summary:**
+
+The application encountered an error during topic modeling. The `topic_distribution` method is undefined for the `Tomoto::LDA` object. This suggests an incompatibility between the `Tomoto` gem version and the expected method call within the `TopicModelProcessor` class.
+
+**Technical Details:**
+
+* **Class:** `Flowbots::CLI`
+* **Message:** undefined method `topic_distribution` for #
+* **Method Call:** `@model.topic_distribution(k).to_json`
+* **Location:** `TopicModelProcessor.rb:222` within the `store_all_topics` method.
+* **Backtrace:** The error originated from the `store_all_topics` method, called during model training in the `process` method of the `TopicModelProcessor`. This was triggered during the execution of the `topic_modeling_task` within the `text_processing_workflow`.
+
+**Possible Causes:**
+
+1. **Outdated `Tomoto` Gem:** The installed `Tomoto` gem version may not include the `topic_distribution` method.
+2. **Method Name Change:** The method name in the `Tomoto` gem might have been changed or deprecated in a newer version.
+
+**Recommended Actions:**
+
+1. **Verify `Tomoto` Gem Version:** Check the installed `Tomoto` gem version and compare it to the documentation to confirm the existence of the `topic_distribution` method.
+2. **Consult `Tomoto` Documentation:** Refer to the official `Tomoto` gem documentation for any updates, changes, or deprecations related to retrieving topic distributions.
+3. **Inspect `Tomoto::LDA` Object:** Debug the application and inspect the available methods for the `Tomoto::LDA` object at the point of error to identify the correct method for retrieving topic distributions.
+4. **Update or Revert Gem:** If an outdated version is identified, update the `Tomoto` gem to the latest version. Alternatively, revert to a previous version known to have the required functionality.
+
+By addressing these potential causes, the team can resolve the error and ensure the proper functioning of the topic modeling process.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `topic_distribution' for #":one", :min_cf=>"3", :min_df=>"2", :rm_top=>"4", :k=>"20", :alpha=>"0.1", :eta=>"0.01", :seed=>"42"}, @prepared=true>
+
+ vector: @model.topic_distribution(k).to_json
+ ^^^^^^^^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:222:in `block in store_all_topics'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:217:in `times'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:217:in `store_all_topics'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:146:in `train_model'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:60:in `ensure_model_exists'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:42:in `process'
+/home/b08x/Workspace/flowbots/lib/tasks/topic_modeling_task.rb:10:in `execute'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:65:in `run_topic_modeling'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:25:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_124043.md b/exception_reports/exception_report_20240716_124043.md
new file mode 100644
index 0000000..169847e
--- /dev/null
+++ b/exception_reports/exception_report_20240716_124043.md
@@ -0,0 +1,70 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Flowbots Topic Modeling Workflow
+
+**Summary:**
+
+The Flowbots CLI encountered a "no implicit conversion of Symbol into Integer" error while executing the text processing workflow. The error originated in the `store_topics` method within the `TopicModelProcessor` class.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** no implicit conversion of Symbol into Integer
+* **Location:** /home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:207:in `store_topics`
+
+**Backtrace:**
+The error propagated through the following call stack:
+
+1. `store_topics` TopicModelProcessor.rb:207
+2. `process` TopicModelProcessor.rb:48
+3. `execute` topic_modeling_task.rb:10
+4. `run_topic_modeling` text_processing_workflow.rb:65
+5. `run` text_processing_workflow.rb:25
+6. `process_text` cli.rb:49
+7. `run` thor/command.rb:28
+8. `invoke_command` thor/invocation.rb:127
+9. `dispatch` thor.rb:527
+10. `block in start` thor_ext.rb:34
+11. `handle_help_switches` thor_ext.rb:43
+12. `start` thor_ext.rb:33
+13. `` exe/flowbots:21
+
+**Analysis:**
+
+The error message suggests that a Symbol is being used in a context requiring an Integer, specifically within the `store_topics` method. This could be due to an incorrect data type being passed as an argument or an issue with data retrieval.
+
+**Next Steps:**
+
+1. **Inspect `store_topics` method:** Review line 207 of `TopicModelProcessor.rb` to identify the specific code causing the error.
+2. **Verify data types:** Analyze the data flow into the `store_topics` method, ensuring arguments and retrieved data align with expected Integer types.
+3. **Debug execution flow:** Utilize debugging tools to step through the execution flow, focusing on the data transformation and method calls leading to the error.
+
+This detailed report provides a concise summary and technical specifics to facilitate efficient troubleshooting and resolution of the identified error.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** no implicit conversion of Symbol into Integer
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:207:in `store_topics'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:48:in `process'
+/home/b08x/Workspace/flowbots/lib/tasks/topic_modeling_task.rb:10:in `execute'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:65:in `run_topic_modeling'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:25:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_124418.md b/exception_reports/exception_report_20240716_124418.md
new file mode 100644
index 0000000..b3eef01
--- /dev/null
+++ b/exception_reports/exception_report_20240716_124418.md
@@ -0,0 +1,57 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Task Graph Execution Failure
+
+**Summary:**
+
+The Flowbots application encountered a critical error during workflow execution. The error message "Not all the tasks in the Task Graph are implemented as WorkerTask classes" indicates a configuration issue within the defined workflow.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+* **Relevant Code:**
+ * `text_processing_workflow.rb`: This file defines the workflow graph and attempts to execute tasks within it.
+ * `WorkflowOrchestrator.rb`: This class is responsible for managing agents and executing the defined workflow graph using the Jongleur library.
+* **Backtrace Analysis:**
+ * The error originates from the `Jongleur::API.run` call within the `WorkflowOrchestrator.run_workflow` method. This suggests that the Jongleur library, responsible for managing the task graph, identified that not all defined tasks were properly set up for execution as WorkerTask classes.
+* **Potential Cause:**
+ * The workflow graph defined in `text_processing_workflow.rb` likely references task names (e.g., `:NlpAnalysisTask`, `:TopicModelingTask`) that are not defined as classes inheriting from `Jongleur::WorkerTask`.
+
+**Next Steps:**
+
+1. **Verify Task Class Definitions:** Review `text_processing_workflow.rb` and confirm that classes like `NlpAnalysisTask`, `TopicModelingTask`, and `LlmAnalysisTask` are defined and inherit from `Jongleur::WorkerTask`.
+2. **Ensure Task Registration:** If the classes exist, verify they are properly registered with Jongleur to enable their execution within the task graph.
+3. **Code Inspection:** Thoroughly examine the code involved in defining and executing the workflow, paying close attention to task class definitions and how they are integrated with the Jongleur library.
+
+**Recommendations:**
+
+* Implement comprehensive error handling within the workflow execution process to provide more informative messages in case of misconfiguration.
+* Introduce automated checks during workflow definition to validate task class implementation and registration, preventing such errors during runtime.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:129:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:71:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:26:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_125232.md b/exception_reports/exception_report_20240716_125232.md
new file mode 100644
index 0000000..0734f26
--- /dev/null
+++ b/exception_reports/exception_report_20240716_125232.md
@@ -0,0 +1,62 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Unimplemented Tasks in Workflow
+
+**Summary:** The text processing workflow failed to execute due to unimplemented tasks in the defined task graph. The system reported that not all tasks specified in the graph are implemented as WorkerTask classes.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes.
+* **Workflow:** Text Processing Workflow (`text_processing_workflow.rb`)
+* **Trigger:** `flowbots process_text ` command execution.
+
+**Backtrace:** The error originated in `WorkflowOrchestrator.rb` during the `run_workflow` method call. The backtrace points to the following execution path:
+
+1. `Jongleur::API.run` in `WorkflowOrchestrator.rb`
+2. `Flowbots::TextProcessingWorkflow.run_workflow`
+3. `Flowbots::CLI.process_text`
+4. Thor command execution (`thor-1.3.1/lib/thor/command.rb`)
+
+**Relevant Code:**
+
+* **`WorkflowOrchestrator.rb`**: This class is responsible for orchestrating the workflow, including adding agents, defining the workflow graph, and running the workflow.
+* **`text_processing_workflow.rb`**: This file defines the Text Processing Workflow, which includes setting up the workflow graph using `@orchestrator.define_workflow(workflow_graph)`.
+* **`cli.rb`**: This file handles the `process_text` command line instruction, which initiated the workflow.
+
+**Potential Cause:**
+
+The error message clearly states that the workflow graph defines tasks that are not implemented as `WorkerTask` classes. This means that while the workflow logic is defined, the actual execution units (WorkerTasks) for one or more tasks are missing.
+
+**Next Steps:**
+
+1. **Identify Missing Tasks:** Review the `workflow_graph` definition in `text_processing_workflow.rb` and verify that each task (NlpAnalysisTask, TopicModelingTask, LlmAnalysisTask) has a corresponding `WorkerTask` class implemented.
+2. **Implement Missing WorkerTasks:** Create the missing `WorkerTask` classes according to the required functionality of each task in the workflow.
+3. **Test:** After implementing the missing `WorkerTask` classes, thoroughly test the Text Processing Workflow to ensure that it executes as expected without errors.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:129:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:71:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:26:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_125402.md b/exception_reports/exception_report_20240716_125402.md
new file mode 100644
index 0000000..649bc7f
--- /dev/null
+++ b/exception_reports/exception_report_20240716_125402.md
@@ -0,0 +1,65 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Task Graph Implementation Error
+
+**Summary:**
+The Flowbots application encountered an error during workflow execution. The error message "Not all the tasks in the Task Graph are implemented as WorkerTask classes" indicates a configuration issue with the workflow definition in the `text_processing_workflow.rb` file. Specifically, tasks included in the workflow graph are not defined as executable tasks within the system.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+* **Relevant Files:**
+ * `WorkflowOrchestrator.rb`
+ * `text_processing_workflow.rb`
+ * `cli.rb`
+ * `thor_ext.rb`
+
+**Backtrace:**
+
+The backtrace points to the following call stack:
+
+1. `Jongleur::API.run` in `WorkflowOrchestrator.rb` attempts to execute the defined workflow.
+2. `Flowbots::TextProcessingWorkflow#run_workflow` in `text_processing_workflow.rb` initiates the workflow execution.
+3. `Flowbots::CLI#process_text` in `cli.rb` handles the 'process_text' command and invokes the workflow.
+4. The error originates from `Jongleur::API.run` due to the incorrect workflow definition.
+
+**Analysis:**
+
+The workflow defined in `text_processing_workflow.rb` includes tasks (`NlpAnalysisTask`, `TopicModelingTask`, `LlmAnalysisTask`) that are not implemented as executable `WorkerTask` classes. This causes the `Jongleur::API.run` method to fail because it expects all tasks in the graph to have corresponding executable implementations.
+
+**Recommended Action:**
+
+To resolve this error:
+
+1. **Implement missing tasks:** Create `WorkerTask` subclasses for each missing task (`NlpAnalysisTask`, `TopicModelingTask`, `LlmAnalysisTask`) in the `text_processing_workflow.rb` file.
+2. **Define task execution logic:** Implement the `execute` method within each new `WorkerTask` subclass to define the specific actions each task should perform.
+
+Once these steps are completed, the workflow should execute as expected.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:129:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:71:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:26:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_125459.md b/exception_reports/exception_report_20240716_125459.md
new file mode 100644
index 0000000..1aa1f27
--- /dev/null
+++ b/exception_reports/exception_report_20240716_125459.md
@@ -0,0 +1,56 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Task Graph Implementation Error
+
+**Summary:**
+The Flowbots application encountered an error during workflow execution. The error message "Not all the tasks in the Task Graph are implemented as WorkerTask classes" indicates that the defined workflow graph references tasks that are not properly defined as executable tasks within the system.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+* **Relevant Code:**
+ * `text_processing_workflow.rb`: This file defines the workflow graph with tasks: `NlpAnalysisTask`, `TopicModelingTask`, and `LlmAnalysisTask`. At least one of these tasks is not implemented as a `WorkerTask` subclass.
+ * `WorkflowOrchestrator.rb`: This class is responsible for defining and running workflows. It interacts with the `Jongleur::API` to manage the task graph.
+* **Backtrace:** The backtrace points to the following execution flow:
+ 1. `Jongleur::API.run` in `WorkflowOrchestrator.rb` attempts to execute the workflow.
+ 2. The error originates in `Jongleur::API.add_task_graph`, indicating an issue with the task graph definition.
+ 3. The workflow execution was initiated by the `process_text` method in `cli.rb`.
+
+**Potential Causes:**
+
+* **Missing Task Implementation:** One or more of the tasks listed in `text_processing_workflow.rb` (NlpAnalysisTask, TopicModelingTask, LlmAnalysisTask) is not defined as a subclass of `Jongleur::WorkerTask`, preventing the workflow engine from executing them.
+* **Incorrect Task Registration:** The tasks might be implemented correctly but not registered with the `Jongleur::API` or are registered with incorrect dependencies.
+
+**Next Steps:**
+
+1. **Verify Task Implementations:** Confirm that each task in the `text_processing_workflow.rb` file has a corresponding class definition that inherits from `Jongleur::WorkerTask`.
+2. **Check Task Registration:** Ensure that each task class is correctly registered with the `Jongleur::API`, and the defined dependencies in the workflow graph are accurate.
+3. **Test Task Execution:** Independently test the execution of each task to isolate any issues within their implementations.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:129:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:71:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:26:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_130418.md b/exception_reports/exception_report_20240716_130418.md
new file mode 100644
index 0000000..326cd7f
--- /dev/null
+++ b/exception_reports/exception_report_20240716_130418.md
@@ -0,0 +1,60 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Task Graph Execution Failure
+
+**Summary:** The Flowbots application encountered an error during the execution of a text processing workflow. The error message indicates that not all tasks defined within the workflow's task graph are implemented as executable `WorkerTask` classes.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+* **Affected Workflow:** Text Processing Workflow (`text_processing_workflow.rb`)
+* **Trigger Point:** `Jongleur::API.run` call within the `WorkflowOrchestrator.run_workflow` method (`WorkflowOrchestrator.rb`)
+
+**Backtrace:** The provided backtrace points to the line of code where the error was raised (line 129 in `jongleur/api.rb`). It traces the execution path back through the following components:
+
+1. `Jongleur::API.run` (jongleur gem)
+2. `WorkflowOrchestrator.run_workflow`
+3. `TextProcessingWorkflow.run_workflow`
+4. `TextProcessingWorkflow.run`
+5. `Flowbots::CLI.process_text`
+6. Thor command execution (`thor` gem)
+
+**Analysis:**
+
+The error indicates a discrepancy between the workflow definition (`workflow_graph`) in `text_processing_workflow.rb` and the actual implementation of executable tasks. While the workflow defines tasks like `NlpAnalysisTask`, `TopicModelingTask`, and `LlmAnalysisTask`, it appears that at least one of these is not implemented as a `WorkerTask` subclass, preventing the Jongleur engine from executing the workflow correctly.
+
+**Recommendations:**
+
+1. **Verify Task Implementations:** Examine the codebase to confirm that each task listed in the `workflow_graph` within `text_processing_workflow.rb` has a corresponding `WorkerTask` class implementation.
+2. **Implement Missing Tasks:** If any tasks are missing their corresponding `WorkerTask` implementations, create them according to the required functionality of each task.
+3. **Review Workflow Definition:** Double-check the `workflow_graph` definition in `text_processing_workflow.rb` for any potential typos or mismatches with the actual task class names.
+
+This error highlights a critical requirement for defining and executing workflows within the Flowbots application. Addressing the missing or incorrect task implementations is essential for resolving this error and ensuring the successful execution of the text processing workflow.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:129:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:71:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:26:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_131051.md b/exception_reports/exception_report_20240716_131051.md
new file mode 100644
index 0000000..b594d3c
--- /dev/null
+++ b/exception_reports/exception_report_20240716_131051.md
@@ -0,0 +1,61 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Uninitialized Constant NLPProcessor
+
+**Summary:**
+
+The application encountered an "uninitialized constant" error while attempting to execute the NLP Analysis task within the Text Processing Workflow. The error indicates that the `NLPProcessor` class is being referenced before it has been defined.
+
+**Technical Details:**
+
+* **Class:** `Flowbots::CLI`
+* **Error Message:** `uninitialized constant NlpAnalysisTask::NLPProcessor`
+* **Root Cause:** The `NLPProcessor.instance` call in `nlp_analysis_task.rb` is made before the `NLPProcessor` class is loaded or initialized.
+* **Relevant Code:**
+ * `nlp_analysis_task.rb:8:in 'execute'`
+ * Specifically, this line: `nlp_processor = NLPProcessor.instance`
+
+**Affected Functionality:**
+
+* Text Processing Workflow execution is halted.
+* NLP analysis on the input text file cannot be performed.
+
+**Possible Solutions:**
+
+* **Verify Class Definition:** Ensure the `NLPProcessor` class is defined in a file that is loaded before `nlp_analysis_task.rb`.
+* **Check Load Order:** Inspect the application's loading mechanism (e.g., dependency injection, autoloading) to confirm the correct load order of classes.
+* **Initialization:** If the `NLPProcessor` class relies on specific initialization steps, ensure these are executed before the `NLPProcessor.instance` call.
+
+**Next Steps:**
+
+* Developers will investigate the class loading and initialization process for `NLPProcessor`.
+* Code modifications will be implemented to ensure the `NLPProcessor` class is available before it is used in `nlp_analysis_task.rb`.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant NlpAnalysisTask::NLPProcessor
+
+ nlp_processor = NLPProcessor.instance
+ ^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/tasks/nlp_analysis_task.rb:8:in `execute'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:59:in `run_nlp_analysis'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:24:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_131202.md b/exception_reports/exception_report_20240716_131202.md
new file mode 100644
index 0000000..cfbe683
--- /dev/null
+++ b/exception_reports/exception_report_20240716_131202.md
@@ -0,0 +1,62 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Uninitialized Constant NLPProcessor
+
+**Summary:**
+
+The application encountered an "uninitialized constant NlpAnalysisTask::NLPProcessor" error during the execution of the text processing workflow. This indicates that the `NLPProcessor` class is being referenced without being properly defined or loaded within the `NlpAnalysisTask` class.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Error Message:** uninitialized constant NlpAnalysisTask::NLPProcessor
+* **Affected Functionality:** Text processing workflow, specifically the NLP analysis stage.
+* **Root Cause:** The `NLPProcessor.instance` method is called in `nlp_analysis_task.rb` before the `NLPProcessor` class is defined or loaded.
+* **Relevant Code Snippet (nlp_analysis_task.rb):**
+```ruby
+ def execute
+ logger.info "Starting NLPAnalysisTask"
+ processed_text = retrieve_processed_text
+ nlp_processor = NLPProcessor.instance
+ result = nlp_processor.process(processed_text)
+ store_nlp_result(result)
+ logger.info "NLPAnalysisTask completed"
+ end
+```
+
+**Proposed Next Steps:**
+
+1. **Verify Class Definition & Loading:** Ensure that the `NLPProcessor` class is defined and loaded correctly. This may involve checking the file path, require statements, and module structure.
+2. **Review Initialization:** Confirm if the `NLPProcessor` class uses a singleton pattern (with `.instance`). If not, modify the code to initialize the `NLPProcessor` object directly.
+3. **Test & Deploy:** After implementing the fix, thoroughly test the text processing workflow to confirm resolution of the error.
+
+This report provides a concise overview of the error and its technical details. Please prioritize resolving this issue to ensure the smooth operation of the text processing workflow.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant NlpAnalysisTask::NLPProcessor
+
+ nlp_processor = NLPProcessor.instance
+ ^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/tasks/nlp_analysis_task.rb:8:in `execute'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:59:in `run_nlp_analysis'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:24:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_131311.md b/exception_reports/exception_report_20240716_131311.md
new file mode 100644
index 0000000..5cd07da
--- /dev/null
+++ b/exception_reports/exception_report_20240716_131311.md
@@ -0,0 +1,62 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Uninitialized Constant TopicModelProcessor
+
+**Summary:**
+
+The application encountered a fatal error during text processing due to an uninitialized constant `TopicModelProcessor`. This suggests that the `TopicModelProcessor` class was called before it was loaded or defined, leading to execution failure.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Error Message:** uninitialized constant TopicModelingTask::TopicModelProcessor
+* **Affected Code:** `topic_processor = TopicModelProcessor.instance` in `topic_modeling_task.rb:8`
+* **Root Cause:** The `TopicModelProcessor` class is being called by `TopicModelingTask` before it has been initialized or loaded into the application.
+* **Backtrace:** The error originates from the `execute` method within `TopicModelingTask` and propagates through the text processing workflow triggered by the CLI.
+
+**Relevant Files:**
+
+* `topic_modeling_task.rb`
+* `text_processing_workflow.rb`
+* `cli.rb`
+* `command.rb`
+* `thor_ext.rb`
+
+**Next Steps:**
+
+1. **Verify Class Definition and Loading:** Ensure `TopicModelProcessor` is defined correctly and loaded appropriately within the application.
+2. **Check Dependencies:** Investigate any dependencies the `TopicModelProcessor` class may have and ensure they are met before its invocation.
+3. **Review Execution Order:** Examine the code execution flow to confirm `TopicModelProcessor` is initialized *before* the `TopicModelingTask` attempts to use it.
+
+**Recommendation:**
+
+Prioritize resolving the missing `TopicModelProcessor` initialization to restore the text processing functionality.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TopicModelingTask::TopicModelProcessor
+
+ topic_processor = TopicModelProcessor.instance
+ ^^^^^^^^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/tasks/topic_modeling_task.rb:8:in `execute'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:65:in `run_topic_modeling'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:25:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_133135.md b/exception_reports/exception_report_20240716_133135.md
new file mode 100644
index 0000000..88fe34b
--- /dev/null
+++ b/exception_reports/exception_report_20240716_133135.md
@@ -0,0 +1,57 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Flowbots CLI - Type Error
+
+**Summary:**
+
+The Flowbots CLI encountered a type error during the text processing workflow execution. The error message indicates that a `nil` value was encountered where an integer was expected.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** can't convert nil into Integer
+* **Backtrace:** The primary error originates from the `jongleur` gem, specifically in the `api.rb` file. The error propagates through the `WorkflowOrchestrator` and `TextProcessingWorkflow` classes.
+* **Relevant Code:** The error likely occurs during workflow definition or execution in `WorkflowOrchestrator.rb` or during task execution in `text_processing_workflow.rb`. The specific line in `api.rb:153` suggests a potential issue with a modulo operation (`%`) where the operand is nil.
+* **Potential Cause:** The root cause appears to be an unexpected `nil` value being passed as an argument to a method or operation expecting an integer. This could be due to:
+ * Incorrect data being passed to the `Jongleur::API.add_task_graph` method in `WorkflowOrchestrator.rb`.
+ * An issue with task definitions or data handling within `text_processing_workflow.rb`.
+
+**Next Steps:**
+
+1. **Inspect `WorkflowOrchestrator.rb:42` and `text_processing_workflow.rb:71`:** Examine the code around these lines to identify what data is being passed to the `Jongleur::API` methods.
+2. **Debug `jongleur/api.rb:153`:** Analyze the context of the modulo operation to determine the source of the `nil` value.
+3. **Review Task Definitions:** Ensure that the task graph defined in `text_processing_workflow.rb` is correctly structured and that all data dependencies are met.
+
+This report provides a starting point for further investigation and debugging.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** can't convert nil into Integer
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `%'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `sleep'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:71:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:26:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_143838.md b/exception_reports/exception_report_20240716_143838.md
new file mode 100644
index 0000000..0bb3f41
--- /dev/null
+++ b/exception_reports/exception_report_20240716_143838.md
@@ -0,0 +1,68 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Undefined Method 'UI'
+
+**Summary:**
+
+The application encountered a "NoMethodError" during the text processing workflow execution. The error message indicates an undefined method 'UI' being called on the 'Flowbots' module.
+
+**Technical Details:**
+
+* **Error Class:** NoMethodError
+* **Error Message:** undefined method `UI' for Flowbots:Module
+* **Location:** `/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:57:in `block (2 levels) in run_workflow'`
+* **Root Cause:** The code attempts to call `Flowbots.UI.info "Workflow completed"`. However, the 'UI' method is not defined within the 'Flowbots' module.
+* **Possible Solution:** The error suggests a potential typo and offers 'ui' as a possible correction. It's likely that 'UI' should be replaced with 'ui' to reference the correct method.
+
+**Affected Files:**
+
+* WorkflowOrchestrator.rb
+* text_processing_workflow.rb
+* cli.rb
+* command.rb
+* thor_ext.rb
+
+**Next Steps:**
+
+1. Verify if 'ui' is the intended method within the 'Flowbots' module.
+2. Correct the method call in `WorkflowOrchestrator.rb`.
+3. Test the changes to ensure the error is resolved.
+
+This error halts the text processing workflow, preventing the completion of the 'run_workflow' process. Addressing the undefined method call is crucial for the workflow to function correctly.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `UI' for Flowbots:Module
+
+ Flowbots.UI.info "Workflow completed"
+ ^^^
+Did you mean? ui
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:57:in `block (2 levels) in run_workflow'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/hollerback-0.1.0/lib/hollerback/callbacks.rb:27:in `respond_with'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:185:in `block (2 levels) in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/hollerback-0.1.0/lib/hollerback/callbacks.rb:16:in `hollerback_for'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:185:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:71:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:26:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_171356.md b/exception_reports/exception_report_20240716_171356.md
new file mode 100644
index 0000000..b01a22b
--- /dev/null
+++ b/exception_reports/exception_report_20240716_171356.md
@@ -0,0 +1,66 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error 'no implicit conversion of nil into String' indicates that the program attempted to perform string operations on a nil value, which is not allowed in Ruby. This error occurred during the execution of the Flowbots CLI command-line interface.
+
+## Technical Details
+
+### Backtrace:
+The error occurred in the `TopicModelProcessor.rb` file at line 61, specifically in the `exist?` method. This method is called from the `load_model` method in the same file, as indicated by the backtrace. The error then propagated through the initialization of the `TextProcessor` and `TopicModelProcessor` classes, eventually reaching the `process_text` method in the `cli.rb` file, which is where the error was raised.
+
+### Relevant Files:
+
+#### TopicModelProcessor.rb:
+This file contains the `TopicModelProcessor` class, which extends the `TextProcessor` class. It appears that the error is occurring in the `load_or_create_model` method, where the program attempts to load an existing model or create a new one. The relevant code snippet is:
+
+```ruby
+def load_or_create_model
+ if File.exist?(@model_path)
+ logger.info "Loading existing model from #{@model_path}"
+ @model = Tomoto::LDA.load(@model_path)
+ else
+ logger.info "Creating new model"
+ @model = Tomoto::LDA.new(**@model_params)
+ end
+ logger.debug "Model loaded or created"
+end
+```
+Here, if `@model_path` is `nil`, the `File.exist?` method will raise the error, as it attempts to call `exist?` on a nil value, which is not allowed.
+
+#### TextProcessor.rb:
+This file defines the `TextProcessor` class, which is the superclass of `TopicModelProcessor`. It provides methods for processing files, including classifying the file type and parsing the file based on its type.
+
+#### cli.rb:
+This file contains the `CLI` class, which is a Thor-based command-line interface for interacting with the Flowbots system. The `process_text` method in this file is where the `TopicModelProcessor` is instantiated and the `run` method is called, triggering the execution of the text processing workflow.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** no implicit conversion of nil into String
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:61:in `exist?'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:61:in `load_model'
+/home/b08x/Workspace/flowbots/lib/processors/TextProcessor.rb:16:in `initialize'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:22:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `block in instance'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `synchronize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `instance'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:15:in `initialize'
+/home/b08x/Workspace/flowbots/lib/cli.rb:48:in `new'
+/home/b08x/Workspace/flowbots/lib/cli.rb:48:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_172747.md b/exception_reports/exception_report_20240716_172747.md
new file mode 100644
index 0000000..12bb04e
--- /dev/null
+++ b/exception_reports/exception_report_20240716_172747.md
@@ -0,0 +1,50 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The Flowbots application has encountered an error: "uninitialized constant TextProcessingWorkflow". This indicates that the TextProcessingWorkflow class or module has not been properly defined or imported, leading to a failure during the execution of the TextProcessingWorkflow.new(file) method.
+
+## Technical Details
+
+### Backtrace
+- The error occurred during the const_get method call in the run method of the Workflows class (workflows.rb, line 29).
+- The run method was invoked by the workflows method in the CLI class (cli.rb, line 26).
+- The workflows method was called by the dispatch method of Thor::Base (thor/invocation.rb).
+- An exception occurred during the handle_help_switches method call in the start method of ThorExt::Start (thor_ext.rb, line 34).
+
+### Relevant Files
+
+**workflows.rb**
+The Workflows class, which contains the run method where the error occurred. The run method attempts to get the TextProcessingWorkflow class by converting the workflow name and using Object.const_get.
+
+**cli.rb**
+The CLI class, which contains the workflows method that invokes the run method of the Workflows class.
+
+**thor_ext.rb**
+The Start module of ThorExt, which contains the start and handle_help_switches methods. The exception was handled by the handle_exception_on_start method.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow_class = Object.const_get(workflow_name.split("_").map(&:capitalize).join)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_173704.md b/exception_reports/exception_report_20240716_173704.md
new file mode 100644
index 0000000..3283d35
--- /dev/null
+++ b/exception_reports/exception_report_20240716_173704.md
@@ -0,0 +1,45 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots::CLI class due to an uninitialized constant TextProcessingWorkflow. This issue arises during the execution of the run method in the Workflows class, specifically when trying to access the constant TextProcessingWorkflow.
+
+## Technical Details
+The backtrace indicates that the error occurs in the following code snippet from workflows.rb:
+
+```ruby
+workflow_class = Object.const_get(workflow_name.split("_").map(&:capitalize).join)
+```
+
+Here, the `const_get` method is used to retrieve the value of the constant specified by `workflow_name.split("_").map(&:capitalize).join`. However, the constant TextProcessingWorkflow is not defined, leading to the error.
+
+The relevant files provided include workflows.rb, cli.rb, command.rb, and thor_ext.rb. The error seems to be specifically related to the Workflows class defined in workflows.rb and the CLI class defined in cli.rb.
+
+## Suggested Action
+To resolve this issue, ensure that the TextProcessingWorkflow constant is defined and accessible in the scope of the `const_get` method call. This may involve defining the constant in the appropriate module or class, or importing the necessary module or class where the constant is defined.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow_class = Object.const_get(workflow_name.split("_").map(&:capitalize).join)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_173948.md b/exception_reports/exception_report_20240716_173948.md
new file mode 100644
index 0000000..4f9569e
--- /dev/null
+++ b/exception_reports/exception_report_20240716_173948.md
@@ -0,0 +1,44 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error occurred in the `Flowbots::CLI` class, specifically in the `process_text` method. The issue is due to an undefined method `new` for the string "text_processing_workflow". This indicates that the code is attempting to instantiate an object using a string, which is not valid Ruby syntax.
+
+## Backtrace
+- The error occurred in the `cli.rb` file, line 26, in the `workflows` method of the `Flowbots::CLI` class.
+- This method calls the `run` method of the `Workflows` class (line 30 of `workflows.rb`), passing the selected workflow as an argument.
+- Inside the `run` method, the code attempts to instantiate a workflow class based on the provided workflow name (`text_processing_workflow` in this case) using the `Object.const_get` method. However, this results in the undefined method `new` error.
+
+## Relevant Files
+- `workflows.rb`: Defines the `Flowbots::Workflows` class, which is responsible for listing, selecting, and running workflows.
+- `cli.rb`: Implements the `Flowbots::CLI` class, a Thor-based command-line interface that interacts with the `Workflows` class.
+- `thor_ext.rb`: Provides custom Thor extensions for improved CLI behavior, including help handling and error management.
+
+## Suggested Action
+It appears that the code expects "text_processing_workflow" to be the name of a class that can be instantiated. However, it seems that this class is either not defined or not properly included in the code. To resolve this issue, ensure that the "text_processing_workflow" class is correctly defined and accessible in the scope where it is being used. Review the `Object.const_get` call and ensure it is properly mapping the workflow name to the corresponding class definition.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `new' for "text_processing_workflow":String
+
+ workflow = workflow_name.new(workflow_file)
+ ^^^^
+Did you mean? next
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:30:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_174247.md b/exception_reports/exception_report_20240716_174247.md
new file mode 100644
index 0000000..cded1f9
--- /dev/null
+++ b/exception_reports/exception_report_20240716_174247.md
@@ -0,0 +1,70 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+
+An error occurred while executing the `flowbots` command-line interface (CLI) tool. The specific issue is an undefined method `new` for the string "TextProcessingWorkflow". This indicates that the system tried to call the `new` method on a string object, which is not defined, leading to a failure in executing the desired operation.
+
+## Technical Details:
+
+### Error Class and Message:
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `new' for "TextProcessingWorkflow":String
+
+### Backtrace:
+
+The backtrace provides information about the sequence of method calls leading up to the error:
+
+- `/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `run''`: The error occurred within the `run` method of the `Workflows` class, specifically on line 31.
+- `/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows''`: The error was triggered when executing the `workflows` method in the `CLI` class, on line 26.
+- Thor command execution and invocation (`thor-1.3.1/lib/thor/command.rb` and `thor-1.3.1/lib/thor/invocation.rb`): Standard Thor library code for command handling.
+- Custom Thor extension (`flowbots/lib/thor_ext.rb`): Custom extension for Thor behavior, including help and error handling.
+
+### Relevant Files:
+
+- `workflows.rb`: This file contains the `Flowbots::Workflows` class, responsible for listing, selecting, and running workflows.
+- `cli.rb`: Defines the `Flowbots::CLI` class, a Thor-based command-line interface for interacting with the Flowbots system.
+- `command.rb`: Unrelated to the error; contains a separate module and class definition (`Sublayer::Actions::RunTestCommandAction`).
+- `thor_ext.rb`: Custom Thor extension module, providing enhanced help and error-handling behavior.
+
+### Root Cause:
+
+The error occurred because the system expected the "TextProcessingWorkflow" to be an object with a `new` method, but it is actually a string. This suggests that there may be a misconfiguration, incorrect class definition, or missing dependency related to the "TextProcessingWorkflow".
+
+### Suggested Action Items:
+
+1. Review the `TextProcessingWorkflow` class definition and ensure it is correctly defined as a class, not a string.
+2. Check for any missing dependencies or required files that may be needed to define the "TextProcessingWorkflow" class.
+3. Verify that the `workflow_name` variable passed to the `run` method in `workflows.rb` is correct and matches the expected format for workflow names.
+4. Consider adding additional error handling or validation logic to catch and handle similar issues in the future.
+
+## Conclusion:
+
+This error report summarizes the undefined method issue encountered in the `flowbots` CLI tool. By addressing the root cause and implementing the suggested action items, the development team can resolve the error and improve the robustness of the Flowbots system.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `new' for "TextProcessingWorkflow":String
+
+ workflow = workflow_class.new(workflow_file)
+ ^^^^
+Did you mean? next
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_174346.md b/exception_reports/exception_report_20240716_174346.md
new file mode 100644
index 0000000..82edb05
--- /dev/null
+++ b/exception_reports/exception_report_20240716_174346.md
@@ -0,0 +1,42 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Summary
+The application encountered an error due to an uninitialized constant, specifically the "TextProcessingWorkflow" constant, which resulted in the failure to execute the corresponding code.
+
+## Technical Details
+### Backtrace
+- The error occurred in the `workflows.rb` file, in the `run` method of the `Workflows` class.
+- The `const_get` method was called on the `Object` class, which attempted to retrieve the value of the "TextProcessingWorkflow" constant.
+- However, this constant was not defined or initialized, leading to the error.
+
+### Relevant Files
+- `workflows.rb`: This file contains the `Workflows` class, where the error occurred. It includes methods for listing, selecting, and running workflows.
+- `cli.rb`: This file defines the `CLI` class, which includes the `workflows` and `process_text` methods. The `process_text` method attempts to create an instance of the "TextProcessingWorkflow" class, which is where the error occurred.
+- `thor_ext.rb`: This file defines the `Start` module within the `ThorExt` module of the `Flowbots` class. It provides configurations for Thor to enhance the CLI behavior.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_174620.md b/exception_reports/exception_report_20240716_174620.md
new file mode 100644
index 0000000..724e20f
--- /dev/null
+++ b/exception_reports/exception_report_20240716_174620.md
@@ -0,0 +1,48 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Summary
+
+A "NameError" has occurred, specifically an "uninitialized constant" error, which means that a constant has been referenced before it has been defined. In this case, the constant is "TextProcessingWorkflow".
+
+## Backtrace
+
+The error occurs in the "cli.rb" file, in the "process_text(file)" method, when attempting to create a new object of the "TextProcessingWorkflow" class.
+
+## Relevant Files
+
+The "workflows.rb" file contains the definition of the "Workflows" class, which is used to manage and run workflows.
+
+The "cli.rb" file contains the definition of the "CLI" class, which is the main entry point for the command-line interface. It includes a method "process_text(file)" that triggers the error when attempting to create an instance of the "TextProcessingWorkflow" class.
+
+The "thor_ext.rb" file contains extensions for the "Thor" command-line interface framework, providing additional functionality for handling errors and help requests.
+
+## Suggested Action
+
+Ensure that the "TextProcessingWorkflow" class is defined and available for instantiation in the "cli.rb" file. Review the code for any missing or incorrect import statements, class definitions, or file paths that may be causing the "TextProcessingWorkflow" class to be unavailable.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_175140.md b/exception_reports/exception_report_20240716_175140.md
new file mode 100644
index 0000000..ed6d15e
--- /dev/null
+++ b/exception_reports/exception_report_20240716_175140.md
@@ -0,0 +1,55 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+An uninitialized constant error has occurred in the *cli.rb* file, preventing the successful execution of the code.
+
+## Technical Details:
+### Error Description:
+The error "uninitialized constant TextProcessingWorkflow" indicates that the code is attempting to reference a constant (in this case, a class or module) named "TextProcessingWorkflow", but it has not been defined or initialized before its usage.
+
+### Backtrace:
+The backtrace provided gives information about the sequence of method calls that led to the error:
+
+- The error occurred in the *workflows.rb* file, line 31, within the `const_get` method.
+- This was called from the `run` method in the same file.
+- The `run` method was invoked by the `workflows` method in the *cli.rb* file.
+- Subsequent method calls are listed, leading back to the execution of the code in the *exe/flowbots* file.
+
+### Relevant Files:
+**workflows.rb:**
+- This file contains the `Workflows` class, which includes methods for listing, selecting, and running workflows.
+- The error occurred when attempting to access the value of the `workflow_class` constant using `Object.const_get`.
+
+**cli.rb:**
+- This file defines the `CLI` class, which extends `ThorExt::Start`.
+- The `workflows` method in this class creates an instance of `Workflows`, calls `list_and_select`, and then attempts to run the selected workflow using the `run` method.
+
+## Suggested Action:
+To resolve the issue, ensure that the "TextProcessingWorkflow" constant is defined and initialized before its usage in the *workflows.rb* file. Review the code to identify where this constant should be defined and ensure it is accessible in the scope where it is being referenced.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_175200.md b/exception_reports/exception_report_20240716_175200.md
new file mode 100644
index 0000000..004c6d0
--- /dev/null
+++ b/exception_reports/exception_report_20240716_175200.md
@@ -0,0 +1,65 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+
+An error occurred while executing the `flowbots` command-line interface (CLI) tool. The specific issue is an undefined method called `constantize` for the string "TextProcessingWorkflow". This indicates that the program attempted to call a method that does not exist on a string object.
+
+## Error Details:
+
+### Backtrace:
+
+- **File:** *cli.rb*
+ **Class:** Flowbots::CLI
+ **Message:** undefined method `constantize' for "TextProcessingWorkflow":String
+
+The relevant code snippet from *cli.rb*:
+
+ workflow_class = TextProcessingWorkflow.new(file)
+ workflow.run
+
+### Relevant Files:
+
+**workflows.rb:**
+This file contains the `Flowbots::Workflows` class, which is responsible for listing, selecting, and running workflows. It includes methods for loading workflows, displaying them in a table, and handling file errors.
+
+**cli.rb:**
+This file defines the `Flowbots::CLI` class, a Thor-based CLI that provides commands to list and run workflows. It also includes error handling using an `ExceptionHandler` module.
+
+**thor_ext.rb:**
+This file provides a module `ThorExt::Start` that configures Thor to provide improved help and error handling for CLI tools. It includes methods for handling unknown arguments, help switches, and exceptions during the CLI's execution.
+
+## Suggested Action Items:
+
+1. **Verify Method Existence:** Ensure that the "TextProcessingWorkflow" class exists and defines the `constantize` method.
+2. **Review Code Changes:** Compare the current code with any recent modifications to identify any accidental removals or renaming of the `constantize` method.
+3. **Check Dependencies:** Ensure that all required dependencies are installed and compatible with the current code.
+4. **Debug Workflow Execution:** Step through the workflow execution process to pinpoint where the undefined method is being called.
+5. **Consider Alternatives:** Depending on the specific use case, consider alternative approaches or workarounds to achieve the desired functionality.
+
+The team should review the provided code snippets and relevant files to identify and address the root cause of the error. Thorough testing and consideration of potential alternatives are recommended to prevent similar issues in the future.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `constantize' for "TextProcessingWorkflow":String
+
+ workflow = workflow_class.constantize.new(workflow_file)
+ ^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:30:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_175428.md b/exception_reports/exception_report_20240716_175428.md
new file mode 100644
index 0000000..42ab365
--- /dev/null
+++ b/exception_reports/exception_report_20240716_175428.md
@@ -0,0 +1,89 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "undefined method `constantize' for "TextProcessingWorkflow":String" occurred in the `Flowbots::CLI` class when attempting to run the "process_text" command. This error indicates that the program tried to call the "constantize" method on a string object, which is not defined.
+
+## Backtrace
+- `cli.rb:26`: The error occurred within the "process_text" command of the `Flowbots::CLI` class. The program attempted to instantiate the "Text_processing_workflow" class by calling "Object.const_get".
+
+- `workflows.rb:31`: The "run" method of the `Workflows` class, located in `workflows.rb`, is called by the "process_text" command. This method is responsible for executing the selected workflow.
+
+## Relevant Code Snippets
+**cli.rb**
+```ruby
+desc "process_text FILE", "Process a text file using the text processing workflow"
+def process_text(file)
+ pastel = Pastel.new
+
+ unless File.exist?(file)
+ say pastel.red("File not found: #{file}")
+ exit
+ end
+
+ say pastel.green("Processing file: #{file}")
+
+ begin
+ workflow = TextProcessingWorkflow.new(file)
+ workflow.run
+ say pastel.green("Text processing completed successfully")
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+end
+```
+
+**workflows.rb**
+```ruby
+def run(workflow_name)
+ workflow_file = File.join(WORKFLOW_DIR, "#{workflow_name}.rb")
+
+ unless File.exist?(workflow_file)
+ logger.error "Workflow file not found: #{workflow_file}"
+ raise FileNotFoundError, "Workflow file not found: #{workflow_file}"
+ end
+
+ logger.info "Running workflow: #{workflow_name}"
+
+ # Corrected line:
+ workflow_class = TextProcessingWorkflow # Use the correct class reference
+
+ # Previous incorrect line:
+ # workflow_class = workflow_name.split("_").map(&:capitalize).join
+
+ workflow = workflow_class.constantize.new(workflow_file) # Error occurs here
+
+ logger.debug workflow
+ workflow.run
+end
+```
+
+## Possible Cause and Solution
+The error indicates that the program expected "TextProcessingWorkflow" to be a class, but it was recognized as a string. This could be due to an incorrect reference to the class.
+
+To resolve this issue, the incorrect line `workflow_class = workflow_name.split("_").map(&:capitalize).join` in `workflows.rb` should be replaced with the correct class reference `workflow_class = TextProcessingWorkflow`. This ensures that "TextProcessingWorkflow" is treated as a class and not a string, allowing the program to instantiate the class correctly.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `constantize' for "TextProcessingWorkflow":String
+
+ workflow = workflow_class.constantize.new(workflow_file)
+ ^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_175620.md b/exception_reports/exception_report_20240716_175620.md
new file mode 100644
index 0000000..4caf890
--- /dev/null
+++ b/exception_reports/exception_report_20240716_175620.md
@@ -0,0 +1,111 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Issue Summary
+The Ruby on Rails application encountered a `NameError` due to an uninitialized constant `TextProcessingWorkflow`. This error occurred during the execution of the `Flowbots::CLI` class in the `cli.rb` file.
+
+## Technical Details
+
+**Backtrace:**
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+**Relevant Files:**
+`workflows.rb`:
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class Workflows
+ include Logging
+
+ def initialize
+ @prompt = TTY::Prompt.new
+ @pastel = Pastel.new
+ end
+
+ def list_and_select
+ workflows = get_workflows
+ display_workflows(workflows)
+ select_workflow(workflows)
+ end
+
+ def run(workflow_name)
+ workflow_file = File.join(WORKFLOW_DIR, "#{workflow_name}.rb")
+
+ unless File.exist?(workflow_file)
+ logger.error "Workflow file not found: #{workflow_file}"
+ raise FileNotFoundError, "Workflow file not found: #{workflow_file}"
+ end
+
+ logger.info "Running workflow: #{workflow_name}"
+
+ # workflow_class = Object.const_get(workflow_name.split("_").map(&:capitalize).join)
+ workflow_class = workflow_name.split("_").map(&:capitalize).join
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+
+ logger.debug workflow
+ workflow.run
+ end
+
+ # ... [remaining code omitted for brevity]
+ end
+
+ class FileNotFoundError < StandardError; end
+end
+```
+
+`cli.rb`:
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ def self.exit_on_failure?
+ true
+ end
+
+ # ... [remaining code omitted for brevity]
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_180146.md b/exception_reports/exception_report_20240716_180146.md
new file mode 100644
index 0000000..95e71e9
--- /dev/null
+++ b/exception_reports/exception_report_20240716_180146.md
@@ -0,0 +1,54 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+During the execution of a Ruby on Rails application, the system encountered a "NameError" due to an uninitialized constant. This error occurred when the program attempted to reference the "TextProcessingWorkflow" class, which was not properly defined or imported.
+
+## Technical Details
+
+```ruby
+workflow = Object.const_get(workflow_class).new(workflow_file)
+```
+
+In the above code snippet, the program is trying to access the "TextProcessingWorkflow" class using the `const_get` method. However, this class is not defined or imported in the current scope, leading to the "uninitialized constant" error.
+
+To resolve this issue, ensure that the "TextProcessingWorkflow" class is properly defined and imported in the relevant files, such as `workflows.rb` and `cli.rb`. Additionally, check the file structure and module organization to ensure they align with the conventions and requirements of Ruby on Rails.
+
+## Backtrace
+
+- `/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in 'const_get'`
+- `/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in 'run'`
+- `/home/b08x/Workspace/flowbots/lib/cli.rb:26:in 'workflows'`
+- `/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in 'run'`
+- `/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in 'invoke_command'`
+- `/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in 'dispatch'`
+- `/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in 'block in start'`
+- `/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in 'handle_help_switches'`
+- `/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in 'start'`
+- `./exe/flowbots:21:in ''`
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_180303.md b/exception_reports/exception_report_20240716_180303.md
new file mode 100644
index 0000000..91fff48
--- /dev/null
+++ b/exception_reports/exception_report_20240716_180303.md
@@ -0,0 +1,88 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "uninitialized constant TextProcessingWorkflow" occurred in the Flowbots::CLI class. This indicates that the TextProcessingWorkflow class is not properly defined or imported.
+
+## Technical Details
+The issue arises in the `run` method of the `Workflows` class, where the `workflow_class` variable is used without being properly defined or imported. The full backtrace is provided for reference.
+
+## Suggested Action
+To resolve this issue, ensure that the TextProcessingWorkflow class is defined and accessible in the scope of the `run` method. This may involve importing the necessary module or class definition.
+
+## Relevant Code Snippets
+**workflows.rb**
+```ruby
+module Flowbots
+ class Workflows
+ include Logging
+
+ # ...
+
+ def run(workflow_name)
+ workflow_file = File.join(WORKFLOW_DIR, "#{workflow_name}.rb")
+
+ # ...
+
+ workflow_class = workflow_name.split('_').map(&:capitalize).join
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+
+ # ...
+ end
+
+ # ...
+ end
+end
+```
+
+**cli.rb**
+```ruby
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ # ...
+
+ desc "process_text FILE", "Process a text file using the text processing workflow"
+ def process_text(file)
+ pastel = Pastel.new
+
+ # ...
+
+ begin
+ workflow = TextProcessingWorkflow.new(file)
+ workflow.run
+ say pastel.green("Text processing completed successfully")
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:31:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_180746.md b/exception_reports/exception_report_20240716_180746.md
new file mode 100644
index 0000000..630ecf4
--- /dev/null
+++ b/exception_reports/exception_report_20240716_180746.md
@@ -0,0 +1,43 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the application, causing it to crash.
+
+## Technical Details
+The error "uninitialized constant TextProcessingWorkflow" was raised when attempting to access the "TextProcessingWorkflow" class in the "cli.rb" file. This error indicates that the class is not properly defined or imported.
+
+## Backtrace
+- The error occurred within the "run" method of the "Workflows" class in "workflows.rb".
+- This was called from the "workflows" method in the "CLI" class in "cli.rb".
+- The "CLI" class is defined in "cli.rb".
+
+## Relevant Files
+- "workflows.rb": Contains the "Workflows" class, which includes the "run" method where the error occurred.
+- "cli.rb": Contains the "CLI" class, which includes the "workflows" method that called the "run" method.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:34:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:34:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_181219.md b/exception_reports/exception_report_20240716_181219.md
new file mode 100644
index 0000000..e00c8f0
--- /dev/null
+++ b/exception_reports/exception_report_20240716_181219.md
@@ -0,0 +1,54 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Summary:
+An uninitialized constant error was encountered in the TextProcessingWorkflow.
+
+## Technical Details:
+
+### Backtrace:
+- The error occurred in the `workflows.rb` file, specifically in the `run` method of the `Workflows` class.
+- The `const_get` method was called on the `Object` class, but it failed to find the constant "TextProcessingWorkflow".
+
+### Relevant Files:
+
+#### `workflows.rb`:
+- This file contains the `Workflows` class, which includes the `run` method that triggered the error.
+- The `run` method attempts to instantiate a `TextProcessingWorkflow` object but fails due to the uninitialized constant error.
+
+#### `cli.rb`:
+- This file defines the `CLI` class, which includes the `process_text` method.
+- The `process_text` method calls the `run` method of the `Workflows` class, passing the selected workflow as an argument.
+
+## Suggested Action Items:
+- Ensure that the "TextProcessingWorkflow" class is defined and accessible in the appropriate namespace.
+- Verify the class name and module structure match the convention Ruby uses for constant lookup.
+- Consider referencing the constant using its full name (`::TextProcessingWorkflow`) to resolve any potential autoloading issues.
+
+Please let me know if there is any additional information or further clarification needed regarding this error report.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:37:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:37:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_181325.md b/exception_reports/exception_report_20240716_181325.md
new file mode 100644
index 0000000..8621847
--- /dev/null
+++ b/exception_reports/exception_report_20240716_181325.md
@@ -0,0 +1,98 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An uninitialized constant error has occurred in the Flowbots CLI.
+
+## Technical Details
+The error message "uninitialized constant TextProcessingWorkflow" indicates that the TextProcessingWorkflow class is not properly defined or imported. This issue is likely related to the autoloading of the class or module.
+
+### Backtrace
+- `/home/b08x/Workspace/flowbots/lib/workflows.rb:37:in 'const_get'`
+- `/home/b08x/Workspace/flowbots/lib/workflows.rb:37:in 'run'`
+- `/home/b08x/Workspace/flowbots/lib/cli.rb:26:in 'workflows'`
+
+### Relevant Files
+**workflows.rb**
+```ruby
+module Flowbots
+ class Workflows
+ include Logging
+
+ def initialize
+ @prompt = TTY::Prompt.new
+ @pastel = Pastel.new
+ load_workflows
+ end
+
+ # ...
+
+ def run(workflow_name)
+ # ...
+
+ workflow_class = workflow_name.split('_').map(&:capitalize).join
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+
+ # ...
+ end
+
+ # ...
+ end
+
+ class FileNotFoundError < StandardError; end
+end
+```
+
+**cli.rb**
+```ruby
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ # ...
+
+ desc "process_text FILE", "Process a text file using the text processing workflow"
+ def process_text(file)
+ pastel = Pastel.new
+
+ # ...
+
+ begin
+ workflow = TextProcessingWorkflow.new(file)
+ workflow.run
+ # ...
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+end
+```
+
+To resolve the issue, ensure that the TextProcessingWorkflow class is properly defined and imported. Check the file structure, module hierarchy, and autoloading configuration.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:37:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:37:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:26:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_181407.md b/exception_reports/exception_report_20240716_181407.md
new file mode 100644
index 0000000..0482a1c
--- /dev/null
+++ b/exception_reports/exception_report_20240716_181407.md
@@ -0,0 +1,47 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "uninitialized constant TextProcessingWorkflow" occurred in the Flowbots::CLI class. This indicates that the TextProcessingWorkflow class could not be found by the interpreter, resulting in the failure of the object creation using Object.const_get.
+
+## Technical Details
+
+### Backtrace
+- The error occurred during the execution of the "run" method in the Workflows class of the "workflows.rb" file.
+- The "run" method is invoked by the "workflows" method in the CLI class of the "cli.rb" file.
+- The "workflows" method handles the selection and execution of a workflow, including error handling.
+- The specific line causing the error is: "workflow = Object.const_get(workflow_class).new(workflow_file)".
+
+### Potential Cause
+The most likely cause of the error is that the TextProcessingWorkflow class is not properly defined or is not accessible to the interpreter.
+
+### Suggested Solution
+- Check the definition of the TextProcessingWorkflow class and ensure it is located in the expected file and directory.
+- Verify that the file containing the TextProcessingWorkflow class is properly included or required in the appropriate location.
+- Ensure that the class name and module structure match the file and directory structure, following the Ruby conventions for constant lookup.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:37:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:37:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_181645.md b/exception_reports/exception_report_20240716_181645.md
new file mode 100644
index 0000000..3807cbd
--- /dev/null
+++ b/exception_reports/exception_report_20240716_181645.md
@@ -0,0 +1,43 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "uninitialized constant TextProcessingWorkflow" occurred in the Flowbots::CLI class. This indicates that the TextProcessingWorkflow class was not properly defined or imported.
+
+## Technical Details
+The error occurred in the following code snippet from workflows.rb:
+```ruby
+workflow = Object.const_get(workflow_class).new(workflow_file)
+```
+The backtrace indicates that the error occurred during the execution of the `run` method in the `Workflows` class of `workflows.rb`.
+
+## Possible Causes and Solutions:
+- **Incorrect Class Definition**: Ensure that the `TextProcessingWorkflow` class is defined correctly and that the class name matches the constant name.
+- **Autoloading Issues**: The issue may be related to autoloading, where Rails tries to guess the location of the class based on a set of autoloading paths. Try referencing the class with the full name, e.g., `::TextProcessingWorkflow`.
+- **File Not Found**: Verify that the file containing the `TextProcessingWorkflow` class exists and is located in the expected path.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant TextProcessingWorkflow
+
+ workflow = Object.const_get(workflow_class).new(workflow_file)
+ ^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:36:in `const_get'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:36:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_182656.md b/exception_reports/exception_report_20240716_182656.md
new file mode 100644
index 0000000..0f575de
--- /dev/null
+++ b/exception_reports/exception_report_20240716_182656.md
@@ -0,0 +1,44 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report Summary
+An error has occurred in the Flowbots::CLI class, specifically in the TextProcessingWorkflow class. The error message indicates that the wrong number of arguments was passed to the initialize method, expecting 1 argument but receiving 0.
+
+## Technical Details
+### Backtrace
+The backtrace provides information about the sequence of method calls leading up to the error:
+- The initialize method in TextProcessingWorkflow.rb is called with 0 arguments, but it expects 1 argument.
+- The new method in workflows.rb invokes the initialize method with the incorrect number of arguments.
+- The run method in workflows.rb invokes the new method, propagating the error.
+- The workflows method in cli.rb invokes the run method, continuing the error propagation.
+- The start method in thor_ext.rb handles command-line arguments and dispatching, ultimately leading to the error being raised.
+
+### Relevant Files
+- text_processing_workflow.rb: Defines the TextProcessingWorkflow class, including the initialize method where the error occurred.
+- workflows.rb: Contains the Workflows class and the run method, which invokes the TextProcessingWorkflow class with the incorrect number of arguments.
+- cli.rb: Implements the CLI class and the workflows method, which calls the run method in workflows.rb.
+- thor_ext.rb: Provides the Start module, extending the behavior of Thor to handle command-line arguments and dispatching.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** wrong number of arguments (given 0, expected 1)
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:11:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:30:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:30:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_183231.md b/exception_reports/exception_report_20240716_183231.md
new file mode 100644
index 0000000..0fdca03
--- /dev/null
+++ b/exception_reports/exception_report_20240716_183231.md
@@ -0,0 +1,55 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "No such file or directory @ rb_sysopen" indicates that a specific file could not be found or accessed during the execution of a Ruby script.
+
+## Technical Details
+The backtrace indicates that the error occurred in the `text_processing_workflow.rb` file within the `process_input` method. Specifically, it happened during the attempt to read the file located at `/home/b08x/Workspace/Prompt Repository/Practical Thought Experiments For Micro-Agent Simulations.md`.
+
+```ruby
+def process_input
+ logger.debug "Processing input file: #{@input_file_path}"
+ text = File.read(@input_file_path)
+ processed_text = @nlp_processor.process(text)
+ store_processed_text(processed_text)
+ logger.debug "Input processing completed"
+end
+```
+
+In the provided code, the `File.read` method is used to read the contents of the file specified by `@input_file_path`. However, the error suggests that either the file does not exist at the specified path or there are insufficient permissions to access it.
+
+## Suggested Action Items:
+- Verify the existence of the file at the specified path (`/home/b08x/Workspace/Prompt Repository/Practical Thought Experiments For Micro-Agent Simulations.md`).
+- Ensure that the file path is correct and accessible by the executing script.
+- Check the file permissions to ensure that the script has the necessary read permissions.
+- Handle the file operation within a try-except block to gracefully manage the error and provide more detailed information.
+
+## Additional Notes:
+It is worth noting that the error message "No such file or directory @ rb_sysopen" can also occur due to other factors, such as newline characters in the file name or issues with the directory path. Ensure that the file name and path are correctly handled and do not contain any special characters or whitespace that may cause issues.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** No such file or directory @ rb_sysopen - /home/b08x/Workspace/Prompt Repository/Practical Thought Experiments For Micro-Agent Simulations.md
+
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:55:in `read'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:55:in `process_input'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:24:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_183357.md b/exception_reports/exception_report_20240716_183357.md
new file mode 100644
index 0000000..e7bc090
--- /dev/null
+++ b/exception_reports/exception_report_20240716_183357.md
@@ -0,0 +1,45 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots::CLI class, indicating that a specific file cannot be found in the designated directory.
+
+## Technical Details
+The error message "No such file or directory @ rb_sysopen" indicates that the program attempted to access a file that does not exist in the specified location. In this case, the file in question is '/home/b08x/Workspace/Prompt Repository/Practical Thought Experiments For Micro-Agent Simulations.md'.
+
+### Backtrace
+The error occurred within the `read` method of the `TextProcessingWorkflow` class in the `text_processing_workflow.rb` file. This file is located at `/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb`. The issue then propagated through multiple modules and classes before ultimately being raised in the `CLI` class in the `cli.rb` file.
+
+### Relevant Files
+The provided code snippets include portions of the `text_processing_workflow.rb` and `cli.rb` files, which are relevant to the error.
+
+## Potential Solutions
+- Verify the file path: Double-check the file path to ensure that it is correct and that the file exists in the specified location.
+- Check file permissions: Ensure that the program has the necessary permissions to access the file.
+- Handle file absence gracefully: Modify the code to include error handling for cases where the file is missing or inaccessible.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** No such file or directory @ rb_sysopen - /home/b08x/Workspace/Prompt\ Repository/Practical\ Thought\ Experiments\ For\ Micro-Agent\ Simulations.md'
+'
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:55:in `read'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:55:in `process_input'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:24:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_183619.md b/exception_reports/exception_report_20240716_183619.md
new file mode 100644
index 0000000..b5ef783
--- /dev/null
+++ b/exception_reports/exception_report_20240716_183619.md
@@ -0,0 +1,73 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "No such file or directory @ rb_sysopen" occurred when attempting to access a file during the execution of a Ruby script.
+
+## Technical Details
+The specific error message, including the file path, is as follows:
+
+> No such file or directory @ rb_sysopen - /home/b08x/Workspace/Prompt Repository/Practical Thought Experiments For Micro-Agent Simulations.md
+
+This error indicates that the program attempted to access a file located at the specified path, but the file could not be found. The backtrace provides additional context:
+
+```
+Backtrace:
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:58:in `read'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:58:in `process_input'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:26:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+The relevant code snippet from `text_processing_workflow.rb` is:
+
+```ruby
+def process_input
+ logger.debug "Processing input file: #{@input_file_path}"
+ text = File.read(@input_file_path)
+ processed_text = @nlp_processor.process(text)
+ store_processed_text(processed_text)
+ logger.debug "Input processing completed"
+end
+```
+
+In this code, the `File.read` method is used to read the contents of the file specified by `@input_file_path`. However, since the file could not be found, the error was raised.
+
+## Possible Solutions
+- Verify the file path: Ensure that the specified file path, `/home/b08x/Workspace/Prompt Repository/Practical Thought Experiments For Micro-Agent Simulations.md`, is correct and that the file exists at that location.
+- Check file permissions: Ensure that the program has the necessary permissions to access the file.
+- Handle file absence: Modify the code to include error handling or conditional checks to handle the case where the file is absent or inaccessible.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** No such file or directory @ rb_sysopen - /home/b08x/Workspace/Prompt Repository/Practical Thought Experiments For Micro-Agent Simulations.md
+
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:58:in `read'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:58:in `process_input'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:26:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_183714.md b/exception_reports/exception_report_20240716_183714.md
new file mode 100644
index 0000000..fc8f201
--- /dev/null
+++ b/exception_reports/exception_report_20240716_183714.md
@@ -0,0 +1,44 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+The error "No such file or directory @ rb_sysopen" indicates that the program attempted to access a file that does not exist in the specified directory.
+
+## Technical Details:
+This error typically occurs when a file or directory cannot be found at the specified path. In the given backtrace, the error occurred during the execution of the "text_processing_workflow.rb" script. Specifically, the error happened when trying to read a file located at "/home/b08x/Workspace/Prompt Repository/Practical Thought Experiments For Micro-Agent Simulations.md".
+
+## Suggested Action:
+To resolve this issue, verify the following:
+- Check if the file exists at the specified path. Ensure that the file name and path are correct and that the file is accessible.
+- Inspect the code to ensure that the file path is constructed correctly, especially if the path involves concatenation or user input.
+- Consider using File.join or similar methods to construct the file path to avoid potential issues with path separators or incorrect path construction.
+- If the file is expected to be created dynamically, ensure that the necessary directories are created before attempting to access the file.
+
+## Additional Information:
+The error message "No such file or directory @ rb_sysopen" is often accompanied by an error code, such as "Errno::ENOENT", which indicates that the operating system could not find the specified file or directory. This error can occur in various programming languages and frameworks, including Ruby, Rails, and CocoaPods, as evidenced by the referenced sources.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** No such file or directory @ rb_sysopen - /home/b08x/Workspace/Prompt\ Repository/Practical\ Thought\ Experiments\ For\ Micro-Agent\ Simulations.md'
+'
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:58:in `read'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:58:in `process_input'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:26:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_184657.md b/exception_reports/exception_report_20240716_184657.md
new file mode 100644
index 0000000..4fed46f
--- /dev/null
+++ b/exception_reports/exception_report_20240716_184657.md
@@ -0,0 +1,52 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+An error has occurred in the Flowbots CLI, indicating that a file was not found. This issue has caused the program to terminate unexpectedly.
+
+## Technical Details:
+### Backtrace:
+- The error occurred within the "Flowbots::CLI" module, specifically in the "prompt_for_file" method at line 43 of "text_processing_workflow.rb".
+- The error then propagated to the initialization method of the "TextProcessingWorkflow" class at line 14 of the same file.
+- Subsequent lines indicate the flow of execution, with the error eventually reaching the "run" method of the "CLI" class in "cli.rb" at line 28.
+- The backtrace highlights the sequence of method calls leading up to the error, providing context for the issue.
+
+### Relevant Files:
+- "text_processing_workflow.rb": This file contains the "TextProcessingWorkflow" class, which appears to handle text processing functionality. The error occurred during the initialization of an object of this class, specifically relating to file handling.
+- "workflows.rb": This file defines the "Workflows" class, which seems to handle workflow selection and execution.
+- "cli.rb": This file contains the "CLI" class, which is a part of the Flowbots module. The error was encountered while executing the "process_text" method within this class.
+- "thor_ext.rb": This file contains extensions for the Thor module, providing additional functionality for command-line interfaces.
+
+## Suggested Action Items:
+- Review the "text_processing_workflow.rb" file, specifically the "prompt_for_file" method at line 43. Ensure that the file being accessed exists and is accessible.
+- Consider implementing error handling mechanisms to gracefully manage cases where files are not found, providing more informative error messages, and allowing the program to continue execution if possible.
+- Examine the "Workflows" class in "workflows.rb" to ensure proper workflow selection and execution logic.
+- Analyze the "process_text" method in the "CLI" class of "cli.rb" for any potential issues related to file handling or workflow invocation.
+
+## Conclusion:
+The provided information indicates a "File not found" error within the Flowbots CLI. By examining the relevant files and backtrace, we can identify the source of the issue and implement appropriate solutions to prevent similar errors in the future.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** File not found
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:43:in `prompt_for_file'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:14:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:30:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:30:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_184921.md b/exception_reports/exception_report_20240716_184921.md
new file mode 100644
index 0000000..3d46dfe
--- /dev/null
+++ b/exception_reports/exception_report_20240716_184921.md
@@ -0,0 +1,50 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "No such file or directory @ rb_sysopen" indicates that the program attempted to access a file that does not exist in the specified directory.
+
+## Technical Details
+The backtrace suggests that the error occurred during the execution of the "flowbots" command-line interface (CLI) tool. Specifically, it happened during the "process_input" step of the "TextProcessingWorkflow" class in the "text_processing_workflow.rb" file.
+
+The relevant code snippet from "text_processing_workflow.rb" is:
+
+```ruby
+def process_input
+ logger.debug "Processing input file: #{@input_file_path}"
+ text = File.read(@input_file_path)
+ processed_text = @nlp_processor.process(text)
+ store_processed_text(processed_text)
+ logger.debug "Input processing completed"
+end
+```
+
+In this code, the "File.read" method is used to read the contents of the file specified by "@input_file_path". However, the error message indicates that the file could not be found in the given path.
+
+## Suggested Action
+To resolve this issue, ensure that the file specified by "@input_file_path" exists in the expected location. Verify the file path and check for any typos or incorrect directory references. Additionally, confirm that the file is accessible by the program and that any necessary permissions are granted.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** No such file or directory @ rb_sysopen - /home/b08x/Workspace/Prompt\ Repository/Practical\ Thought\ Experiments\ For\ Micro-Agent\ Simulations.md
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:63:in `read'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:63:in `process_input'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:25:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_185055.md b/exception_reports/exception_report_20240716_185055.md
new file mode 100644
index 0000000..cce552e
--- /dev/null
+++ b/exception_reports/exception_report_20240716_185055.md
@@ -0,0 +1,50 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "No such file or directory @ rb_sysopen" indicates that a specified file could not be found in the given directory.
+
+## Technical Details
+This error occurred during the execution of a Ruby script, specifically when attempting to read or open a file. The full error message includes the path to the file that could not be found:
+
+> No such file or directory @ rb_sysopen - /home/b08x/Workspace/Prompt Repository/Practical Thought Experiments For Micro-Agent Simulations.md
+
+The backtrace indicates that the error occurred within the `text_processing_workflow.rb` file in the `process_input` method. This method is responsible for processing the input file and appears to be expecting the file to exist at the specified path.
+
+## Relevant Files
+### text_processing_workflow.rb
+This file contains the `TextProcessingWorkflow` class, which includes a `run` method that orchestrates the text processing workflow. The `process_input` method, where the error occurred, is responsible for reading the input file and performing initial processing.
+
+### workflows.rb
+This file defines the `Workflows` class, which provides functionality for listing, selecting, and running workflows. It includes methods such as `list_and_select`, `run`, `load_workflows`, and `get_workflows`.
+
+### cli.rb
+This file defines the `CLI` class, which extends `Thor` and provides command-line interface functionality. It includes methods such as `workflows` and `process_text` for interacting with the workflows.
+
+### thor_ext.rb
+This file defines the `Start` module within the `ThorExt` module of the `Flowbots` package. It provides extensions for Thor to enhance its behavior as a command-line interface.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** No such file or directory @ rb_sysopen - /home/b08x/Workspace/Prompt\ Repository/Practical\ Thought\ Experiments\ For\ Micro-Agent\ Simulations.md
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:61:in `read'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:61:in `process_input'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:25:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_185439.md b/exception_reports/exception_report_20240716_185439.md
new file mode 100644
index 0000000..7158b3a
--- /dev/null
+++ b/exception_reports/exception_report_20240716_185439.md
@@ -0,0 +1,236 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots::CLI class, with a message stating that nil cannot be converted into an integer. This issue has caused the program to terminate abruptly.
+
+## Technical Details
+```
+Backtrace:
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `%'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `sleep'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:82:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:28:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+The error appears to originate from the `Jongleur::API.rb` file, specifically line 153, which indicates an issue with type conversion.
+
+## Relevant Files
+### `WorkflowOrchestrator.rb`
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require_relative "WorkflowAgent"
+
+class WorkflowOrchestrator
+ CARTRIDGE_BASE_DIR = File.expand_path("../../nano-bots/cartridges", __dir__)
+
+ def initialize
+ @agents = {}
+ logger = Logger.new(STDOUT)
+ logger.level = Logger::DEBUG
+ end
+
+ def add_agent(role, cartridge_file, author: "@b08x")
+ logger.debug "Adding agent: #{role}"
+ cartridge_path = File.join(CARTRIDGE_BASE_DIR, author, "cartridges", cartridge_file)
+
+ unless File.exist?(cartridge_path)
+ logger.error "Cartridge file not found: \"#{cartridge_path}\""
+ raise "Cartridge file not found: \"#{cartridge_path}\""
+ end
+
+ @agents[role] = WorkflowAgent.new(role, cartridge_path)
+ logger.debug "Agent added: #{role}"
+ end
+
+ def define_workflow(workflow_definition)
+ logger.debug "Defining workflow"
+ logger.debug "Workflow definition: #{workflow_definition}"
+ Jongleur::API.add_task_graph(workflow_definition)
+ logger.debug "Workflow defined"
+ end
+
+ def run_workflow
+ logger.info "Starting workflow execution"
+ begin
+ logger.debug "Printing graph to /tmp"
+ Jongleur::API.print_graph("/tmp")
+
+ logger.debug "Starting Jongleur::API.run"
+ Jongleur::API.run do |on|
+ on.start do |task|
+ Flowbots::UI.info "Starting task: #{task}"
+ end
+
+ on.finish do |task|
+ Flowbots::UI.info "Finished task: #{task}"
+ end
+
+ on.error do |task, error|
+ logger.error "Error in task #{task}: #{error.message}"
+ logger.error error.backtrace.join("\n")
+ end
+
+ on.completed do |task_matrix|
+ Flowbots::UI.info "Workflow completed"
+ logger.debug "Task matrix: #{task_matrix}"
+ end
+ end
+ rescue StandardError => e
+ logger.error "Error during workflow execution: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ raise
+ end
+ end
+end
+```
+
+### `text_processing_workflow.rb`
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+# text_processing_workflow.rb
+# Description: A text processing workflow that processes a text file, segments it, and performs topic modeling
+
+module Flowbots
+ class TextProcessingWorkflow
+ include Logging
+
+ def initialize(input_file_path)
+ @input_file_path = input_file_path
+ @orchestrator = WorkflowOrchestrator.new
+ @nlp_processor = NLPProcessor.instance
+ @topic_modeling_processor = TopicModelProcessor.instance
+ end
+
+ def run
+ logger.info "Starting Text Processing Workflow"
+ Flowbots::UI.say(:ok, "Starting Text Processing Workflow")
+
+ setup_workflow
+ process_input
+ run_nlp_analysis
+ run_topic_modeling
+ run_workflow
+ display_results
+
+ logger.info "Text Processing Workflow completed"
+ Flowbots::UI.say(:ok, "Text Processing Workflow completed")
+ end
+
+ private
+
+ def setup_workflow
+ logger.debug "Setting up workflow"
+
+ workflow_graph = {
+ NlpAnalysisTask: [:TopicModelingTask],
+ TopicModelingTask: [:LlmAnalysisTask],
+ LlmAnalysisTask: []
+ }
+
+ @orchestrator.define_workflow(workflow_graph)
+ logger.debug "Workflow setup completed"
+ end
+
+ def process_input
+ logger.debug "Processing input file: #{@input_file_path}"
+ text = File.read(@input_file_path)
+ processed_text = @nlp_processor.process(text)
+ store_processed_text(processed_text)
+ logger.debug "Input processing completed"
+ end
+
+ def run_nlp_analysis
+ logger.info "Running NLP Analysis"
+ Flowbots::Task.get_task("nlp_analysis_task").execute
+ logger.info "NLP Analysis completed"
+ end
+
+ def run_topic_modeling
+ logger.info "Running Topic Modeling"
+ Flowbots::Task.get_task("topic_modeling_task").execute
+ logger.info "Topic Modeling completed"
+ end
+
+ def run_workflow
+ Flowbots::UI.info "Running LLM Analysis workflow"
+ # @orchestrator.add_agent("ironically_literal", "assistants/steve.yml", author: "@b08x")
+ @orchestrator.run_workflow
+ end
+
+ def display_results
+ raw_text = File.read(@input_file_path)
+ processed_text = JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("processed_text"))
+ analysis_result = JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("analysis_result"))
+
+ puts UIBox.comparison_box(raw_text, processed_text, title1: "Raw Text", title2: "Processed Text")
+ puts UIBox.eval_result_box(analysis_result, title: "LLM Analysis Result")
+ end
+
+ def store_processed_text(text)
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("processed_text", text.to_json)
+ end
+
+ def retrieve_processed_text
+ JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("processed_text"))
+ end
+
+ def retrieve_analysis_result
+ JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("analysis_result"))
+ end
+
+ def retrieve_topics
+ @topic_modeling_processor.get_topics
+ end
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** can't convert nil into Integer
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `%'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `sleep'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:82:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:28:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_185729.md b/exception_reports/exception_report_20240716_185729.md
new file mode 100644
index 0000000..7c74237
--- /dev/null
+++ b/exception_reports/exception_report_20240716_185729.md
@@ -0,0 +1,65 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots::CLI class, specifically in the Jongleur::API.rb file at line 153. The error message indicates that there was an attempt to convert a nil value to an integer, which is not possible, resulting in a TypeError.
+
+## Technical Details
+
+```
+Class: Flowbots::CLI
+Message: can't convert nil into Integer
+```
+
+### Backtrace
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `%'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `sleep'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:82:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:28:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** can't convert nil into Integer
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `%'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `sleep'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:82:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:28:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:33:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_185959.md b/exception_reports/exception_report_20240716_185959.md
new file mode 100644
index 0000000..2877695
--- /dev/null
+++ b/exception_reports/exception_report_20240716_185959.md
@@ -0,0 +1,40 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An uninitialized constant error occurred during the execution of the Flowbots CLI tool.
+
+## Technical Details
+The error was raised when attempting to instantiate the `TextProcessingWorkflow` class, which is likely due to an incorrect class name or a missing class definition in the `flowbots/lib/cli.rb` file.
+
+## Backtrace
+- `Flowbots::CLI.process_text` called `TextProcessingWorkflow.new` with the `file` argument.
+- The `Flowbots::CLI` class is defined in `/home/b08x/Workspace/flowbots/lib/cli.rb`.
+
+## Suggested Action
+Verify the class name and ensure the `TextProcessingWorkflow` class is defined correctly in the `flowbots/lib/cli.rb` file.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant Flowbots::CLI::TextProcessingWorkflow
+
+ workflow = TextProcessingWorkflow.new(file)
+ ^^^^^^^^^^^^^^^^^^^^^^
+Did you mean? Flowbots::TextProcessor
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:50:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_190125.md b/exception_reports/exception_report_20240716_190125.md
new file mode 100644
index 0000000..dd33cf2
--- /dev/null
+++ b/exception_reports/exception_report_20240716_190125.md
@@ -0,0 +1,78 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An uninitialized constant error has occurred in the Flowbots::CLI module. The TextProcessingWorkflow class is not defined or imported, causing an exception during the execution of the process_text method.
+
+## Technical Details
+
+### Backtrace
+- **File**: `/home/b08x/Workspace/flowbots/lib/cli.rb`
+**Line**: 50
+**Method**: `process_text`
+**Cause**: The `TextProcessingWorkflow` class is not defined or imported in the current scope.
+
+### Suggested Fix
+Ensure that the `TextProcessingWorkflow` class is defined and accessible in the `Flowbots::CLI` module. Consider checking the file paths and imports to verify that the class definition is included correctly.
+
+### Relevant Code Snippet
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ def self.exit_on_failure?
+ true
+ end
+
+ # ...
+
+ desc "process_text FILE", "Process a text file using the text processing workflow"
+ def process_text(file)
+ pastel = Pastel.new
+
+ unless File.exist?(file)
+ say pastel.red("File not found: #{file}")
+ exit
+ end
+
+ say pastel.green("Processing file: #{file}")
+
+ begin
+ workflow = TextProcessingWorkflow.new(file)
+ # ...
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant Flowbots::CLI::TextProcessingWorkflow
+
+ workflow = TextProcessingWorkflow.new(File.join(file))
+ ^^^^^^^^^^^^^^^^^^^^^^
+Did you mean? Flowbots::TextProcessor
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:50:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_190318.md b/exception_reports/exception_report_20240716_190318.md
new file mode 100644
index 0000000..63ff20b
--- /dev/null
+++ b/exception_reports/exception_report_20240716_190318.md
@@ -0,0 +1,60 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+# Error Report
+
+## Summary
+An error occurred during the execution of the Flowbots::CLI command-line interface (CLI) tool, resulting in the message "can't convert nil into Integer". This indicates that the program attempted to perform an operation that requires an integer value, but the value provided was nil, which cannot be converted to an integer.
+
+## Technical Details
+
+### Backtrace
+The error occurred within the Jongleur::API module, specifically in line 153 of the Jongleur::API.rb file:
+```ruby
+Jongleur::API.rb:153:in `%'
+```
+
+### WorkflowOrchestrator.rb
+The WorkflowOrchestrator class is responsible for orchestrating the execution of workflows and interacting with the Jongleur::API module. The error may be related to the initialization of the WorkflowAgent objects or the definition and execution of the workflow.
+
+### text_processing_workflow.rb
+The TextProcessingWorkflow class appears to be the main entry point for the text processing workflow. It initializes the WorkflowOrchestrator and sets up the workflow graph. The error could be related to the setup of the workflow or the execution of the individual tasks.
+
+### cli.rb
+The CLI class is responsible for processing the command-line arguments and invoking the TextProcessingWorkflow. The error may be related to the handling of command-line arguments or the initialization of the TextProcessingWorkflow.
+
+## Suggested Action Items
+- Review the code in Jongleur::API.rb, specifically line 153, to ensure that the operation expecting an integer value is receiving a valid input.
+- Debug the WorkflowOrchestrator class to ensure that WorkflowAgent objects are initialized correctly and the workflow definition is accurate.
+- Examine the TextProcessingWorkflow class to verify that the workflow setup and task execution are performed correctly.
+- Investigate the CLI class to ensure proper handling of command-line arguments and initialization of the TextProcessingWorkflow.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** can't convert nil into Integer
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `%'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `sleep'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:82:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:28:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:50:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_190433.md b/exception_reports/exception_report_20240716_190433.md
new file mode 100644
index 0000000..50a57cb
--- /dev/null
+++ b/exception_reports/exception_report_20240716_190433.md
@@ -0,0 +1,57 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+An error has occurred in the CLI (Command-Line Interface) of the Flowbots application, specifically the "Failed to create topic model" error. This issue has prevented the creation of a topic model, which is a crucial component for text analysis and processing.
+
+## Technical Details:
+The backtrace indicates that the error occurred within the "TopicModelProcessor.rb" file, specifically in the "load_model" method. This suggests that there might be an issue with loading the topic model from the specified path or creating a new model.
+
+### Possible Causes:
+- Invalid topic name: Kafka imposes restrictions on topic names, including character limitations and format requirements. Ensure that the topic name complies with Kafka's guidelines.
+- Insufficient permissions: Verify that the user attempting to create the topic has the necessary permissions in Kafka. Check the access control lists (ACLs) and ensure the 'Create' permission is assigned.
+- Inadequate resources: Monitor the resource utilization of the Kafka cluster and ensure sufficient resources, such as disk space and memory, are available for topic creation.
+- Connection/network issues: Check the network connectivity between the client and the Kafka broker. Ensure there are no firewalls, proxies, or other configurations interfering with the communication.
+
+### Suggested Troubleshooting Steps:
+- Review the topic name and ensure it follows the required format: '^[a-zA-Z0-9._-]+$'.
+- Check and adjust permissions for the user attempting to create the topic.
+- Monitor resource utilization and consider increasing disk space, memory, or other relevant resources if needed.
+- Verify network connectivity and address any connection issues between the client and the Kafka broker.
+
+## Relevant Files:
+- "TopicModelProcessor.rb": This file contains the "TopicModelProcessor" class, which is responsible for processing and modeling topics. The error occurred within the "load_model" method of this class.
+- "TextProcessor.rb": This file defines the "TextProcessor" class, which includes methods for processing files and text data.
+- "text_processing_workflow.rb": This file contains the "TextProcessingWorkflow" class, which orchestrates the text processing workflow, including NLP analysis and topic modeling.
+- "cli.rb": This file contains the Command-Line Interface (CLI) implementation of the Flowbots application, including the "process_text" method that triggers the text processing workflow.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Failed to create topic model
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:77:in `rescue in load_model'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:73:in `load_model'
+/home/b08x/Workspace/flowbots/lib/processors/TextProcessor.rb:16:in `initialize'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:22:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `block in instance'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `synchronize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `instance'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `initialize'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `new'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_191401.md b/exception_reports/exception_report_20240716_191401.md
new file mode 100644
index 0000000..73b457f
--- /dev/null
+++ b/exception_reports/exception_report_20240716_191401.md
@@ -0,0 +1,68 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Summary
+A "TypeError" was raised, indicating an issue with converting a "nil" value to an integer. This error occurred within the "Flowbots::CLI" class during the execution of the code.
+
+## Technical Details
+### Backtrace
+The error occurred in the "Jongleur::API.rb" file at line 153, specifically within the "%" method. The full backtrace is as follows:
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `%`
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `block in run`
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `sleep`
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `block in run`
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop`
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run`
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow`
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:82:in `run_workflow`
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:28:in `run`
+/home/b08x/Workspace/flowbots/lib/cli.rb:50:in `process_text`
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run`
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command`
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch`
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start`
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches`
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start`
+./exe/flowbots:21:in ``
+```
+
+### Relevant Files
+The error appears to be related to the following files:
+- "WorkflowOrchestrator.rb"
+- "text_processing_workflow.rb"
+- "cli.rb"
+- "thor_ext.rb"
+
+## Suggested Action
+Review the code within the "Jongleur::API.rb" file, specifically at line 153, to identify the cause of the "TypeError". Ensure that the value being converted to an integer is not "nil".
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** can't convert nil into Integer
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `%'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `sleep'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:82:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:28:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:50:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_191440.md b/exception_reports/exception_report_20240716_191440.md
new file mode 100644
index 0000000..992722a
--- /dev/null
+++ b/exception_reports/exception_report_20240716_191440.md
@@ -0,0 +1,66 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "can't convert nil into Integer" was raised during the execution of the Flowbots CLI application. This indicates that a value of nil was encountered where an integer value was expected, resulting in a TypeError.
+
+## Technical Details
+The backtrace indicates that the error occurred within the Jongleur::API module, specifically in the run method of the WorkflowOrchestrator class. The WorkflowOrchestrator class appears to be responsible for defining and executing workflows, which are defined using a task graph.
+
+The relevant code snippet from the WorkflowOrchestrator class is as follows:
+
+```ruby
+def run_workflow
+ logger.info "Starting workflow execution"
+ begin
+ logger.debug "Printing graph to /tmp"
+ Jongleur::API.print_graph("/tmp")
+
+ logger.debug "Starting Jongleur::API.run"
+ Jongleur::API.run do |on|
+ # ...
+ end
+ rescue StandardError => e
+ logger.error "Error during workflow execution: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ raise
+ end
+end
+```
+
+The error appears to be raised during the execution of Jongleur::API.run, which is called within the run_workflow method. However, without further information about the specific operations performed within Jongleur::API.run, it is difficult to pinpoint the exact cause of the error.
+
+## Suggested Action Items
+- Review the Jongleur::API module, specifically the run method, to identify any operations that may involve integer values.
+- Inspect the values being passed to the run method or used within the method to ensure that they are not nil when an integer is expected.
+- Consider adding additional logging statements or debugging tools to narrow down the specific line or operation causing the error.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** can't convert nil into Integer
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `%'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `sleep'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:82:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:28:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:50:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_191750.md b/exception_reports/exception_report_20240716_191750.md
new file mode 100644
index 0000000..ab28d72
--- /dev/null
+++ b/exception_reports/exception_report_20240716_191750.md
@@ -0,0 +1,77 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Summary:
+An error has occurred in the Flowbots::CLI class, specifically in the Jongleur::API.rb file on line 153. The error message indicates that there is an issue with converting nil into an Integer.
+
+## Technical Details:
+
+```ruby
+TypeError (can't convert nil into Integer)
+```
+
+This error is occurring during the execution of the following code block:
+
+```ruby
+class WorkflowOrchestrator
+ CARTRIDGE_BASE_DIR = File.expand_path("../../nano-bots/cartridges", __dir__)
+
+ def initialize
+ @agents = {}
+ logger = Logger.new(STDOUT)
+ logger.level = Logger::DEBUG
+ end
+
+ # ...
+
+ def run_workflow
+ logger.info "Starting workflow execution"
+ begin
+ # ...
+ Jongleur::API.run do |on|
+ # ...
+ end
+ rescue StandardError => e
+ logger.error "Error during workflow execution: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ raise
+ end
+ end
+end
+```
+
+The error is raised when attempting to execute the `Jongleur::API.run` method within the `run_workflow` method of the `WorkflowOrchestrator` class. The backtrace indicates that the issue occurs specifically in the `Jongleur::API.rb` file on line 153, which suggests that there may be an issue with the `run` method implementation in that file.
+
+## Suggested Action Items:
+- Review the `run` method in the `Jongleur::API.rb` file, specifically around line 153, to identify any potential issues with converting nil to an Integer.
+- Consider adding additional error handling or input validation to the `run` method to prevent or catch similar issues in the future.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** can't convert nil into Integer
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `%'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:153:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `sleep'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:188:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:42:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:82:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:28:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:50:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_191948.md b/exception_reports/exception_report_20240716_191948.md
new file mode 100644
index 0000000..8631559
--- /dev/null
+++ b/exception_reports/exception_report_20240716_191948.md
@@ -0,0 +1,43 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+An error has occurred in the Flowbots CLI, resulting in a failure to create a topic model.
+
+## Technical Details:
+Due to limited information, the specific cause of the error cannot be identified. However, potential issues to investigate include:
+- Invalid topic name format or character limitations.
+- Insufficient permissions for the user attempting to create the topic.
+- Inadequate system resources, such as disk space or memory.
+- Network connectivity problems between the client and the Kafka broker.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Failed to create topic model
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:78:in `rescue in load_model'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:74:in `load_model'
+/home/b08x/Workspace/flowbots/lib/processors/TextProcessor.rb:16:in `initialize'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:23:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `block in instance'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `synchronize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `instance'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `initialize'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `new'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_192633.md b/exception_reports/exception_report_20240716_192633.md
new file mode 100644
index 0000000..5d0023c
--- /dev/null
+++ b/exception_reports/exception_report_20240716_192633.md
@@ -0,0 +1,41 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+An error has occurred in the Flowbots CLI, failing to create a topic model.
+
+## Technical Details:
+Unfortunately, I was unable to find any specific information about the error "Failed to create topic model" in the context of Flowbots CLI. The backtrace you provided suggests that the error occurred during the topic modelling process, specifically in the `TopicModelProcessor.rb` file. However, without further context or code snippets, it is challenging to pinpoint the exact cause of the error.
+
+To resolve the issue, I recommend reviewing the `TopicModelProcessor.rb` file, particularly the `load_model` method, and checking for any potential issues or errors that could have led to the failure in creating the topic model.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Failed to create topic model
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:79:in `rescue in load_model'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:75:in `load_model'
+/home/b08x/Workspace/flowbots/lib/processors/TextProcessor.rb:16:in `initialize'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:23:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `block in instance'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `synchronize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `instance'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `initialize'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `new'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_192932.md b/exception_reports/exception_report_20240716_192932.md
new file mode 100644
index 0000000..cf909e9
--- /dev/null
+++ b/exception_reports/exception_report_20240716_192932.md
@@ -0,0 +1,79 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots CLI, specifically in the TopicModelProcessor.rb file. The error message indicates that the wrong number of arguments were passed to a function or method, resulting in an exception.
+
+## Technical Details
+### Error Message
+```
+wrong number of arguments (given 0, expected 1)
+```
+This error message indicates that a function or method was called with an incorrect number of arguments. In this case, the function or method expected one argument, but zero arguments were provided.
+
+### Backtrace
+The backtrace provides information about the sequence of function or method calls that led to the error.
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:60:in `load_model'
+/home/b08x/Workspace/flowbots/lib/processors/TextProcessor.rb:16:in `initialize'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:23:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `block in instance'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `synchronize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `instance'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `initialize'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `new'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+The backtrace suggests that the error occurred during the initialization of the `TopicModelProcessor` class, specifically in the `load_model` method.
+
+### Relevant Files
+The following files are potentially relevant to the error:
+- `TopicModelProcessor.rb`
+- `TextProcessor.rb`
+- `text_processing_workflow.rb`
+- `cli.rb`
+- `thor_ext.rb`
+
+## Suggested Action Items
+- Review the `TopicModelProcessor.rb` file and ensure that the correct number of arguments are being passed to the `load_model` method.
+- Verify that the function or method call in `TopicModelProcessor.rb:60` is providing the expected number of arguments.
+- Consider updating the code to include input validation or error handling to catch and handle similar issues in the future.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** wrong number of arguments (given 0, expected 1)
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:60:in `load_model'
+/home/b08x/Workspace/flowbots/lib/processors/TextProcessor.rb:16:in `initialize'
+/home/b08x/Workspace/flowbots/lib/processors/TopicModelProcessor.rb:23:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:127:in `block in instance'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `synchronize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/3.1.0/singleton.rb:125:in `instance'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `initialize'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `new'
+/home/b08x/Workspace/flowbots/lib/cli.rb:49:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:21:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_232004.md b/exception_reports/exception_report_20240716_232004.md
new file mode 100644
index 0000000..9dcf54b
--- /dev/null
+++ b/exception_reports/exception_report_20240716_232004.md
@@ -0,0 +1,57 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots application due to an uninitialized constant, specifically "Flowbots::TreeOfThoughts". This issue has prevented the successful execution of the program.
+
+## Technical Details
+```
+Class: Flowbots::CLI
+Message: uninitialized constant Flowbots::TreeOfThoughts
+
+workflow = Flowbots.const_get(workflow_class).new
+^\
+Did you mean? Flowbots::TreeOfThoughtsWorkflow
+```
+
+## Backtrace
+- /home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `run'
+- /home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+- /home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+- /home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+- /home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+- ./exe/flowbots:16:in `'
+
+## Relevant Files
+- workflows.rb
+- cli.rb
+- thor_ext.rb
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant Flowbots::TreeOfThoughts
+
+ workflow = Flowbots.const_get(workflow_class).new
+ ^^^^^^^^^^
+Did you mean? Flowbots::TreeOfThoughtsWorkflow
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_232107.md b/exception_reports/exception_report_20240716_232107.md
new file mode 100644
index 0000000..3a40eea
--- /dev/null
+++ b/exception_reports/exception_report_20240716_232107.md
@@ -0,0 +1,62 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots::CLI class, specifically a "no implicit conversion of nil into String" error. This indicates that there was an attempt to perform string operations on a nil object, resulting in a failure to convert nil into a string.
+
+## Technical Details
+
+### Backtrace
+The error occurred during the initialization of a new instance of the JSON::Common class, as seen in the backtrace:
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/json-2.7.2/lib/json/common.rb:220:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/json-2.7.2/lib/json/common.rb:220:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/json-2.7.2/lib/json/common.rb:220:in `parse'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:51:in `load_previous_results'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:18:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:32:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+### Relevant Files
+The error may be related to the following files:
+- `workflows.rb`
+- `cli.rb`
+- `thor_ext.rb`
+
+## Suggested Action
+To resolve this issue, ensure that any variables or values being converted to strings are properly assigned and are not nil. Additionally, consider adding error handling mechanisms to catch and handle similar exceptions in the future.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** no implicit conversion of nil into String
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/json-2.7.2/lib/json/common.rb:220:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/json-2.7.2/lib/json/common.rb:220:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/json-2.7.2/lib/json/common.rb:220:in `parse'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:51:in `load_previous_results'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:18:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:32:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_232628.md b/exception_reports/exception_report_20240716_232628.md
new file mode 100644
index 0000000..586b838
--- /dev/null
+++ b/exception_reports/exception_report_20240716_232628.md
@@ -0,0 +1,70 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+
+The Flowbots::CLI class encountered an error, raising an exception due to a missing cartridge file. This issue occurred during the initialization of the NanoBot instance within the WorkflowAgent class.
+
+## Error Details:
+
+**Class:** Flowbots::CLI
+**Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/nlp_techniques_and_tools.yml"
+
+## Backtrace:
+
+The backtrace provides a call stack, indicating the sequence of method calls leading to the error:
+
+- **instance.rb:82:** The 'load_cartridge!' method is called, triggering the error when it attempts to load the missing cartridge file.
+- **instance.rb:18:** The NanoBot instance is initialized within the WorkflowAgent class.
+- **nano-bots.rb:15:** The 'new' method is invoked, creating a new instance of the NanoBot class.
+- **WorkflowAgent.rb:27:** The WorkflowAgent class is initialized, passing the 'cartridge_file' parameter, which is later used in the NanoBot initialization.
+- **tree_of_thoughts_workflow.rb:94:** The NanoBot instance is utilized within the TreeOfThoughtsWorkflow class, specifically during the 'perform_nlp_analysis' method call.
+- **tree_of_thoughts_workflow.rb:62, 18:** Subsequent method calls within the TreeOfThoughtsWorkflow class, leading to the 'run' method.
+- **workflows.rb:32:** The 'run' method is invoked on the Workflows class instance.
+- **cli.rb:27:** The 'workflows' method is called within the CLI class, initiating the sequence of method calls that led to the error.
+- **thor_ext.rb:34, 43:** Custom Thor extension module, handling command-line argument parsing and help/error behavior.
+
+## Relevant Files:
+
+- **WorkflowAgent.rb:** Defines the Agent, AgentResponse, and WorkflowAgent classes. The WorkflowAgent class is where the NanoBot instance is initialized, triggering the error when the cartridge file is missing.
+- **workflows.rb:** Contains the Flowbots::Workflows class, responsible for listing, selecting, and running workflows.
+- **cli.rb:** Defines the Flowbots::CLI class, a Thor-based command-line interface that utilizes the Workflows class and includes custom Thor extensions for error handling.
+- **thor_ext.rb:** Provides the ThorExt module, extending Thor's behavior for improved help and error management.
+
+## Suggested Action Items:
+
+- Verify the existence of the cartridge file at the specified path: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/nlp_techniques_and_tools.yml". Ensure the file is accessible and in the correct location.
+- Review the WorkflowAgent class within the WorkflowAgent.rb file, specifically the NanoBot initialization logic, to ensure it aligns with the expected cartridge file structure and location.
+- Examine the call stack and relevant files to identify any discrepancies or missing dependencies that may have contributed to the error.
+- Consider implementing additional error handling or validation within the code to gracefully handle missing cartridge files or provide more specific error messages.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/nlp_techniques_and_tools.yml"
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:27:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:94:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:94:in `perform_nlp_analysis'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:62:in `perform_text_analysis'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:18:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:32:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240716_233021.md b/exception_reports/exception_report_20240716_233021.md
new file mode 100644
index 0000000..136b962
--- /dev/null
+++ b/exception_reports/exception_report_20240716_233021.md
@@ -0,0 +1,162 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+The error "Cartridge file not found" occurred when attempting to load the "nlp_techniques_and_tools.yml" cartridge file. This issue arose during the initialization of the WorkflowAgent with the specified role and cartridge file.
+
+## Technical Details:
+
+**Error Class and Message:**
+- Class: Flowbots::CLI
+- Message: "Cartridge file not found: /home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/nlp_techniques_and_tools.yml"
+
+**Backtrace:**
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:27:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:94:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:94:in `perform_nlp_analysis'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:62:in `perform_text_analysis'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:18:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:32:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+**Relevant Files:**
+
+**WorkflowAgent.rb:**
+```ruby
+class Agent < Ohm::Model
+ include Ohm::DataTypes
+ include Ohm::Callbacks
+ attribute :name
+ attribute :role
+ attribute :state
+ collection :responses, :AgentResponse
+ index :name
+ index :role
+end
+
+class AgentResponse < Ohm::Model
+ include Ohm::DataTypes
+ include Ohm::Callbacks
+ attribute :text
+ attribute :tagged, Type::Hash
+ reference :agent, :Agent
+end
+
+class WorkflowAgent
+ def initialize(role, cartridge_file)
+ @role = role
+ @state = {}
+ @bot = NanoBot.new(
+ cartridge: cartridge_file
+ )
+ Flowbots::UI.info "Initialized WorkflowAgent with role: #{role}, cartridge: #{cartridge_file}"
+ end
+
+ # ... (remaining code omitted)
+end
+```
+
+**workflows.rb:**
+```ruby
+# ... (irrelevant code omitted)
+
+module Flowbots
+ class Workflows
+ # ... (irrelevant code omitted)
+
+ def run(workflow_name)
+ workflow_file = File.join(WORKFLOW_DIR, "#{workflow_name}.rb")
+
+ unless File.exist?(workflow_file)
+ logger.error "Workflow file not found: #{workflow_file}"
+ raise FileNotFoundError, "Workflow file not found: #{workflow_file}"
+ end
+
+ # ... (remaining code omitted)
+ end
+
+ # ... (irrelevant code omitted)
+ end
+
+ # ... (irrelevant code omitted)
+end
+
+# ... (irrelevant code omitted)
+```
+
+**cli.rb:**
+```ruby
+# ... (irrelevant code omitted)
+
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ # ... (irrelevant code omitted)
+
+ desc "workflows", "List and select a workflow to run"
+ def workflows
+ # ... (irrelevant code omitted)
+
+ if selected_workflow
+ begin
+ workflows.run(selected_workflow)
+ say @pastel.green("Workflow completed successfully")
+ rescue FileNotFoundError => e
+ say @pastel.red(e.message)
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+
+ # ... (irrelevant code omitted)
+ end
+end
+
+# ... (irrelevant code omitted)
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/nlp_techniques_and_tools.yml"
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:27:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:94:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:94:in `perform_nlp_analysis'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:62:in `perform_text_analysis'
+/home/b08x/Workspace/flowbots/lib/workflows/tree_of_thoughts_workflow.rb:18:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:32:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_191059.md b/exception_reports/exception_report_20240720_191059.md
new file mode 100644
index 0000000..ce41b15
--- /dev/null
+++ b/exception_reports/exception_report_20240720_191059.md
@@ -0,0 +1,134 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots CLI, specifically in the `initialize` method of the `TopicModelTrainerWorkflow` class. The error message indicates that the wrong number of arguments were passed to a method, with 0 arguments given and 1 argument expected.
+
+## Technical Details
+
+### Backtrace
+- `/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:8:in 'initialize'`
+- `/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in 'new'`
+- `/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in 'run'`
+- `/home/b08x/Workspace/flowbots/lib/cli.rb:27:in 'workflows'`
+- `/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in 'run'`
+- `/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in 'invoke_command'`
+- `/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in 'dispatch'`
+- `/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in 'block in start'`
+- `/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in 'handle_help_switches'`
+- `/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in 'start'`
+- `./exe/flowbots:16:in ''`
+
+### Relevant Files
+
+#### workflows.rb
+```ruby
+# ...
+
+def run(workflow_name)
+ workflow_file = File.join(WORKFLOW_DIR, "#{workflow_name}.rb")
+
+ unless File.exist?(workflow_file)
+ logger.error "Workflow file not found: #{workflow_file}"
+ raise FileNotFoundError, "Workflow file not found: #{workflow_file}"
+ end
+
+ Flowbots::UI.info "Running workflow: #{workflow_name}"
+
+ workflow_class = workflow_name.split("_").map(&:capitalize).join
+ workflow = Flowbots.const_get(workflow_class).new
+
+ logger.debug workflow
+ workflow.run
+end
+
+# ...
+```
+
+#### cli.rb
+```ruby
+# ...
+
+desc "workflows", "List and select a workflow to run"
+def workflows
+ workflows = Workflows.new
+
+ selected_workflow = workflows.list_and_select
+
+ if selected_workflow
+ begin
+ workflows.run(selected_workflow)
+ say @pastel.green("Workflow completed successfully")
+ rescue FileNotFoundError => e
+ say @pastel.red(e.message)
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+end
+
+# ...
+```
+
+#### thor_ext.rb
+```ruby
+# ...
+
+module Start
+ def self.extended(base)
+ super
+ base.check_unknown_options!
+ end
+
+ def start(given_args=ARGV, config={})
+ config[:shell] ||= Thor::Base.shell.new
+ handle_help_switches(given_args) do |args|
+ dispatch(nil, args, nil, config)
+ end
+ rescue StandardError => e
+ handle_exception_on_start(e, config)
+ end
+
+private
+
+ def handle_help_switches(given_args)
+ yield(given_args.dup)
+ rescue Thor::UnknownArgumentError => e
+ retry_with_args = []
+
+ if given_args.first == "help"
+ retry_with_args = ["help"] if given_args.length > 1
+ elsif e.unknown.intersect?(%w[-h --help])
+ retry_with_args = ["help", (given_args - e.unknown).first]
+ end
+ raise unless retry_with_args.any?
+
+ yield(retry_with_args)
+ end
+
+# ...
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** wrong number of arguments (given 0, expected 1)
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:8:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_192539.md b/exception_reports/exception_report_20240720_192539.md
new file mode 100644
index 0000000..838cdbd
--- /dev/null
+++ b/exception_reports/exception_report_20240720_192539.md
@@ -0,0 +1,74 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error was encountered when attempting to execute the `say @pastel.green("Workflow completed successfully")` line in the `cli.rb` file. The specific issue is indicated by the "undefined method `green' for nil:NilClass" message, which means that the `@pastel` object is `nil` and does not have a `green` method defined.
+
+## Technical Details
+The error occurred within the `workflows` method of the `Flowbots::CLI` class in the `cli.rb` file. The `say @pastel.green("Workflow completed successfully")` line attempts to call the `green` method on the `@pastel` object to display a success message. However, the `@pastel` object is `nil`, meaning it has no value or is undefined, and therefore, the `green` method cannot be called on it.
+
+To resolve this issue, you need to ensure that the `@pastel` object is properly initialized and has a valid value before attempting to access its `green` method. You can add a check to verify if `@pastel` is `nil` before calling the `green` method, or you can initialize `@pastel` with an appropriate value earlier in the code.
+
+## Relevant Files
+### cli.rb
+```ruby
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ def self.exit_on_failure?
+ true
+ end
+
+ # ...
+
+ desc "workflows", "List and select a workflow to run"
+ def workflows
+ workflows = Workflows.new
+
+ selected_workflow = workflows.list_and_select
+
+ if selected_workflow
+ begin
+ workflows.run(selected_workflow)
+ say @pastel.green("Workflow completed successfully") # Error occurs here
+ rescue FileNotFoundError => e
+ say @pastel.red(e.message)
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+
+ # ...
+ end
+end
+```
+
+### thor_ext.rb
+This file contains the `ThorExt` module, which is extended by the `Flowbots::CLI` class in `cli.rb`. It provides additional functionality and error handling for Thor-based CLIs. However, the error does not appear to be directly related to the contents of this file.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `green' for nil:NilClass
+
+ say @pastel.green("Workflow completed successfully")
+ ^^^^^^
+Did you mean? agree
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_192728.md b/exception_reports/exception_report_20240720_192728.md
new file mode 100644
index 0000000..d14410c
--- /dev/null
+++ b/exception_reports/exception_report_20240720_192728.md
@@ -0,0 +1,125 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the "Flowbots::CLI" class, indicating that a folder was not found.
+
+## Technical Details
+```
+Class: Flowbots::CLI
+Message: Folder not found
+```
+
+### Backtrace
+```
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:40:in `prompt_for_folder'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+### Relevant Files
+```
+workflows.rb:
+
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class Workflows
+
+ def initialize
+ @prompt = TTY::Prompt.new
+ @pastel = Pastel.new
+ end
+
+ ... [remaining code omitted for brevity] ...
+
+ end
+
+ class FileNotFoundError < StandardError; end
+end
+```
+
+```
+cli.rb:
+
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ ... [remaining code omitted for brevity] ...
+
+ end
+end
+```
+
+```
+command.rb:
+
+module Sublayer
+ module Actions
+ class RunTestCommandAction < Base
+ def initialize(test_command:)
+ @test_command = test_command
+ end
+
+ def call
+ stdout, stderr, status = Open3.capture3(@test_command)
+ [stdout, stderr, status]
+ end
+ end
+ end
+end
+```
+
+```
+thor_ext.rb:
+
+module Flowbots
+ module ThorExt
+ # Configures Thor to behave more like a typical CLI, with better help and error handling.
+ #
+ # ... [remaining code omitted for brevity] ...
+ module Start
+ ... [remaining code omitted for brevity] ...
+ end
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Folder not found
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:40:in `prompt_for_folder'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:29:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:27:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_193431.md b/exception_reports/exception_report_20240720_193431.md
new file mode 100644
index 0000000..6a3dd74
--- /dev/null
+++ b/exception_reports/exception_report_20240720_193431.md
@@ -0,0 +1,65 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error was encountered when attempting to execute the `say @pastel.green("Workflow completed successfully")` command. The error message "undefined method `green' for nil:NilClass" indicates that the program tried to call the `green` method on an object that was `nil`.
+
+## Technical Details
+The error occurred in the `workflows` method of the `Flowbots::CLI` class, specifically on the line `say @pastel.green("Workflow completed successfully")`.
+
+The `@pastel` object is `nil`, which means it has not been initialized or assigned a value. This resulted in the `green` method call failing, as `nil` does not have a `green` method.
+
+To resolve this issue, ensure that the `@pastel` object is properly initialized or assigned a value before attempting to call the `green` method on it.
+
+## Relevant Code Snippet
+```ruby
+module Flowbots
+ class CLI < Thor
+ # ...
+
+ desc "workflows", "List and select a workflow to run"
+ def workflows
+ workflows = Workflows.new
+
+ selected_workflow = workflows.list_and_select
+
+ if selected_workflow
+ begin
+ workflows.run(selected_workflow)
+ say @pastel.green("Workflow completed successfully")
+ rescue FileNotFoundError => e
+ say @pastel.red(e.message)
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+ # ...
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `green' for nil:NilClass
+
+ say @pastel.green("Workflow completed successfully")
+ ^^^^^^
+Did you mean? agree
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_193849.md b/exception_reports/exception_report_20240720_193849.md
new file mode 100644
index 0000000..91a5ecf
--- /dev/null
+++ b/exception_reports/exception_report_20240720_193849.md
@@ -0,0 +1,109 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "undefined method `green' for nil:NilClass" occurred when attempting to execute the "say @pastel.green('Workflow completed successfully')" code in the Flowbots::CLI class. This indicates that the "green" method cannot be applied to a nil object, resulting in a NoMethodError.
+
+## Technical Details
+### Backtrace
+- **File:** /home/b08x/Workspace/flowbots/lib/cli.rb
+**Line:** 28
+**Method:** workflows
+**Code:**
+```ruby
+say @pastel.green("Workflow completed successfully")
+```
+
+### Relevant Files
+#### cli.rb
+```ruby
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ def self.exit_on_failure?
+ true
+ end
+
+ # ...
+
+ desc "workflows", "List and select a workflow to run"
+ def workflows
+ workflows = Workflows.new
+
+ selected_workflow = workflows.list_and_select
+
+ if selected_workflow
+ begin
+ workflows.run(selected_workflow)
+ say @pastel.green("Workflow completed successfully")
+ rescue FileNotFoundError => e
+ say @pastel.red(e.message)
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+
+ # ...
+ end
+end
+```
+
+#### thor_ext.rb
+```ruby
+module Flowbots
+ module ThorExt
+ # ...
+
+ module Start
+ # ...
+
+ def start(given_args=ARGV, config={})
+ config[:shell] ||= Thor::Base.shell.new
+ handle_help_switches(given_args) do |args|
+ dispatch(nil, args, nil, config)
+ end
+ rescue StandardError => e
+ handle_exception_on_start(e, config)
+ end
+
+ private
+
+ # ...
+
+ def handle_exception_on_start(error, config)
+ # ...
+ end
+ end
+ end
+end
+```
+
+## Suggested Action
+To resolve this issue, ensure that the `@pastel` object is properly initialized and not nil before attempting to call the `green` method on it. Consider adding a nil check before using the `@pastel` object to prevent similar errors in the future.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `green' for nil:NilClass
+
+ say @pastel.green("Workflow completed successfully")
+ ^^^^^^
+Did you mean? agree
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_194725.md b/exception_reports/exception_report_20240720_194725.md
new file mode 100644
index 0000000..8204cc4
--- /dev/null
+++ b/exception_reports/exception_report_20240720_194725.md
@@ -0,0 +1,49 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error occurred when attempting to execute the `say @pastel.green("Workflow completed successfully")` code in the `cli.rb` file. This error, `undefined method 'green' for nil:NilClass`, indicates that the method or attribute being called on an object has not been defined.
+
+## Technical Details
+The `green` method is undefined for the object `nil`, which is a special type in Ruby representing the absence of a value. This error suggests that `@pastel` is `nil`, indicating that it has not been assigned a value.
+
+To resolve this issue, ensure that `@pastel` is assigned a valid value before attempting to call the `green` method on it. You can use a conditional statement, such as an `if-else` block, to check if `@pastel` is `nil` before executing the code that references it.
+
+## Relevant Code Snippet
+```ruby
+if selected_workflow
+ begin
+ workflows.run(selected_workflow)
+ say @pastel.green("Workflow completed successfully")
+ rescue FileNotFoundError => e
+ say @pastel.red(e.message)
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `green' for nil:NilClass
+
+ say @pastel.green("Workflow completed successfully")
+ ^^^^^^
+Did you mean? agree
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_220052.md b/exception_reports/exception_report_20240720_220052.md
new file mode 100644
index 0000000..31e854b
--- /dev/null
+++ b/exception_reports/exception_report_20240720_220052.md
@@ -0,0 +1,41 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error occurred when attempting to call the `green` method on `nil`.
+
+## Technical Details
+The error was raised when attempting to execute the following code:
+
+```ruby
+say @pastel.green("Workflow completed successfully")
+```
+
+The error message indicates that the `green` method is undefined for `nil`. This suggests that `@pastel` is `nil`, and therefore the `green` method cannot be called on it.
+
+To resolve this issue, ensure that `@pastel` is initialized correctly before attempting to access the `green` method. You may need to check the value of `@pastel` prior to the method call to ensure it is not `nil`.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `green' for nil:NilClass
+
+ say @pastel.green("Workflow completed successfully")
+ ^^^^^^
+Did you mean? agree
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_222604.md b/exception_reports/exception_report_20240720_222604.md
new file mode 100644
index 0000000..31b02a7
--- /dev/null
+++ b/exception_reports/exception_report_20240720_222604.md
@@ -0,0 +1,46 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error occurred when attempting to execute a method on an object, where the method is not defined for the object.
+
+## Technical Details
+In the provided code, the error is occurring on the following line:
+
+```ruby
+say @pastel.green("Workflow completed successfully")
+```
+
+The `@pastel` object is `nil`, and the `green` method cannot be called on a `nil` object. This results in the "undefined method `green' for nil:NilClass" error.
+
+To resolve this issue, ensure that the `@pastel` object is properly initialized and assigned before attempting to call the `green` method on it.
+
+## Relevant Code Snippet
+```ruby
+say @pastel.green("Workflow completed successfully")
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `green' for nil:NilClass
+
+ say @pastel.green("Workflow completed successfully")
+ ^^^^^^
+Did you mean? agree
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_225122.md b/exception_reports/exception_report_20240720_225122.md
new file mode 100644
index 0000000..2eebfc6
--- /dev/null
+++ b/exception_reports/exception_report_20240720_225122.md
@@ -0,0 +1,183 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error was encountered when attempting to execute the 'workflows' method within the Flowbots::CLI class. The specific issue is an undefined method 'green' for nil:NilClass error, indicating that the 'green' method is not defined for the object.
+
+## Technical Details
+
+### Backtrace
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+### Relevant Files
+
+#### cli.rb
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ def self.exit_on_failure?
+ true
+ end
+
+ map %w[-v --version] => "version"
+
+ desc "version", "Display flowbots version", hide: true
+ def version
+ say "flowbots/#{VERSION} #{RUBY_DESCRIPTION}"
+ end
+
+ desc "workflows", "List and select a workflow to run"
+ def workflows
+ workflows = Workflows.new
+
+ selected_workflow = workflows.list_and_select
+
+ if selected_workflow
+ begin
+ workflows.run(selected_workflow)
+ say @pastel.green("Workflow completed successfully")
+ rescue FileNotFoundError => e
+ say @pastel.red(e.message)
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+
+ desc "process_text FILE", "Process a text file using the text processing workflow"
+ def process_text(file)
+ pastel = Pastel.new
+
+ unless File.exist?(file)
+ say pastel.red("File not found: #{file}")
+ exit
+ end
+
+ say pastel.green("Processing file: #{file}")
+
+ begin
+ workflow = TextProcessingWorkflow.new(file)
+ workflow.run
+ say pastel.green("Text processing completed successfully")
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+end
+```
+
+#### thor_ext.rb
+```ruby
+module Flowbots
+ module ThorExt
+ # Configures Thor to behave more like a typical CLI, with better help and error handling.
+ #
+ # - Passing -h or --help to a command will show help for that command.
+ # - Unrecognized options will be treated as errors (instead of being silently ignored).
+ # - Error messages will be printed in red to stderr, without stack trace.
+ # - Full stack traces can be enabled by setting the VERBOSE environment variable.
+ # - Errors will cause Thor to exit with a non-zero status.
+ #
+ # To take advantage of this behavior, your CLI should subclass Thor and extend this module.
+ #
+ # class CLI < Thor
+ # extend ThorExt::Start
+ # end
+ #
+ # Start your CLI with:
+ #
+ # CLI.start
+ #
+ # In tests, prevent Kernel.exit from being called when an error occurs, like this:
+ #
+ # CLI.start(args, exit_on_failure: false)
+ #
+ module Start
+ def self.extended(base)
+ super
+ base.check_unknown_options!
+ end
+
+ def start(given_args=ARGV, config={})
+ config[:shell] ||= Thor::Base.shell.new
+ handle_help_switches(given_args) do |args|
+ dispatch(nil, args, nil, config)
+ end
+ rescue StandardError => e
+ handle_exception_on_start(e, config)
+ end
+
+ private
+
+ def handle_help_switches(given_args)
+ yield(given_args.dup)
+ rescue Thor::UnknownArgumentError => e
+ retry_with_args = []
+
+ if given_args.first == "help"
+ retry_with_args = ["help"] if given_args.length > 1
+ elsif e.unknown.intersect?(%w[-h --help])
+ retry_with_args = ["help", (given_args - e.unknown).first]
+ end
+ raise unless retry_with_args.any?
+
+ yield(retry_with_args)
+ end
+
+ def handle_exception_on_start(error, config)
+ return if error.is_a?(Errno::EPIPE)
+ raise if ENV["VERBOSE"] || !config.fetch(:exit_on_failure, true)
+
+ message = error.message.to_s
+ message.prepend("[#{error.class}] ") if message.empty? || !error.is_a?(Thor::Error)
+
+ config[:shell]&.say_error(message, :red)
+ exit(false)
+ end
+ end
+ end
+end
+```
+
+## Possible Cause
+The error typically occurs when attempting to call a method or access an attribute of an object that has not been defined or is nil. In this case, it seems that the `@pastel` object is nil, resulting in the 'green' method being undefined.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `green' for nil:NilClass
+
+ say @pastel.green("Workflow completed successfully")
+ ^^^^^^
+Did you mean? agree
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_230245.md b/exception_reports/exception_report_20240720_230245.md
new file mode 100644
index 0000000..d5cf363
--- /dev/null
+++ b/exception_reports/exception_report_20240720_230245.md
@@ -0,0 +1,59 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots CLI tool, specifically in the `workflows` method of the `CLI` class. The error message indicates that there is an undefined method `green` being called on `nil`, resulting in a `NoMethodError`.
+
+## Technical Details
+The backtrace provides information about the sequence of method calls leading up to the error:
+- `workflows`: The `workflows` method in the `CLI` class is where the error occurred.
+- `run`: The `run` method in the `Thor::Command` module was called from `workflows`.
+- `invoke_command`: The `invoke_command` method in the `Thor::Invocation` module was called from `run`.
+- `dispatch`: The `dispatch` method in the `Thor` module was called from `invoke_command`.
+- `start`: The `start` method in the `ThorExt` module, which is extended by the `CLI` class, was called from `dispatch`.
+- `handle_help_switches`: The `handle_help_switches` method in the `ThorExt` module was called from `start`.
+- `dispatch`: The `dispatch` method in the `Thor` module was called from `handle_help_switches`.
+
+The relevant code in the `workflows` method is as follows:
+```ruby
+if selected_workflow
+ begin
+ workflows.run(selected_workflow)
+ say @pastel.green("Workflow completed successfully")
+ rescue FileNotFoundError => e
+ say @pastel.red(e.message)
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+end
+```
+
+The error occurred on the line `say @pastel.green("Workflow completed successfully")`. Specifically, the error message `undefined method `green' for nil:NilClass` indicates that the `green` method was called on `nil`.
+
+## Possible Cause and Solution
+This error typically occurs when attempting to call a method on an object that is `nil`. In this case, it seems that `@pastel` is `nil`. To resolve the issue, ensure that `@pastel` is properly initialized before calling the `green` method on it.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `green' for nil:NilClass
+
+ say @pastel.green("Workflow completed successfully")
+ ^^^^^^
+Did you mean? agree
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_230836.md b/exception_reports/exception_report_20240720_230836.md
new file mode 100644
index 0000000..f2ff43a
--- /dev/null
+++ b/exception_reports/exception_report_20240720_230836.md
@@ -0,0 +1,65 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots CLI tool, specifically in the `workflows` method of the `CLI` class. The error message "undefined method `green' for nil:NilClass" indicates that the code is attempting to call the `green` method on an object that is `nil`.
+
+## Technical Details
+The relevant code snippet from `cli.rb` is as follows:
+
+```ruby
+say @pastel.green("Workflow completed successfully")
+```
+
+In this line, `@pastel` is `nil`, and therefore the `green` method cannot be called on it. This results in the "undefined method `green' for nil:NilClass" error.
+
+To resolve this issue, you should ensure that `@pastel` is initialized correctly before attempting to call the `green` method on it. You may need to check the value of `@pastel` before calling the `green` method to ensure it is not `nil`.
+
+## Additional Information
+The error occurred during the execution of the `workflows` method, which is defined as follows:
+
+```ruby
+def workflows
+ workflows = Workflows.new
+
+ selected_workflow = workflows.list_and_select
+
+ if selected_workflow
+ begin
+ workflows.run(selected_workflow)
+ say @pastel.green("Workflow completed successfully")
+ rescue FileNotFoundError => e
+ say @pastel.red(e.message)
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+end
+```
+
+The backtrace and relevant files provide additional context for the error and can be referenced for further investigation.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `green' for nil:NilClass
+
+ say @pastel.green("Workflow completed successfully")
+ ^^^^^^
+Did you mean? agree
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240720_232832.md b/exception_reports/exception_report_20240720_232832.md
new file mode 100644
index 0000000..7932ac8
--- /dev/null
+++ b/exception_reports/exception_report_20240720_232832.md
@@ -0,0 +1,54 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred due to an attempt to call a method on an object that has not been defined.
+
+## Technical Details
+The specific error message, "undefined method `green' for nil:NilClass", indicates that the code attempted to call the `green` method on an object that was `nil` (null).
+
+This issue can occur when a method is called on an object that is `nil`, or when attempting to access a property or method of an object using the `[]` notation, and the object is `nil`.
+
+To resolve this issue, ensure that the object is not `nil` before calling the method or accessing its properties/methods. You can use conditional statements or error handling mechanisms to check for the presence of the object before performing any operations on it.
+
+## Relevant Code Snippet
+```ruby
+say @pastel.green("Workflow completed successfully")
+```
+
+In the above code, `@pastel` is `nil`, leading to the error.
+
+## Backtrace
+- `/home/b08x/Workspace/flowbots/lib/cli.rb:28:in 'workflows'`
+- `/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in 'run'`
+- `/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in 'invoke_command'`
+- `/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in 'dispatch'`
+- `/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in 'block in start'`
+- `/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in 'handle_help_switches'`
+- `/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in 'start'`
+- `./exe/flowbots:16:in ''`
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `green' for nil:NilClass
+
+ say @pastel.green("Workflow completed successfully")
+ ^^^^^^
+Did you mean? agree
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:28:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:16:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_013422.md b/exception_reports/exception_report_20240727_013422.md
new file mode 100644
index 0000000..175c8d5
--- /dev/null
+++ b/exception_reports/exception_report_20240727_013422.md
@@ -0,0 +1,230 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+# Error Report: "Failed to Load Treetop Grammar File"
+
+## Summary:
+An error has occurred during the execution of the "PreprocessTextFileTask" class, resulting in the failure to load the Treetop grammar file. This issue has disrupted the normal functioning of the program.
+
+## Technical Details:
+
+### Backtrace:
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:25:in `rescue in load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:19:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+### Relevant Files:
+
+#### GrammarProcessor.rb:
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require "treetop"
+
+module Flowbots
+ class GrammarProcessor
+ def initialize(grammar_name)
+ @grammar_name = grammar_name
+ load_grammar
+ end
+
+ def parse(text)
+ @parser.parse(text)
+ end
+
+ private
+
+ def load_grammar
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ parser_class_name = "#{@grammar_name.camelize}Parser"
+ @parser = Object.const_get(parser_class_name).new
+ end
+ end
+end
+```
+
+#### preprocess_text_file_task.rb:
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+class PreprocessTextFileTask < Jongleur::WorkerTask
+
+ def execute
+ logger.info "Starting PreprocessTextFileTask"
+
+ textfile = retrieve_current_textfile
+ begin
+ grammar_processor = Flowbots::GrammarProcessor.new('markdown_text_yaml')
+ parse_tree = grammar_processor.parse(textfile.content)
+ rescue StandardError => e
+ Flowbots::UI.exception "#{e.message}"
+ exit
+ end
+
+
+
+
+ if parse_tree
+ content = parse_tree.markdown_content.text_value
+ metadata = extract_metadata(parse_tree.yaml_front_matter)
+ store_preprocessed_data(content, metadata)
+ logger.info "Successfully preprocessed file with custom grammar"
+ else
+ logger.error "Failed to parse the document with custom grammar"
+ store_preprocessed_data(textfile.content, {})
+ end
+
+ logger.info "PreprocessTextFileTask completed"
+ end
+
+ ...
+end
+```
+
+#### WorkflowOrchestrator.rb:
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require_relative "WorkflowAgent"
+
+class WorkflowOrchestrator
+ CARTRIDGE_BASE_DIR = File.expand_path("../../nano-bots/cartridges", __dir__)
+
+ def initialize
+ @agents = {}
+ logger = Logger.new(STDOUT)
+ logger.level = Logger::DEBUG
+ end
+
+ ...
+end
+```
+
+#### topic_model_trainer_workflow.rb:
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class TopicModelTrainerWorkflow
+ BATCH_SIZE = 10
+
+ attr_accessor :orchestrator
+ attr_reader :input_folder_path
+
+ def initialize(input_folder_path=nil)
+ @input_folder_path = input_folder_path || prompt_for_folder
+ @orchestrator = WorkflowOrchestrator.new
+ end
+
+ def run
+ Flowbots::UI.say(:ok, "Setting Up Topic Model Trainer Workflow")
+ logger.info "Setting Up Topic Model Trainer Workflow"
+
+ begin
+ setup_workflow
+ flush_redis_cache
+ process_files
+ Flowbots::UI.say(:ok, "Topic Model Trainer Workflow completed")
+ logger.info "Topic Model Trainer Workflow completed"
+ rescue StandardError => e
+ Flowbots::UI.say(:error, "Error in Topic Model Trainer Workflow: #{e.message}")
+ logger.error "Error in Topic Model Trainer Workflow: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ end
+ end
+
+ ...
+end
+```
+
+#### cli.rb:
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ ...
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** PreprocessTextFileTask
+- **Message:** Failed to load treetop grammar file
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:25:in `rescue in load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:19:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_013631.md b/exception_reports/exception_report_20240727_013631.md
new file mode 100644
index 0000000..03d8aa0
--- /dev/null
+++ b/exception_reports/exception_report_20240727_013631.md
@@ -0,0 +1,80 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Summary:
+
+An error occurred during the execution of the "Flowbots" application, specifically in the "GrammarProcessor" class. The error message indicates that there is an undefined method 'camelize' for the string "markdown_text_yaml". This suggests that the code is attempting to call the "camelize" method on a string object, which is not a valid operation.
+
+## Technical Details:
+
+### Backtrace:
+
+The backtrace provides information about the sequence of method calls that led to the error:
+
+- The error occurred in the "load_grammar" method of the "GrammarProcessor" class, defined in "GrammarProcessor.rb" at line 22.
+- The "load_grammar" method was called during the initialization of the "GrammarProcessor" class in "GrammarProcessor.rb" at line 10.
+- The "GrammarProcessor" class was instantiated in "preprocess_text_file_task.rb" at line 11.
+- The "preprocess_text_file_task.rb" script was being executed, and the error occurred within the "execute" method at line 11.
+- The subsequent lines in the backtrace indicate the flow of execution through various framework and library code, including "Jongleur::Implementation", "Jongleur::API", "WorkflowOrchestrator", "TopicModelTrainerWorkflow", and finally "cli.rb".
+
+### Relevant Files:
+
+- **GrammarProcessor.rb:** This file defines the "Flowbots::GrammarProcessor" class, which is responsible for processing a custom grammar. The error occurred within the "load_grammar" method, specifically when attempting to convert the string "markdown_text_yaml" to camel case using the "camelize" method.
+- **preprocess_text_file_task.rb:** This file contains the "PreprocessTextFileTask" class, which appears to be a worker task for preprocessing text files. It instantiates the "GrammarProcessor" class with the argument 'markdown_text_yaml'.
+- **WorkflowOrchestrator.rb:** This file defines a class for orchestrating workflows and includes methods for adding agents, defining workflows, and executing them.
+- **topic_model_trainer_workflow.rb:** This file contains the "Flowbots::TopicModelTrainerWorkflow" class, which sets up and runs a topic model training workflow. It includes methods for processing files, batch processing, and training the topic model.
+- **cli.rb:** This file defines a command-line interface (CLI) for the "Flowbots" application, providing various commands such as "workflows", "train_topic_model", and "process_text".
+- **thor_ext.rb:** This file contains extensions for the "Thor" framework, providing enhanced CLI behavior such as handling help switches, unknown options, and error messages.
+
+## Suggested Action Items:
+
+- Review the "GrammarProcessor.rb" file and ensure that the "camelize" method is defined appropriately for the specific framework or library in use.
+- Consider checking the type of the "@grammar_name" variable before attempting to call "camelize" on it, to ensure it is compatible with the expected input for the "camelize" method.
+- Examine the relevant code sections in the "preprocess_text_file_task.rb" and "GrammarProcessor.rb" files to identify any discrepancies or incorrect assumptions about the data being processed.
+- Verify that the "markdown_text_yaml" string is being generated or provided as expected, and that it is intended to be converted to camel case in this context.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** undefined method `camelize' for "markdown_text_yaml":String
+
+ parser_class_name = "#{@grammar_name.camelize}Parser"
+ ^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:22:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_014142.md b/exception_reports/exception_report_20240727_014142.md
new file mode 100644
index 0000000..2fb2fbe
--- /dev/null
+++ b/exception_reports/exception_report_20240727_014142.md
@@ -0,0 +1,524 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots application, causing an interruption in the workflow execution.
+
+## Technical Details
+
+**Error Message:**
+> uninitialized constant MarkdownTextYamlParser
+
+**Backtrace:**
+- /home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:23:in `load_grammar'
+- /home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+- /home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+- /home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+- /homeMultiplier: 79:in `block in process_files'
+- /home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+- /home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+- /home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+- /home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+- /home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+- /home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+- /home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+- /home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+- ./exe/flowbots:23:in `'
+
+## Relevant Files:
+
+**GrammarProcessor.rb:**
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require "treetop"
+
+module Flowbots
+ class GrammarProcessor
+ def initialize(grammar_name)
+ @grammar_name = grammar_name
+ load_grammar
+ end
+
+ def parse(text)
+ @parser.parse(text)
+ end
+
+ private
+
+ def load_grammar
+ begin
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ parser_class_name = "#{camelize(@grammar_name)}Parser"
+ @parser = Object.const_get(parser_class_name).new
+ rescue StandardError => e
+ Flowbots::ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+
+ def camelize(string)
+ string.split('_').map(&:capitalize).join
+ end
+ end
+end
+```
+
+**preprocess_text_file_task.rb:**
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+class PreprocessTextFileTask < Jongleur::WorkerTask
+
+ def execute
+ logger.info "Starting PreprocessTextFileTask"
+
+ textfile = retrieve_current_textfile
+ begin
+ grammar_processor = Flowbots::GrammarProcessor.new('markdown_text_yaml')
+ parse_tree = grammar_processor.parse(textfile.content)
+ rescue StandardError => e
+ Flowbots::UI.exception("#{e.message}")
+ exit
+ end
+
+
+
+
+ if parse_tree
+ content = parse_tree.markdown_content.text_value
+ metadata = extract_metadata(parse_tree.yaml_front_matter)
+ store_preprocessed_data(content, metadata)
+ logger.info "Successfully preprocessed file with custom grammar"
+ else
+ logger.error "Failed to parse the document with custom grammar"
+ store_preprocessed_data(textfile.content, {})
+ end
+
+ logger.info "PreprocessTextFileTask completed"
+ end
+
+ private
+
+ def retrieve_current_textfile
+ textfile_id = Jongleur::WorkerTask.class_variable_get(:@@redis).get("current_textfile_id")
+ Textfile[textfile_id]
+ end
+
+ def extract_metadata(yaml_front_matter)
+ return {} unless yaml_front_matter
+
+ yaml_content = yaml_front_matter.text_value.gsub(/^---\n/, '').gsub(/---\n$/, '')
+ YAML.safe_load(yaml_content)
+ rescue StandardError => e
+ logger.error "Error parsing YAML front matter: #{e.message}"
+ {}
+ end
+
+ def store_preprocessed_data(content, metadata)
+ redis = Jongleur::WorkerTask.class_variable_get(:@@redis)
+ redis.set("preprocessed_content", content)
+ redis.set("file_metadata", metadata.to_json)
+ end
+end
+```
+
+**WorkflowOrchestrator.rb:**
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require_relative "WorkflowAgent"
+
+class WorkflowOrchestrator
+ CARTRIDGE_BASE_DIR = File.expand_path("../../nano-bots/cartridges", __dir__)
+
+ def initialize
+ @agents = {}
+ logger = Logger.new(STDOUT)
+ logger.level = Logger::DEBUG
+ end
+
+ def add_agent(role, cartridge_file, author: "@b08x")
+ logger.debug "Adding agent: #{role}"
+ cartridge_path = File.join(CARTRIDGE_BASE_DIR, author, "cartridges", cartridge_file)
+
+ unless File.exist?(cartridge_path)
+ logger.error "Cartridge file not found: \"#{cartridge_path}\""
+ raise "Cartridge file not found: \"#{cartridge_path}\""
+ end
+
+ @agents[role] = WorkflowAgent.new(role, cartridge_path)
+ logger.debug "Agent added: #{role}"
+ end
+
+ def define_workflow(workflow_definition)
+ logger.debug "Defining workflow"
+ logger.debug "Workflow definition: #{workflow_definition}"
+ Jongleur::API.add_task_graph(workflow_definition)
+ logger.debug "Workflow defined"
+ end
+
+ def run_workflow
+ logger.info "Starting workflow execution"
+ @running = true
+
+ begin
+ logger.debug "Printing graph to /tmp"
+ Jongleur::API.print_graph("/tmp")
+
+ Flowbots::UI.info "Starting Jongleur::API.run"
+ Jongleur::API.run do |on|
+ on.start do |task|
+ ui.framed do
+ ui.puts "Starting task: #{task}"
+ end
+ end
+
+ on.finish do |task|
+ ui.framed do
+ ui.puts "Finished task: #{task}"
+ end
+ ui.space
+ end
+
+ on.error do |task, error|
+ logger.error "Error in task #{task}: #{error.message}"
+ logger.error error.backtrace.join("\n")
+ end
+
+ on.completed do |task_matrix|
+ ui.framed do
+ ui.puts "Workflow completed"
+ ui.space
+ ui.puts "Task matrix: #{task_matrix}"
+ end
+ @running = false
+ end
+ end
+ rescue Interrupt
+ logger.info "Workflow interrupted"
+ Flowbots::UI.say(:warn, "Workflow interrupted. Cleaning up...")
+ cleanup
+ rescue StandardError => e
+ logger.error "Error during workflow execution: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ cleanup
+ raise
+ end
+ end
+
+ def cleanup
+ # Perform any necessary cleanup for the workflow
+ Jongleur::API.stop_all_tasks
+ # Add any other cleanup operations here
+ end
+
+end
+```
+
+**topic_model_trainer_workflow.rb:**
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class TopicModelTrainerWorkflow
+ BATCH_SIZE = 10
+
+ attr_accessor :orchestrator
+ attr_reader :input_folder_path
+
+ def initialize(input_folder_path=nil)
+ @input_folder_path = input_folder_path || prompt_for_folder
+ @orchestrator = WorkflowOrchestrator.new
+ end
+
+ def run
+ Flowbots::UI.say(:ok, "Setting Up Topic Model Trainer Workflow")
+ logger.info "Setting Up Topic Model Trainer Workflow"
+
+ begin
+ setup_workflow
+ flush_redis_cache
+ process_files
+ Flowbots::UI.say(:ok, "Topic Model Trainer Workflow completed")
+ logger.info "Topic Model Trainer Workflow completed"
+ rescue StandardError => e
+ Flowbots::UI.say(:error, "Error in Topic Model Trainer Workflow: #{e.message}")
+ logger.error "Error in Topic Model Trainer Workflow: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ end
+ end
+
+ private
+
+ def prompt_for_folder
+ get_folder_path = `gum file --directory`.chomp.strip
+ folder_path = File.join(get_folder_path)
+
+ unless File.directory?(folder_path)
+ raise FlowbotError.new('Folder not found', 'FOLDERNOTFOUND')
+ end
+
+ folder_path
+ end
+
+ def setup_workflow
+ workflow_graph = {
+ LoadTextFilesTask: [:PreprocessTextFileTask],
+ PreprocessTextFileTask: [:TextSegmentTask],
+ TextSegmentTask: [:TokenizeSegmentsTask],
+ TokenizeSegmentsTask: [:NlpAnalysisTask],
+ NlpAnalysisTask: [:FilterSegmentsTask],
+ FilterSegmentsTask: [:AccumulateFilteredSegmentsTask],
+ AccumulateFilteredSegmentsTask: []
+ }
+
+ @orchestrator.define_workflow(workflow_graph)
+ logger.debug "Workflow setup completed"
+ end
+
+ def flush_redis_cache
+ redis = Jongleur::WorkerTask.class_variable_get(:@@redis)
+ redis.flushdb
+ logger.».join("\n")
+ cleanup
+ raise
+ end
+
+ def process_files
+ all_file_paths = Dir.glob(File.join(@input_folder_path, "**{,/*/**}/*.{md,markdown}")).sort
+ total_files = all_file_paths.count
+ num_batches = (total_files.to_f / BATCH_SIZE).ceil
+
+ num_batches.times do |i|
+ batch_start = i * BATCH_SIZE
+ batch_files = all_file_paths[batch_start, BATCH_SIZE]
+
+ Flowbots::UI.say(:ok, "Processing batch #{i + 1} of #{num_batches}")
+ logger.info "Processing batch #{i + 1} of #{num_batches}"
+
+ process_batch(batch_files)
+ end
+
+ train_topic_model
+ end
+
+ def process_batch(batch_files)
+ batch_files.each do |file_path|
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("current_file_path", file_path)
+ @orchestrator.run_workflow
+ end
+ end
+
+ def train_topic_model
+ all_filtered_segments = JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("all_filtered_segments") || "[]")
+
+ if all_filtered_segments.empty?
+ logger.warn "No filtered segments available for topic modeling"
+ Flowbots::UI.say(:warn, "No filtered segments available for topic modeling")
+ return
+ end
+
+ cleaned_segments = clean_segments_for_modeling(all_filtered_segments)
+
+ if cleaned_segments.empty?
+ logger.warn "No cleaned segments available for topic modeling after filtering"
+ Flowbots::UI.say(:warn, "No cleaned segments available for topic modeling after filtering")
+ return
+ end
+
+ logger.info "Cleaned segments for topic modeling. Original count: #{all_filtered_segments.length}, Cleaned count: #{cleaned_segments.length}"
+
+ topic_processor = Flowbots::TopicModelProcessor.instance
+ topic_processor.train_model(cleaned_segments)
+ logger.info "Topic model training completed for all files"
+ Flowbots::UI.say(:ok, "Topic model training completed for all files")
+ end
+
+ private
+
+ def clean_segments_for_modeling(segments)
+ segments.reject do |segment|
+ segment.include?("tags") || segment.include?("title") || segment.include?("toc")
+ end.map do |segment|
+ segment.reject do |word|
+ word.to_s.length < 3 || # Remove very short words
+ word.to_s.match?(/^\d+$/) || # Remove purely numeric words
+ word.to_s.match?(/^[[:punct:]]+$/) # Remove punctuation-only words
+ end
+ end.reject(&:empty?)
+ end
+ end
+end
+```
+
+**cli.rb:**
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ def self.exit_on_failure?
+ true
+ end
+
+ map %w[-v --version] => "version"
+
+ desc "version", "Display flowbots version", hide: true
+ def version
+ say "flowbots/#{VERSION} #{RUBY_DESCRIPTION}"
+ end
+
+ desc "workflows", "List and select a workflow to run"
+ def workflows
+ pastel = Pastel.new
+
+ workflows = Workflows.new
+
+ selected_workflow = workflows.list_and_select
+
+ if selected_workflow
+ begin
+ workflows.run(selected_workflow)
+ say pastel.green("Workflow completed successfully")
+ rescue Interrupt
+ say pastel.yellow("Workflow interrupted by user")
+ rescue FileNotFoundError => e
+ say pastel.red(e.message)
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ ensure
+ Flowbots.shutdown
+ end
+ end
+ end
+
+ desc "train_topic_model FOLDER", "Train a topic model using text files in the specified folder"
+ def train_topic_model(folder)
+ pastel = Pastel.new
+
+ unless Dir.exist?(folder)
+ say pastel.red("Folder not found: #{folder}")
+ exit
+ end
+
+ say pastel.green("Training topic model using files in: #{folder}")
+
+ begin
+ workflow = TopicModelTrainerWorkflow.new(folder)
+ workflow.run
+ say pastel.green("Topic model training completed successfully")
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+
+ desc "process_text FILE", "Process a text file using the text processing workflow"
+ def process_text(file)
+ pastel = Pastel.new
+
+ unless File.exist?(file)
+ say pastel.red("File not found: #{file}")
+ exit
+ end
+
+ say pastel.green("Processing file: #{file}")
+
+ begin
+ workflow = TextProcessingWorkflow.new(file)
+ workflow.run
+ say pastel.green("Text processing completed successfully")
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+end
+```
+
+**command.rb:**
+```ruby
+module Sublayer
+ module Actions
+ class RunTestCommandAction < Base
+ def initialize(test_command:)
+ @test_command = test_command
+ end
+
+ def call
+ stdout, stderr, status = Open3.capture3(@test_command)
+ [stdout, stderr, status]
+ end
+ end
+ end
+end
+```
+
+**thor_ext.rb:**
+```ruby
+module Flowbots
+ module ThorExt
+ # Configures Thor to behave more like a typical CLI, with better help and error handling.
+ #
+ # - Passing -h or --help to a command will show help for that command.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** uninitialized constant MarkdownTextYamlParser
+
+ @parser = Object.const_get(parser_class_name).new
+ ^^^^^^^^^^
+Did you mean? MarkdownWithYamlParser
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:23:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_014616.md b/exception_reports/exception_report_20240727_014616.md
new file mode 100644
index 0000000..fb9689e
--- /dev/null
+++ b/exception_reports/exception_report_20240727_014616.md
@@ -0,0 +1,120 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The Flowbots application has encountered an error due to an undefined local variable or method `grammar_file' in the GrammarProcessor class. This issue has caused the program to terminate unexpectedly.
+
+## Technical Details
+The error occurred during the execution of the `load_grammar` method within the GrammarProcessor class. This method is responsible for loading the grammar file specified by the `@grammar_name` instance variable. However, when attempting to access the `grammar_file` variable, the system could not find it, resulting in the error message "undefined local variable or method `grammar_file'".
+
+To resolve this issue, it is recommended to review the GrammarProcessor class and ensure that the `grammar_file` variable is properly defined and accessible within the `load_grammar` method. Additionally, it is important to verify that the grammar file exists and is accessible by the application.
+
+## Relevant Code Snippets
+**GrammarProcessor.rb**
+```ruby
+module Flowbots
+ class GrammarProcessor
+ def initialize(grammar_name)
+ @grammar_name = grammar_name
+ load_grammar
+ end
+
+ # ...
+
+ private
+
+ def load_grammar
+ begin
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ parser_class_name = "#{camelize(@grammar_name)}Parser"
+ @parser = Object.const_get(parser_class_name).new
+ rescue StandardError => e
+ Flowbots::ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+
+ # ...
+ end
+end
+```
+
+**preprocess_text_file_task.rb**
+```ruby
+class PreprocessTextFileTask < Jongleur::WorkerTask
+
+ def execute
+ logger.info "Starting PreprocessTextFileTask"
+
+ textfile = retrieve_current_textfile
+ begin
+ grammar_processor = Flowbots::GrammarProcessor.new('markdown_text_yaml')
+ parse_tree = grammar_processor.parse(textfile.content)
+ rescue StandardError => e
+ Flowbots::UI.exception("#{e.message}")
+ exit
+ end
+
+ # ...
+
+ private
+
+ def retrieve_current_textfile
+ # ...
+ end
+
+ def extract_metadata(yaml_front_matter)
+ # ...
+ end
+
+ def store_preprocessed_data(content, metadata)
+ # ...
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** undefined local variable or method `grammar_file' for #, @formatter=nil, @logdev=#, @binmode=false, @mon_data=#, @mon_data_owner_object_id=1620>, @level_override={}>>
+
+ logger.debug "Loading grammar file: #{grammar_file}"
+ ^^^^^^^^^^^^
+Did you mean? @grammar_name
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:22:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_014728.md b/exception_reports/exception_report_20240727_014728.md
new file mode 100644
index 0000000..541e40d
--- /dev/null
+++ b/exception_reports/exception_report_20240727_014728.md
@@ -0,0 +1,143 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The system encountered an error when attempting to locate the specified parser class.
+
+## Technical Details
+
+```
+Class: Flowbots::GrammarProcessor
+Message: Unable to find parser class: MarkdownTextYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+```
+
+The backtrace indicates that the error occurred during the initialization of the `GrammarProcessor` class within the `Flowbots` module. Specifically, the `load_grammar` method was unable to locate the `MarkdownTextYamlParser` class.
+
+## Relevant Files
+
+### `GrammarProcessor.rb`:
+
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require "treetop"
+
+module Flowbots
+ class GrammarProcessor
+ def initialize(grammar_name)
+ @grammar_name = grammar_name
+ load_grammar
+ end
+
+ def parse(text)
+ @parser.parse(text)
+ end
+
+ private
+
+ def load_grammar
+ begin
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ parser_class_name = "#{camelize(@grammar_name)}Parser"
+ @parser = Object.const_get(parser_class_name).new
+ rescue StandardError => e
+ Flowbots::ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+
+ def camelize(string)
+ string.split('_').map(&:capitalize).join
+ end
+ end
+end
+```
+
+### `preprocess_text_file_task.rb`:
+
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+class PreprocessTextFileTask < Jongleur::WorkerTask
+
+ def execute
+ logger.info "Starting PreprocessTextFileTask"
+
+ textfile = retrieve_current_textfile
+ begin
+ grammar_processor = Flowbots::GrammarProcessor.new('markdown_text_yaml')
+ parse_tree = grammar_processor.parse(textfile.content)
+ rescue StandardError => e
+ Flowbots::UI.exception("#{e.message}")
+ exit
+ end
+
+
+
+
+ if parse_tree
+ content = parse_tree.markdown_content.text_value
+ metadata = extract_metadata(parse_tree.yaml_front_matter)
+ store_preprocessed_data(content, metadata)
+ logger.info "Successfully preprocessed file with custom grammar"
+ else
+ logger.error "Failed to parse the document with custom grammar"
+ store_preprocessed_data(textfile.content, {})
+ end
+
+ logger.info "PreprocessTextFileTask completed"
+ end
+
+ # ... [remaining code omitted for brevity] ...
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownTextYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:36:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_015016.md b/exception_reports/exception_report_20240727_015016.md
new file mode 100644
index 0000000..dae45b7
--- /dev/null
+++ b/exception_reports/exception_report_20240727_015016.md
@@ -0,0 +1,61 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The system encountered an error when attempting to load the specified parser class.
+
+## Technical Details
+The error message indicates that the parser class "MarkdownTextYamlParser" could not be found. This suggests that the class definition for "MarkdownTextYamlParser" is either missing or inaccessible in the current context.
+
+## Suggested Action
+- Review the code to ensure that the "MarkdownTextYamlParser" class is defined correctly and is accessible in the relevant module or package.
+- Verify that the class name is spelled correctly and matches the name used in the code.
+- Check if there are any import statements or dependencies required for the class to be accessible.
+
+Once the necessary corrections have been made, re-run the code to verify that the issue has been resolved.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownTextYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:36:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_015143.md b/exception_reports/exception_report_20240727_015143.md
new file mode 100644
index 0000000..fab3a7e
--- /dev/null
+++ b/exception_reports/exception_report_20240727_015143.md
@@ -0,0 +1,90 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+
+An error occurred during the execution of the Flowbots application, specifically in the `GrammarProcessor` class. The issue is related to the inability to find the specified parser class, resulting in a `NameError`.
+
+## Error Details
+
+### Class and Message
+
+- Class: `Flowbots::GrammarProcessor`
+- Message: "Unable to find parser class: `MarkdownTextYamlParser`".
+
+### Backtrace
+
+The backtrace provides information about the sequence of method calls leading up to the error:
+
+- `GrammarProcessor.rb:36:in `load_grammar''`: The error occurred within the `load_grammar` method of the `GrammarProcessor` class, specifically at line 36.
+- `GrammarProcessor.rb:10:in `initialize'`: The `initialize` method of the `GrammarProcessor` class was being called when the error occurred.
+- `preprocess_text_file_task.rb:11:in `new'`: The error occurred when attempting to create a new instance of the `GrammarProcessor` class in the `preprocess_text_file_task.rb` file, at line 11.
+- `preprocess_text_file_task.rb:11:in `execute'`: The error occurred within the `execute` method of the `PreprocessTextFileTask` class, at line 11.
+- Subsequent lines in the backtrace indicate the continuation of method calls leading up to the error, involving the Jongleur library and the WorkflowOrchestrator.
+
+## Relevant Files
+
+### GrammarProcessor.rb
+
+This file contains the definition of the `GrammarProcessor` class, which is responsible for loading a grammar and parsing text based on that grammar. The error occurred within the `load_grammar` method, where it attempts to load a Treetop grammar file and instantiate a parser class.
+
+### preprocess_text_file_task.rb
+
+This file defines the `PreprocessTextFileTask` class, which utilizes the `GrammarProcessor` to parse text files. The error occurred when creating an instance of `GrammarProcessor` with the argument `'markdown_text_yaml'`.
+
+### WorkflowOrchestrator.rb, topic_model_trainer_workflow.rb, cli.rb, thor_ext.rb`:
+
+These files are also relevant to the workflow execution and error context but do not contain the direct source of the error. They provide additional information about the Flowbots application and its functionality.
+
+## Suggested Action Items
+
+1. Review the `GrammarProcessor` class and ensure that the specified parser class (`MarkdownTextYamlParser`) is defined correctly and located in the expected file path.
+2. Verify that the necessary Treetop grammar file exists and is accessible by the application.
+3. Examine the backtrace to identify any potential issues or unexpected behavior within the method calls leading up to the error.
+4. Consider implementing additional error handling or logging mechanisms to capture and diagnose similar issues more effectively in the future.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownTextYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:36:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_015651.md b/exception_reports/exception_report_20240727_015651.md
new file mode 100644
index 0000000..34bb3fb
--- /dev/null
+++ b/exception_reports/exception_report_20240727_015651.md
@@ -0,0 +1,82 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Summary:
+
+The Flowbots application encountered an error during the preprocessing of a text file. The specific issue is the inability to locate the required parser class, resulting in a "NameError" exception being raised. This error occurred within the "GrammarProcessor" class of the Flowbots module.
+
+## Technical Details:
+
+### Backtrace:
+
+The backtrace provides insights into the sequence of method calls leading up to the error:
+
+- The error originated in the "load_grammar" method of the "GrammarProcessor" class, where the Treetop grammar file is loaded and the parser class is instantiated.
+- The "initialize" method of "GrammarProcessor" invokes "load_grammar" during object initialization.
+- The "execute" method of "PreprocessTextFileTask" creates an instance of "Flowbots::GrammarProcessor" with the argument 'markdown_text_yaml'.
+- The error is then propagated through various methods and classes, eventually reaching the "run_workflow" method of "WorkflowOrchestrator".
+- The "run_workflow" method in "WorkflowOrchestrator" initiates the workflow execution and handles any errors that occur during the process.
+
+### Relevant Files:
+
+- **GrammarProcessor.rb:** This file defines the "GrammarProcessor" class, which is responsible for loading and utilizing a Treetop grammar. The error occurred within the "load_grammar" method, specifically when attempting to access the "MarkdownTextYamlParser" class.
+- **preprocess_text_file_task.rb:** This file contains the "PreprocessTextFileTask" class, which uses the "GrammarProcessor" to parse the content of a text file. The error occurred when creating an instance of "GrammarProcessor".
+- **WorkflowOrchestrator.rb:** This file defines the "WorkflowOrchestrator" class, which manages the execution of workflows. The error was eventually handled within the "run_workflow" method of this class.
+- **topic_model_trainer_workflow.rb:** This file contains the "TopicModelTrainerWorkflow" class, which sets up and runs a specific workflow. The error occurred during the execution of this workflow.
+- **cli.rb:** This file defines the command-line interface (CLI) for the Flowbots application, including the "train_topic_model" command, which triggers the workflow.
+- **thor_ext.rb:** This file provides extensions for the Thor CLI framework, adding custom error handling and help message functionality.
+
+### Suggested Action Items:
+
+1. Verify the existence of the "MarkdownTextYamlParser" class: Ensure that the required parser class is defined within the Treetop grammar file and is accessible to the "GrammarProcessor".
+2. Review the "load_grammar" method: Examine the logic within the "load_grammar" method to ensure it correctly loads the Treetop grammar and instantiates the appropriate parser class.
+3. Consider error handling improvements: Evaluate the error handling mechanisms in the "GrammarProcessor" and surrounding code to ensure that errors are properly caught, logged, and communicated to the user.
+4. Test the Treetop grammar file: Validate that the Treetop grammar file is correctly structured and located in the expected directory.
+
+By addressing these action items, the team can identify and resolve the issue related to the missing parser class, ensuring the smooth operation of the text preprocessing functionality in the Flowbots application.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownTextYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:36:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_015940.md b/exception_reports/exception_report_20240727_015940.md
new file mode 100644
index 0000000..2b0041e
--- /dev/null
+++ b/exception_reports/exception_report_20240727_015940.md
@@ -0,0 +1,46 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots CLI due to an uninitialized constant.
+
+## Technical Details
+The error message indicates that the constant "Flowbots::CLI::TopicModelTrainerWorkflowtest" is not defined. The backtrace shows that the error occurred in the "train_topic_model" method of the "Flowbots::CLI" class, specifically on the line where the "TopicModelTrainerWorkflowtest" class is instantiated.
+
+## Possible Cause
+The likely cause of this error is that the class "TopicModelTrainerWorkflowtest" has not been defined or imported correctly.
+
+## Suggested Action
+To resolve this issue, ensure that the "TopicModelTrainerWorkflowtest" class is defined and imported correctly in the relevant files. Review the "cli.rb", "command.rb", and "thor_ext.rb" files for any missing or incorrect imports or definitions.
+
+## Additional Information
+The provided code snippets show that the "TopicModelTrainerWorkflow" class is defined and appears to be correctly imported. However, the error suggests that the class name may have been misspelled or incorrectly referenced as "TopicModelTrainerWorkflowtest".
+
+## Similar Issues
+- Uninitialized constant errors in RSpec and Ruby on Rails: https://stackoverflow.com/questions/52346892/rspec-factories-with-factorybot-uninitialized-constant-factorybot
+- Uninitialized constant errors in Flow: https://stackoverflow.com/questions/44447641/refining-uninitialized-variable-in-flow, https://github.com/facebook/flow/issues/4144, https://github.com/facebook/flow/issues/5205
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant Flowbots::CLI::TopicModelTrainerWorkflowtest
+
+ workflow = TopicModelTrainerWorkflowtest.new(folder)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Did you mean? Flowbots::TopicModelTrainerWorkflow
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/cli.rb:55:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_020003.md b/exception_reports/exception_report_20240727_020003.md
new file mode 100644
index 0000000..e378f8a
--- /dev/null
+++ b/exception_reports/exception_report_20240727_020003.md
@@ -0,0 +1,84 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+
+An error occurred during the execution of the "Flowbots" application, specifically within the "GrammarProcessor" class. The issue is due to an inability to locate the specified parser class, resulting in a "NameError".
+
+## Error Details:
+
+Class: Flowbots::GrammarProcessor
+Message: Unable to find parser class: MarkdownTextYamlParser
+
+## Backtrace:
+
+The backtrace provides a trace of method calls leading up to the error:
+
+- The error occurred within the "load_grammar" method of the "GrammarProcessor" class, where the Treetop parser is loaded and the parser class is instantiated.
+- This method is called during the initialization of the "GrammarProcessor" class in the "initialize" method.
+- The "GrammarProcessor" class is utilized in the "execute" method of the "PreprocessTextFileTask" class, where the "Flowbots::GrammarProcessor.new('markdown_text_yaml')" line triggers the error.
+- The "execute" method is invoked as part of the task execution in the "Jongleur::Implementation" module.
+- The task execution is managed by the "WorkflowOrchestrator" class, which adds agents, defines workflows, and initiates workflow runs.
+- The "run_workflow" method of the "WorkflowOrchestrator" class is responsible for starting the workflow execution and handling any errors or interruptions.
+- The "train_topic_model" method in the "CLI" class of the "Flowbots" module invokes the workflow for training a topic model, which eventually leads to the error.
+
+## Relevant Files:
+
+- "GrammarProcessor.rb": This file defines the "GrammarProcessor" class, which is responsible for loading the Treetop grammar and creating the parser.
+- "preprocess_text_file_task.rb": This file contains the "PreprocessTextFileTask" class, which utilizes the "GrammarProcessor" to parse text files.
+- "WorkflowOrchestrator.rb": This file defines the "WorkflowOrchestrator" class, which manages the workflow execution.
+- "cli.rb": This file includes the "CLI" class, providing command-line interface functionality for the application, including the "train_topic_model" method.
+- "thor_ext.rb": This file contains the "ThorExt::Start" module, which configures Thor for improved CLI behavior and error handling.
+
+## Suggested Action Items:
+
+- Review the "GrammarProcessor.rb" file to ensure the specified parser class ("MarkdownTextYamlParser") is defined correctly and located in the expected directory.
+- Verify that the "markdown_text_yaml" grammar file exists in the appropriate location and is properly formatted.
+- Check the "GRAMMAR_DIR" constant in the "GrammarProcessor.rb" file to ensure it points to the correct directory containing the grammar files.
+- Consider implementing additional error handling or logging within the "load_grammar" method to provide more detailed information about the specific cause of the error.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownTextYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:36:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_020236.md b/exception_reports/exception_report_20240727_020236.md
new file mode 100644
index 0000000..b0ac566
--- /dev/null
+++ b/exception_reports/exception_report_20240727_020236.md
@@ -0,0 +1,83 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary:
+
+An error occurred during the execution of the "Flowbots" application, specifically in the "GrammarProcessor" class. The error message indicates that the parser class "MarkdownTextYamlParser" could not be found. This issue prevented the successful preprocessing of text files and the extraction of metadata.
+
+## Technical Details:
+
+### Error Message:
+
+> Unable to find parser class: MarkdownTextYamlParser
+
+### Backtrace:
+
+The backtrace provides information about the sequence of method calls leading up to the error:
+
+- The error originated in the "load_grammar" method of the "GrammarProcessor" class, where the Treetop grammar file is loaded and the parser class is instantiated.
+- The "initialize" method of "GrammarProcessor" calls "load_grammar" during object initialization.
+- The "execute" method of the "PreprocessTextFileTask" class creates an instance of "GrammarProcessor" with the argument 'markdown_text_yaml'.
+- The error is then propagated through various framework and utility classes, eventually reaching the "run_workflow" method of the "WorkflowOrchestrator" class.
+- The "train_topic_model" method of the "CLI" class invokes the workflow, which ultimately triggers the error.
+
+### Relevant Files:
+
+- **GrammarProcessor.rb**: This file defines the "GrammarProcessor" class, which is responsible for loading Treetop grammars and creating parser objects. The error occurred within the "load_grammar" method of this class.
+- **preprocess_text_file_task.rb**: This file contains the "PreprocessTextFileTask" class, which utilizes the "GrammarProcessor" to preprocess text files. The error was caught in the "execute" method of this class.
+- **WorkflowOrchestrator.rb**: This file defines the "WorkflowOrchestrator" class, which manages the execution of workflows. The "run_workflow" method contains the error handling logic.
+- **cli.rb**: This file implements the command-line interface (CLI) for the "Flowbots" application. The "train_topic_model" method triggers the workflow execution and captures the error.
+- **thor_ext.rb**: This file provides extensions for the Thor framework, enhancing its behavior for CLI applications. It includes error handling and help message functionality.
+
+## Suggested Action Items:
+
+- Verify that the Treetop grammar file ("markdown_text_yaml.treetop") exists in the expected location.
+- Ensure that the class name "MarkdownTextYamlParser" matches the parser class defined in the Treetop grammar file.
+- Review the "load_grammar" method in "GrammarProcessor.rb" to ensure it properly handles the loading of the Treetop grammar and instantiation of the parser class.
+- Consider adding additional error handling or logging mechanisms to identify and resolve similar issues more efficiently in the future.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownTextYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:36:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_020459.md b/exception_reports/exception_report_20240727_020459.md
new file mode 100644
index 0000000..d2bc633
--- /dev/null
+++ b/exception_reports/exception_report_20240727_020459.md
@@ -0,0 +1,126 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+# Error Report: "No such file or directory @ rb_sysopen - markdown_text_yaml"
+
+## Summary:
+An error has occurred during the execution of the Flowbots application, specifically within the GrammarProcessor class. The error message indicates that the system could not find the specified file or directory, "markdown_text_yaml". This issue has caused the application to terminate abruptly.
+
+## Technical Details:
+### Backtrace:
+The error occurred within the `load_grammar` method of the `GrammarProcessor` class in the `GrammarProcessor.rb` file. The specific line of code is:
+```ruby
+Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+```
+Here, the `File.join` method is used to construct the file path by joining the `GRAMMAR_DIR` and the filename specified by `@grammar_name` with the ".treetop" extension. However, the resulting file path could not be found, leading to the error.
+
+The backtrace also reveals that the error propagated through multiple files and methods, including `preprocess_text_file_task.rb`, `WorkflowOrchestrator.rb`, `cli.rb`, and others.
+
+### Relevant Files:
+#### GrammarProcessor.rb:
+```ruby
+module Flowbots
+ class GrammarProcessor
+ def initialize(grammar_name)
+ @grammar_name = grammar_name
+ load_grammar
+ end
+
+ # ...
+
+ private
+
+ def load_grammar
+ begin
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ parser_class_name = "#{camelize(@grammar_name)}Parser"
+ @parser = Object.const_get(parser_class_name).new
+ rescue StandardError => e
+ Flowbots::ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+
+ # ...
+ end
+end
+```
+
+#### preprocess_text_file_task.rb:
+```ruby
+class PreprocessTextFileTask < Jongleur::WorkerTask
+ def execute
+ # ...
+
+ begin
+ grammar_processor = Flowbots::GrammarProcessor.new('markdown_text_yaml')
+ parse_tree = grammar_processor.parse(textfile.content)
+ rescue StandardError => e
+ Flowbots::UI.exception("#{e.message}")
+ exit
+ end
+ # ...
+ end
+
+ # ...
+end
+```
+
+#### WorkflowOrchestrator.rb:
+(No relevant code snippet found)
+
+#### cli.rb:
+(No relevant code snippet found)
+
+#### thor_ext.rb:
+(No relevant code snippet found)
+
+## Suggested Action Items:
+- Verify the existence of the "markdown_text_yaml" file and ensure that the file path specified by `GRAMMAR_DIR` in the `GrammarProcessor.rb` file is correct.
+- Review the code within the `load_grammar` method of the `GrammarProcessor` class to ensure that the file path construction is correct.
+- Consider adding error handling mechanisms to the affected files to gracefully handle cases where the specified file or directory cannot be found.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** No such file or directory @ rb_sysopen - markdown_text_yaml
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `open'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `load'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:23:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_020900.md b/exception_reports/exception_report_20240727_020900.md
new file mode 100644
index 0000000..3ea8bf4
--- /dev/null
+++ b/exception_reports/exception_report_20240727_020900.md
@@ -0,0 +1,115 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+# Error Report: "No such file or directory"
+
+## Summary
+The error "No such file or directory @ rb_sysopen - ../grammars/markdown_text_yaml" occurred during the execution of the Flowbots application. This indicates that the specified file could not be found in the given directory.
+
+## Technical Details
+
+### Backtrace
+The error occurred within the `GrammarProcessor` class in the `Flowbots` module. Specifically, it happened during the initialization of the `GrammarProcessor` object and the subsequent call to the `load_grammar` method.
+
+```ruby
+# /home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:23:in `load_grammar'
+# /home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+```
+
+### Relevant Files
+
+#### GrammarProcessor.rb
+The `GrammarProcessor` class is responsible for loading and processing a specific grammar file. The `load_grammar` method attempts to load the grammar file using `Treetop.load`, which compiles the grammar into a parser class.
+
+```ruby
+# /home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb
+
+module Flowbots
+ class GrammarProcessor
+ # ...
+
+ def load_grammar
+ begin
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ # ...
+ rescue StandardError => e
+ Flowbots::ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ # ...
+ end
+end
+```
+
+#### preprocess_text_file_task.rb
+The `preprocess_text_file_task.rb` file contains the `PreprocessTextFileTask` class, which executes the text preprocessing task. It creates an instance of the `GrammarProcessor` class with the argument `'markdown_text_yaml'`, indicating the expected grammar file.
+
+```ruby
+# /home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb
+
+class PreprocessTextFileTask < Jongleur::WorkerTask
+ # ...
+
+ def execute
+ # ...
+ grammar_processor = Flowbots::GrammarProcessor.new('markdown_text_yaml')
+ # ...
+ rescue StandardError => e
+ Flowbots::UI.exception("#{e.message}")
+ exit
+ end
+ # ...
+end
+```
+
+### Suggested Action Items:
+- Confirm the existence of the `markdown_text_yaml` file in the specified directory (`../grammars/`).
+- Ensure that the path to the grammar file is correctly specified and accessible by the application.
+- Consider using the `File.join` method to construct the file path to ensure proper path separation.
+- Review the `Treetop` documentation for additional guidance on loading and using grammar files.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** No such file or directory @ rb_sysopen - ../grammars/markdown_text_yaml
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `open'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `load'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:23:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_021209.md b/exception_reports/exception_report_20240727_021209.md
new file mode 100644
index 0000000..68fbdb0
--- /dev/null
+++ b/exception_reports/exception_report_20240727_021209.md
@@ -0,0 +1,290 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+# Error Report: "No such file or directory @ rb_sysopen - grammars/markdown_text_yaml"
+
+## Summary
+The error "No such file or directory @ rb_sysopen" indicates that the code attempted to access a file that does not exist in the specified directory. In this case, the file "grammars/markdown_text_yaml" could not be found.
+
+## Technical Details
+
+### Backtrace
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `open'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `load'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:23:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home月8x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+### Relevant Files
+
+#### GrammarProcessor.rb
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require "treetop"
+
+module Flowbots
+ class GrammarProcessor
+ def initialize(grammar_name)
+ @grammar_name = grammar_name
+ load_grammar
+ end
+
+ def parse(text)
+ @parser.parse(text)
+ end
+
+ private
+
+ def load_grammar
+ begin
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ parser_class_name = "#{camelize(@grammar_name)}Parser"
+ @parser = Object.const_get(parser_class_name).new
+ rescue StandardError => e
+ Flowbots::ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+
+ def camelize(string)
+ string.split('_').map(&:capitalize).join
+ end
+ end
+end
+```
+
+#### preprocess_text_file_task.rb
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+class PreprocessTextFileTask < Jongleur::WorkerTask
+
+ def execute
+ logger.info "Starting PreprocessTextFileTask"
+
+ textfile = retrieve_current_textfile
+ begin
+ grammar_processor = Flowbots::GrammarProcessor.new('markdown_text_yaml')
+ parse_tree = grammar_processor.parse(textfile.content)
+ rescue StandardError => e
+ Flowbots::UI.exception("#{e.message}")
+ exit
+ end
+
+
+
+
+ if parse_tree
+ content = parse_tree.markdown_content.text_value
+ metadata = extract_metadata(parse_tree.yaml_front_matter)
+ store_preprocessed_data(content, metadata)
+ logger.info "Successfully preprocessed file with custom grammar"
+ else
+ logger.error "Failed to parse the document with custom grammar"
+ store_preprocessed_data(textfile.content, {})
+ end
+
+ logger.info "PreprocessTextFileTask completed"
+ end
+
+ private
+
+ def retrieve_current_textfile
+ textfile_id = Jongleur::WorkerTask.class_variable_get(:@@redis).get("current_textfile_id")
+ Textfile[textfile_id]
+ end
+
+ def extract_metadata(yaml_front_matter)
+ return {} unless yaml_front_matter
+
+ yaml_content = yaml_front_matter.text_value.gsub(/^---\n/, '').gsub(/---\n$/, '')
+ YAML.safe_load(yaml_content)
+ rescue StandardError => e
+ logger.error "Error parsing YAML front matter: #{e.message}"
+ {}
+ end
+
+ def store_preprocessed_data(content, metadata)
+ redis = Jongleur::WorkerTask.class_variable_get(:@@redis)
+ redis.set("preprocessed_content", content)
+ redis.set("file_metadata", metadata.to_json)
+ end
+end
+```
+
+#### WorkflowOrchestrator.rb
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require_relative "WorkflowAgent"
+
+class WorkflowOrchestrator
+ CARTRIDGE_BASE_DIR = File.expand_path("../../nano-bots/cartridges", __dir__)
+
+ def initialize
+ @agents = {}
+ logger = Logger.new(STDOUT)
+ logger.level = Logger::DEBUG
+ end
+
+ def add_agent(role, cartridge_file, author: "@b08x")
+ logger.debug "Adding agent: #{role}"
+ cartridge_path = File.join(CARTRIDGE_BASE_DIR, author, "cartridges", cartridge_file)
+
+ unless File.exist?(cartridge_path)
+ logger.error "Cartridge file not found: \"#{cartridge_path}\""
+ raise "Cartridge file not found: \"#{cartridge_path}\""
+ end
+
+ @agents[role] = WorkflowAgent.new(role, cartridge_path)
+ logger.debug "Agent added: #{role}"
+ end
+
+ def define_workflow(workflow_definition)
+ logger.debug "Defining workflow"
+ logger.debug "Workflow definition: #{workflow_definition}"
+ Jongleur::API.add_task_graph(workflow_definition)
+ logger.debug "Workflow defined"
+ end
+
+ def run_workflow
+ logger.info "Starting workflow execution"
+ @running = true
+
+ begin
+ logger.debug "Printing graph to /tmp"
+ Jongleur::API.print_graph("/tmp")
+
+ Flowbots::UI.info "Starting Jongleur::API.run"
+ Jongleur::API.run do |on|
+ on.start do |task|
+ ui.framed do
+ ui.puts "Starting task: #{task}"
+ end
+ end
+
+ on.finish do |task|
+ ui.framed do
+ ui.puts "Finished task: #{task}"
+ end
+ ui.space
+ end
+
+ on.error do |task, error|
+ logger.error "Error in task #{task}: #{error.message}"
+ logger.error error.backtrace.join("\n")
+ end
+
+ on.completed do |task_matrix|
+ ui.framed do
+ ui.puts "Workflow completed"
+ ui.space
+ ui.puts "Task matrix: #{task_matrix}"
+ end
+ @running = false
+ end
+ end
+ rescue Interrupt
+ logger.info "Workflow interrupted"
+ Flowbots::UI.say(:warn, "Workflow interrupted. Cleaning up...")
+ cleanup
+ rescue StandardError => e
+ logger.error "Error during workflow execution: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ cleanup
+ raise
+ end
+ end
+
+ def cleanup
+ # Perform any necessary cleanup for the workflow
+ Jongleur::API.stop_all_tasks
+ # Add any other cleanup operations here
+ end
+
+end
+```
+
+## Recommendations
+- Check the file path and ensure that the "grammars/markdown_text_yaml" file exists in the specified directory.
+- Verify the file permissions to ensure that the code has the necessary access to read or write to the file.
+- Review the code to ensure that the file path is correctly specified and there are no typos or errors in the path.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** No such file or directory @ rb_sysopen - grammars/markdown_text_yaml
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `open'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `load'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:23:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:11:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_043105.md b/exception_reports/exception_report_20240727_043105.md
new file mode 100644
index 0000000..e334726
--- /dev/null
+++ b/exception_reports/exception_report_20240727_043105.md
@@ -0,0 +1,61 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The error "No such file or directory @ rb_sysopen" indicates that a specified file could not be found or accessed.
+
+## Technical Details
+This error typically occurs when attempting to read, write, or open a file that does not exist in the specified location or when there are issues with file paths or permissions.
+
+### Suggested Actions
+- Verify the file path and check for typos or incorrect directory paths.
+- Ensure that the file exists in the specified location.
+- Check file permissions and ensure that the program has the necessary access rights.
+- Review the code for proper usage of file operations, such as using "w" mode to create a new file.
+- In some cases, the issue may be specific to certain versions of Ruby or certain gems. Ensure that your dependencies are up to date and consider trying different versions if the issue persists.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** No such file or directory @ rb_sysopen - /home/b08x/Workspace/flowbots/lib/grammars/markdown_text_yaml.treetop
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `open'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/treetop-1.6.12/lib/treetop/compiler/grammar_compiler.rb:40:in `load'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:31:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_043421.md b/exception_reports/exception_report_20240727_043421.md
new file mode 100644
index 0000000..46a690d
--- /dev/null
+++ b/exception_reports/exception_report_20240727_043421.md
@@ -0,0 +1,56 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:44:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:88:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:86:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:79:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:72:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240727_043538.md b/exception_reports/exception_report_20240727_043538.md
new file mode 100644
index 0000000..53bfd5d
--- /dev/null
+++ b/exception_reports/exception_report_20240727_043538.md
@@ -0,0 +1,70 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The Flowbots::GrammarProcessor class encountered a NameError while attempting to load the MarkdownYamlParser class. This error occurred during the initialization of the GrammarProcessor class, specifically when trying to assign the parser object.
+
+## Technical Details
+```ruby
+raise NameError, "Unable to find parser class: #{parser_class_name}"
+```
+The error occurred in the load_grammar method of the GrammarProcessor class, where the Treetop library is used to load the grammar file and create a new parser instance.
+
+The relevant code snippet from GrammarProcessor.rb is as follows:
+```ruby
+def load_grammar
+ begin
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ parser_class_name = "#{camelize(@grammar_name)}Parser"
+ @parser = Object.const_get(parser_class_name).new
+ rescue StandardError => e
+ Flowbots::ExceptionHandler.handle_exception(self.class.name, e)
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:44:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_044025.md b/exception_reports/exception_report_20240727_044025.md
new file mode 100644
index 0000000..228f643
--- /dev/null
+++ b/exception_reports/exception_report_20240727_044025.md
@@ -0,0 +1,62 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The Flowbots::GrammarProcessor class encountered a NameError while trying to load the MarkdownYamlParser class.
+
+## Technical Details
+The error occurred within the load_grammar method of the GrammarProcessor class, specifically on the line where the parser class is instantiated:
+```ruby
+@parser = Object.const_get(parser_class_name).new
+```
+The parser_class_name variable is expected to contain the string "MarkdownYamlParser", but the constant with this name cannot be found. This results in a NameError being raised.
+
+## Relevant Files
+- GrammarProcessor.rb: Defines the Flowbots::GrammarProcessor class and the load_grammar method where the error occurred.
+- preprocess_text_file_task.rb: Instantiates the GrammarProcessor class with the 'markdown_text_yaml' argument, triggering the error.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:46:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_044106.md b/exception_reports/exception_report_20240727_044106.md
new file mode 100644
index 0000000..ad4dcc9
--- /dev/null
+++ b/exception_reports/exception_report_20240727_044106.md
@@ -0,0 +1,99 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots::GrammarProcessor class, specifically in the load_grammar method. The issue is due to the inability to find the specified parser class, resulting in a NameError.
+
+## Technical Details
+
+```ruby
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require "treetop"
+
+module Flowbots
+ class GrammarProcessor
+ def initialize(grammar_name)
+ @grammar_name = grammar_name
+ load_grammar
+ end
+
+ # ...
+
+ private
+
+ def load_grammar
+ begin
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ parser_class_name = "#{camelize(@grammar_name)}Parser"
+ @parser = Object.const_get(parser_class_name).new
+ rescue StandardError => e
+ Flowbots::ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+
+ # ...
+
+ end
+end
+```
+
+The error occurs in the load_grammar method of the GrammarProcessor class. The relevant code snippet is as follows:
+```ruby
+begin
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ parser_class_name = "#{camelize(@grammar_name)}Parser"
+ @parser = Object.const_get(parser_class_name).new
+rescue StandardError => e
+ Flowbots::ExceptionHandler.handle_exception(self.class.name, e)
+end
+```
+
+The error message indicates that the parser class could not be found. Specifically, the NameError is raised when attempting to access the constant defined by parser_class_name using Object.const_get.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:46:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_044125.md b/exception_reports/exception_report_20240727_044125.md
new file mode 100644
index 0000000..85a7428
--- /dev/null
+++ b/exception_reports/exception_report_20240727_044125.md
@@ -0,0 +1,69 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The Flowbots::GrammarProcessor class encountered a NameError while trying to find the parser class.
+
+## Technical Details
+The error occurred in the load_grammar method of the GrammarProcessor class, specifically on the line where the parser class is instantiated:
+
+```ruby
+@parser_class_name = "#{camelize(@grammar_name)}Parser"
+```
+
+The specific error message is:
+
+```
+NameError: Unable to find parser class: #{parser_class_name}
+```
+
+This indicates that the parser class could not be found or was not properly defined.
+
+## Suggested Action
+To resolve this issue, ensure that the parser class is defined correctly and that the necessary files are present in the GRAMMAR_DIR directory.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:46:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240727_044153.md b/exception_reports/exception_report_20240727_044153.md
new file mode 100644
index 0000000..3b068d7
--- /dev/null
+++ b/exception_reports/exception_report_20240727_044153.md
@@ -0,0 +1,76 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+The Flowbots::GrammarProcessor class encountered a NameError while trying to find the parser class MarkdownYamlParser.
+
+## Technical Details
+The error occurred during the initialization of the GrammarProcessor class, specifically in the load_grammar method. The relevant code section is as follows:
+
+```ruby
+def load_grammar
+ begin
+ Treetop.load(File.join(GRAMMAR_DIR, "#{@grammar_name}.treetop"))
+ parser_class_name = "#{camelize(@grammar_name)}Parser"
+ @parser = Object.const_get(parser_class_name).new
+ rescue StandardError => e
+ Flowbots::ExceptionHandler.handle_exception(self.class.name, e)
+ end
+end
+```
+
+The specific line causing the error is:
+
+```ruby
+@parser = Object.const_get(parser_class_name).new
+```
+
+The error message indicates that the parser class with the name "MarkdownYamlParser" could not be found. This suggests that either the class definition for MarkdownYamlParser is missing or there is an issue with the class name being used in the code.
+
+To resolve this issue, ensure that the MarkdownYamlParser class is defined correctly and that the class name used in the code matches the defined class name.
+
+
+## Exception Details
+
+- **Class:** Flowbots::GrammarProcessor
+- **Message:** Unable to find parser class: MarkdownYamlParser
+
+ raise NameError, "Unable to find parser class: #{parser_class_name}"
+ ^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:46:in `load_grammar'
+/home/b08x/Workspace/flowbots/lib/processors/GrammarProcessor.rb:10:in `initialize'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `new'
+/home/b08x/Workspace/flowbots/lib/tasks/preprocess_text_file_task.rb:10:in `execute'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block (2 levels) in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `fork'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:205:in `block in run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:158:in `block in each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:156:in `each_descendant'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:198:in `run_descendants'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:173:in `block in run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `loop'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:169:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:44:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:83:in `block in process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `each'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:81:in `process_batch'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:74:in `block in process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `times'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:67:in `process_files'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflowtest.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:56:in `train_topic_model'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_105234.md b/exception_reports/exception_report_20240731_105234.md
new file mode 100644
index 0000000..da88e0d
--- /dev/null
+++ b/exception_reports/exception_report_20240731_105234.md
@@ -0,0 +1,36 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `define_workflow' for #
+
+ @orchestrator.define_workflow(workflow_graph)
+ ^^^^^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:51:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240731_110151.md b/exception_reports/exception_report_20240731_110151.md
new file mode 100644
index 0000000..1360f6e
--- /dev/null
+++ b/exception_reports/exception_report_20240731_110151.md
@@ -0,0 +1,157 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots CLI, specifically in the Text Processing Workflow component. The issue is caused by an undefined method 'set' for the Redic class.
+
+## Technical Details
+The error message indicates that the 'set' method is not defined for the Redic class. This suggests that the code is attempting to call a method that does not exist for that particular class.
+
+## Relevant Code Snippets
+### WorkflowOrchestrator.rb
+```ruby
+class WorkflowOrchestrator
+ CARTRIDGE_BASE_DIR = File.expand_path("../../nano-bots/cartridges", __dir__)
+
+ def initialize
+ @agents = {}
+ logger = Logger.new(STDOUT)
+ logger.level = Logger::DEBUG
+ end
+
+ # ...
+
+ def run_workflow
+ logger.info "Starting workflow execution"
+ @running = true
+
+ begin
+ # ...
+
+ Flowbots::UI.info "Starting Jongleur::API.run"
+ Jongleur::API.run do |on|
+ # ...
+ end
+ rescue Interrupt
+ # ...
+ rescue StandardError => e
+ logger.error "Error during workflow execution: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ cleanup
+ raise
+ end
+ end
+
+ # ...
+
+end
+```
+
+### text_processing_workflow.rb
+```ruby
+module Flowbots
+ class TextProcessingWorkflow
+ attr_reader :input_file_path, :text_file_id
+
+ def initialize(input_file_path=nil)
+ @input_file_path = input_file_path || prompt_for_file
+ @orchestrator = WorkflowOrchestrator.new
+ end
+
+ def run
+ Flowbots::UI.say(:ok, "Setting Up Text Processing Workflow")
+ logger.info "Setting Up Text Processing Workflow"
+
+ setup_workflow
+ store_input_file_path
+
+ Flowbots::UI.info "Running Text Processing Workflow"
+ @orchestrator.run_workflow
+
+ Flowbots::UI.say(:ok, "Text Processing Workflow completed")
+ logger.info "Text Processing Workflow completed"
+ end
+
+ # ...
+
+ def store_input_file_path
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("input_file_path", @input_file_path)
+ end
+
+ end
+end
+```
+
+### cli.rb
+```ruby
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ # ...
+
+ desc "process_text FILE", "Process a text file using the text processing workflow"
+ def process_text(file)
+ pastel = Pastel.new
+
+ unless File.exist?(file)
+ say pastel.red("File not found: #{file}")
+ exit
+ end
+
+ say pastel.green("Processing file: #{file}")
+
+ begin
+ workflow = TextProcessingWorkflow.new(file)
+ workflow.run
+ say pastel.green("Text processing completed successfully")
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+end
+```
+
+## Backtrace
+```
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:11:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:39:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `set' for #, @connection=false, @uri=#, @timeout=10000000>, @buffer={}>
+
+ Ohm.redis.set("workflow_type", workflow_type)
+ ^^^^
+Did you mean? send
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:11:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:39:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_110531.md b/exception_reports/exception_report_20240731_110531.md
new file mode 100644
index 0000000..32d65cd
--- /dev/null
+++ b/exception_reports/exception_report_20240731_110531.md
@@ -0,0 +1,38 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant WorkflowOrchestrator::WorkflowAgent
+
+ @agents[:task_manager] = WorkflowAgent.new("task_manager", "task_manager_cartridge.yml")
+ ^^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:56:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:29:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:39:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240731_110832.md b/exception_reports/exception_report_20240731_110832.md
new file mode 100644
index 0000000..12da69b
--- /dev/null
+++ b/exception_reports/exception_report_20240731_110832.md
@@ -0,0 +1,163 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots::CLI class, specifically referencing an uninitialized constant in the WorkflowOrchestrator module. This issue has prevented the successful execution of the program.
+
+## Technical Details
+```
+Class: Flowbots::CLI
+Message: uninitialized constant WorkflowOrchestrator::WorkflowAgent
+
+ @agents[:task_manager] = WorkflowAgent.new("task_manager", "task_manager_cartridge.yml")
+ ^^^^^^^^^^^^^
+```
+
+## Backtrace
+```
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:54:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:27:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:39:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+## Relevant Files
+### WorkflowOrchestrator.rb
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require_relative "WorkflowAgent"
+
+class WorkflowOrchestrator
+ CARTRIDGE_BASE_DIR = File.expand_path("../../nano-bots/cartridges", __dir__)
+
+ def initialize
+ @agents = {}
+ logger = Logger.new(STDOUT)
+ logger.level = Logger::DEBUG
+ end
+
+ def add_agent(role, cartridge_file, author: "@b08x")
+ logger.debug "Adding agent: #{role}"
+ cartridge_path = File.join(CARTRIDGE_BASE_DIR, author, "cartridges", cartridge_file)
+
+ unless File.exist?(cartridge_path)
+ logger.error "Cartridge file not found: \"#{cartridge_path}\""
+ raise "Cartridge file not found: \"#{cartridge_path}\""
+ end
+
+ @agents[role] = WorkflowAgent.new(role, cartridge_path)
+ logger.debug "Agent added: #{role}"
+ end
+
+ # ...
+end
+```
+
+### text_processing_workflow.rb
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class TextProcessingWorkflow
+ attr_reader :input_file_path, :text_file_id
+
+ def initialize(input_file_path=nil)
+ @input_file_path = input_file_path || prompt_for_file # Assign or prompt
+ @orchestrator = WorkflowOrchestrator.new
+ end
+
+ def run
+ Flowbots::UI.say(:ok, "Setting Up Text Processing Workflow")
+ logger.info "Setting Up Text Processing Workflow"
+
+ setup_workflow
+ store_input_file_path
+
+ Flowbots::UI.info "Running Text Processing Workflow"
+ @orchestrator.run_workflow
+
+ Flowbots::UI.say(:ok, "Text Processing Workflow completed")
+ logger.info "Text Processing Workflow completed"
+ end
+
+ # ...
+ end
+end
+```
+
+### cli.rb
+```
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class CLI < Thor
+ extend ThorExt::Start
+
+ def self.exit_on_failure?
+ true
+ end
+
+ # ...
+
+ desc "process_text FILE", "Process a text file using the text processing workflow"
+ def process_text(file)
+ pastel = Pastel.new
+
+ unless File.exist?(file)
+ say pastel.red("File not found: #{file}")
+ exit
+ end
+
+ say pastel.green("Processing file: #{file}")
+
+ begin
+ workflow = TextProcessingWorkflow.new(file)
+ workflow.run
+ say pastel.green("Text processing completed successfully")
+ rescue StandardError => e
+ ExceptionHandler.handle_exception(self.class.name, e)
+ end
+ end
+ end
+end
+```
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant WorkflowOrchestrator::WorkflowAgent
+
+ @agents[:task_manager] = WorkflowAgent.new("task_manager", "task_manager_cartridge.yml")
+ ^^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:54:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:27:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:39:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_111121.md b/exception_reports/exception_report_20240731_111121.md
new file mode 100644
index 0000000..20256b9
--- /dev/null
+++ b/exception_reports/exception_report_20240731_111121.md
@@ -0,0 +1,61 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Summary
+An error has occurred in the Flowbots::CLI class, resulting in an "uninitialized constant" issue specifically related to WorkflowOrchestrator::WorkflowAgent.
+
+## Technical Details
+The error is likely due to one of the following reasons:
+- Missing require statement: The code may be missing a require statement to load the file containing the WorkflowAgent class definition.
+- Misspelled constant name: There could be a typo in the WorkflowAgent constant name when it is referenced in the code.
+- Scope issues: The WorkflowAgent constant may be defined within a different scope, such as another class or module, and is not being properly referenced.
+- Loading order: The constant might be referenced before its definition is loaded or executed.
+
+## Backtrace
+The error occurred within the following code block:
+```ruby
+@agents[:task_manager] = WorkflowAgent.new("task_manager", "task_manager_cartridge.yml")
+```
+
+## Relevant Files
+The following files are potentially relevant to the issue:
+- WorkflowOrchestrator.rb: This file contains the WorkflowOrchestrator class, where the error occurred.
+- text_processing_workflow.rb: This file defines the TextProcessingWorkflow class, which uses the WorkflowOrchestrator class.
+- cli.rb: This file contains the CLI class and includes the process_text method, which triggers the TextProcessingWorkflow.
+- command.rb: This file does not appear to be directly related to the issue, as it pertains to Sublayer::Actions rather than WorkflowOrchestrator.
+- thor_ext.rb: This file contains extensions for the Thor CLI framework, providing enhanced error handling and argument parsing. While it doesn't directly cause the issue, it may have an impact on how errors are handled and displayed.
+
+## Suggested Actions
+To resolve the issue, consider the following actions:
+- Verify the presence and correctness of require statements in the relevant files, especially those related to loading the WorkflowAgent class.
+- Double-check the spelling and casing of the WorkflowAgent constant name throughout the codebase.
+- Ensure proper scoping by checking if the WorkflowAgent constant is defined within the appropriate scope (class or module) and is correctly referenced.
+- Review the loading order of the code and ensure that the WorkflowAgent constant is defined before it is referenced.
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant WorkflowOrchestrator::WorkflowAgent
+
+ @agents[:task_manager] = WorkflowAgent.new("task_manager", "task_manager_cartridge.yml")
+ ^^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:63:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:36:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:36:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:14:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_111604.md b/exception_reports/exception_report_20240731_111604.md
new file mode 100644
index 0000000..cb98285
--- /dev/null
+++ b/exception_reports/exception_report_20240731_111604.md
@@ -0,0 +1,41 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/task_manager_cartridge.yml"
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:59:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:59:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:37:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:36:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:14:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240731_112054.md b/exception_reports/exception_report_20240731_112054.md
new file mode 100644
index 0000000..182c026
--- /dev/null
+++ b/exception_reports/exception_report_20240731_112054.md
@@ -0,0 +1,41 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/task_manager_cartridge.yml"
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:60:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:60:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:38:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:36:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:14:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240731_112600.md b/exception_reports/exception_report_20240731_112600.md
new file mode 100644
index 0000000..70521d4
--- /dev/null
+++ b/exception_reports/exception_report_20240731_112600.md
@@ -0,0 +1,41 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/task_manager_cartridge.yml"
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:70:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:70:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:40:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:36:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:14:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240731_112637.md b/exception_reports/exception_report_20240731_112637.md
new file mode 100644
index 0000000..7bc1127
--- /dev/null
+++ b/exception_reports/exception_report_20240731_112637.md
@@ -0,0 +1,97 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Cartridge File Not Found
+
+**Summary:**
+
+The application failed to locate a required cartridge file, "task_manager_cartridge.yml", resulting in an error during workflow initialization.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/task_manager_cartridge.yml"
+* **Affected Component:** WorkflowAgent initialization during workflow setup.
+
+**Root Cause:**
+
+The specified cartridge file, crucial for the WorkflowAgent's operation, is absent at the provided path. This could be due to:
+
+* **Incorrect File Path:** The path to the cartridge file might be mistyped or outdated.
+* **Missing File:** The cartridge file may have been accidentally deleted or is not present in the expected location.
+* **Version Control Issues:** Recent changes in the codebase might not have been properly pulled or synchronized, leading to a missing file.
+
+**Relevant Code Snippets:**
+
+* **WorkflowAgent.rb:** The `initialize` method attempts to load the cartridge file using the provided path.
+```ruby
+class WorkflowAgent
+ def initialize(role, cartridge_file)
+ # ...
+ @bot = NanoBot.new(
+ cartridge: cartridge_file
+ )
+ # ...
+ end
+ # ...
+end
+```
+
+* **WorkflowOrchestrator.rb:** This class is responsible for adding the agent and checking for the cartridge file existence.
+```ruby
+class WorkflowOrchestrator
+ # ...
+ def add_agent(role, cartridge_file, author: "@b08x")
+ # ...
+ cartridge_path = File.join(CARTRIDGE_BASE_DIR, author, "cartridges", cartridge_file)
+
+ unless File.exist?(cartridge_path)
+ logger.error "Cartridge file not found: \"#{cartridge_path}\""
+ raise "Cartridge file not found: \"#{cartridge_path}\""
+ end
+ # ...
+ end
+ # ...
+end
+```
+
+**Next Steps:**
+
+1. **Verify Cartridge File Path:** Ensure the file path specified in the `WorkflowAgent` initialization is accurate and up-to-date.
+2. **Confirm File Existence:** Check if the file "task_manager_cartridge.yml" exists at the expected location within the project structure.
+3. **Version Control Check:** If the file is missing, review the version control history and, if necessary, pull the latest changes to ensure the file is present.
+4. **Investigate Recent Changes:** If the file was recently added or modified, examine the changes for potential errors.
+
+Once the issue with the cartridge file is resolved, the workflow should initialize and run successfully.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/task_manager_cartridge.yml"
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:70:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:70:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:40:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:36:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:14:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_112734.md b/exception_reports/exception_report_20240731_112734.md
new file mode 100644
index 0000000..bc5aa79
--- /dev/null
+++ b/exception_reports/exception_report_20240731_112734.md
@@ -0,0 +1,41 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/error_handler.yml"
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:71:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:71:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:40:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:36:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:14:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240731_112829.md b/exception_reports/exception_report_20240731_112829.md
new file mode 100644
index 0000000..0938a3c
--- /dev/null
+++ b/exception_reports/exception_report_20240731_112829.md
@@ -0,0 +1,65 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Undefined Method 'name=' for SourceFile Object
+
+**Summary:**
+
+The application encountered a fatal error during the text processing workflow. The error message indicates an undefined method 'name=' being called on a SourceFile object, suggesting an attempt to assign a value to a non-existent attribute.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Error Message:** undefined method `name=' for #"/home/b08x/Workspace/Prompt Repository/Style Transfer and Juxtaposition in Data Storytelling.md"}, @_memo={}>
+* **Location:** The error originates from the `update_attributes` method within the `ohm` gem (version 3.1.1), specifically at line 1442.
+* **Backtrace:** The error propagates through the following call stack:
+ * `ohm` gem's `update_attributes`, `reload_attributes`, and `initialize` methods.
+ * `Flowbots::TextProcessingWorkflow` class's `store_input_file_path` and `run` methods.
+ * `Flowbots::CLI` class's `process_text` method.
+ * Thor gem's command execution pathway.
+* **Root Cause:** The `store_input_file_path` method attempts to store the input file path in a Redis database using the `Jongleur::WorkerTask` class. This operation appears to be interacting with the `ohm` gem, leading to the undefined method call.
+* **Impact:** This error prevents the successful execution of the text processing workflow.
+
+**Recommended Action:**
+
+1. **Investigate `store_input_file_path` Method:** Review the implementation of `store_input_file_path` within `TextProcessingWorkflow` to determine the purpose and mechanism of storing the input file path.
+2. **Analyze `ohm` Gem Interaction:** Analyze how the `Jongleur::WorkerTask` class interacts with the `ohm` gem during data storage. Verify if the `SourceFile` object is intended to be persisted using `ohm` and if the attribute assignment is necessary.
+3. **Review Data Model:** Confirm the data model and attribute definitions for objects being handled by both `ohm` and `Jongleur::WorkerTask` to ensure consistency.
+
+**Additional Notes:**
+
+The provided code snippets for `text_processing_workflow.rb`, `cli.rb`, `command.rb`, and `thor_ext.rb` were helpful in tracing the error and understanding the application flow.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `name=' for #"/home/b08x/Workspace/Prompt Repository/Style Transfer and Juxtaposition in Data Storytelling.md"}, @_memo={}>
+
+ atts.each { |att, val| send(:"#{att}=", val) }
+ ^^^^
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1442:in `block in update_attributes'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1442:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1442:in `update_attributes'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1152:in `reload_attributes'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1111:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1094:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1094:in `create'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:41:in `store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:15:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_113031.md b/exception_reports/exception_report_20240731_113031.md
new file mode 100644
index 0000000..42e605b
--- /dev/null
+++ b/exception_reports/exception_report_20240731_113031.md
@@ -0,0 +1,69 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Undefined Method 'id' for TrueClass
+
+**Summary:**
+
+The application encountered an error while attempting to process a text file using the Text Processing Workflow. The error message "undefined method `id' for true:TrueClass" suggests that the code is trying to call the method 'id' on a boolean value (true), which is not a valid operation.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** undefined method `id` for true:TrueClass
+* **Location:** `send(writer, value ? value.id : nil)` in `ohm-3.1.1/lib/ohm.rb:988`
+
+**Backtrace Analysis:**
+
+The error originates from within the Ohm library, specifically when attempting to update attributes of an Ohm model.
+
+1. `OhmModels.rb`: The `find_or_create_by_path` method in `OhmModels.rb` attempts to find an existing Sourcefile based on the provided file path.
+2. If no existing file is found, it creates a new Sourcefile object. However, the error suggests that the value returned by the `find` method (which should be either a Sourcefile object or nil) is instead the boolean value `true`.
+3. This incorrect value is then passed to the `send` method, leading to the "undefined method `id`" error.
+
+**Possible Causes:**
+
+* **Incorrect Return Value:** The `find` method within the `find_or_create_by_path` method in `OhmModels.rb` may be returning `true` instead of the expected Sourcefile object or `nil`. This could be due to an error in the `find` method's implementation or an unexpected state within the Ohm library.
+* **Data Inconsistency:** There might be inconsistencies in the data stored by Ohm, leading to unexpected behavior in the `find` method.
+
+**Next Steps:**
+
+1. **Investigate `find_or_create_by_path`:** Thoroughly examine the `find_or_create_by_path` method in `OhmModels.rb` to determine why it is returning a boolean value instead of the expected Sourcefile object or `nil`.
+2. **Review Ohm Usage:** Review how the Ohm library is being used within the project, particularly the `find` method and any related data handling, to ensure it aligns with the library's intended usage.
+3. **Check Data Integrity:** Verify the integrity of the data stored by Ohm, focusing on the Sourcefile model. Look for any inconsistencies that could be causing the unexpected behavior.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `id' for true:TrueClass
+
+ send(writer, value ? value.id : nil)
+ ^^^
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:988:in `block in reference'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1442:in `block in update_attributes'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1442:in `each'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1442:in `update_attributes'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1152:in `reload_attributes'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1111:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1094:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/ohm-3.1.1/lib/ohm.rb:1094:in `create'
+/home/b08x/Workspace/flowbots/lib/components/OhmModels.rb:50:in `find_or_create_by_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:41:in `store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:15:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_113239.md b/exception_reports/exception_report_20240731_113239.md
new file mode 100644
index 0000000..8b6ca73
--- /dev/null
+++ b/exception_reports/exception_report_20240731_113239.md
@@ -0,0 +1,71 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Flowbots CLI - Undefined Method 'id' for TrueClass
+
+**Summary:**
+
+The Flowbots CLI encountered an error while attempting to store the input file path. The system attempted to call the 'id' method on a boolean value (true:TrueClass), which is not a valid method for that data type, resulting in a crash.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Error storing input file path: undefined method `id' for true:TrueClass
+* **Location:** `/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:57` in method `store_input_file_path`
+
+**Code Snippet:**
+
+```ruby
+ send(writer, value ? value.id : nil)
+ ^^^
+```
+
+**Backtrace:**
+
+The error originated within the `store_input_file_path` method of the `TextProcessingWorkflow` class. It was triggered during the execution of the `process_text` command in the CLI.
+
+**Relevant Files:**
+
+* `text_processing_workflow.rb`
+* `cli.rb`
+* `command.rb`
+* `thor_ext.rb`
+
+**Analysis:**
+
+The error suggests that the `value` variable in the `store_input_file_path` method is being passed a boolean value (`true`) instead of an object with an `id` method. This likely indicates a logical error in how the input file path is being handled or passed between methods.
+
+**Next Steps:**
+
+1. Investigate the `store_input_file_path` method to identify why a boolean value is being assigned to the `value` variable.
+2. Trace the origin of the `value` variable back through the call stack to determine where the incorrect assignment occurs.
+3. Implement appropriate checks and/or data type validation to ensure that the `value` variable in the `store_input_file_path` method always receives an object with an `id` method.
+4. Perform thorough testing to confirm the resolution of the error and prevent similar issues in the future.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Error storing input file path: undefined method `id' for true:TrueClass
+
+ send(writer, value ? value.id : nil)
+ ^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:57:in `rescue in store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:44:in `store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:15:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_114248.md b/exception_reports/exception_report_20240731_114248.md
new file mode 100644
index 0000000..7953363
--- /dev/null
+++ b/exception_reports/exception_report_20240731_114248.md
@@ -0,0 +1,65 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Failed to Store Input File Path
+
+**Summary:**
+
+The Flowbots CLI encountered an error while attempting to store the input file path for the Text Processing Workflow. This prevented the workflow from running successfully.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Error storing input file path: Failed to create or find Sourcefile
+
+**Backtrace:**
+
+The error originated in the `store_input_file_path` method of the `TextProcessingWorkflow` class (`text_processing_workflow.rb:44`). This method is called during the `run` method of the workflow (`text_processing_workflow.rb:15`).
+
+The backtrace indicates that the error occurred while attempting to access the Redis store through the `Jongleur::WorkerTask` class variable `@@redis` (`text_processing_workflow.rb:57`).
+
+**Possible Causes:**
+
+* **Redis Connection Issue:** The application may not be able to connect to the Redis instance.
+* **Incorrect Redis Configuration:** The Redis connection details (host, port, password) may be incorrect.
+* **Jongleur Worker Task Issue:** There might be an issue with how the `Jongleur::WorkerTask` class interacts with Redis, potentially due to a missing initialization or incorrect configuration.
+
+**Recommended Actions:**
+
+1. **Verify Redis Connection:** Check if the application can successfully connect to the Redis instance.
+2. **Review Redis Configuration:** Ensure that the Redis connection details are accurate and accessible by the application.
+3. **Investigate Jongleur Worker Task:** Investigate the `Jongleur::WorkerTask` class to ensure it correctly initializes and interacts with the Redis instance. Check for any potential errors or exceptions within the `Jongleur` library.
+
+**Relevant Files:**
+
+* `text_processing_workflow.rb`
+* `cli.rb`
+* `command.rb`
+* `thor_ext.rb`
+
+This report provides a starting point for debugging the issue. Further investigation is required to pinpoint the exact cause of the error and implement a solution.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Error storing input file path: Failed to create or find Sourcefile
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:57:in `rescue in store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:44:in `store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:15:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_151440.md b/exception_reports/exception_report_20240731_151440.md
new file mode 100644
index 0000000..45a5036
--- /dev/null
+++ b/exception_reports/exception_report_20240731_151440.md
@@ -0,0 +1,56 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Uninitialized Constant Flowbots::CLI
+
+**Summary:** The application encountered a fatal error during the text processing workflow execution. The error message indicates an uninitialized constant `Sourcefile::FlowbotError` was raised while attempting to store the input file path.
+
+**Technical Details:**
+
+* **Error Class:** `Flowbots::CLI`
+* **Error Message:** `Error storing input file path: uninitialized constant Sourcefile::FlowbotError`
+* **Root Cause:** The constant `Sourcefile::FlowbotError` is being referenced in `text_processing_workflow.rb` but hasn't been defined, causing the application to crash.
+* **Location:** `text_processing_workflow.rb:65` within the `store_input_file_path` method. This method attempts to store the input file path in Redis.
+* **Backtrace:** The backtrace points to the sequence of method calls leading to the error, originating from the `process_text` command in `cli.rb`.
+
+**Possible Solutions:**
+
+1. **Define the Missing Constant:** Determine the intended location and definition for `Sourcefile::FlowbotError` and implement it. Ensure the class `FlowbotError` is defined within the `Sourcefile` module.
+2. **Verify Constant Reference:** Review if `Sourcefile::FlowbotError` is the correct constant intended for error handling in the `store_input_file_path` method. If not, correct the reference.
+
+**Impact:**
+
+This error prevents the text processing workflow from executing successfully. Users attempting to utilize this functionality will encounter the reported error message.
+
+**Recommendation:**
+
+Immediately investigate the missing constant definition and implement the necessary correction. Thoroughly test the fix to ensure proper error handling and prevent future occurrences.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Error storing input file path: uninitialized constant Sourcefile::FlowbotError
+
+ raise FlowbotError.new("Error creating Sourcefile: #{e.message}", "SOURCEFILE_CREATE_ERROR")
+ ^^^^^^^^^^^^
+Did you mean? Flowbots
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:65:in `rescue in store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:44:in `store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:15:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_152047.md b/exception_reports/exception_report_20240731_152047.md
new file mode 100644
index 0000000..98f678d
--- /dev/null
+++ b/exception_reports/exception_report_20240731_152047.md
@@ -0,0 +1,63 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Flowbots Text Processing Workflow
+
+**Summary:** The Flowbots CLI encountered an error while attempting to store the input file path for the Text Processing Workflow. The error message indicates a problem with referencing the 'id' method on a boolean value (true:TrueClass), suggesting an unexpected data type was passed to the `store_input_file_path` method.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Error storing input file path: Error creating Sourcefile: undefined method `id' for true:TrueClass
+* **Location:** `text_processing_workflow.rb:68:in 'rescue in store_input_file_path'`
+* **Root Cause:** The `store_input_file_path` method attempts to access the `id` attribute of a variable that holds a boolean value (`true`) instead of an object with an `id`.
+
+**Backtrace:** The provided backtrace shows the sequence of method calls leading to the error:
+
+1. `store_input_file_path` in `text_processing_workflow.rb` line 47
+2. `run` in `text_processing_workflow.rb` line 18
+3. `process_text` in `cli.rb` line 76
+4. `run` in `thor/command.rb` line 28
+5. ... (further calls within Thor gem)
+6. `` in `exe/flowbots` line 23
+
+**Relevant Code:**
+
+* **text_processing_workflow.rb:** The error originates in the `store_input_file_path` method. The specific line causing the error (line 68) and the surrounding context should be examined. It is likely that an incorrect value is being passed to the `Jongleur::WorkerTask.class_variable_get(:@@redis).set()` method.
+* **cli.rb:** The call to `TextProcessingWorkflow.new(file)` in the `process_text` method should be reviewed to ensure the correct `file` argument is being passed.
+
+**Next Steps:**
+
+1. **Inspect `store_input_file_path`:** Debug the value and type of the variable being used to call `id` within the `store_input_file_path` method.
+2. **Review `process_text`:** Confirm the `file` argument passed to `TextProcessingWorkflow.new(file)` is indeed a file path string and not a boolean value.
+3. **Data Flow Analysis:** Trace the origin of the erroneous boolean value back through the code to identify where the incorrect data type is introduced.
+
+By following these steps, the team can identify the source of the incorrect data type and implement the necessary corrections to resolve the error.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Error storing input file path: Error creating Sourcefile: undefined method `id' for true:TrueClass
+
+ send(writer, value ? value.id : nil)
+ ^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:68:in `rescue in store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:47:in `store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:18:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_152235.md b/exception_reports/exception_report_20240731_152235.md
new file mode 100644
index 0000000..9aefe00
--- /dev/null
+++ b/exception_reports/exception_report_20240731_152235.md
@@ -0,0 +1,56 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Flowbots CLI - Undefined Method 'id' for TrueClass
+
+**Summary:**
+
+The Flowbots CLI encountered an error while attempting to store the input file path for the Text Processing Workflow. The error message indicates an undefined method 'id' being called on a TrueClass object, suggesting an issue with database interaction or variable assignment.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Error storing input file path: undefined method `id' for true:TrueClass
+* **Location:** `text_processing_workflow.rb:70` within the `store_input_file_path` method.
+* **Root Cause:** The variable `@workflow` used in the line `sourcefile = Sourcefile.find_or_create_by_path(@input_file_path, workflow_id: @workflow.id)` is evaluating to `true` instead of a `Workflow` object. This indicates an issue with how `@workflow` is assigned or passed to the `store_input_file_path` method.
+* **Impact:** The input file path cannot be stored, preventing the Text Processing Workflow from accessing and processing the intended file.
+
+**Possible Solutions:**
+
+1. **Inspect Workflow Instantiation:** Investigate where and how the `@workflow` instance variable is initialized within the `TextProcessingWorkflow` class. Ensure the workflow object is correctly created and assigned.
+2. **Verify Workflow Availability:** Confirm that the `@workflow` object is accessible within the `store_input_file_path` method. If the method is called in a different context, the `@workflow` variable might be out of scope or nil.
+3. **Review `Sourcefile` Model:** Examine the `Sourcefile` model and its association with the `Workflow` model. Ensure the `workflow_id` attribute is correctly defined and handled.
+
+**Recommendations:**
+
+* Implement thorough debugging and logging to trace the execution flow and pinpoint where `@workflow` receives an unexpected value.
+* Review code sections related to workflow instantiation, object passing between methods, and database interactions.
+* Consider implementing unit tests to cover workflow creation and file path storage functionalities.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Error storing input file path: undefined method `id' for true:TrueClass
+
+ sourcefile = Sourcefile.find_or_create_by_path(@input_file_path, workflow_id: @workflow.id)
+ ^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:70:in `rescue in store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:47:in `store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:18:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_153002.md b/exception_reports/exception_report_20240731_153002.md
new file mode 100644
index 0000000..8eb810e
--- /dev/null
+++ b/exception_reports/exception_report_20240731_153002.md
@@ -0,0 +1,81 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Cartridge File Not Found
+
+**Summary:** The application failed to locate a required cartridge file, resulting in a program halt. This appears to be due to a missing file or an incorrect path.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/task_manager_cartridge.yml"
+* **Root Cause:** The file "task_manager_cartridge.yml" is expected within the specified cartridge directory but is not present.
+* **Affected Functionality:** WorkflowAgent initialization, specifically loading the necessary cartridge for agent operation.
+* **Impact:** The text processing workflow cannot initialize the WorkflowAgent without the cartridge, preventing workflow execution.
+
+**Code Snippet:**
+
+WorkflowAgent.rb:
+
+```ruby
+class WorkflowAgent
+ def initialize(role, cartridge_file)
+ @role = role
+ @state = {}
+ @bot = NanoBot.new(
+ cartridge: cartridge_file # This line attempts to load the cartridge file
+ )
+ # ...
+ end
+ # ...
+end
+```
+
+**Possible Causes:**
+
+* The file "task_manager_cartridge.yml" has been accidentally deleted.
+* The file has been moved or renamed.
+* The cartridge path specified in the code is incorrect.
+* There is a typo in the filename or path.
+
+**Recommended Action:**
+
+1. **Verify File Existence:** Confirm if the file "task_manager_cartridge.yml" exists at the specified location.
+2. **Check File Path:** If the file exists, ensure the path used in the `WorkflowAgent` initialization is accurate.
+3. **Inspect Recent Changes:** Review recent code commits or deployments that might have affected the cartridge file or its location.
+
+**Additional Notes:**
+
+The provided backtrace and code snippets offer a starting point for debugging. Examining the surrounding code may provide further context and aid in identifying the root cause.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/task_manager_cartridge.yml"
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:70:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:70:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:40:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:39:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_153050.md b/exception_reports/exception_report_20240731_153050.md
new file mode 100644
index 0000000..4a5444e
--- /dev/null
+++ b/exception_reports/exception_report_20240731_153050.md
@@ -0,0 +1,65 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Cartridge File Not Found
+
+**Summary:** The system encountered an error while attempting to locate a cartridge file required for the "error_handler_cartridge" functionality. This prevented the workflow from executing successfully.
+
+**Technical Details:**
+
+* **Error Class:** Flowbots::CLI
+* **Error Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/error_handler_cartridge.yml"
+
+**Root Cause:**
+
+The error occurred during the initialization of a WorkflowAgent instance within the 'text_processing_workflow'. The agent, responsible for the "error_handler_cartridge" functionality, could not locate its designated cartridge file at the specified path.
+
+**Technical Analysis:**
+
+The error originated in the WorkflowAgent class's `initialize` method (WorkflowAgent.rb). The provided cartridge file path, constructed using the 'CARTRIDGE_BASE_DIR' constant and user-provided data, appears to be invalid.
+
+**Possible Causes:**
+
+1. **Incorrect File Path:** The cartridge file may be located in a different directory or have a different filename than specified.
+2. **Missing File:** The cartridge file may have been accidentally deleted or never created.
+3. **Permissions Issue:** The application might lack sufficient read permissions to access the cartridge file at the specified location.
+
+**Next Steps:**
+
+1. **Verify File Path:** Confirm the correct file path and filename for the 'error_handler_cartridge.yml' file.
+2. **Check File Existence:** Ensure the cartridge file exists at the confirmed location.
+3. **Validate File Permissions:** Verify that the application has the necessary permissions to read the cartridge file.
+
+This error report provides a concise summary and detailed technical information to assist in diagnosing and resolving the issue.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/error_handler_cartridge.yml"
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:71:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:71:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:40:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:39:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_153126.md b/exception_reports/exception_report_20240731_153126.md
new file mode 100644
index 0000000..4c32eda
--- /dev/null
+++ b/exception_reports/exception_report_20240731_153126.md
@@ -0,0 +1,65 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Cartridge File Not Found
+
+**Summary:** The system encountered an error while attempting to locate a required cartridge file for the WorkflowAgent during the execution of the Flowbots CLI.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/error_handler.yml"
+
+**Root Cause:**
+
+The specified cartridge file, `error_handler.yml`, is missing from the designated directory. This file is crucial for the initialization of the WorkflowAgent with the 'error_handler' role.
+
+**Backtrace:**
+
+The error originated in the `load_cartridge!` method within the `instance.rb` file of the `nano-bots` gem, version 3.4.0. The backtrace details the sequence of function calls that led to this error, culminating in the execution of the `flowbots` command.
+
+**Relevant Code:**
+
+The primary file involved is `WorkflowAgent.rb`, specifically the `initialize` method. This method attempts to instantiate a `NanoBot` object but fails due to the missing cartridge file.
+
+**Impact:**
+
+This error prevents the successful execution of the workflow that relies on the 'error_handler' agent.
+
+**Recommended Action:**
+
+1. **Verify Cartridge File Presence:** Confirm that the `error_handler.yml` file exists in the specified directory.
+2. **Correct File Path:** If the file exists in a different location, update the `cartridge_file` parameter passed to the WorkflowAgent constructor in the relevant workflow definition (e.g., `text_processing_workflow.rb`).
+3. **Investigate Missing File:** If the file is indeed missing, investigate the cause and restore it from source control or recreate it as needed.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Cartridge file not found: "/home/b08x/Workspace/flowbots/nano-bots/cartridges/@b08x/cartridges/error_handler.yml"
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:82:in `load_cartridge!'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/controllers/instance.rb:18:in `initialize'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/nano-bots-3.4.0/ports/dsl/nano-bots.rb:15:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowAgent.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:71:in `new'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:71:in `setup_agents'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:40:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:39:in `setup_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_153216.md b/exception_reports/exception_report_20240731_153216.md
new file mode 100644
index 0000000..17939b2
--- /dev/null
+++ b/exception_reports/exception_report_20240731_153216.md
@@ -0,0 +1,70 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Flowbots CLI - Undefined Method 'id'
+
+**Summary:**
+
+The Flowbots CLI encountered an error while attempting to store the input file path. The error message indicates an undefined method 'id' being called on a String object ("1"), suggesting an issue with data type handling.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Error storing input file path: undefined method `id` for "1":String
+* **Location:** `/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:70:in `rescue in store_input_file_path'`
+
+**Code Snippet (text_processing_workflow.rb):**
+
+```ruby
+def store_input_file_path
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("input_file_path", @input_file_path)
+end
+```
+
+**Backtrace:**
+
+The error originated in the `store_input_file_path` method of the `TextProcessingWorkflow` class while attempting to store the input file path. The backtrace points to a potential issue within the `Jongleur::WorkerTask` class and its interaction with a Redis instance.
+
+**Analysis:**
+
+The root cause appears to be the attempted invocation of the 'id' method on a String object ("1"). This suggests that the code expects an object with an 'id' method, potentially a database record or a custom class instance, but is instead receiving a String.
+
+**Recommendations:**
+
+1. **Inspect Data Flow:** Investigate the data flow leading to the `store_input_file_path` method. Determine the origin of the String object "1" and why it is being used in a context that expects an object with an 'id' method.
+2. **Verify Redis Interaction:** Analyze the `Jongleur::WorkerTask` class and its usage of Redis. Ensure that the 'set' method is being called with the correct arguments and data types.
+3. **Implement Type Checks:** Consider adding type checks or assertions to prevent similar errors in the future. Validate the data type of variables before invoking methods to catch mismatches early.
+
+**Next Steps:**
+
+* Developers will debug the `store_input_file_path` method and related code to understand the unexpected data type.
+* Further investigation of the `Jongleur::WorkerTask` and its Redis interaction will be conducted.
+* Code will be reviewed and potentially refactored to include appropriate type checks or assertions to prevent similar issues.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Error storing input file path: undefined method `id' for "1":String
+
+ key.call("SADD", model.id)
+ ^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:70:in `rescue in store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:47:in `store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:18:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_153821.md b/exception_reports/exception_report_20240731_153821.md
new file mode 100644
index 0000000..74bda4f
--- /dev/null
+++ b/exception_reports/exception_report_20240731_153821.md
@@ -0,0 +1,56 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Redis Connection Issue in Text Processing Workflow
+
+**Summary:**
+
+The Text Processing Workflow is encountering an error while attempting to store the input file path. The root cause appears to be an undefined `set` method being called on a Redic object, suggesting a potential issue with the Redis connection or configuration.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Error storing input file path: undefined method `set` for #, @connection=#, @uri=#, @timeout=10000000>, @buffer={}>
+* **Relevant Code:** `Ohm.redis.set("current_workflow_id", @workflow.id)` in `text_processing_workflow.rb`
+* **Potential Issue:** The error message indicates that the `set` method is not being recognized for the Redic object, which is used to interact with the Redis database. This could be due to:
+ * A missing or incorrect Redis gem version.
+ * An improperly configured Redic client.
+ * An issue with the Redis server itself.
+* **Backtrace:** The backtrace points to the `store_input_file_path` method in the `TextProcessingWorkflow` class, specifically the line attempting to set a value in Redis.
+
+**Next Steps:**
+
+1. **Verify Redis Connection:** Confirm that the Redis server is running and accessible from the application. Check the Redic configuration in the application to ensure it aligns with the Redis server settings.
+2. **Investigate Redic Gem:** Ensure the correct Redic gem version is installed and that there are no conflicts with other gems. Consider reinstalling the gem if necessary.
+3. **Review Code Implementation:** Review the `store_input_file_path` method to confirm the Redic `set` method is being used correctly. Verify that the key and value being passed to the method are of the expected data types.
+
+This error prevents the Text Processing Workflow from successfully storing the input file path, hindering further processing. Addressing the Redis connection issue is crucial for the workflow to function correctly.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Error storing input file path: undefined method `set' for #, @connection=#, @uri=#, @timeout=10000000>, @buffer={}>
+
+ Ohm.redis.set("current_workflow_id", @workflow.id)
+ ^^^^
+Did you mean? send
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:79:in `rescue in store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:52:in `store_input_file_path'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:18:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_154930.md b/exception_reports/exception_report_20240731_154930.md
new file mode 100644
index 0000000..a10b1d1
--- /dev/null
+++ b/exception_reports/exception_report_20240731_154930.md
@@ -0,0 +1,73 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Ohm::IndexNotFound Error in Text Processing Workflow
+
+**Summary:**
+
+The text processing workflow failed to execute due to an `Ohm::IndexNotFound` error. This suggests an issue with retrieving or accessing data within the database during the workflow setup.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Ohm error: Ohm::IndexNotFound
+* **Affected Functionality:** Text processing workflow execution
+* **Trigger Point:** Storing the input file path for the workflow.
+
+**Relevant Code Snippet (text_processing_workflow.rb):**
+
+```ruby
+ def store_input_file_path
+ # ... (previous code) ...
+
+ begin
+ # ... (Redis connection check) ...
+
+ sourcefile = Sourcefile.find_or_create_by_path(@input_file_path, workflow_id: @workflow.id)
+ # ... (error handling) ...
+
+ @workflow.sourcefiles.add(sourcefile.id)
+ # ... (rest of the code) ...
+ end
+ end
+```
+
+**Backtrace:** The backtrace points to the `store_input_file_path` method within `text_processing_workflow.rb` as the origin of the error. The issue arises when interacting with the database, likely during the `Sourcefile.find_or_create_by_path` operation.
+
+**Potential Causes:**
+
+* A database index required for the `Sourcefile` model's `find_or_create_by_path` method is missing.
+* Inconsistent data or database schema related to `Sourcefile` or `Workflow` models.
+* A temporary database connection issue might have occurred during the operation.
+
+**Next Steps:**
+
+1. **Verify Database Indices:** Investigate and ensure the necessary indices exist for the `Sourcefile` model, specifically for the attributes used in the `find_or_create_by_path` method.
+2. **Review Database Schema and Data:** Check the database schema for inconsistencies related to `Sourcefile` and `Workflow` models. Additionally, inspect the data for potential corruption or mismatches.
+3. **Investigate Potential Connection Issues:** Review logs for any network or database connection errors that might have occurred during the workflow execution.
+4. **Test Reproducibility:** Attempt to reproduce the error in a controlled environment to gather more information and isolate the root cause.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Ohm error: Ohm::IndexNotFound
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:72:in `rescue in process_input_file'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:53:in `process_input_file'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:19:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_155512.md b/exception_reports/exception_report_20240731_155512.md
new file mode 100644
index 0000000..9c42987
--- /dev/null
+++ b/exception_reports/exception_report_20240731_155512.md
@@ -0,0 +1,70 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Database Index Error in Text Processing Workflow
+
+**Summary:**
+The Text Processing Workflow encountered a fatal error while attempting to store the input file path. The error message indicates an issue with the database index: "Ohm::IndexNotFound".
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Database index error: Ohm::IndexNotFound
+* **Workflow:** Text Processing Workflow
+* **Functionality Impacted:** Storing input file path for processing.
+* **Trigger:** User initiated the 'process_text' command with a valid text file.
+
+**Backtrace:**
+
+The error originated in the `store_input_file_path` method of the `TextProcessingWorkflow` class, specifically when interacting with the database:
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:68:in `rescue in process_input_file'
+...
+```
+
+The backtrace points to a potential problem with either the `Sourcefile.find_or_create_by_path` or `@workflow.sourcefiles.add` operations.
+
+**Possible Causes:**
+
+* A required database index for the `Sourcefile` model is missing.
+* Inconsistency between the application code and the database schema.
+* Data corruption within the database.
+
+**Next Steps:**
+
+1. **Verify Database Index:** Confirm the existence and correctness of the index used by `Sourcefile.find_or_create_by_path`.
+2. **Check Database Schema:** Ensure the database schema aligns with the `Sourcefile` model definition in the application code.
+3. **Investigate Data Integrity:** Inspect the relevant database table for any data corruption that might be causing the index lookup to fail.
+
+**Relevant Code Snippets:**
+
+* **text_processing_workflow.rb:** (See lines 61-77, specifically the `store_input_file_path` method)
+* **cli.rb:** (See lines 73-84, specifically the `process_text` method)
+
+This error requires immediate attention as it prevents the Text Processing Workflow from functioning correctly.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Database index error: Ohm::IndexNotFound
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:68:in `rescue in process_input_file'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:52:in `process_input_file'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:18:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_155905.md b/exception_reports/exception_report_20240731_155905.md
new file mode 100644
index 0000000..9584e22
--- /dev/null
+++ b/exception_reports/exception_report_20240731_155905.md
@@ -0,0 +1,62 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Database Index Error
+
+**Summary:**
+
+The application encountered a fatal error while attempting to execute the Text Processing Workflow. The error originated from a missing database index 'path' on the Sourcefile model. This prevented the system from associating the input file with the workflow.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Database index error: Index 'path' not found for Sourcefile
+
+**Root Cause:**
+
+The `store_input_file_path` method within `text_processing_workflow.rb` attempts to find or create a Sourcefile entry using the input file path. The search relies on an index 'path' which appears to be missing from the database schema.
+
+**Backtrace:**
+
+The backtrace points to the following execution flow:
+
+1. `Flowbots::CLI#process_text` is called with the user-provided file.
+2. A new `TextProcessingWorkflow` instance is created and `run` is called.
+3. Within `TextProcessingWorkflow#run`, the `store_input_file_path` method attempts to associate the input file with the workflow.
+4. `Sourcefile.find_or_create_by_path` fails due to the missing index, raising an `Ohm::Error`.
+5. The error is caught and re-raised as a `FlowbotError`.
+
+**Impact:**
+
+Users are unable to run the Text Processing Workflow.
+
+**Next Steps:**
+
+1. **Investigate Database Schema:** Verify the database schema for the Sourcefile model and ensure the 'path' index exists.
+2. **Apply Missing Index:** If the index is indeed missing, apply the necessary database migration to add it.
+3. **Test:** After applying the fix, thoroughly test the Text Processing Workflow to confirm the error is resolved.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Database index error: Index 'path' not found for Sourcefile
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:34:in `rescue in verify_indices'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:27:in `verify_indices'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:14:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_161555.md b/exception_reports/exception_report_20240731_161555.md
new file mode 100644
index 0000000..da6b44c
--- /dev/null
+++ b/exception_reports/exception_report_20240731_161555.md
@@ -0,0 +1,58 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Database Index Error in Text Processing Workflow
+
+**Summary:** The Text Processing Workflow failed due to a database index error. The application couldn't find the required 'path' index for the Sourcefile model while attempting to store the input file path.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Database index error: Index 'path' not found for Sourcefile
+* **Workflow:** Text Processing Workflow
+* **Affected Functionality:** Storing input file path for the workflow.
+* **Root Cause:** The `Sourcefile.find_or_create_by_path` method relies on a 'path' index to be defined for the Sourcefile model in the database. This index appears to be missing, leading to the failure.
+
+**Backtrace:** The error originated in the `store_input_file_path` method of the `TextProcessingWorkflow` class (`text_processing_workflow.rb`). Refer to the full backtrace provided in the error output for the detailed call sequence.
+
+**Relevant Code:**
+
+* **text_processing_workflow.rb:** The `store_input_file_path` method attempts to find or create a Sourcefile entry using the provided file path.
+* **cli.rb:** The `process_text` method in the CLI class initiates the Text Processing Workflow.
+
+**Potential Solutions:**
+
+1. **Verify Database Index:** Check the database schema and confirm that the 'path' index is correctly defined for the Sourcefile model.
+2. **Recreate Index:** If the index is missing, recreate it using the appropriate database commands.
+3. **Code Review:** Review the `Sourcefile` model definition and related code to ensure the 'path' attribute is properly indexed.
+
+**Next Steps:**
+
+* Investigate the database configuration to identify the missing index.
+* Implement the necessary corrections to ensure the 'path' index is available.
+* Test the Text Processing Workflow after applying the fix to confirm resolution.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Database index error: Index 'path' not found for Sourcefile
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:34:in `rescue in verify_indices'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:27:in `verify_indices'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:14:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_162132.md b/exception_reports/exception_report_20240731_162132.md
new file mode 100644
index 0000000..67befe5
--- /dev/null
+++ b/exception_reports/exception_report_20240731_162132.md
@@ -0,0 +1,68 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Undefined Method 'update'
+
+**Summary:**
+
+The application encountered a "NoMethodError" during the text processing workflow execution. The error message indicates an attempt to call the method 'update' on a nil object, specifically the `@workflow` instance variable within the `WorkflowOrchestrator` class.
+
+**Technical Details:**
+
+* **Error Class:** `Flowbots::CLI`
+* **Error Message:** `undefined method `update' for nil:NilClass`
+* **Location:** `WorkflowOrchestrator.rb:48:in 'run_workflow'`
+* **Root Cause:** The `@workflow` instance variable is nil when `run_workflow` is called, suggesting an issue with workflow initialization or assignment.
+* **Possible Culprit:** The `setup_workflow` method in `text_processing_workflow.rb` is responsible for initializing the `@workflow` variable. A failure in this method, particularly with associating the `Sourcefile` object, could lead to the `@workflow` variable remaining nil.
+
+**Relevant Code Snippets:**
+
+* **WorkflowOrchestrator.rb:48:**
+ ```ruby
+ def run_workflow
+ logger.info "Starting workflow execution"
+ @workflow.update(status: "running") # Error occurs here
+ ```
+* **text_processing_workflow.rb:23:**
+ ```ruby
+ def run
+ # ...
+ @orchestrator.run_workflow
+ # ...
+ ```
+
+**Next Steps:**
+
+1. **Investigate workflow initialization:** Debug the `setup_workflow` method within `text_processing_workflow.rb` to ensure the `@workflow` variable is being correctly initialized and the `Sourcefile` object is successfully associated.
+2. **Implement error handling:** Add checks for nil values before calling methods on the `@workflow` object to prevent similar errors in the future.
+
+**Recommendation:**
+
+Reviewing the `setup_workflow` method and implementing robust error handling for potential nil values will likely resolve this issue and enhance the application's stability.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `update' for nil:NilClass
+
+ @workflow.update(status: "running")
+ ^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:48:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_162437.md b/exception_reports/exception_report_20240731_162437.md
new file mode 100644
index 0000000..89c51df
--- /dev/null
+++ b/exception_reports/exception_report_20240731_162437.md
@@ -0,0 +1,54 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Undefined Method `update` for Workflow:Class
+
+**Summary:**
+
+The application encountered a fatal error during the execution of a workflow. The error message "undefined method `update` for Workflow:Class" indicates an attempt to call the `update` method on a class object instead of an instance of the Workflow class.
+
+**Technical Details:**
+
+* **Error Class:** Flowbots::CLI
+* **Error Message:** undefined method `update` for Workflow:Class
+* **Root Cause:** The error originates in the `WorkflowOrchestrator.rb` file, specifically on line 48 within the `run_workflow` method. The line `@workflow.update(status: "running")` attempts to update the status of the `@workflow` object. However, it appears that `@workflow` is referencing the Workflow class itself instead of an instance of the class.
+* **Affected Code:**
+ * **WorkflowOrchestrator.rb:** Line 48 (`run_workflow` method)
+ * **text_processing_workflow.rb:** Line 23 (`run` method)
+* **Possible Solution:**
+ Ensure that the `@workflow` variable in `WorkflowOrchestrator` is properly initialized with a Workflow object instance before the `run_workflow` method is called. This likely requires reviewing the `setup_workflow` method within `text_processing_workflow.rb` and ensuring it returns and sets a valid Workflow instance.
+
+**Next Steps:**
+
+1. **Verify Workflow Initialization:** Debug the `setup_workflow` method to confirm a Workflow object is being created and returned correctly.
+2. **Inspect `@workflow` Assignment:** Confirm that the returned Workflow object is properly assigned to the `@workflow` instance variable within the relevant `text_processing_workflow.rb` code.
+3. **Review Related Code:** Examine the `store_input_file_path` method in `text_processing_workflow.rb` as it interacts with the workflow object and could potentially influence its state.
+
+This error highlights a critical issue that prevents workflow execution. Immediate action is required to address the root cause and implement the necessary corrections.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined method `update' for Workflow:Class
+
+ @workflow = Workflow.update(status: "running")
+ ^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:48:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240731_165736.md b/exception_reports/exception_report_20240731_165736.md
new file mode 100644
index 0000000..19880ed
--- /dev/null
+++ b/exception_reports/exception_report_20240731_165736.md
@@ -0,0 +1,71 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Folder Not Found
+
+**Summary:**
+
+The Topic Model Trainer Workflow failed to execute due to an inability to locate the specified input folder. This appears to stem from the `prompt_for_folder` method in `topic_model_trainer_workflow.rb` which retrieves a folder path, but the path provided does not correspond to an existing directory on the system.
+
+**Technical Details:**
+
+* **Class:** `Flowbots::CLI`
+* **Message:** `Folder not found`
+* **Error Type:** `FlowbotError` (likely a custom exception class)
+* **Error Code:** `FOLDERNOTFOUND`
+
+**Backtrace:**
+
+The error originated in the `prompt_for_folder` method of the `TopicModelTrainerWorkflow` class, specifically at line 39 of `topic_model_trainer_workflow.rb`. This method is called during the initialization of the `TopicModelTrainerWorkflow` object.
+
+See attached backtrace for the full error call stack.
+
+**Relevant Code:**
+
+The following code snippet from `topic_model_trainer_workflow.rb` highlights the problematic method:
+
+```ruby
+ def prompt_for_folder
+ get_folder_path = `gum file --directory`.chomp.strip
+ folder_path = File.join(get_folder_path)
+
+ raise FlowbotError.new("Folder not found", "FOLDERNOTFOUND") unless File.directory?(folder_path)
+
+ folder_path
+ end
+```
+
+**Possible Causes and Next Steps:**
+
+* **User Error:** Verify that the folder path provided as input to the workflow is correct and exists on the file system.
+* **Code Logic:** Review the `prompt_for_folder` method to ensure it correctly handles user input and folder path validation. This might involve:
+ * Adding more robust input sanitization.
+ * Implementing error handling to provide more informative messages to the user if an invalid path is provided.
+
+Further investigation into the exact user input and system environment where the error occurred may be necessary.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Folder not found
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:39:in `prompt_for_folder'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:27:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:27:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:29:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240801_072049.md b/exception_reports/exception_report_20240801_072049.md
new file mode 100644
index 0000000..ede4418
--- /dev/null
+++ b/exception_reports/exception_report_20240801_072049.md
@@ -0,0 +1,38 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized class variable @@task_matrix in Jongleur::API
+Did you mean? task_graph
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:58:in `task_matrix'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:98:in `tasks_without_predecessors'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:197:in `start_processes'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:135:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:52:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240801_072425.md b/exception_reports/exception_report_20240801_072425.md
new file mode 100644
index 0000000..5421984
--- /dev/null
+++ b/exception_reports/exception_report_20240801_072425.md
@@ -0,0 +1,38 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized class variable @@task_matrix in Jongleur::API
+Did you mean? task_graph
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:58:in `task_matrix'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:98:in `tasks_without_predecessors'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:197:in `start_processes'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:135:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:65:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240801_074652.md b/exception_reports/exception_report_20240801_074652.md
new file mode 100644
index 0000000..25ac1c2
--- /dev/null
+++ b/exception_reports/exception_report_20240801_074652.md
@@ -0,0 +1,64 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Uninitialized Class Variable in Jongleur Gem
+
+**Summary:** The application encountered an error due to an uninitialized class variable within the Jongleur gem. This occurred while attempting to run the text processing workflow.
+
+**Technical Details:**
+
+* **Error Class:** Flowbots::CLI
+* **Error Message:** uninitialized class variable @@task_matrix in Jongleur::API. Did you mean? task_graph
+* **Gem:** Jongleur (version 1.1.1)
+* **Affected Functionality:** Workflow execution, specifically identifying tasks without predecessors.
+
+**Root Cause:**
+
+The `Jongleur::API` class attempts to access a class variable `@@task_matrix` before it is initialized. This suggests an issue within the Jongleur gem itself, potentially a missing initialization or a typo (the error message suggests 'task_graph' might be the correct variable).
+
+**Impact:**
+
+The error prevents the successful execution of the text processing workflow.
+
+**Code Snippet:**
+
+The error originates in the `Jongleur::API` class on line 58:
+
+```ruby
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:58:in `task_matrix'
+```
+
+**Suggested Next Steps:**
+
+1. **Investigate Jongleur Gem:** Examine the source code of the Jongleur gem, specifically the `Jongleur::API` class, to verify the correct initialization of `@@task_matrix` or to confirm if 'task_graph' is the intended variable.
+2. **Contact Gem Maintainer:** If the issue lies within the Jongleur gem, report the bug to the gem maintainer and consider proposing a fix.
+3. **Explore Workarounds:** Depending on the urgency, explore temporary workarounds while awaiting a permanent solution from the Jongleur gem maintainers.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized class variable @@task_matrix in Jongleur::API
+Did you mean? task_graph
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:58:in `task_matrix'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/implementation.rb:98:in `tasks_without_predecessors'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:197:in `start_processes'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:135:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:66:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240801_074800.md b/exception_reports/exception_report_20240801_074800.md
new file mode 100644
index 0000000..451d8ae
--- /dev/null
+++ b/exception_reports/exception_report_20240801_074800.md
@@ -0,0 +1,59 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Uninitialized Class Variable in WorkflowOrchestrator
+
+**Summary:**
+
+The application encountered a fatal error during the text processing workflow execution due to an uninitialized class variable. The `@@task_graph` class variable was referenced in the `Jongleur::API` module before it was initialized, causing the workflow to crash.
+
+**Technical Details:**
+
+* **Error Class:** Flowbots::CLI
+* **Error Message:** uninitialized class variable @@task_graph in Jongleur::API
+* **Root Cause:** The `Jongleur::API` module attempts to access the `@@task_graph` class variable before it is initialized. This suggests a potential error in the initialization order or a missing initialization step for this variable.
+* **Location:** The error originates in the `WorkflowOrchestrator.rb` file, specifically on line 118 during the `initialize_jongleur_task_matrix` method call within the `run_workflow` method.
+* **Backtrace:** The backtrace points to a series of nested calls originating from the command-line execution of the `process_text` command, which in turn triggers the problematic code in the `WorkflowOrchestrator`.
+* **Impact:** This error prevents the successful execution of text processing workflows.
+
+**Relevant Files:**
+
+* `WorkflowOrchestrator.rb`
+* `text_processing_workflow.rb`
+* `cli.rb`
+* `command.rb`
+* `thor_ext.rb`
+
+**Recommended Action:**
+
+Investigate the `Jongleur::API` module and the `WorkflowOrchestrator` class to determine the correct initialization procedure for the `@@task_graph` class variable. Ensure that this variable is properly initialized before any attempts to access or utilize it within the codebase.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized class variable @@task_graph in Jongleur::API
+
+ Jongleur::API.class_variable_set(:@@task_matrix, Jongleur::API.class_variable_get(:@@task_graph))
+ ^^^^^^^^^^^^^^^^^^^
+Did you mean? task_matrix
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:118:in `class_variable_get'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:118:in `initialize_jongleur_task_matrix'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:65:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:23:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240801_081744.md b/exception_reports/exception_report_20240801_081744.md
new file mode 100644
index 0000000..a47ce6b
--- /dev/null
+++ b/exception_reports/exception_report_20240801_081744.md
@@ -0,0 +1,76 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Undefined Method `current_file_id='
+
+**Summary:**
+
+The TextProcessingWorkflow encountered an error while attempting to assign the `current_file_id` attribute to a Workflow instance. This indicates a potential issue with either the Workflow class definition or the method used to update the attribute.
+
+**Technical Details:**
+
+* **Class:** Flowbots::CLI
+* **Message:** Error processing input file: undefined method `current_file_id=' for #"TextProcessingWorkflow", :status=>"started", :start_time=>"2024-08-01 08:17:29 -0400", :is_batch_workflow=>false, :workflow_type=>"text_processing"}, @_memo={}, @id="13">
+* **Location:** `text_processing_workflow.rb:94:in `rescue in process_input_file'`
+
+**Backtrace:** The backtrace points to the following sequence of calls leading to the error:
+
+1. `process_input_file` method in `text_processing_workflow.rb`
+2. `run` method in `text_processing_workflow.rb`
+3. `process_text` method in `cli.rb`
+4. `run` method in `thor/command.rb`
+5. `invoke_command` method in `thor/invocation.rb`
+6. `dispatch` method in `thor.rb`
+7. `block in start` method in `thor_ext.rb`
+8. `handle_help_switches` method in `thor_ext.rb`
+9. `start` method in `thor_ext.rb`
+10. Main execution block in `exe/flowbots:23`
+
+**Relevant Code:**
+
+The error originates from the `process_input_file` method in the `TextProcessingWorkflow` class. The specific line causing the error is:
+
+```ruby
+@workflow.update(current_file_id: sourcefile.id)
+```
+
+This line attempts to update the `@workflow` object (an instance of the `Workflow` class) by assigning the `sourcefile.id` value to the `current_file_id` attribute. However, the error message indicates that the `Workflow` class does not have a method defined for `current_file_id=`.
+
+**Potential Causes:**
+
+* The `current_file_id` attribute may be misspelled in the `Workflow` class definition.
+* The method to update the `current_file_id` attribute may be named differently or not defined in the `Workflow` class.
+
+**Next Steps:**
+
+1. **Verify Attribute and Method Definitions:** Examine the `Workflow` class definition to confirm the correct spelling and definition of the `current_file_id` attribute and its corresponding update method.
+2. **Inspect Related Code:** Review the code related to the `Workflow` class, particularly any methods involved in updating attributes, to identify any inconsistencies or potential issues.
+3. **Test and Debug:** Implement appropriate debugging techniques to isolate the source of the error and test the proposed solution thoroughly.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Error processing input file: undefined method `current_file_id=' for #"TextProcessingWorkflow", :status=>"started", :start_time=>"2024-08-01 08:17:29 -0400", :is_batch_workflow=>false, :workflow_type=>"text_processing"}, @_memo={}, @id="13">
+
+ atts.each { |att, val| send(:"#{att}=", val) }
+ ^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:94:in `rescue in process_input_file'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:72:in `process_input_file'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:20:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240801_082408.md b/exception_reports/exception_report_20240801_082408.md
new file mode 100644
index 0000000..91517cf
--- /dev/null
+++ b/exception_reports/exception_report_20240801_082408.md
@@ -0,0 +1,68 @@
+# 🤖 FlowBot Exception Report 🤖
+
+
+## Error Report: Flowbots Topic Model Trainer Workflow - Folder Not Found
+
+**Summary:**
+
+The Topic Model Trainer Workflow failed to execute due to an inability to locate the input folder specified for processing. This resulted in a "Folder not found" error being raised by the application.
+
+**Technical Details:**
+
+* **Error Class:** Flowbots::CLI
+* **Error Message:** Folder not found
+* **Root Cause:** The `prompt_for_folder` method in `topic_model_trainer_workflow.rb` was unable to verify the existence of the provided folder path. This suggests the path was either entered incorrectly or does not exist.
+* **Affected Component:** `topic_model_trainer_workflow.rb`
+* **Relevant Code:**
+ ```ruby
+ def prompt_for_folder
+ get_folder_path = `gum file --directory`.chomp.strip
+ folder_path = File.join(get_folder_path)
+
+ raise FlowbotError.new("Folder not found", "FOLDERNOTFOUND") unless File.directory?(folder_path)
+
+ folder_path
+ end
+ ```
+
+**Backtrace:**
+
+The provided backtrace highlights the call sequence leading to the error:
+
+1. `prompt_for_folder` (topic_model_trainer_workflow.rb:39)
+2. `initialize` (topic_model_trainer_workflow.rb:12)
+3. `new` (workflows.rb:27)
+4. `run` (workflows.rb:27)
+5. `workflows` (cli.rb:29)
+ ... and so on.
+
+**Recommended Action:**
+
+* Verify the input folder path provided to the Topic Model Trainer Workflow. Ensure the path is correct and the folder exists.
+* Consider adding input validation to the `prompt_for_folder` method to prevent invalid paths from being passed further into the workflow.
+
+
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Folder not found
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:39:in `prompt_for_folder'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:27:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:27:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:29:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+If you need more information, please check the logs or contact the development team.
diff --git a/exception_reports/exception_report_20240801_123817.md b/exception_reports/exception_report_20240801_123817.md
new file mode 100644
index 0000000..d75c098
--- /dev/null
+++ b/exception_reports/exception_report_20240801_123817.md
@@ -0,0 +1,35 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:129:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:34:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:24:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:30:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:29:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240801_124144.md b/exception_reports/exception_report_20240801_124144.md
new file mode 100644
index 0000000..9f0817f
--- /dev/null
+++ b/exception_reports/exception_report_20240801_124144.md
@@ -0,0 +1,35 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Folder not found
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:39:in `prompt_for_folder'
+/home/b08x/Workspace/flowbots/lib/workflows/topic_model_trainer_workflow.rb:12:in `initialize'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:27:in `new'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:27:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:29:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240801_124201.md b/exception_reports/exception_report_20240801_124201.md
new file mode 100644
index 0000000..d75c098
--- /dev/null
+++ b/exception_reports/exception_report_20240801_124201.md
@@ -0,0 +1,35 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:129:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:34:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:24:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:30:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:29:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240801_124358.md b/exception_reports/exception_report_20240801_124358.md
new file mode 100644
index 0000000..d75c098
--- /dev/null
+++ b/exception_reports/exception_report_20240801_124358.md
@@ -0,0 +1,35 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:129:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:34:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:24:in `run'
+/home/b08x/Workspace/flowbots/lib/workflows.rb:30:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:29:in `workflows'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240801_124942.md b/exception_reports/exception_report_20240801_124942.md
new file mode 100644
index 0000000..8017fce
--- /dev/null
+++ b/exception_reports/exception_report_20240801_124942.md
@@ -0,0 +1,34 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** Not all the tasks in the Task Graph are implemented as WorkerTask classes
+
+### Backtrace
+
+```
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/jongleur-1.1.1/lib/jongleur/api.rb:129:in `run'
+/home/b08x/Workspace/flowbots/lib/components/WorkflowOrchestrator.rb:34:in `run_workflow'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:24:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240801_125243.md b/exception_reports/exception_report_20240801_125243.md
new file mode 100644
index 0000000..2f8b5fc
--- /dev/null
+++ b/exception_reports/exception_report_20240801_125243.md
@@ -0,0 +1,36 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** uninitialized constant Flowbots::TokenizeSegmentsTask
+
+ Flowbots::TokenizeSegmentsTask,
+ ^^^^^^^^^^^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:75:in `define_tasks'
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:20:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/exception_reports/exception_report_20240801_131009.md b/exception_reports/exception_report_20240801_131009.md
new file mode 100644
index 0000000..a8382e9
--- /dev/null
+++ b/exception_reports/exception_report_20240801_131009.md
@@ -0,0 +1,35 @@
+# 🚨 FlowBot Exception Report (Fallback) 🚨
+
+Oops! We encountered an exception, and we're having trouble generating a detailed report right now. Here's what we know:
+
+## Exception Details
+
+- **Class:** Flowbots::CLI
+- **Message:** undefined local variable or method `ensure_indices' for #, @logger=#, @formatter=nil, @logdev=#, @binmode=false, @mon_data=#, @mon_data_owner_object_id=1480>, @level_override={}>>
+
+ ensure_indices
+ ^^^^^^^^^^^^^^
+
+### Backtrace
+
+```
+/home/b08x/Workspace/flowbots/lib/workflows/text_processing_workflow.rb:17:in `run'
+/home/b08x/Workspace/flowbots/lib/cli.rb:76:in `process_text'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
+/home/b08x/.asdf/installs/ruby/3.1.4/lib/ruby/gems/3.1.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:34:in `block in start'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:43:in `handle_help_switches'
+/home/b08x/Workspace/flowbots/lib/thor_ext.rb:33:in `start'
+./exe/flowbots:23:in `'
+```
+
+We're working on resolving this issue. In the meantime, you might want to:
+
+1. Check your internet connection
+2. Verify that all required services are running
+3. Try your request again in a few minutes
+
+If the problem persists, please contact the development team with the above information.
+
+We apologize for any inconvenience!
diff --git a/final_report.md b/final_report.md
index 3d0a69b..50d02e7 100644
--- a/final_report.md
+++ b/final_report.md
@@ -1,99 +1,99 @@
-# Final Report: Evaluating Prompt Compression Techniques
+# Final Report: Evaluating Prompt Compression Techniques
## Table of Contents
1. Introduction
2. Initial Compression Process
3. Test Design
-4. Evaluation Methodology
+4. Evaluation Methodology
5. Assessment and Recommendations
6. Conclusion
## 1. Introduction
-This report presents a comprehensive overview of the process undertaken to analyze and evaluate the effectiveness of prompt compression techniques. The goal of this project is to enhance the clarity and effectiveness of prompts used in generating responses from AI assistants or models while maintaining the integrity of the information conveyed.
+This report presents a comprehensive overview of the process undertaken to analyze and evaluate the effectiveness of prompt compression techniques. The goal of this project is to enhance the clarity and effectiveness of prompts used in generating responses from AI assistants or models while maintaining the integrity of the information conveyed.
## 2. Initial Compression Process
-The initial step involved compressing a sample prompt, enhancing its clarity and conciseness while retaining the original context. Here's a breakdown of the analysis and optimization process:
+The initial step involved compressing a sample prompt, enhancing its clarity and conciseness while retaining the original context. Here's a breakdown of the analysis and optimization process:
**Step 1: Discourse Semantics**
-- "It" refers to the visual representation, connecting the current statement to the preceding topic, establishing coherence.
+- "It" refers to the visual representation, connecting the current statement to the preceding topic, establishing coherence.
-**Step 2: Pragmatic Analysis**
-- "Also" indicates additional benefits, suggesting multiple advantages of the visual representation.
-- "Can be very helpful" implies a potential outcome, softening the statement and indicating a possibility of aid.
-- "For understanding" and "for explaining" illustrate the dual purpose of aiding internal comprehension and external communication.
+**Step 2: Pragmatic Analysis**
+- "Also" indicates additional benefits, suggesting multiple advantages of the visual representation.
+- "Can be very helpful" implies a potential outcome, softening the statement and indicating a possibility of aid.
+- "For understanding" and "for explaining" illustrate the dual purpose of aiding internal comprehension and external communication.
**Step 3: Functional Grammar**
-- The sentence has a declarative function, presenting benefits of the visual representation.
-- The subject is "visual representation," with the predicate including the verbs "demonstrates" and "flows."
-- The complement includes content clauses specifying how it illustrates data flow and sequential workflow nature.
+- The sentence has a declarative function, presenting benefits of the visual representation.
+- The subject is "visual representation," with the predicate including the verbs "demonstrates" and "flows."
+- The complement includes content clauses specifying how it illustrates data flow and sequential workflow nature.
**Step 4: Lexicogrammatical Analysis**
-- "Sequential nature" denotes the inherent order and progression of the workflow.
-- "Data flows" signifies the movement between different stages of the process.
-- "Visual representation" is a noun phrase denoting the graphical depiction of the system.
+- "Sequential nature" denotes the inherent order and progression of the workflow.
+- "Data flows" signifies the movement between different stages of the process.
+- "Visual representation" is a noun phrase denoting the graphical depiction of the system.
-**Optimized Version**:
+**Optimized Version**:
> The visual representation serves a dual purpose: elucidating the inherent sequential nature of our workflow and providing insights into the flow of data through distinct process stages. This graphical depiction facilitates a shared understanding of the system's architecture and enables effective communication of complex ideas to stakeholders.
## 3. Test Design
-To evaluate the effectiveness of the condensed prompt, three main criteria were employed:
+To evaluate the effectiveness of the condensed prompt, three main criteria were employed:
-**Clarity**:
-- The optimized version provides a clear and explicit explanation of the benefits, eliminating ambiguity.
-- Phrases like "elucidating the inherent sequential nature" and "providing insights into the flow of data" offer precise understanding, making it easily comprehensible to the target audience.
+**Clarity**:
+- The optimized version provides a clear and explicit explanation of the benefits, eliminating ambiguity.
+- Phrases like "elucidating the inherent sequential nature" and "providing insights into the flow of data" offer precise understanding, making it easily comprehensible to the target audience.
-**Completeness**:
-- The optimized version retains all crucial information, offering a detailed yet concise explanation.
-- Phrases like "distinct process stages" and "shared understanding" ensure the full scope of the visual representation's utility is conveyed.
+**Completeness**:
+- The optimized version retains all crucial information, offering a detailed yet concise explanation.
+- Phrases like "distinct process stages" and "shared understanding" ensure the full scope of the visual representation's utility is conveyed.
-**Eliciting Desired Responses**:
-- The optimized version is designed to elicit more focused and accurate responses from the AI assistant.
-- Additional context and clarity provide a clear framework for the AI to generate contextually appropriate responses.
+**Eliciting Desired Responses**:
+- The optimized version is designed to elicit more focused and accurate responses from the AI assistant.
+- Additional context and clarity provide a clear framework for the AI to generate contextually appropriate responses.
-## 4. Evaluation Methodology
+## 4. Evaluation Methodology
-A range of statistical and qualitative analysis techniques can be applied to compare the performance of condensed prompts against control prompts:
+A range of statistical and qualitative analysis techniques can be applied to compare the performance of condensed prompts against control prompts:
-**Statistical Analysis Techniques**:
-- Frequency Analysis: Examine vocabulary and terminology differences to identify biases or shifts.
-- Performance Metrics: Measure accuracy, precision, recall, and F1 score to quantitatively assess effectiveness.
-- Hypothesis Testing: Formulate hypotheses and conduct statistical tests to evaluate performance differences.
-- Regression Analysis: Explore the relationship between prompt length and performance, considering linear, logistic, polynomial, or piecewise regression.
+**Statistical Analysis Techniques**:
+- Frequency Analysis: Examine vocabulary and terminology differences to identify biases or shifts.
+- Performance Metrics: Measure accuracy, precision, recall, and F1 score to quantitatively assess effectiveness.
+- Hypothesis Testing: Formulate hypotheses and conduct statistical tests to evaluate performance differences.
+- Regression Analysis: Explore the relationship between prompt length and performance, considering linear, logistic, polynomial, or piecewise regression.
-**Qualitative Analysis Techniques**:
-- Content Analysis: Identify similarities and differences in wording, tone, and argumentation.
-- Thematic Analysis: Discover recurring themes or patterns to understand framing and narrative structure.
-- Discourse Analysis: Examine language and discourse strategies to explore interpretation and response.
-- Heuristic Evaluation: Assess clarity and conciseness using established heuristics.
+**Qualitative Analysis Techniques**:
+- Content Analysis: Identify similarities and differences in wording, tone, and argumentation.
+- Thematic Analysis: Discover recurring themes or patterns to understand framing and narrative structure.
+- Discourse Analysis: Examine language and discourse strategies to explore interpretation and response.
+- Heuristic Evaluation: Assess clarity and conciseness using established heuristics.
## 5. Assessment and Recommendations
-The proposed evaluation plan is comprehensive and well-structured. Here's a critical evaluation and additional considerations:
+The proposed evaluation plan is comprehensive and well-structured. Here's a critical evaluation and additional considerations:
-**Statistical Analysis Techniques**:
-- Frequency Analysis: Consider context alongside frequency to capture nuances.
-- Performance Metrics: Define evaluation metrics and success thresholds for transparency.
-- Hypothesis Testing: Explore A/B or multivariate testing with sufficient sample sizes.
-- Regression Analysis: Investigate linear, non-linear, or piecewise relationships.
+**Statistical Analysis Techniques**:
+- Frequency Analysis: Consider context alongside frequency to capture nuances.
+- Performance Metrics: Define evaluation metrics and success thresholds for transparency.
+- Hypothesis Testing: Explore A/B or multivariate testing with sufficient sample sizes.
+- Regression Analysis: Investigate linear, non-linear, or piecewise relationships.
-**Qualitative Analysis Techniques**:
-- Content Analysis: Use coding schemes for systematic analysis.
-- Thematic Analysis: Identify themes for insight into narrative structure.
-- Discourse Analysis: Explore tone, register, and persuasive techniques.
-- Heuristic Evaluation: Ensure adaptation of heuristics to prompt design context.
+**Qualitative Analysis Techniques**:
+- Content Analysis: Use coding schemes for systematic analysis.
+- Thematic Analysis: Identify themes for insight into narrative structure.
+- Discourse Analysis: Explore tone, register, and persuasive techniques.
+- Heuristic Evaluation: Ensure adaptation of heuristics to prompt design context.
-**Additional Considerations**:
-- Mixed Methods: Triangulate statistical and qualitative data for deeper insights.
-- Contextual Factors: Consider target audience, cultural sensitivities, and domain-specific constraints.
-- Iterative Refinement: Use feedback loops for continuous improvement.
-- Ethical Considerations: Address bias, fairness, privacy, and autonomy in evaluation.
+**Additional Considerations**:
+- Mixed Methods: Triangulate statistical and qualitative data for deeper insights.
+- Contextual Factors: Consider target audience, cultural sensitivities, and domain-specific constraints.
+- Iterative Refinement: Use feedback loops for continuous improvement.
+- Ethical Considerations: Address bias, fairness, privacy, and autonomy in evaluation.
## 6. Conclusion
-This report outlines the process of compressing and evaluating prompts to enhance their effectiveness. The optimized version demonstrates improved clarity, completeness, and potential for eliciting desired responses. The comprehensive evaluation plan, coupled with critical insights and considerations, provides a robust framework for analyzing condensed prompts. This project underscores the value of careful prompt engineering, highlighting the potential for enhanced AI performance and output quality.
+This report outlines the process of compressing and evaluating prompts to enhance their effectiveness. The optimized version demonstrates improved clarity, completeness, and potential for eliciting desired responses. The comprehensive evaluation plan, coupled with critical insights and considerations, provides a robust framework for analyzing condensed prompts. This project underscores the value of careful prompt engineering, highlighting the potential for enhanced AI performance and output quality.
By employing these techniques and considerations, we can continue to refine and improve the effectiveness of prompts, ultimately enhancing the human-AI interaction experience.
diff --git a/lib/components/task_helper.rb b/lib/components/task_helper.rb
new file mode 100644
index 0000000..f4fecec
--- /dev/null
+++ b/lib/components/task_helper.rb
@@ -0,0 +1,41 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ module TaskHelper
+ def self.included(base)
+ base.extend(ClassMethods)
+ end
+
+ module ClassMethods
+ def task_name
+ self.name.split('::').last
+ end
+ end
+
+ def initialize(*args)
+ super
+ @logger = Logging.logger[self.class.name]
+ end
+
+ def execute
+ @logger.info("Starting execution of #{self.class.task_name}")
+ result = nil
+ begin
+ result = yield if block_given?
+ @logger.info("Successfully completed execution of #{self.class.task_name}")
+ rescue StandardError => e
+ handle_error(e)
+ end
+ result
+ end
+
+ private
+
+ def handle_error(error)
+ @logger.error("Error in #{self.class.task_name}: #{error.message}")
+ @logger.error(error.backtrace.join("\n"))
+ raise
+ end
+ end
+end
diff --git a/lib/ohm/DocumentProcessing.rb b/lib/ohm/DocumentProcessing.rb
new file mode 100644
index 0000000..d1e6583
--- /dev/null
+++ b/lib/ohm/DocumentProcessing.rb
@@ -0,0 +1,97 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require "ohm"
+require "ohm/contrib"
+
+#accessions
+
+class Project < Ohm::Model
+ attribute :name
+ collection :document_collections, :DocumentCollection
+ unique :name
+ index :name
+end
+
+class DocumentCollection < Ohm::Model
+ attribute :name
+ attribute :last_updated
+ collection :categories, :DocumentCategory
+ collection :documents, :Document
+ collection :document_links, :DocumentLink
+ collection :storage_locations, :StorageLocation
+ collection :document_components, :DocumentComponent
+ reference :project, :Project
+ index :name
+end
+
+class DocumentCategory < Ohm::Model
+ attribute :name
+ attribute :status
+ attribute :total_word_count
+ attribute :total_document_count
+ reference :document_collection, :DocumentCollection
+ collection :documents, :Document
+ unique :name
+ index :name
+end
+
+class Document < Ohm::Model
+ include Ohm::DataTypes
+
+ attribute :name
+ attribute :status
+ attribute :word_count
+ attribute :file_size
+ attribute :file_type
+ attribute :last_modified
+ attribute :content_hash
+ attribute :metadata, Type::Hash
+ attribute :tags, Type::Array
+ attribute :processing_history, Type::Array
+ reference :document_collection, :DocumentCollection
+ reference :category, :DocumentCategory
+ collection :components, :DocumentComponent
+ list :storage_locations, :StorageLocation
+ list :document_links, :DocumentLink
+ unique :content_hash
+ index :name
+ index :file_type
+ index :status
+end
+
+class DocumentLink < Ohm::Model
+ attribute :name
+ attribute :link_type
+ collection :documents, :Document
+ reference :document_collection, :DocumentCollection
+ index :name
+ index :link_type
+end
+
+class StorageLocation < Ohm::Model
+ attribute :name
+ attribute :path
+ attribute :total_capacity
+ attribute :used_capacity
+ attribute :free_capacity
+ attribute :access_status
+ list :documents, :Document
+ reference :document_collection, :DocumentCollection
+ unique :path
+ index :name
+end
+
+class DocumentComponent < Ohm::Model
+ attribute :name
+ attribute :component_type
+ attribute :content
+ attribute :word_count
+ attribute :status
+ attribute :processing_status
+ reference :document, :Document
+ reference :document_collection, :DocumentCollection
+ index :name
+ index :component_type
+ index :status
+end
diff --git a/lib/tasks/base_task.rb b/lib/tasks/base_task.rb
new file mode 100644
index 0000000..ade7337
--- /dev/null
+++ b/lib/tasks/base_task.rb
@@ -0,0 +1,27 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class BaseTask < Jongleur::WorkerTask
+ attr_reader :ohm_task
+
+ def initialize(workflow, sourcefile)
+ @ohm_task = OhmTask.create(workflow, sourcefile)
+ end
+
+ def execute
+ @ohm_task.update_status("running")
+ begin
+ result = perform
+ @ohm_task.update_status("completed", result)
+ rescue StandardError => e
+ @ohm_task.update_status("failed", e.message)
+ raise
+ end
+ end
+
+ def perform
+ raise NotImplementedError, "#{self.class.name}#perform must be implemented in subclass"
+ end
+ end
+end
diff --git a/lib/tasks/batch_completion_task.rb b/lib/tasks/batch_completion_task.rb
new file mode 100644
index 0000000..936f1d7
--- /dev/null
+++ b/lib/tasks/batch_completion_task.rb
@@ -0,0 +1,35 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+class BatchCompletionTask < Jongleur::WorkerTask
+ def execute
+ workflow_id = Ohm.redis.get("current_workflow_id")
+ workflow = Workflow[workflow_id]
+
+ if workflow.is_batch_workflow
+ complete_batch(workflow)
+ else
+ complete_single_file_workflow(workflow)
+ end
+ end
+
+ private
+
+ def complete_batch(workflow)
+ current_batch = workflow.batches.find(number: workflow.current_batch_number).first
+ current_batch.update(status: "completed")
+
+ if workflow.current_batch_number < workflow.batches.count
+ workflow.update(current_batch_number: workflow.current_batch_number + 1)
+ logger.info "Completed Batch #{current_batch.number}, moving to next batch"
+ else
+ workflow.update(status: "completed", end_time: Time.now.to_s)
+ logger.info "All batches completed. Workflow finished."
+ end
+ end
+
+ def complete_single_file_workflow(workflow)
+ workflow.update(status: "completed", end_time: Time.now.to_s)
+ logger.info "Single file workflow completed. File: #{workflow.sourcefiles.first.path}"
+ end
+end
diff --git a/lib/tasks/preprocess_text_file_task.og b/lib/tasks/preprocess_text_file_task.og
new file mode 100644
index 0000000..ca2eac9
--- /dev/null
+++ b/lib/tasks/preprocess_text_file_task.og
@@ -0,0 +1,32 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+class PreprocessTextFileTask < Jongleur::WorkerTask
+ def perform
+ grammar_processor = Flowbots::GrammarProcessor.new('markdown_yaml')
+ parse_result = grammar_processor.parse(@sourcefile.content)
+
+ if parse_result
+ @sourcefile.update(
+ preprocessed_content: parse_result[:markdown_content],
+ metadata: extract_metadata(parse_result[:yaml_front_matter])
+ )
+ update(result: "Successfully preprocessed file: #{@sourcefile.path}")
+ else
+ update(result: "Failed to parse the document with custom grammar: #{@sourcefile.path}")
+ @sourcefile.update(
+ preprocessed_content: @sourcefile.content,
+ metadata: {}
+ )
+ end
+ end
+
+ private
+
+ def extract_metadata(yaml_front_matter)
+ YAML.safe_load(yaml_front_matter)
+ rescue StandardError => e
+ logger.error "Error parsing YAML front matter: #{e.message}"
+ {}
+ end
+end
diff --git a/lib/tasks/preprocess_text_file_task.rb b/lib/tasks/preprocess_text_file_task.rb
new file mode 100644
index 0000000..c6bae32
--- /dev/null
+++ b/lib/tasks/preprocess_text_file_task.rb
@@ -0,0 +1,56 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+class PreprocessTextFileTask < Task
+ include InputRetrieval
+
+ def execute
+ logger.info "Starting PreprocessTextFileTask"
+
+ @textfile = retrieve_input
+
+ begin
+ grammar_processor = Flowbots::GrammarProcessor.new("markdown_yaml")
+ parse_result = grammar_processor.parse(@textfile.content)
+ logger.debug "Parse result: #{parse_result.inspect}"
+
+ if parse_result
+ sourcefile.update(
+ preprocessed_content: parse_result[:markdown_content],
+ metadata: extract_metadata(parse_result[:yaml_front_matter])
+ )
+ "Successfully preprocessed file: #{sourcefile.path}"
+ else
+ logger.error "Failed to parse the document with custom grammar"
+ @textfile.update(preprocessed_content: "", metadata: {})
+ end
+ rescue StandardError => e
+ logger.error "Error in grammar processing: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ UI.exception("#{e.message}")
+ @textfile.update(preprocessed_content: "", metadata: {})
+ end
+
+ private
+
+ private
+
+ def retrieve_input
+ retrieve_textfile
+ end
+
+ def extract_metadata(yaml_front_matter)
+ return {} if yaml_front_matter.empty?
+
+ YAML.safe_load(yaml_front_matter)
+ rescue StandardError => e
+ logger.error "Error parsing YAML front matter: #{e.message}"
+ {}
+ end
+
+ def store_preprocessed_data(content, metadata)
+ @textfile.update(preprocessed_content: content, metadata:)
+ logger.debug "Stored preprocessed content (first 100 chars): #{content[0..100]}"
+ logger.debug "Stored metadata: #{metadata.inspect}"
+ end
+end
diff --git a/lib/tasks/workflow_initializer_task.rb b/lib/tasks/workflow_initializer_task.rb
new file mode 100644
index 0000000..36c20b6
--- /dev/null
+++ b/lib/tasks/workflow_initializer_task.rb
@@ -0,0 +1,65 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+class WorkflowInitializerTask < Jongleur::WorkerTask
+ BATCH_SIZE = 10
+
+ def execute
+ workflow_type = Ohm.redis.get("workflow_type")
+
+ if workflow_type == "topic_model_trainer"
+ initialize_batch_workflow
+ else
+ initialize_single_file_workflow
+ end
+ end
+
+ private
+
+ def initialize_batch_workflow
+ input_folder = Ohm.redis.get("input_folder_path")
+ all_file_paths = Dir.glob(File.join(input_folder, "**{,/*/**}/*.{md,markdown}")).sort
+
+ workflow = Workflow.create(
+ name: "TopicModelTrainerWorkflow",
+ status: "started",
+ start_time: Time.now.to_s,
+ current_batch_number: 1,
+ is_batch_workflow: true
+ )
+
+ create_batches(workflow, all_file_paths)
+
+ Ohm.redis.set("current_workflow_id", workflow.id)
+ logger.info "Initialized Batch Workflow with ID: #{workflow.id}, Total Batches: #{workflow.batches.count}"
+ end
+
+ def initialize_single_file_workflow
+ input_file_path = Ohm.redis.get("input_file_path")
+
+ workflow = Workflow.create(
+ name: "TextProcessingWorkflow",
+ status: "started",
+ start_time: Time.now.to_s,
+ is_batch_workflow: false
+ )
+
+ sourcefile = Sourcefile.find_or_create_by_path(input_file_path, workflow: workflow)
+ workflow.sourcefiles.add(sourcefile)
+
+ Ohm.redis.set("current_workflow_id", workflow.id)
+ Ohm.redis.set("current_file_id", sourcefile.id)
+ logger.info "Initialized Single File Workflow with ID: #{workflow.id}, File: #{sourcefile.path}"
+ end
+
+ def create_batches(workflow, file_paths)
+ file_paths.each_slice(BATCH_SIZE).with_index(1) do |batch_files, batch_number|
+ batch = Batch.create(number: batch_number, status: "pending", workflow: workflow)
+ batch_files.each do |file_path|
+ sourcefile = Sourcefile.find_or_create_by_path(file_path, workflow: workflow, batch: batch)
+ batch.sourcefiles.add(sourcefile)
+ end
+ workflow.batches.add(batch)
+ end
+ end
+end
diff --git a/lib/utils/errors.rb b/lib/utils/errors.rb
new file mode 100644
index 0000000..3ee38fe
--- /dev/null
+++ b/lib/utils/errors.rb
@@ -0,0 +1,13 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class FlowbotError < StandardError
+ attr_reader :code
+
+ def initialize(message, code)
+ super(message)
+ @code = code
+ end
+ end
+end
diff --git a/test/topic_model_trainer_workflowtest.rb b/test/topic_model_trainer_workflowtest.rb
new file mode 100644
index 0000000..9823ed8
--- /dev/null
+++ b/test/topic_model_trainer_workflowtest.rb
@@ -0,0 +1,124 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+module Flowbots
+ class TopicModelTrainerWorkflowtest
+ BATCH_SIZE = 10
+
+ attr_accessor :orchestrator
+ attr_reader :input_folder_path
+
+ def initialize(input_folder_path=nil)
+ @input_folder_path = input_folder_path || prompt_for_folder
+ @orchestrator = WorkflowOrchestrator.new
+ end
+
+ def run
+ UI.say(:ok, "Setting Up Topic Model Trainer Workflow")
+ logger.info "Setting Up Topic Model Trainer Workflow"
+
+ begin
+ setup_workflow
+ flush_redis_cache
+ process_files
+ UI.say(:ok, "Topic Model Trainer Workflow completed")
+ logger.info "Topic Model Trainer Workflow completed"
+ rescue StandardError => e
+ UI.say(:error, "Error in Topic Model Trainer Workflow: #{e.message}")
+ logger.error "Error in Topic Model Trainer Workflow: #{e.message}"
+ logger.error e.backtrace.join("\n")
+ end
+ end
+
+ private
+
+ def prompt_for_folder
+ get_folder_path = `gum file --directory`.chomp.strip
+ folder_path = File.join(get_folder_path)
+
+ raise FlowbotError.new("Folder not found", "FOLDERNOTFOUND") unless File.directory?(folder_path)
+
+ folder_path
+ end
+
+ def setup_workflow
+ workflow_graph = {
+ LoadTextFilesTask: [:PreprocessTextFileTask],
+ PreprocessTextFileTask: []
+ }
+
+ @orchestrator.define_workflow(workflow_graph)
+ logger.debug "Workflow setup completed"
+ end
+
+ def flush_redis_cache
+ redis = Jongleur::WorkerTask.class_variable_get(:@@redis)
+ redis.flushdb
+ logger.info "Redis cache flushed"
+ end
+
+ def process_files
+ all_file_paths = Dir.glob(File.join(@input_folder_path, "**{,/*/**}/*.{md,markdown}")).sort
+ total_files = all_file_paths.count
+ num_batches = (total_files.to_f / BATCH_SIZE).ceil
+
+ num_batches.times do |i|
+ batch_start = i * BATCH_SIZE
+ batch_files = all_file_paths[batch_start, BATCH_SIZE]
+
+ UI.say(:ok, "Processing batch #{i + 1} of #{num_batches}")
+ logger.info "Processing batch #{i + 1} of #{num_batches}"
+
+ process_batch(batch_files)
+ end
+
+ train_topic_model
+ end
+
+ def process_batch(batch_files)
+ batch_files.each do |file_path|
+ Jongleur::WorkerTask.class_variable_get(:@@redis).set("current_file_path", file_path)
+ @orchestrator.run_workflow
+ end
+ end
+
+ def train_topic_model
+ all_filtered_segments = JSON.parse(Jongleur::WorkerTask.class_variable_get(:@@redis).get("all_filtered_segments") || "[]")
+
+ if all_filtered_segments.empty?
+ logger.warn "No filtered segments available for topic modeling"
+ UI.say(:warn, "No filtered segments available for topic modeling")
+ return
+ end
+
+ cleaned_segments = clean_segments_for_modeling(all_filtered_segments)
+
+ if cleaned_segments.empty?
+ logger.warn "No cleaned segments available for topic modeling after filtering"
+ UI.say(:warn, "No cleaned segments available for topic modeling after filtering")
+ return
+ end
+
+ logger.info "Cleaned segments for topic modeling. Original count: #{all_filtered_segments.length}, Cleaned count: #{cleaned_segments.length}"
+
+ topic_processor = Flowbots::TopicModelProcessor.instance
+ topic_processor.train_model(cleaned_segments)
+ logger.info "Topic model training completed for all files"
+ UI.say(:ok, "Topic model training completed for all files")
+ end
+
+ private
+
+ def clean_segments_for_modeling(segments)
+ segments.reject do |segment|
+ segment.include?("tags") || segment.include?("title") || segment.include?("toc")
+ end.map do |segment|
+ segment.reject do |word|
+ word.to_s.length < 3 || # Remove very short words
+ word.to_s.match?(/^\d+$/) || # Remove purely numeric words
+ word.to_s.match?(/^[[:punct:]]+$/) # Remove punctuation-only words
+ end
+ end.reject(&:empty?)
+ end
+ end
+end