- Updated README.md to include new setup instructions for RAG and observability.
- Added internal knowledge base (KB) setup for SQL optimization team, supporting various document types.
- Implemented token usage logging in LLM tools to track costs and usage.
- Refactored SQL analysis and optimization prompts for clarity and consistency.
- Introduced filtering of external tools based on environment configuration.
- Enhanced conservative analysis agent with structured prompt for performance suggestions.
- Updated requirements.txt to include new dependencies for RAG functionality.
- Added internal KB helpers for building and attaching knowledge to agents.
- Introduced LLMTool interface for LLM providers, defining methods for text generation and health checks.
- Created PromptGeneratorTool interface for generating database-specific prompts, including SQL to natural language and vice versa.
- Implemented FileStorageTool and MetadataStoreTool interfaces for file operations and metadata persistence, respectively.
- Defined core types including DatabaseType, QueryHash, and QueryMetric to support optimization flows.
- Established exception handling with specific error classes for query validation, LLM provider issues, and optimization errors.
- Added data models for optimization metadata and results, supporting serialization and versioning.
- Added PostgreSQLPromptGenerator for generating prompts optimized for PostgreSQL features.
- Introduced SQLitePromptGenerator to handle SQLite-specific optimizations and features.
- Created SQLServerPromptGenerator for Microsoft SQL Server, including detailed analysis and optimization requirements.
- Developed a template system for rendering SQL-to-natural language and natural-to-SQL prompts.
- Established core tools for SQL analysis, optimization, and comparison, including complexity assessment and comment stripping.
- Integrated a team application to manage SQL optimization tasks and agent interactions.
- Added utility functions for handling SQL files and ensuring valid SQL input.