hyper_agent_ai/
bootstrap.rs1use crate::tool_registry::ToolRegistry;
2use crate::tools::*;
3use hyper_agent_core::position_manager::PositionManager;
4use hyper_risk::risk::{get_risk_config_sync, AccountState, RiskGuard};
5use std::sync::Arc;
6
7pub async fn register_trading_tools(
8 registry: &ToolRegistry,
9 pm: Arc<PositionManager>,
10 is_mainnet: bool,
11) {
12 registry.register(Arc::new(GetPositionsTool::new(pm))).await;
13 registry.register(Arc::new(DoNothingTool)).await;
14 registry.register(Arc::new(SetStopLossTool)).await;
15 registry.register(Arc::new(SetTakeProfitTool)).await;
16 registry
17 .register(Arc::new(GetOpenOrdersTool::new(is_mainnet)))
18 .await;
19 registry
20 .register(Arc::new(GetTradeHistoryTool::new(is_mainnet)))
21 .await;
22 registry
23 .register(Arc::new(GetFundingRateTool::new(is_mainnet)))
24 .await;
25 registry
26 .register(Arc::new(GetMarketDataTool::new(is_mainnet)))
27 .await;
28 registry.register(Arc::new(CloseAllPositionsTool)).await;
29
30 let risk_config = get_risk_config_sync();
31 let account_state = AccountState::default();
32 registry
33 .register(Arc::new(PlaceOrderTool::new(
34 RiskGuard::new(risk_config.clone()),
35 account_state.clone(),
36 )))
37 .await;
38 registry
39 .register(Arc::new(CancelOrderTool::new(
40 RiskGuard::new(risk_config),
41 account_state,
42 )))
43 .await;
44}