Reorganize tool definitions into granular domain modules
**New structure:** src/tools/definitions/ ├── mod.rs # Aggregates all 43 tools ├── system.rs # 3 tools: healthcheck, verify_setup, list_symbols ├── experts.rs # 4 tools: compile_ea, list_experts, list_indicators, list_scripts ├── backtest.rs # 4 tools: run_backtest, get_backtest_status, cache_status, clean_cache ├── optimization.rs # 4 tools: run_optimization, get_optimization_status, get_optimization_results, list_jobs ├── analytics.rs # 9 tools: analyze_report + 8 granular analytics ├── reports.rs # 11 tools: list_reports, search_reports, get_latest_report, etc. ├── setfiles.rs # 8 tools: read/write/patch/clone/diff set files └── baseline.rs # 1 tool: compare_baseline **Benefits:** - Domain-based organization (21KB monolith -> 9 focused files) - Each domain can evolve independently - Easier to find and modify tool definitions - Clear separation between system, experts, backtest, optimization, analytics, reports, setfiles
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
use serde_json::{json, Value};
|
||||
|
||||
pub fn tool_run_optimization() -> Value {
|
||||
json!({
|
||||
"name": "run_optimization",
|
||||
"description": "Launch MT5 genetic parameter optimization",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"required": ["expert", "set_file", "from_date", "to_date"],
|
||||
"properties": {
|
||||
"expert": { "type": "string" },
|
||||
"set_file": { "type": "string" },
|
||||
"symbol": { "type": "string" },
|
||||
"from_date": { "type": "string" },
|
||||
"to_date": { "type": "string" },
|
||||
"deposit": { "type": "integer" }
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
pub fn tool_get_optimization_status() -> Value {
|
||||
json!({
|
||||
"name": "get_optimization_status",
|
||||
"description": "Check progress of a running optimization job",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"required": ["job_id"],
|
||||
"properties": {
|
||||
"job_id": { "type": "string" }
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
pub fn tool_get_optimization_results() -> Value {
|
||||
json!({
|
||||
"name": "get_optimization_results",
|
||||
"description": "Parse completed MT5 optimization results",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"job_id": { "type": "string" },
|
||||
"report_file": { "type": "string" },
|
||||
"dd_threshold": { "type": "number" },
|
||||
"top_n": { "type": "integer" }
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
pub fn tool_list_jobs() -> Value {
|
||||
json!({
|
||||
"name": "list_jobs",
|
||||
"description": "List running and completed optimization jobs",
|
||||
"inputSchema": {
|
||||
"type": "object"
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user