Skip to main content

synwire_core/runnables/
config.rs

1//! Runnable configuration.
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5use std::collections::HashMap;
6use std::sync::Arc;
7use uuid::Uuid;
8
9/// Configuration passed through a runnable chain.
10#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11pub struct RunnableConfig {
12    /// Tags for filtering and categorization.
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub tags: Option<Vec<String>>,
15    /// Metadata key-value pairs.
16    #[serde(default, skip_serializing_if = "Option::is_none")]
17    pub metadata: Option<HashMap<String, Value>>,
18    /// Maximum concurrency for batch operations.
19    #[serde(default, skip_serializing_if = "Option::is_none")]
20    pub max_concurrency: Option<usize>,
21    /// Name for this run.
22    #[serde(default, skip_serializing_if = "Option::is_none")]
23    pub run_name: Option<String>,
24    /// Unique identifier for this run.
25    #[serde(default, skip_serializing_if = "Option::is_none")]
26    pub run_id: Option<Uuid>,
27    /// Configurable key-value pairs.
28    #[serde(default, skip_serializing_if = "Option::is_none")]
29    pub configurable: Option<HashMap<String, Value>>,
30    /// Callback handlers (not serialized).
31    #[serde(skip)]
32    pub callbacks: Option<Vec<Arc<dyn CallbackHandlerDyn>>>,
33    /// Tracing configuration (only available with the `tracing` feature).
34    #[cfg(feature = "tracing")]
35    #[serde(default, skip_serializing_if = "Option::is_none")]
36    pub tracing_config: Option<crate::observability::TracingConfig>,
37}
38
39/// Marker trait for callback handlers (placeholder until callbacks module exists).
40pub trait CallbackHandlerDyn: Send + Sync + std::fmt::Debug {}