Skip to content

Commit b7fb3f1

Browse files
Merge pull request #226 from code0-tech/deps/tucana-0-0-75
deps: updated tucana v0.0.75
2 parents 0eecd7d + 308d0df commit b7fb3f1

9 files changed

Lines changed: 91 additions & 68 deletions

File tree

Cargo.lock

Lines changed: 26 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ edition = "2024"
99
[workspace.dependencies]
1010
async-trait = "0.1.89"
1111
code0-flow = { version = "0.0.36" }
12-
tucana = { version = "0.0.74" }
12+
tucana = { version = "0.0.75" }
1313
tokio = { version = "1.44.1", features = ["rt-multi-thread", "signal"] }
1414
log = "0.4.27"
1515
futures-lite = "2.6.0"

crates/taurus-core/src/handler/argument.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use tucana::shared::SubFlowSetting;
1313
#[derive(Clone)]
1414
pub struct FunctionThunk {
1515
pub identifier: String,
16-
pub result_id: Option<i64>,
1716
pub parameter_index: i64,
1817
pub settings: Vec<SubFlowSetting>,
1918
}
@@ -22,7 +21,6 @@ impl fmt::Debug for FunctionThunk {
2221
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2322
f.debug_struct("FunctionThunk")
2423
.field("identifier", &self.identifier)
25-
.field("result_id", &self.result_id)
2624
.field("parameter_index", &self.parameter_index)
2725
.field("settings_len", &self.settings.len())
2826
.finish()

crates/taurus-core/src/runtime/engine.rs

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -418,10 +418,12 @@ mod tests {
418418
);
419419
}
420420

