- Introduced a new method in LlmController to generate descriptive messages for tool execution results, improving clarity in progress updates.
- Updated AiChat component to display progress messages in chat history, enhancing user experience during tool execution.
- Refactored progress indicator styling for better visual feedback and readability.
- Adjusted backtest query handling in LlmController to optimize iteration counts based on query type, improving performance and user interaction.
- Enhanced documentation for backtest tools in BacktestMcpTools to clarify usage and parameters, ensuring better understanding for developers.
- Introduced state management for message history, allowing users to navigate through previous messages using the up and down arrow keys.
- Updated input handling to reset history index when the user types a new message, improving user experience.
- Changed the key event handler from 'onKeyPress' to 'onKeyDown' for better control over key events during message input.
- Adjusted appsettings.json to simplify the default model configuration for Gemini integration.
- Added a new endpoint in TradingController to revoke all token approvals for a specified Privy wallet address, with permission checks for user access.
- Implemented the revokeAllApprovals method in TradingService to handle the revocation logic, including error handling and logging.
- Updated IWeb3ProxyService and Web3ProxyService to support revocation requests to the Privy service.
- Introduced a new PrivyRevokeAllApprovalsResponse type for structured responses from the revocation process.
- Enhanced the UI in account tables to allow users to revoke approvals directly from the interface, providing feedback on success or failure.
- Updated appsettings.json to change the default model for Gemini integration.
- Changed the confidence level parameter in AddSignal method calls from Medium to None for both long and short signals in SuperTrendIndicatorBase class.
- This adjustment aims to simplify signal generation logic and may impact trading strategy evaluations.
- Introduced a new type definition for Privy balance response to enhance type safety and clarity in the getWalletBalanceImpl function.
- Updated the makePrivyRequest call to utilize the new PrivyBalanceResponse type, streamlining the handling of balance data.
- This change aims to improve code maintainability and reduce potential errors during balance retrieval processes.
- Added an AbortSignal parameter to the makePrivyRequest function to support request cancellation.
- Improved error handling in makePrivyRequest to preserve detailed error information for better debugging.
- Implemented a fallback mechanism in getWalletBalanceImpl to retrieve wallet balances via direct RPC calls when Privy API fails (e.g., 503 errors).
- Introduced a new getWalletBalanceViaRpc function to handle RPC balance retrieval, including detailed logging and error management.
- Enhanced overall error messaging to provide clearer feedback during balance retrieval processes.
- Increased delay between iterations in LlmController from 500ms to 2000ms to better respect rate limits.
- Added retry logic in LlmController for handling rate limit errors (HTTP 429) with a 10-second wait before retrying.
- Introduced additional delay after tool calls in LlmController to further mitigate rate limit issues.
- Updated GeminiProvider to increase maximum retry attempts from 3 to 5 and base retry delay from 2s to 3s for better handling of rate limits.
- Enhanced logging for rate limit scenarios to provide clearer feedback during API interactions.
- Introduced IServiceScopeFactory to create a scope for background tasks, allowing access to scoped services like ILlmService and IMcpService.
- Enhanced error handling during chat stream processing, providing user-friendly error messages for database connection issues.
- Refactored SendProgressUpdate method to accept hubContext and logger as parameters, improving logging consistency.
- Updated InjectBacktestDetailsFetchingIfNeeded method to utilize scoped services, ensuring accurate backtest detail fetching.
- Improved overall error messaging and logging throughout the LlmController for better user feedback during chat interactions.
- Simplified progress update messages in LlmController by removing iteration details for clarity.
- Enhanced the visual appearance of the AiChat component by adjusting opacity levels for progress indicators and text elements, improving overall readability and user experience.
- Updated styling for tool name and error messages to ensure consistent visual feedback during chat interactions.
- Implemented SignalR integration for real-time chat streaming in LlmController, allowing for progress updates during LLM interactions.
- Refactored AiChat component to handle streaming responses and display progress updates, including iteration status and tool call results.
- Introduced a new ProgressIndicator component to visually represent the current state of chat processing.
- Updated AiChatService to manage SignalR connections and handle streaming updates effectively, improving user experience during chat sessions.
- Enhanced error handling and messaging for better feedback during chat interactions.
- Added a new ChatStream endpoint to handle real-time chat interactions with LLMs, providing streaming progress updates.
- Introduced LlmProgressUpdate class to encapsulate various types of progress updates during chat processing, including iteration starts, tool calls, and final responses.
- Enhanced error handling and user authentication checks within the streaming process to ensure robust interaction.
- Refactored tool execution logic to safely handle tool calls and provide detailed feedback on execution status and results.
- Added a retry policy with exponential backoff for handling transient errors and rate limits in the Gemini API provider.
- Introduced a delay between iterations in LlmController to prevent rapid bursts and avoid hitting rate limits.
- Enhanced logging for retries and error handling to improve visibility into API interactions and rate limiting behavior.
- Updated the calculation of bots allocation USD value to directly sum BotTradingBalance from Bot entities, eliminating the need for additional service calls to fetch bot configurations.
- This change aims to prevent potential deadlocks and improve performance by reducing unnecessary asynchronous calls.
- Reduced the MaxConcurrentPerInstance value from 60 to 30 to optimize resource allocation and improve system performance under load.
- This change aims to enhance stability and responsiveness of the worker backtest compute process.
- Introduced a new buffer amount to prevent overdraw when requested swap amounts exceed wallet balances, enhancing balance management.
- Updated swap logic to apply the buffer conditionally, ensuring safe transaction amounts are used during swaps.
- Improved logging to provide warnings when requested amounts exceed available balances, enhancing user feedback and transparency.
- Implemented logic to calculate broker closing price from PNL when the price is zero or invalid, improving accuracy in trade reconciliation.
- Added detailed logging for calculated closing prices, including entry price, PNL, and leverage, to enhance visibility into trading performance.
- Updated handling of take profit and stop loss updates based on valid closing prices, ensuring more reliable position management.
- Added logic to calculate broker PNL when it is zero or invalid, using actual prices for more accurate profit and loss reporting.
- Improved logging to provide detailed information when PNL is calculated, enhancing visibility into trading performance.
- Updated documentation guidelines to discourage unnecessary .md files unless explicitly requested by users.
- Updated token retrieval logic to ensure non-synthetic tokens are prioritized for swaps, improving accuracy in token selection.
- Added detailed logging for token data, including assetSymbol and baseSymbol, to enhance visibility during token lookups.
- Introduced a new test case to validate the successful swap of USDC to BTC, confirming the resolution to the non-synthetic WBTC token.
- Improved error handling for token lookups, providing clearer feedback when a valid token symbol is not found.
- Introduced a new method to verify the execution of opening swaps in history, ensuring positions are only marked as filled after confirming successful swaps.
- Improved logging to provide detailed feedback on swap confirmation status, including retries for pending swaps and error handling for verification failures.
- Adjusted position status update logic to enhance robustness in managing filled positions, preventing premature status changes.
- Introduced a new variable to capture the closing price based on filled stop loss or take profit trades, improving clarity in the closing message.
- Enhanced message formatting to include the closing price when applicable, providing better feedback on trade outcomes.
- Streamlined conditional checks for filled trades to ensure accurate reporting of closing prices.
- Updated balance checks to utilize user-defined thresholds for minimum trading and swap balances, enhancing flexibility.
- Improved gas fee validation by incorporating user settings, allowing for more personalized transaction management.
- Enhanced logging to provide clearer messages regarding balance sufficiency and gas fee limits, improving user feedback during operations.
- Introduced logic to check if the opening swap was canceled by the broker, marking positions as canceled when necessary.
- Adjusted orphaned balance thresholds for ETH and other tokens to improve balance management.
- Enhanced logging to provide detailed information on swap status, including warnings for canceled swaps and their implications on position management.
- Added a new method to verify swap execution status, improving the robustness of position handling in SpotBot.
- Added logic to wait for ETH→USDC swap to settle before refreshing the USDC balance, preventing premature bot stoppage due to low balance.
- Implemented balance verification and cache invalidation for accurate balance checks post-swap.
- Improved logging to indicate the status of balance refresh and cache invalidation after closing a position.
- Adjusted max dust amount threshold based on token type: increased for ETH to account for gas reserves, while maintaining a lower threshold for other tokens.
- Enhanced logging to clarify when a position is closed, indicating if the remaining balance is expected for gas reserves or if it was successfully closed.
- Increased slippage tolerance from 0.6% to 0.7% to account for gas reserves.
- Improved logging to provide detailed information when adjusting position quantities due to slippage or when retaining original quantities.
- Updated CloseSpotPositionCommandHandler to use the position's opened quantity instead of the entire wallet balance, ensuring gas fees are preserved.
- Adjusted Web3ProxyService settings for retry attempts and operation timeouts to improve performance.
- Enhanced swap token implementation to handle native tokens correctly and increased operation timeout for better reliability.
- Added try-catch block around position closing logic to handle potential failures gracefully.
- Enhanced logging to provide detailed warnings when closing a position fails, ensuring the position status remains unchanged for retry on the next cycle.
- Re-threw exceptions for unhandled cases to inform callers of operation failures, improving overall robustness of the SpotBot.
- Added a new method in IWeb3ProxyService to retrieve token balances directly from the blockchain, ensuring accurate decimal handling.
- Updated ExchangeService to utilize the new on-chain balance method, replacing the previous balance retrieval logic.
- Enhanced SpotBot logging to provide clearer warnings when token balances are significantly lower than expected, and to log cases of excess token balances.
- Introduced a new API endpoint for fetching token balances on-chain, improving the overall functionality of the service.
- Updated SpotBot to log detailed information when detecting small token balances, indicating potential gas reserves or dust.
- Introduced a minimum threshold for orphaned positions, improving decision-making on whether to open new positions.
- Enhanced logging for potential zombie positions, providing clearer warnings when token balances are missing.
- Improved force close logging to clarify the status of remaining balances after attempts to clear them.
- Updated FuturesBot logging to include a prefix indicating the bot type for better clarity in logs.
- Refactored signal retrieval code for improved readability by formatting the method call across multiple lines.
- Minor whitespace adjustments to enhance code consistency.
- Updated SpotBot to log detailed information when a closing position is found in the history, including position direction and dates.
- Enhanced logging for scenarios where no closing position is found or when position history is unavailable, improving clarity on position status.
- Removed outdated log messages to streamline the logging process.
- Added a new method to force close any remaining balance in a trading position if it was not fully closed.
- Enhanced logging to provide detailed information during the force close process, including current price checks and retry attempts.
- Implemented error handling to manage potential failures during the force close operation, ensuring manual intervention is flagged when necessary.
- Changed the default LLM provider for BYOK from Claude to Gemini.
- Updated the provider selection priority to Gemini > OpenAI > Claude for improved service efficiency.
- Removed redundant gemini provider check from the SelectProvider method to streamline the logic.
- Expanded system message to include a comprehensive critical analysis workflow for data retrieval and analysis.
- Added specific guidelines for retrieving complete data and providing in-depth analysis for backtests, bundles, and indicators.
- Emphasized the importance of proactive engagement and multiple tool iterations to ensure thorough responses.
- Updated tool usage instructions to improve clarity and effectiveness in user interactions.
- Introduced IMemoryCache to cache available MCP tools for improved performance and reduced service calls.
- Updated system message construction to provide clearer guidance on LLM's domain expertise and tool usage.
- Implemented adaptive max iteration logic based on query complexity, allowing for more efficient processing of user requests.
- Enhanced logging to include detailed iteration information and improved context trimming to manage conversation length effectively.
- Added support for iterative tool calling in LlmController, allowing multiple rounds of tool execution until a final answer is reached.
- Updated system message to provide clearer guidance on proactive tool usage and response expectations.
- Enhanced logging to track iterations and tool execution results, improving debugging and user feedback.
- Ensured that the final response is returned even if the maximum iterations are reached, maintaining user engagement.
- Added BotTradingBalance property to UserStrategyDetailsViewModel for better tracking of bot allocations.
- Updated DataController to include BotTradingBalance in the response model.
- Improved LlmController by refining the system message to ensure LLM understands its response capabilities and tool usage.
- Introduced new MCP tools for running and analyzing bundle backtests, enhancing backtesting capabilities for users.
- Implemented security measures in BotTools to ensure users can only access their own bots, improving data privacy.
- Introduced a system message in LlmController to clarify that tools are optional for LLM responses, enhancing user guidance.
- Refactored indicator type resolution in IndicatorTools to support fuzzy matching and provide suggestions for invalid types, improving user experience and error handling.
- Updated methods to utilize the new resolution logic, ensuring consistent handling of indicator types across the application.
- Deleted the McpService class, which was previously responsible for executing Model Context Protocol (MCP) tools.
- Updated the ApiBootstrap class to change the registration of IMcpService to the new Managing.Mcp.McpService implementation.
- Added new MCP tool implementations for DataTools, BotTools, and IndicatorTools to enhance functionality.
- Added functionality to update the default LLM provider for users via a new endpoint in UserController.
- Introduced LlmProvider enum to manage available LLM options: Auto, Gemini, OpenAI, and Claude.
- Updated User and UserEntity models to include DefaultLlmProvider property.
- Enhanced database context and migrations to support the new LLM provider configuration.
- Integrated LLM services into the application bootstrap for dependency injection.
- Updated TypeScript API client to include methods for managing LLM providers and chat requests.
- Introduced a new endpoint in UserController to update the agent summary, ensuring balance data is refreshed after transactions.
- Implemented ForceUpdateSummaryImmediate method in IAgentGrain to allow immediate updates without cooldown checks.
- Enhanced StartBotCommandHandler to force update the agent summary before starting the bot, ensuring accurate balance data.
- Updated TypeScript API client to include the new update-agent-summary method for frontend integration.
- Added early validation to prevent swapping synthetic tokens, ensuring users are informed about the limitations of synthetic tokens.
- Enhanced the swap logic to handle synthetic tokens by falling back to a direct swap order transaction when synthetic tokens are involved or when the SDK swap fails.
- Improved the calculation of minimum output amounts based on swap path statistics or fallback to price-based calculations for better accuracy.
- Updated `getTokenDataFromTicker` to support both synthetic and non-synthetic tokens by attempting to fetch v2 tokens first, falling back to a version-less search if necessary.
- Added minimum and maximum balance filters to the bot list, allowing users to specify balance constraints for better bot management.
- Refactored sorting direction to use a dedicated `SortDirection` enum for improved type safety.
- Simplified Dockerfile by removing redundant build step and adjusting COPY command for clarity.
- Updated publish command to include --no-restore for efficiency during the build process.