Files
evotraders/.omc/project-memory.json
cillin 06a23c32a4 refactor: Fix code quality issues identified in analysis
1. Rename factory.py's EvoAgent data class to AgentConfig
   - Avoids naming conflict with base/evo_agent.py's EvoAgent

2. Export pipeline_runner functions in backend/core/__init__.py
   - Add create_agents, create_long_term_memory, stop_gateway

3. Consolidate PromptLoader to singleton pattern
   - Add get_prompt_loader() singleton function
   - Update all usages to use singleton

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 01:07:53 +08:00

625 lines
14 KiB
JSON

{
"version": "1.0.0",
"lastScanned": 1773938154948,
"projectRoot": "/Users/cillin/workspeace/evotraders",
"techStack": {
"languages": [
{
"name": "Python",
"version": null,
"confidence": "high",
"markers": [
"pyproject.toml"
]
},
{
"name": "C/C++",
"version": null,
"confidence": "high",
"markers": [
"Makefile"
]
}
],
"frameworks": [
{
"name": "pytest",
"version": null,
"category": "testing"
}
],
"packageManager": null,
"runtime": null
},
"build": {
"buildCommand": "make build",
"testCommand": "make test",
"lintCommand": "ruff check",
"devCommand": null,
"scripts": {}
},
"conventions": {
"namingStyle": null,
"importStyle": null,
"testPattern": null,
"fileOrganization": null
},
"structure": {
"isMonorepo": false,
"workspaces": [],
"mainDirectories": [
"docs",
"scripts"
],
"gitBranches": {
"defaultBranch": "main",
"branchingStrategy": null
}
},
"customNotes": [],
"directoryMap": {
"agent-service": {
"path": "agent-service",
"purpose": null,
"fileCount": 2,
"lastAccessed": 1773938154941,
"keyFiles": [
"Dockerfile",
"requirements.txt"
]
},
"backend": {
"path": "backend",
"purpose": null,
"fileCount": 5,
"lastAccessed": 1773938154941,
"keyFiles": [
"__init__.py",
"app.py",
"cli.py",
"gateway_server.py",
"main.py"
]
},
"backtest": {
"path": "backtest",
"purpose": null,
"fileCount": 0,
"lastAccessed": 1773938154941,
"keyFiles": []
},
"data": {
"path": "data",
"purpose": "Data files",
"fileCount": 1,
"lastAccessed": 1773938154941,
"keyFiles": [
"market_research.db"
]
},
"deploy": {
"path": "deploy",
"purpose": null,
"fileCount": 0,
"lastAccessed": 1773938154942,
"keyFiles": []
},
"docs": {
"path": "docs",
"purpose": "Documentation",
"fileCount": 0,
"lastAccessed": 1773938154942,
"keyFiles": []
},
"evotraders.egg-info": {
"path": "evotraders.egg-info",
"purpose": null,
"fileCount": 6,
"lastAccessed": 1773938154942,
"keyFiles": [
"PKG-INFO",
"SOURCES.txt",
"dependency_links.txt",
"entry_points.txt",
"requires.txt"
]
},
"frontend": {
"path": "frontend",
"purpose": null,
"fileCount": 13,
"lastAccessed": 1773938154942,
"keyFiles": [
"README.md",
"components.json",
"env.template",
"eslint.config.js",
"index.css"
]
},
"live": {
"path": "live",
"purpose": null,
"fileCount": 0,
"lastAccessed": 1773938154943,
"keyFiles": []
},
"logs": {
"path": "logs",
"purpose": null,
"fileCount": 7,
"lastAccessed": 1773938154943,
"keyFiles": [
"2026-03-16_00-48-03.log",
"2026-03-18_23-17-29.log",
"2026-03-18_23-17-30.2026-03-18_23-17-30_000801.log.zip",
"2026-03-18_23-17-30.log",
"2026-03-19_00-18-04.log"
]
},
"news-service": {
"path": "news-service",
"purpose": null,
"fileCount": 3,
"lastAccessed": 1773938154943,
"keyFiles": [
"Dockerfile",
"requirements.txt"
]
},
"reference": {
"path": "reference",
"purpose": null,
"fileCount": 0,
"lastAccessed": 1773938154943,
"keyFiles": []
},
"runs": {
"path": "runs",
"purpose": null,
"fileCount": 0,
"lastAccessed": 1773938154944,
"keyFiles": []
},
"scripts": {
"path": "scripts",
"purpose": "Build/utility scripts",
"fileCount": 1,
"lastAccessed": 1773938154944,
"keyFiles": [
"run_prod.sh"
]
},
"services": {
"path": "services",
"purpose": "Business logic services",
"fileCount": 1,
"lastAccessed": 1773938154944,
"keyFiles": [
"README.md"
]
},
"shared": {
"path": "shared",
"purpose": null,
"fileCount": 0,
"lastAccessed": 1773938154944,
"keyFiles": []
},
"trading-service": {
"path": "trading-service",
"purpose": null,
"fileCount": 4,
"lastAccessed": 1773938154944,
"keyFiles": [
"Dockerfile",
"README.md",
"requirements.txt"
]
},
"workspaces": {
"path": "workspaces",
"purpose": null,
"fileCount": 0,
"lastAccessed": 1773938154944,
"keyFiles": []
},
"agent-service/src": {
"path": "agent-service/src",
"purpose": "Source code",
"fileCount": 5,
"lastAccessed": 1773938154944,
"keyFiles": [
"__init__.py",
"config.py",
"main.py"
]
},
"backend/api": {
"path": "backend/api",
"purpose": "API routes",
"fileCount": 5,
"lastAccessed": 1773938154944,
"keyFiles": [
"__init__.py",
"agents.py",
"guard.py"
]
},
"backend/config": {
"path": "backend/config",
"purpose": "Configuration files",
"fileCount": 6,
"lastAccessed": 1773938154944,
"keyFiles": [
"__init__.py",
"agent_profiles.yaml",
"bootstrap_config.py"
]
},
"backend/data": {
"path": "backend/data",
"purpose": "Data files",
"fileCount": 13,
"lastAccessed": 1773938154944,
"keyFiles": [
"__init__.py",
"cache.py",
"historical_price_manager.py"
]
},
"docs/assets": {
"path": "docs/assets",
"purpose": "Static assets",
"fileCount": 5,
"lastAccessed": 1773938154944,
"keyFiles": [
"dashboard.jpg",
"evotraders_demo.gif",
"evotraders_logo.jpg"
]
},
"frontend/dist": {
"path": "frontend/dist",
"purpose": "Distribution/build output",
"fileCount": 2,
"lastAccessed": 1773938154945,
"keyFiles": [
"index.html",
"trading_logo.png"
]
},
"frontend/node_modules": {
"path": "frontend/node_modules",
"purpose": "Dependencies",
"fileCount": 1,
"lastAccessed": 1773938154947,
"keyFiles": []
},
"news-service/src": {
"path": "news-service/src",
"purpose": "Source code",
"fileCount": 3,
"lastAccessed": 1773938154948,
"keyFiles": [
"__init__.py",
"config.py",
"main.py"
]
},
"trading-service/src": {
"path": "trading-service/src",
"purpose": "Source code",
"fileCount": 8,
"lastAccessed": 1773938154948,
"keyFiles": [
"__init__.py",
"config.py",
"main.py"
]
}
},
"hotPaths": [
{
"path": "backend/agents/factory.py",
"accessCount": 17,
"lastAccessed": 1773939950376,
"type": "file"
},
{
"path": "backend",
"accessCount": 16,
"lastAccessed": 1773940042371,
"type": "directory"
},
{
"path": "",
"accessCount": 13,
"lastAccessed": 1773939899611,
"type": "directory"
},
{
"path": "backend/main.py",
"accessCount": 7,
"lastAccessed": 1773939993951,
"type": "file"
},
{
"path": "backend/gateway_server.py",
"accessCount": 7,
"lastAccessed": 1773940004402,
"type": "file"
},
{
"path": "backend/services/news/main.py",
"accessCount": 5,
"lastAccessed": 1773938385662,
"type": "file"
},
{
"path": "backend/core/pipeline.py",
"accessCount": 5,
"lastAccessed": 1773940024933,
"type": "file"
},
{
"path": "backend/services/news/enrich/news_enricher.py",
"accessCount": 4,
"lastAccessed": 1773938508417,
"type": "file"
},
{
"path": "start-dev.sh",
"accessCount": 4,
"lastAccessed": 1773939259381,
"type": "file"
},
{
"path": "services/README.md",
"accessCount": 4,
"lastAccessed": 1773939281935,
"type": "file"
},
{
"path": "backend/app.py",
"accessCount": 4,
"lastAccessed": 1773939648215,
"type": "file"
},
{
"path": "backend/services/news/routes/news.py",
"accessCount": 3,
"lastAccessed": 1773938438928,
"type": "file"
},
{
"path": "backend/services/news",
"accessCount": 3,
"lastAccessed": 1773938468730,
"type": "directory"
},
{
"path": "frontend/src/config/constants.js",
"accessCount": 3,
"lastAccessed": 1773939204395,
"type": "file"
},
{
"path": "backend/services/gateway.py",
"accessCount": 3,
"lastAccessed": 1773939672930,
"type": "file"
},
{
"path": "backend/core/__init__.py",
"accessCount": 3,
"lastAccessed": 1773939963627,
"type": "file"
},
{
"path": "backend/services/trading/main.py",
"accessCount": 2,
"lastAccessed": 1773938360736,
"type": "file"
},
{
"path": "backend/services/agents/main.py",
"accessCount": 2,
"lastAccessed": 1773938361040,
"type": "file"
},
{
"path": "backend/services/trading/data/__init__.py",
"accessCount": 2,
"lastAccessed": 1773938402496,
"type": "file"
},
{
"path": "backend/services/news/explain/__init__.py",
"accessCount": 2,
"lastAccessed": 1773938460019,
"type": "file"
},
{
"path": "backend/services/news/enrich/__init__.py",
"accessCount": 2,
"lastAccessed": 1773938465216,
"type": "file"
},
{
"path": "backend/services/news/explain/range_explainer.py",
"accessCount": 2,
"lastAccessed": 1773938481152,
"type": "file"
},
{
"path": "backend/services/news/enrich/llm_enricher.py",
"accessCount": 2,
"lastAccessed": 1773938499885,
"type": "file"
},
{
"path": "CLAUDE.md",
"accessCount": 2,
"lastAccessed": 1773939273598,
"type": "file"
},
{
"path": "backend/agents/__init__.py",
"accessCount": 2,
"lastAccessed": 1773939883015,
"type": "file"
},
{
"path": "backend/agents/agent_core.py",
"accessCount": 2,
"lastAccessed": 1773939886997,
"type": "file"
},
{
"path": "Makefile",
"accessCount": 1,
"lastAccessed": 1773938226307,
"type": "file"
},
{
"path": "docker-compose.yml",
"accessCount": 1,
"lastAccessed": 1773938226360,
"type": "file"
},
{
"path": "backend/services/news/shared/trading_client.py",
"accessCount": 1,
"lastAccessed": 1773938370618,
"type": "file"
},
{
"path": "backend/services/agents",
"accessCount": 1,
"lastAccessed": 1773938397772,
"type": "directory"
},
{
"path": "backend/services/trading",
"accessCount": 1,
"lastAccessed": 1773938397823,
"type": "directory"
},
{
"path": "backend/services",
"accessCount": 1,
"lastAccessed": 1773938405541,
"type": "directory"
},
{
"path": "backend/services/news/config.py",
"accessCount": 1,
"lastAccessed": 1773938638664,
"type": "file"
},
{
"path": "shared/client/news_client.py",
"accessCount": 1,
"lastAccessed": 1773938638715,
"type": "file"
},
{
"path": "shared/client/trading_client.py",
"accessCount": 1,
"lastAccessed": 1773938638770,
"type": "file"
},
{
"path": "backend/api",
"accessCount": 1,
"lastAccessed": 1773938669143,
"type": "directory"
},
{
"path": "frontend",
"accessCount": 1,
"lastAccessed": 1773938669195,
"type": "directory"
},
{
"path": ".env.example",
"accessCount": 1,
"lastAccessed": 1773938849397,
"type": "file"
},
{
"path": "frontend/src/services/websocket.js",
"accessCount": 1,
"lastAccessed": 1773938849448,
"type": "file"
},
{
"path": "frontend/src/services/runtimeApi.js",
"accessCount": 1,
"lastAccessed": 1773938849500,
"type": "file"
},
{
"path": "backend/services/agents/routes/websocket.py",
"accessCount": 1,
"lastAccessed": 1773939001692,
"type": "file"
},
{
"path": "backend/services/agents/routes/agents.py",
"accessCount": 1,
"lastAccessed": 1773939016291,
"type": "file"
},
{
"path": "backend/services/agents/routes/run.py",
"accessCount": 1,
"lastAccessed": 1773939016343,
"type": "file"
},
{
"path": "backend/__init__.py",
"accessCount": 1,
"lastAccessed": 1773939648323,
"type": "file"
},
{
"path": "backend/api/__init__.py",
"accessCount": 1,
"lastAccessed": 1773939658650,
"type": "file"
},
{
"path": "backend/runtime/__init__.py",
"accessCount": 1,
"lastAccessed": 1773939658687,
"type": "file"
},
{
"path": "backend/agents/base/evo_agent.py",
"accessCount": 1,
"lastAccessed": 1773939664916,
"type": "file"
},
{
"path": "backend/agents/analyst.py",
"accessCount": 1,
"lastAccessed": 1773939664967,
"type": "file"
},
{
"path": "backend/agents/base/hooks.py",
"accessCount": 1,
"lastAccessed": 1773939672727,
"type": "file"
},
{
"path": "pyproject.toml",
"accessCount": 1,
"lastAccessed": 1773939672778,
"type": "file"
}
],
"userDirectives": []
}