diff --git a/.serena/cache/typescript/document_symbols_cache_v20-05-25.pkl b/.serena/cache/typescript/document_symbols_cache_v20-05-25.pkl deleted file mode 100644 index 8375536..0000000 Binary files a/.serena/cache/typescript/document_symbols_cache_v20-05-25.pkl and /dev/null differ diff --git a/.serena/memories/code_style_conventions.md b/.serena/memories/code_style_conventions.md deleted file mode 100644 index 932ff2f..0000000 --- a/.serena/memories/code_style_conventions.md +++ /dev/null @@ -1,58 +0,0 @@ -# Code Style and Conventions - -## TypeScript Configuration -- **Strict mode enabled**: All strict checks are on -- **Target**: ES2022 -- **Module**: ESNext with bundler resolution -- **Path aliases**: `@stock-bot/*` maps to `libs/*/src` -- **Decorators**: Enabled for dependency injection - -## Code Style Rules (ESLint) -- **No unused variables**: Error (except prefixed with `_`) -- **No explicit any**: Warning -- **No non-null assertion**: Warning -- **No console**: Warning (except in tests) -- **Prefer const**: Enforced -- **Strict equality**: Always use `===` -- **Curly braces**: Required for all blocks - -## Formatting (Prettier) -- **Semicolons**: Always -- **Single quotes**: Yes -- **Trailing comma**: ES5 -- **Print width**: 100 characters -- **Tab width**: 2 spaces -- **Arrow parens**: Avoid when possible -- **End of line**: LF - -## Import Order -1. Node built-ins -2. Third-party modules -3. `@stock-bot/*` imports -4. Relative imports (parent directories first) -5. Current directory imports - -## Naming Conventions -- **Files**: kebab-case (e.g., `database-setup.ts`) -- **Classes**: PascalCase -- **Functions/Variables**: camelCase -- **Constants**: UPPER_SNAKE_CASE -- **Interfaces/Types**: PascalCase with 'I' or 'T' prefix optional - -## Library Standards -- **Named exports only**: No default exports -- **Factory patterns**: For complex initialization -- **Singleton pattern**: For global services (config, logger) -- **Direct class exports**: For DI-managed services - -## Testing -- **File naming**: `*.test.ts` or `*.spec.ts` -- **Test structure**: Bun's built-in test runner -- **Integration tests**: Use TestContainers for databases -- **Mocking**: Mock external dependencies - -## Documentation -- **JSDoc**: For all public APIs -- **README.md**: Required for each library -- **Usage examples**: Include in documentation -- **Error messages**: Descriptive with context \ No newline at end of file diff --git a/.serena/memories/current_refactoring_context.md b/.serena/memories/current_refactoring_context.md deleted file mode 100644 index 39bed86..0000000 --- a/.serena/memories/current_refactoring_context.md +++ /dev/null @@ -1,41 +0,0 @@ -# Current Refactoring Context - -## Data Ingestion Service Refactor -The project is currently undergoing a major refactoring to move away from singleton patterns to a dependency injection approach using service containers. - -### What's Been Done -- Created connection pool pattern with `ServiceContainer` -- Refactored data-ingestion service to use DI container -- Updated handlers to accept container parameter -- Added proper resource disposal with `ctx.dispose()` - -### Migration Status -- QM handler: ✅ Fully migrated to container pattern -- IB handler: ⚠️ Partially migrated (using migration helper) -- Proxy handler: ✅ Updated to accept container -- WebShare handler: ✅ Updated to accept container - -### Key Patterns -1. **Service Container**: Central DI container managing all connections -2. **Operation Context**: Provides scoped database access within operations -3. **Factory Pattern**: Connection factories for different databases -4. **Resource Disposal**: Always call `ctx.dispose()` after operations - -### Example Pattern -```typescript -const ctx = OperationContext.create('handler', 'operation', { container }); -try { - // Use databases through context - await ctx.mongodb.insertOne(data); - await ctx.postgres.query('...'); - return { success: true }; -} finally { - await ctx.dispose(); // Always cleanup -} -``` - -### Next Steps -- Complete migration of remaining IB operations -- Remove migration helper once complete -- Apply same pattern to other services -- Add monitoring for connection pools \ No newline at end of file diff --git a/.serena/memories/project_overview.md b/.serena/memories/project_overview.md deleted file mode 100644 index 3d6df9b..0000000 --- a/.serena/memories/project_overview.md +++ /dev/null @@ -1,55 +0,0 @@ -# Stock Bot Trading Platform - -## Project Purpose -This is an advanced trading bot platform with a microservice architecture designed for automated stock trading. The system includes: -- Market data ingestion from multiple providers (Yahoo Finance, QuoteMedia, Interactive Brokers, WebShare) -- Data processing and technical indicator calculation -- Trading strategy development and backtesting -- Order execution and risk management -- Portfolio tracking and performance analytics -- Web dashboard for monitoring - -## Architecture Overview -The project follows a **microservices architecture** with shared libraries: - -### Core Services (apps/) -- **data-ingestion**: Ingests market data from multiple providers -- **data-pipeline**: Processes and transforms data -- **web-api**: REST API service -- **web-app**: React-based dashboard - -### Shared Libraries (libs/) -**Core Libraries:** -- config: Environment configuration with Zod validation -- logger: Structured logging with Loki integration -- di: Dependency injection container -- types: Shared TypeScript types -- handlers: Common handler patterns - -**Data Libraries:** -- postgres: PostgreSQL client for transactional data -- questdb: Time-series database for market data -- mongodb: Document storage for configurations - -**Service Libraries:** -- queue: BullMQ-based job processing -- event-bus: Dragonfly/Redis event bus -- shutdown: Graceful shutdown management - -**Utils:** -- Financial calculations and technical indicators -- Date utilities -- Position sizing calculations - -## Database Strategy -- **PostgreSQL**: Transactional data (orders, positions, strategies) -- **QuestDB**: Time-series data (OHLCV, indicators, performance metrics) -- **MongoDB**: Document storage (configurations, raw API responses) -- **Dragonfly/Redis**: Event bus and caching layer - -## Current Development Phase -Phase 1: Data Foundation Layer (In Progress) -- Enhancing data provider reliability -- Implementing data validation -- Optimizing time-series storage -- Building robust HTTP client with circuit breakers \ No newline at end of file diff --git a/.serena/memories/project_structure.md b/.serena/memories/project_structure.md deleted file mode 100644 index 63e2044..0000000 --- a/.serena/memories/project_structure.md +++ /dev/null @@ -1,62 +0,0 @@ -# Project Structure - -## Root Directory -``` -stock-bot/ -├── apps/ # Microservice applications -│ ├── data-ingestion/ # Market data ingestion service -│ ├── data-pipeline/ # Data processing pipeline -│ ├── web-api/ # REST API service -│ └── web-app/ # React dashboard -├── libs/ # Shared libraries -│ ├── core/ # Core functionality -│ │ ├── config/ # Configuration management -│ │ ├── logger/ # Logging infrastructure -│ │ ├── di/ # Dependency injection -│ │ ├── types/ # Shared TypeScript types -│ │ └── handlers/ # Common handler patterns -│ ├── data/ # Database clients -│ │ ├── postgres/ # PostgreSQL client -│ │ ├── questdb/ # QuestDB time-series client -│ │ └── mongodb/ # MongoDB document storage -│ ├── services/ # Service utilities -│ │ ├── queue/ # BullMQ job processing -│ │ ├── event-bus/ # Dragonfly event bus -│ │ └── shutdown/ # Graceful shutdown -│ └── utils/ # Utility functions -├── database/ # Database schemas and migrations -├── scripts/ # Build and utility scripts -├── config/ # Configuration files -├── monitoring/ # Monitoring configurations -├── docs/ # Documentation -└── test/ # Global test utilities - -## Key Files -- `package.json` - Root package configuration -- `turbo.json` - Turbo monorepo configuration -- `tsconfig.json` - TypeScript configuration -- `eslint.config.js` - ESLint rules -- `.prettierrc` - Prettier formatting rules -- `docker-compose.yml` - Infrastructure setup -- `.env` - Environment variables - -## Monorepo Structure -- Uses Bun workspaces with Turbo for orchestration -- Each app and library has its own package.json -- Shared dependencies at root level -- Libraries published as `@stock-bot/*` packages - -## Service Architecture Pattern -Each service typically follows: -``` -service/ -├── src/ -│ ├── index.ts # Entry point -│ ├── routes/ # API routes (Hono) -│ ├── handlers/ # Business logic -│ ├── services/ # Service layer -│ └── types/ # Service-specific types -├── test/ # Tests -├── package.json -└── tsconfig.json -``` \ No newline at end of file diff --git a/.serena/memories/suggested_commands.md b/.serena/memories/suggested_commands.md deleted file mode 100644 index 57d0915..0000000 --- a/.serena/memories/suggested_commands.md +++ /dev/null @@ -1,73 +0,0 @@ -# Suggested Commands for Development - -## Package Management (Bun) -- `bun install` - Install all dependencies -- `bun add ` - Add a new dependency -- `bun add -D ` - Add a dev dependency -- `bun update` - Update dependencies - -## Development -- `bun run dev` - Start all services in development mode (uses Turbo) -- `bun run dev:full` - Start infrastructure + admin tools + dev mode -- `bun run dev:clean` - Reset infrastructure and start fresh - -## Building -- `bun run build` - Build all services and libraries -- `bun run build:libs` - Build only shared libraries -- `bun run build:all:clean` - Clean build with cache removal -- `./scripts/build-all.sh` - Custom build script with options - -## Testing -- `bun test` - Run all tests -- `bun test --watch` - Run tests in watch mode -- `bun run test:coverage` - Run tests with coverage report -- `bun run test:libs` - Test only shared libraries -- `bun run test:apps` - Test only applications -- `bun test ` - Run specific test file - -## Code Quality (IMPORTANT - Run before committing!) -- `bun run lint` - Check for linting errors -- `bun run lint:fix` - Auto-fix linting issues -- `bun run format` - Format code with Prettier -- `./scripts/format.sh` - Alternative format script - -## Infrastructure Management -- `bun run infra:up` - Start databases (PostgreSQL, QuestDB, MongoDB, Dragonfly) -- `bun run infra:down` - Stop infrastructure -- `bun run infra:reset` - Reset with clean volumes -- `bun run docker:admin` - Start admin GUIs (pgAdmin, Mongo Express, Redis Insight) -- `bun run docker:monitoring` - Start monitoring stack - -## Database Operations -- `bun run db:setup-ib` - Setup Interactive Brokers database schema -- `bun run db:init` - Initialize all database schemas - -## Utility Commands -- `bun run clean` - Clean build artifacts -- `bun run clean:all` - Deep clean including node_modules -- `turbo run ` - Run task across monorepo - -## Git Commands (Linux) -- `git status` - Check current status -- `git add .` - Stage all changes -- `git commit -m "message"` - Commit changes -- `git push` - Push to remote -- `git pull` - Pull from remote -- `git checkout -b ` - Create new branch - -## System Commands (Linux) -- `ls -la` - List files with details -- `cd ` - Change directory -- `grep -r "pattern" .` - Search for pattern -- `find . -name "*.ts"` - Find files by pattern -- `which ` - Find command location - -## MCP Setup (for database access in IDE) -- `./scripts/setup-mcp.sh` - Setup Model Context Protocol servers -- Requires infrastructure to be running first - -## Service URLs -- Dashboard: http://localhost:4200 -- QuestDB Console: http://localhost:9000 -- Grafana: http://localhost:3000 -- pgAdmin: http://localhost:8080 \ No newline at end of file diff --git a/.serena/memories/task_completion_checklist.md b/.serena/memories/task_completion_checklist.md deleted file mode 100644 index fb82656..0000000 --- a/.serena/memories/task_completion_checklist.md +++ /dev/null @@ -1,55 +0,0 @@ -# Task Completion Checklist - -When you complete any coding task, ALWAYS run these commands in order: - -## 1. Code Quality Checks (MANDATORY) -```bash -# Run linting to catch code issues -bun run lint - -# If there are errors, fix them automatically -bun run lint:fix - -# Format the code -bun run format -``` - -## 2. Testing (if applicable) -```bash -# Run tests if you modified existing functionality -bun test - -# Run specific test file if you added/modified tests -bun test -``` - -## 3. Build Verification (for significant changes) -```bash -# Build the affected libraries/apps -bun run build:libs # if you changed libraries -bun run build # for full build -``` - -## 4. Final Verification Steps -- Ensure no TypeScript errors in the IDE -- Check that imports are properly ordered (Prettier should handle this) -- Verify no console.log statements in production code -- Confirm all new code follows the established patterns - -## 5. Git Commit Guidelines -- Stage changes: `git add .` -- Write descriptive commit messages -- Reference issue numbers if applicable -- Use conventional commit format when possible: - - `feat:` for new features - - `fix:` for bug fixes - - `refactor:` for code refactoring - - `docs:` for documentation - - `test:` for tests - - `chore:` for maintenance - -## Important Notes -- NEVER skip the linting and formatting steps -- The project uses ESLint and Prettier - let them do their job -- If lint errors persist after auto-fix, they need manual attention -- Always test your changes, even if just running the service locally \ No newline at end of file diff --git a/.serena/memories/tech_stack.md b/.serena/memories/tech_stack.md deleted file mode 100644 index 9697803..0000000 --- a/.serena/memories/tech_stack.md +++ /dev/null @@ -1,49 +0,0 @@ -# Technology Stack - -## Runtime & Package Manager -- **Bun**: v1.1.0+ (primary runtime and package manager) -- **Node.js**: v18.0.0+ (compatibility) -- **TypeScript**: v5.8.3 - -## Core Technologies -- **Turbo**: Monorepo build system -- **ESBuild**: Fast bundling (integrated with Bun) -- **Hono**: Lightweight web framework for services - -## Databases -- **PostgreSQL**: Primary transactional database -- **QuestDB**: Time-series database for market data -- **MongoDB**: Document storage -- **Dragonfly**: Redis-compatible cache and event bus - -## Queue & Messaging -- **BullMQ**: Job queue processing -- **IORedis**: Redis client for Dragonfly - -## Web Technologies -- **React**: Frontend framework (web-app) -- **Angular**: (based on polyfills.ts reference) -- **PrimeNG**: UI component library -- **TailwindCSS**: CSS framework - -## Testing -- **Bun Test**: Built-in test runner -- **TestContainers**: Database integration testing -- **Supertest**: API testing - -## Monitoring & Observability -- **Loki**: Log aggregation -- **Prometheus**: Metrics collection -- **Grafana**: Visualization dashboards - -## Development Tools -- **ESLint**: Code linting -- **Prettier**: Code formatting -- **Docker Compose**: Local infrastructure -- **Model Context Protocol (MCP)**: Database access in IDE - -## Key Dependencies -- **Awilix**: Dependency injection container -- **Zod**: Schema validation -- **pg**: PostgreSQL client -- **Playwright**: Browser automation for proxy testing \ No newline at end of file diff --git a/.serena/project.yml b/.serena/project.yml deleted file mode 100644 index 68debf8..0000000 --- a/.serena/project.yml +++ /dev/null @@ -1,66 +0,0 @@ -# language of the project (csharp, python, rust, java, typescript, javascript, go, cpp, or ruby) -# Special requirements: -# * csharp: Requires the presence of a .sln file in the project folder. -language: typescript - -# whether to use the project's gitignore file to ignore files -# Added on 2025-04-07 -ignore_all_files_in_gitignore: true -# list of additional paths to ignore -# same syntax as gitignore, so you can use * and ** -# Was previously called `ignored_dirs`, please update your config if you are using that. -# Added (renamed)on 2025-04-07 -ignored_paths: [] - -# whether the project is in read-only mode -# If set to true, all editing tools will be disabled and attempts to use them will result in an error -# Added on 2025-04-18 -read_only: false - - -# list of tool names to exclude. We recommend not excluding any tools, see the readme for more details. -# Below is the complete list of tools for convenience. -# To make sure you have the latest list of tools, and to view their descriptions, -# execute `uv run scripts/print_tool_overview.py`. -# -# * `activate_project`: Activates a project by name. -# * `check_onboarding_performed`: Checks whether project onboarding was already performed. -# * `create_text_file`: Creates/overwrites a file in the project directory. -# * `delete_lines`: Deletes a range of lines within a file. -# * `delete_memory`: Deletes a memory from Serena's project-specific memory store. -# * `execute_shell_command`: Executes a shell command. -# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced. -# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type). -# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type). -# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes. -# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file or directory. -# * `initial_instructions`: Gets the initial instructions for the current project. -# Should only be used in settings where the system prompt cannot be set, -# e.g. in clients you have no control over, like Claude Desktop. -# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol. -# * `insert_at_line`: Inserts content at a given line in a file. -# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol. -# * `list_dir`: Lists files and directories in the given directory (optionally with recursion). -# * `list_memories`: Lists memories in Serena's project-specific memory store. -# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building). -# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context). -# * `read_file`: Reads a file within the project directory. -# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store. -# * `remove_project`: Removes a project from the Serena configuration. -# * `replace_lines`: Replaces a range of lines within a file with new content. -# * `replace_symbol_body`: Replaces the full definition of a symbol. -# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen. -# * `search_for_pattern`: Performs a search for a pattern in the project. -# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase. -# * `switch_modes`: Activates modes by providing a list of their names -# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information. -# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task. -# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed. -# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store. -excluded_tools: [] - -# initial prompt for the project. It will always be given to the LLM upon activating the project -# (contrary to the memories, which are loaded on demand). -initial_prompt: "" - -project_name: "stock-bot"