lash-core 0.1.0-alpha.38

Sans-IO turn machine and runtime kernel for the lash agent runtime.
Documentation
use crate::plugin::{DirectCompletion, PluginError};

#[derive(Clone)]
pub struct ToolDirectCompletionControl<'run> {
    pub(super) session_id: String,
    pub(super) tool_call_id: Option<String>,
    pub(super) direct_completions: crate::DirectCompletionClient<'run>,
}

impl ToolDirectCompletionControl<'_> {
    pub async fn complete(
        &self,
        mut request: crate::DirectRequest,
        usage_source: &str,
    ) -> Result<DirectCompletion, PluginError> {
        if request.session_id.is_none() {
            request.session_id = Some(self.session_id.clone());
        }
        if request.caused_by.is_none()
            && let Some(call_id) = self.tool_call_id.clone()
        {
            request.caused_by = Some(crate::CausalRef::ToolCall {
                session_id: self.session_id.clone(),
                call_id,
            });
        }
        self.direct_completions
            .direct_completion(request, usage_source)
            .await
    }
}