MCPcopy Create free account
hub / github.com/AI45Lab/Code / execute_with_session

Method execute_with_session

core/src/agent/execution_mode.rs:49–105  ·  view source on GitHub ↗

Execute the agent loop for a prompt with session context Takes the conversation history, user prompt, and optional session ID. When session_id is provided, context providers can use it for session-specific context.

(
        &self,
        history: &[Message],
        prompt: &str,
        session_id: Option<&str>,
        event_tx: Option<mpsc::Sender<AgentEvent>>,
        cancel_token: Option<&tokio_util::sync

Source from the content-addressed store, hash-verified

47 /// Takes the conversation history, user prompt, and optional session ID.
48 /// When session_id is provided, context providers can use it for session-specific context.
49 pub async fn execute_with_session(
50 &self,
51 history: &[Message],
52 prompt: &str,
53 session_id: Option<&str>,
54 event_tx: Option<mpsc::Sender<AgentEvent>>,
55 cancel_token: Option<&tokio_util::sync::CancellationToken>,
56 ) -> Result<AgentResult> {
57 let default_token = tokio_util::sync::CancellationToken::new();
58 let token = cancel_token.unwrap_or(&default_token);
59 tracing::info!(
60 a3s.session.id = session_id.unwrap_or("none"),
61 a3s.agent.max_turns = self.config.max_tool_rounds,
62 "a3s.agent.execute started"
63 );
64
65 let route = self.resolve_execution_route(prompt).await;
66 let mut effective_prompt = route.effective_prompt.clone();
67 let mut auto_tool_calls_count = 0;
68 if !route.use_planning {
69 if let Some(outcome) = self
70 .maybe_apply_auto_delegation(&effective_prompt, session_id, &event_tx)
71 .await?
72 {
73 effective_prompt = outcome.prompt;
74 auto_tool_calls_count = outcome.tool_calls_count;
75 }
76 }
77
78 let mut result = if route.use_planning {
79 self.execute_with_planning(
80 history,
81 &effective_prompt,
82 session_id,
83 event_tx,
84 route.pre_analysis,
85 )
86 .await
87 } else {
88 self.execute_loop(
89 history,
90 &effective_prompt,
91 route.style,
92 session_id,
93 event_tx,
94 token,
95 true,
96 )
97 .await
98 };
99 if let Ok(result) = &mut result {
100 result.tool_calls_count += auto_tool_calls_count;
101 }
102
103 self.record_execution_result(session_id, &result).await;
104 result
105 }
106

Calls 6

execute_with_planningMethod · 0.80
execute_loopMethod · 0.80
cloneMethod · 0.45