* feat(readme): update experimental fallback handler description for clarity and add recommendation for OPENAI_API_KEY
feat(main.py): refactor status display logic into a separate build_status function for better readability and maintainability
feat(fallback_handler.py): add debug logging for fallback handler model selection process
chore(todo.md): create a new TODO file to track future improvements and tasks
* chore(todo.md): remove outdated TODO list file to clean up the repository
* feat(main.py): add wrench emoji to FallbackHandler status message for better visibility
fix(ciayn_agent.py): update fallback tool error messages to use FallbackToolExecutionError for better error handling
fix(config.py): remove unnecessary blank line to maintain code style consistency
fix(fallback_handler.py): raise FallbackToolExecutionError for better error clarity when tools are not found
fix(llm.py): set default temperature to 0.7 and notify user when not provided for models that support it
test(test_llm.py): update tests to check for default temperature behavior and improve error messages for unsupported providers
feat(ciayn_agent.py): pass config to CiaynAgent for improved functionality
fix(ciayn_agent.py): handle tool execution errors more gracefully with msg_list
feat(fallback_handler.py): enhance handle_failure method to utilize msg_list for better context
feat(fallback_handler.py): implement init_msg_list to manage message history effectively
test(test_fallback_handler.py): add unit tests for init_msg_list to ensure correct behavior
fix(fallback_handler.py): update tool invocation logic to handle missing tools and raise appropriate exceptions for better error handling
test(tests): add comprehensive tests for fallback handler functionality, including loading models, extracting tool names, and invoking tools to ensure robustness and reliability
refactor(fallback_handler.py): improve error handling by raising a specific exception when all fallback models fail
test(fallback_handler.py): update tests to reflect changes in the fallback handler's error handling and initialization
fix(test_llm.py): update error messages in tests for unsupported providers to be more descriptive and accurate
fix(agent_utils.py): set default value of fallback_handler to None in run_agent_with_retry
chore(ciayn_agent.py): comment out debug log for generated code to reduce verbosity
fix(fallback_handler.py): change fallback_enabled config key to experimental_fallback_handler for better clarity
refactor(test_ciayn_agent.py): update invoke method in DummyModel to return AIMessage instead of a custom Response class
test(test_ciayn_agent.py): comment out test_retry_logic_with_failure_recovery for future implementation and focus on existing tests
fix(ciayn_agent.py): reset fallback handler after executing tool to ensure proper state management
style(fallback_handler.py): format method signature for better readability
refactor(agent_utils.py): extract fallback handling logic from run_agent_with_retry to improve code readability
fix(ciayn_agent.py): update stream method parameter name for consistency
chore(agents_alias.py): reorder import statements to follow best practices
style(fallback_handler.py): reorder exception imports for consistency and clarity
fix(agent_utils.py): handle fallback responses more effectively and ensure fallback handler is optional
refactor(ciayn_agent.py): streamline prompt building and extract tool call logic into a separate method
chore(ciayn_agent.py): remove commented-out code and improve fallback response handling
chore(exceptions.py): remove unused CiaynToolExecutionError class to clean up code
chore(fallback_handler.py): simplify fallback response handling logic
chore(logging_config.py): add debug print statement for logging handler usage
chore(prompts.py): update prompts for clarity and maintainability
refactor(agent_utils.py): update _run_agent_stream to utilize agent type for output printing
fix(ciayn_agent.py): modify _execute_tool to handle BaseMessage and improve error reporting
feat(ciayn_agent.py): add extract_tool_name method to identify tool names from code
chore(agents_alias.py): create agents_alias module to avoid circular imports and define RAgents type
refactor(config.py): remove direct import of CiaynAgent and update RAgents definition
fix(output.py): update print_agent_output to accept agent type for better error handling
fix(exceptions.py): add CiaynToolExecutionError for distinguishing tool execution failures
refactor(fallback_handler.py): improve logging and error handling in fallback mechanism
feat(fallback_handler.py): enhance fallback handling by allowing RAgents type and improving error handling
fix(config.py): update RAgents type definition to include both CompiledGraph and CiaynAgent for better type safety
refactor(fallback_handler.py): streamline fallback model invocation and response handling for improved readability and functionality
refactor(fallback_handler.py): change failed_messages from set to list for ordered message handling
refactor(fallback_handler.py): update handle_failure method to accept ToolExecutionError type for better type safety
refactor(fallback_handler.py): implement _reset_on_new_failure method to encapsulate failure reset logic
feat(fallback_handler.py): add construct_prompt_msg_list method to create structured message list for fallback tool calls
feat(fallback_handler.py): enhance handle_failure method to extract tool name from ToolExecutionError and improve fallback logic
fix(exceptions.py): update ToolExecutionError to include base_message for better error context
feat(output.py): add base_message to ToolExecutionError for improved debugging
chore(tool_configs.py): update get_all_tools function to specify return type
style(logging_config.py): reorder imports for consistency
test(tests): add tests for new error handling and fallback logic in agent_utils and fallback_handler
refactor(fallback_handler.py): extract tool call extraction logic into a separate method for better organization and maintainability
refactor(fallback_handler.py): introduce _parse_tool_arguments method to handle argument parsing, improving code clarity and reusability
refactor(fallback): streamline fallback model selection and invocation process for improved maintainability
fix(config): reduce maximum tool failures from 3 to 2 to tighten error handling thresholds
style(console): improve error message formatting and logging for better clarity and debugging
chore(main): remove redundant fallback tool model handling from main function to simplify configuration management
feat(agent_utils.py): add new helper functions for handling API errors and managing interrupt signals
fix(agent_utils.py): improve error handling in tool execution and retry logic
feat(fallback_handler.py): enhance fallback handling by binding tools correctly during retries
test(tests): add unit tests for new helper functions and refactored logic in agent_utils.py
to configure retry behavior for fallback models
refactor(fallback_handler.py): enhance fallback handling logic to
support both prompt-based and function-calling fallbacks with retries
fix(fallback_handler.py): update fallback model selection to return
dictionaries for better structure and access to model properties
refactor(ciayn_agent): integrate FallbackHandler into CiaynAgent for improved failure handling
fix(agent_utils): add missing newline for better readability in run_agent_with_retry function
test(fallback_handler): add unit tests for FallbackHandler to ensure correct failure handling and fallback logic