distri 0.3.8

Rust client for the Distri A2A agent platform
Documentation
mod client;
mod client_app;
mod client_stream;
pub mod config;
mod printer;
mod renderers;

/// Workflow engine — define, execute, and track multi-step workflows.
pub mod workflow {
    pub use distri_workflow::*;
}

mod workflow_executor;
pub use workflow_executor::{ChannelEventSink, DistriStepExecutor, WorkflowSession};

use thiserror::Error;

pub use crate::external_tools_runtime::ExternalToolRegistry;
pub use crate::hooks_runtime::HookRegistry;
pub use client::{
    AgentListItem, AgentRegistrationResponse, ApiKeyResponse, ArtifactEntry, ArtifactListResponse,
    ArtifactNamespace, ArtifactNamespaceList, ArtifactReadResponse, ArtifactSaveResponse,
    ConnectResponse, ConnectionSummary, ConnectionToken, CreatePluginRequest, CreateSkillRequest,
    Distri, InvokeOptions, LlmExecuteOptions, LlmExecuteResponse, LoginUrlResponse,
    NewPromptTemplateRequest, NewSecretRequest, PluginResponse, PluginsListResponse,
    PromptTemplateResponse, ProviderInfo, SecretEntry, SkillResponse, SyncPromptTemplatesResponse,
    TaskNamespaceResponse, ThreadSummary, TraceSummary, TtsModelsResponse, TtsSpeechRequest,
    TtsSpeechResponse, UpdatePluginRequest, UpdateSkillRequest, ValidatePluginResponse,
    WorkspaceResponse,
};
pub use client_app::{AppError, DistriClientApp, ToolListItem};
pub use client_stream::{AgentStreamClient, StreamError, StreamItem, parse_sse_data};
pub use config::{BuildHttpClient, DistriConfig};
pub use hooks_runtime::*;

pub use distri_types::{
    HookContext, HookKind, HookMutation, InlineHookRequest, InlineHookResponse, Model,
    ModelProviderDefinition, ProviderKeyDefinition, ProviderType, TokenResponse, TtsVoiceInfo,
};
pub use printer::{
    ContextHealth, EventPrinter, print_stream, print_stream_verbose, print_stream_with_health,
};

#[cfg(test)]
mod tests;

#[derive(Debug, Error)]
pub enum ClientError {
    #[error("http request failed: {0}")]
    Http(#[from] reqwest::Error),
    #[error("stdout transport failed: {0}")]
    Stdout(String),
    #[error("invalid response: {0}")]
    InvalidResponse(String),
    #[error("serialization error: {0}")]
    Serialization(#[from] serde_json::Error),
    #[error("io error: {0}")]
    Io(#[from] std::io::Error),
}

mod external_tools_runtime;
mod hooks_runtime;
pub mod platform_tools;

pub use distri_a2a as a2a;
pub use distri_types as types;