use recoco::builder::FlowBuilder;
use recoco::execution::evaluator::evaluate_transient_flow;
use recoco::prelude::*;
use serde_json::json;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
recoco::lib_context::init_lib_context(Some(recoco::settings::Settings::default())).await?;
println!("Building transient flow...");
let mut builder = FlowBuilder::new("transient_example").await?;
let input_slice = builder.add_direct_input(
"text_input".to_string(),
schema::make_output_type(schema::BasicValueType::Str),
)?;
let split_slice = builder
.transform(
"SplitBySeparators".to_string(),
json!({
"separators_regex": [" "],
"keep_separator": null,
"include_empty": false,
"trim": true
})
.as_object()
.unwrap()
.clone(),
vec![(input_slice, Some("text".to_string()))],
None,
"splitter".to_string(),
)
.await?;
builder.set_direct_output(split_slice)?;
let flow = builder.build_transient_flow().await?;
let input_text = "Hello World Recoco";
let input_value = value::Value::Basic(value::BasicValue::Str(input_text.into()));
println!("Executing flow with input: '{}'", input_text);
let result = evaluate_transient_flow(&flow.0, &vec![input_value]).await?;
println!("Result: {:?}", result);
Ok(())
}