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

Method execute_from_messages_seeded

core/src/agent/execution_entry.rs:44–97  ·  view source on GitHub ↗

Like [`execute_from_messages`](Self::execute_from_messages) but seeds the loop's cumulative metrics (token usage, tool-call count, verification reports) from a checkpoint. Used by `AgentSession::resume_run` so a resumed run continues accounting from where the crashed/migrated run left off instead of re-starting at zero.

(
        &self,
        messages: Vec<Message>,
        session_id: Option<&str>,
        event_tx: Option<mpsc::Sender<AgentEvent>>,
        cancel_token: Option<&tokio_util::sync::CancellationToken

Source from the content-addressed store, hash-verified

42 /// from where the crashed/migrated run left off instead of
43 /// re-starting at zero.
44 pub async fn execute_from_messages_seeded(
45 &self,
46 messages: Vec<Message>,
47 session_id: Option<&str>,
48 event_tx: Option<mpsc::Sender<AgentEvent>>,
49 cancel_token: Option<&tokio_util::sync::CancellationToken>,
50 seed: Option<super::execution_state::ExecutionSeed>,
51 ) -> Result<AgentResult> {
52 let default_token = tokio_util::sync::CancellationToken::new();
53 let token = cancel_token.unwrap_or(&default_token);
54 tracing::info!(
55 a3s.session.id = session_id.unwrap_or("none"),
56 a3s.agent.max_turns = self.config.max_tool_rounds,
57 "a3s.agent.execute_from_messages started"
58 );
59
60 // Extract the last user message text for hooks, memory recall, and events.
61 // Pass empty prompt so execute_loop skips adding a duplicate user message,
62 // but provide effective_prompt for hook/memory/event purposes.
63 let effective_prompt = messages
64 .iter()
65 .rev()
66 .find(|m| m.role == "user")
67 .map(|m| m.text())
68 .unwrap_or_default();
69
70 let result = self
71 .execute_loop_inner(
72 &messages,
73 "",
74 &effective_prompt,
75 None, // no pre-computed style; resolve inside the loop
76 session_id,
77 event_tx,
78 token,
79 true, // emit_end: this is a standalone execution
80 seed,
81 )
82 .await;
83
84 match &result {
85 Ok(r) => tracing::info!(
86 a3s.agent.tool_calls_count = r.tool_calls_count,
87 a3s.llm.total_tokens = r.usage.total_tokens,
88 "a3s.agent.execute_from_messages completed"
89 ),
90 Err(e) => tracing::warn!(
91 error = %e,
92 "a3s.agent.execute_from_messages failed"
93 ),
94 }
95
96 result
97 }
98}

Callers 1

execute_from_messagesMethod · 0.45

Calls 2

execute_loop_innerMethod · 0.80
textMethod · 0.45

Tested by

no test coverage detected