1
1
use std:: sync:: Arc ;
2
2
3
- use actix_web:: { post , web , HttpResponse } ;
3
+ use actix_web:: { HttpResponse , post , web } ;
4
4
use futures_util:: StreamExt ;
5
5
use serde:: Deserialize ;
6
6
use uuid:: Uuid ;
7
7
8
+ use crate :: agent_manager:: RunAgentParams ;
8
9
use crate :: agent_manager:: channel:: AgentManagerWorkers ;
9
10
use crate :: agent_manager:: types:: RunAgentResponseStreamChunk ;
10
- use crate :: agent_manager:: worker:: { run_agent_worker, RunAgentWorkerOptions } ;
11
- use crate :: agent_manager:: RunAgentParams ;
12
- use crate :: agent_manager:: { types:: ModelProvider , AgentManager , AgentManagerTrait } ;
11
+ use crate :: agent_manager:: worker:: { RunAgentWorkerOptions , run_agent_worker} ;
12
+ use crate :: agent_manager:: { AgentManager , AgentManagerTrait , types:: ModelProvider } ;
13
13
use crate :: cache:: Cache ;
14
14
use crate :: db:: project_api_keys:: ProjectApiKey ;
15
15
use crate :: db:: { self , DB } ;
16
- use crate :: features:: { is_feature_enabled , Feature } ;
16
+ use crate :: features:: { Feature , is_feature_enabled } ;
17
17
use crate :: routes:: types:: ResponseResult ;
18
18
use crate :: traces:: limits:: get_workspace_limit_exceeded_by_project_id;
19
19
@@ -62,6 +62,7 @@ pub async fn run_agent_manager(
62
62
agent_manager : web:: Data < Arc < AgentManager > > ,
63
63
worker_states : web:: Data < Arc < AgentManagerWorkers > > ,
64
64
db : web:: Data < DB > ,
65
+ clickhouse : web:: Data < clickhouse:: Client > ,
65
66
project_api_key : ProjectApiKey ,
66
67
cache : web:: Data < Cache > ,
67
68
request : web:: Json < RunAgentRequest > ,
@@ -76,6 +77,7 @@ pub async fn run_agent_manager(
76
77
if is_feature_enabled ( Feature :: UsageLimit ) {
77
78
match get_workspace_limit_exceeded_by_project_id (
78
79
db. clone ( ) ,
80
+ clickhouse. into_inner ( ) . as_ref ( ) . clone ( ) ,
79
81
cache. clone ( ) ,
80
82
project_api_key. project_id ,
81
83
)
@@ -128,7 +130,6 @@ pub async fn run_agent_manager(
128
130
return_agent_state : request. return_agent_state ,
129
131
return_storage_state : request. return_storage_state ,
130
132
} ;
131
- let pool = db. pool . clone ( ) ;
132
133
let worker_states_clone = worker_states. clone ( ) ;
133
134
let handle = tokio:: spawn ( async move {
134
135
run_agent_worker (
@@ -149,13 +150,6 @@ pub async fn run_agent_manager(
149
150
while let Some ( message) = receiver. recv( ) . await {
150
151
match message {
151
152
Ok ( agent_chunk) => {
152
- if let Err ( e) =
153
- db:: stats:: add_agent_steps_to_project_usage_stats( & pool, & project_api_key. project_id, 1 )
154
- . await
155
- {
156
- log:: error!( "Error adding agent steps to project usage stats: {}" , e) ;
157
- }
158
-
159
153
match agent_chunk {
160
154
RunAgentResponseStreamChunk :: FinalOutput ( _) => {
161
155
yield anyhow:: Ok ( agent_chunk. into( ) ) ;
@@ -222,15 +216,6 @@ pub async fn run_agent_manager(
222
216
match fut. await {
223
217
Ok ( response) => {
224
218
let response = response?;
225
- if let Err ( e) = db:: stats:: add_agent_steps_to_project_usage_stats (
226
- & db. pool ,
227
- & project_api_key. project_id ,
228
- response. step_count . unwrap_or ( 0 ) as i64 ,
229
- )
230
- . await
231
- {
232
- log:: error!( "Error adding agent steps to project usage stats: {}" , e) ;
233
- }
234
219
Ok ( HttpResponse :: Ok ( ) . json ( response) )
235
220
}
236
221
Err ( e) if e. is_cancelled ( ) => Ok ( HttpResponse :: NoContent ( ) . finish ( ) ) ,
0 commit comments