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>
625 lines
14 KiB
JSON
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": []
|
|
} |