421-
fn assert_function_result_id(result: &NodeExecutionResult, expected_id: i64) {
421+
fn assert_function_result_id(result: &NodeExecutionResult, expected_id: &str) {
422422
assert_eq!(
423423
result.id,
424-
Some(node_execution_result::Id::FunctionId(expected_id))
424+
Some(node_execution_result::Id::FunctionIdentifier(
425+
expected_id.to_string()
426+
))
425427
);
426428
}
427429

@@ -880,7 +882,11 @@ mod tests {
880882
#[test]
881883
fn execution_report_includes_function_identifier_subflow_results() {
882884
let mut handlers = FunctionStore::default();
883-
handlers.populate(&[FunctionRegistration::eager("42", echo_first_arg_handler, 1)]);
885+
handlers.populate(&[FunctionRegistration::eager(
886+
"std::test::echo",
887+
echo_first_arg_handler,
888+
1,
889+
)]);
884890
let engine = ExecutionEngine { handlers };
885891

886892
let add_node = node(
@@ -890,7 +896,7 @@ mod tests {
890896
function_thunk_param(
891897
100,
892898
"lhs",
893-
"42",
899+
"std::test::echo",
894900
vec![subflow_setting("value", Some(int_value(20)), false, true)],
895901
),
896902
literal_param(101, "rhs", int_value(2)),
@@ -905,7 +911,7 @@ mod tests {
905911
assert_eq!(report.node_execution_results.len(), 2);
906912

907913
let function_result = &report.node_execution_results[0];
908-
assert_function_result_id(function_result, 42);
914+
assert_function_result_id(function_result, "std::test::echo");
909915
assert_eq!(function_result.parameter_results.len(), 1);
910916
assert_eq!(
911917
function_result.parameter_results[0].value,
@@ -1234,7 +1240,12 @@ mod tests {
12341240
let function_results: Vec<_> = report
12351241
.node_execution_results
12361242
.iter()
1237-
.filter(|result| result.id == Some(node_execution_result::Id::FunctionId(5)))
1243+
.filter(|result| {
1244+
result.id
1245+
== Some(node_execution_result::Id::FunctionIdentifier(
1246+
"std::boolean::from_number".to_string(),
1247+
))
1248+
})
12381249
.collect();
12391250
assert_eq!(function_results.len(), 3);
12401251

@@ -1257,9 +1268,18 @@ mod tests {
12571268
}
12581269
}
12591270

1260-
assert_function_result_id(&report.node_execution_results[0], 5);
1261-
assert_function_result_id(&report.node_execution_results[1], 5);
1262-
assert_function_result_id(&report.node_execution_results[2], 5);
1271+
assert_function_result_id(
1272+
&report.node_execution_results[0],
1273+
"std::boolean::from_number",
1274+
);
1275+
assert_function_result_id(
1276+
&report.node_execution_results[1],
1277+
"std::boolean::from_number",
1278+
);
1279+
assert_function_result_id(
1280+
&report.node_execution_results[2],
1281+
"std::boolean::from_number",
1282+
);
12631283
assert_node_result_id(&report.node_execution_results[3], 2);
12641284
assert_node_result_id(&report.node_execution_results[4], 1);
12651285
}

crates/taurus-core/src/runtime/engine/compiler.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,6 @@ pub fn compile_flow(
162162
Some(sub_flow::ExecutionReference::FunctionIdentifier(identifier)) => {
163163
CompiledArg::Deferred(CompiledThunk::Function {
164164
identifier: identifier.clone(),
165-
result_id: identifier.parse().ok().or(Some(parameter.database_id)),
166165
parameter_index: parameter_index as i64,
167166
settings: sub_flow.settings.clone(),
168167
})

crates/taurus-core/src/runtime/engine/executor.rs

Lines changed: 27 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,6 @@ impl<'a> EngineExecutor<'a> {
184184
value_store: &mut ValueStore,
185185
) -> ExecutionResult {
186186
let started_at = now_unix_micros();
187-
let function_result_id = parse_function_result_id(function);
188187
let entry = match self.handlers.get(function.identifier.as_str()).copied() {
189188
Some(entry) => entry,
190189
None => {
@@ -193,15 +192,13 @@ impl<'a> EngineExecutor<'a> {
193192
"FunctionNotFound",
194193
format!("Function {} not found", function.identifier),
195194
);
196-
if let Some(function_id) = function_result_id {
197-
value_store.insert_function_error_with_timing(
198-
function_id,
199-
error.clone(),
200-
Vec::new(),
201-
started_at,
202-
now_unix_micros(),
203-
);
204-
}
195+
value_store.insert_function_error_with_timing(
196+
function.identifier.clone(),
197+
error.clone(),
198+
Vec::new(),
199+
started_at,
200+
now_unix_micros(),
201+
);
205202
return ExecutionResult {
206203
signal: Signal::Failure(error),
207204
root_frame: None,
@@ -220,17 +217,15 @@ impl<'a> EngineExecutor<'a> {
220217
Err(err) => {
221218
let signal = Signal::Failure(err);
222219
self.trace_exit(frame_id, &signal, value_store);
223-
if let Some(function_id) = function_result_id {
224-
let parameter_results = Vec::new();
225-
self.commit_function_result(
226-
function_id,
227-
signal.clone(),
228-
parameter_results,
229-
started_at,
230-
now_unix_micros(),
231-
value_store,
232-
);
233-
}
220+
let parameter_results = Vec::new();
221+
self.commit_function_result(
222+
function.identifier.as_str(),
223+
signal.clone(),
224+
parameter_results,
225+
started_at,
226+
now_unix_micros(),
227+
value_store,
228+
);
234229
return ExecutionResult {
235230
signal,
236231
root_frame: frame_id,
@@ -257,16 +252,14 @@ impl<'a> EngineExecutor<'a> {
257252
};
258253

259254
self.trace_exit(frame_id, &signal, value_store);
260-
if let Some(function_id) = function_result_id {
261-
self.commit_function_result(
262-
function_id,
263-
signal.clone(),
264-
parameter_results,
265-
started_at,
266-
now_unix_micros(),
267-
value_store,
268-
);
269-
}
255+
self.commit_function_result(
256+
function.identifier.as_str(),
257+
signal.clone(),
258+
parameter_results,
259+
started_at,
260+
now_unix_micros(),
261+
value_store,
262+
);
270263

271264
ExecutionResult {
272265
signal,
@@ -783,7 +776,7 @@ impl<'a> EngineExecutor<'a> {
783776

784777
fn commit_function_result(
785778
&self,
786-
function_id: i64,
779+
function_id: &str,
787780
signal: Signal,
788781
parameter_results: Vec<NodeParameterNodeExecutionResult>,
789782
started_at: i64,
@@ -793,7 +786,7 @@ impl<'a> EngineExecutor<'a> {
793786
match signal {
794787
Signal::Success(value) => {
795788
value_store.insert_function_success_with_timing(
796-
function_id,
789+
function_id.to_string(),
797790
value.clone(),
798791
parameter_results,
799792
started_at,
@@ -803,7 +796,7 @@ impl<'a> EngineExecutor<'a> {
803796
}
804797
Signal::Failure(err) => {
805798
value_store.insert_function_error_with_timing(
806-
function_id,
799+
function_id.to_string(),
807800
err.clone(),
808801
parameter_results,
809802
started_at,
@@ -959,24 +952,16 @@ fn compiled_thunk_to_argument(thunk: &CompiledThunk) -> Thunk {
959952
CompiledThunk::Node(node_id) => Thunk::Node(*node_id),
960953
CompiledThunk::Function {
961954
identifier,
962-
result_id,
963955
parameter_index,
964956
settings,
965957
} => Thunk::Function(FunctionThunk {
966958
identifier: identifier.clone(),
967-
result_id: *result_id,
968959
parameter_index: *parameter_index,
969960
settings: settings.clone(),
970961
}),
971962
}
972963
}
973964

974-
fn parse_function_result_id(function: &FunctionThunk) -> Option<i64> {
975-
function
976-
.result_id
977-
.or_else(|| function.identifier.parse::<i64>().ok())
978-
}
979-
980965
fn resolve_function_setting(
981966
function: &FunctionThunk,
982967
setting: &SubFlowSetting,

crates/taurus-core/src/runtime/engine/model.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ pub enum CompiledThunk {
2626
Node(i64),
2727
Function {
2828
identifier: String,
29-
result_id: Option<i64>,
3029
parameter_index: i64,
3130
settings: Vec<SubFlowSetting>,
3231
},

crates/taurus-core/src/runtime/execution/value_store.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ impl ValueStore {
194194

195195
pub fn insert_function_success_with_timing(
196196
&mut self,
197-
id: i64,
197+
id: String,
198198
value: Value,
199199
parameter_results: Vec<NodeParameterNodeExecutionResult>,
200200
started_at: i64,
@@ -204,14 +204,14 @@ impl ValueStore {
204204
started_at,
205205
finished_at,
206206
parameter_results,
207-
id: Some(TucanaNodeResultId::FunctionId(id)),
207+
id: Some(TucanaNodeResultId::FunctionIdentifier(id)),
208208
result: Some(TucanaNodeResult::Success(value)),
209209
});
210210
}
211211

212212
pub fn insert_function_error_with_timing(
213213
&mut self,
214-
id: i64,
214+
id: String,
215215
runtime_error: RuntimeError,
216216
parameter_results: Vec<NodeParameterNodeExecutionResult>,
217217
started_at: i64,
@@ -221,7 +221,7 @@ impl ValueStore {
221221
started_at,
222222
finished_at,
223223
parameter_results,
224-
id: Some(TucanaNodeResultId::FunctionId(id)),
224+
id: Some(TucanaNodeResultId::FunctionIdentifier(id)),
225225
result: Some(TucanaNodeResult::Error(runtime_error.as_tucana_error())),
226226
});
227227
}

crates/taurus-manual/src/main.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,9 +418,11 @@ fn null_value() -> Value {
418418
}
419419

420420
fn execution_result_id_label(result: &NodeExecutionResult) -> String {
421-
match result.id {
421+
match &result.id {
422422
Some(NodeExecutionResultId::NodeId(id)) => format!("node_id={}", id),
423-
Some(NodeExecutionResultId::FunctionId(id)) => format!("function_id={}", id),
423+
Some(NodeExecutionResultId::FunctionIdentifier(id)) => {
424+
format!("function_identifier={}", id)
425+
}
424426
None => "id=<missing>".to_string(),
425427
}
426428
}

0 commit comments

Comments
 (0)