Skip to main content

vv_agent/runtime/backends/
inline.rs

1use super::execute_cycle_loop;
2use crate::runtime::CancellationToken;
3use crate::types::{AgentResult, AgentTask, CycleRecord, Message, Metadata};
4
5#[derive(Debug, Clone, Copy, Default)]
6pub struct InlineBackend;
7
8impl InlineBackend {
9    pub fn execute<F>(
10        &self,
11        _task: &AgentTask,
12        initial_messages: Vec<Message>,
13        shared_state: Metadata,
14        cycle_executor: F,
15        cancellation_token: Option<&CancellationToken>,
16        max_cycles: u32,
17    ) -> AgentResult
18    where
19        F: FnMut(
20            u32,
21            &mut Vec<Message>,
22            &mut Vec<CycleRecord>,
23            &mut Metadata,
24            Option<&CancellationToken>,
25        ) -> Option<AgentResult>,
26    {
27        execute_cycle_loop(
28            initial_messages,
29            shared_state,
30            cycle_executor,
31            cancellation_token,
32            max_cycles,
33        )
34    }
35
36    pub fn parallel_map<T, R, F>(&self, function: F, items: Vec<T>) -> Vec<R>
37    where
38        F: Fn(T) -> R,
39    {
40        items.into_iter().map(function).collect()
41    }
42}