Skip to content

Commit

Permalink
Merge branch 'flow'
Browse files Browse the repository at this point in the history
  • Loading branch information
merlinfuchs committed Feb 15, 2024
2 parents 0112e2e + c3ef27d commit 2d0db0c
Show file tree
Hide file tree
Showing 67 changed files with 2,964 additions and 200 deletions.
30 changes: 24 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ opt-level = 's'
resolver = "2"
members = [
"kite-sdk-js/crates/kitejs-compiler",
"kite-sdk-flow/crates/kiteflow-compiler",
"kite-sdk-flow/crates/kiteflow-engine",
]
exclude = [
# TODO: resolve depdency conflicts so this can be a workspace memebr
Expand Down
12 changes: 12 additions & 0 deletions kite-sdk-flow/crates/kiteflow-compiler/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[package]
name = "kiteflow-compiler"
version = "0.1.0"
edition = "2021"

[profile.release]
lto = true
opt-level = 3

[dependencies]
anyhow = "1.0.79"
serde_json = "1.0.111"
1 change: 1 addition & 0 deletions kite-sdk-flow/crates/kiteflow-compiler/src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fn main() {}
14 changes: 14 additions & 0 deletions kite-sdk-flow/crates/kiteflow-engine/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[package]
name = "kiteflow-engine"
version = "0.1.0"
edition = "2021"

[profile.release]
lto = true
opt-level = 3

[dependencies]
anyhow = "1.0.79"
once_cell = "1.19.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
8 changes: 8 additions & 0 deletions kite-sdk-flow/crates/kiteflow-engine/src/engine/edge.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
use serde::{Serialize, Deserialize};

#[derive(Clone, Serialize, Deserialize)]
pub struct Edge {
pub id: String,
pub source: String,
pub target: String
}
15 changes: 15 additions & 0 deletions kite-sdk-flow/crates/kiteflow-engine/src/engine/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
use serde::{Serialize, Deserialize};

mod node;
mod tree;
mod edge;

pub use node::Node;
pub use tree::FlowTree;
pub use edge::Edge;

#[derive(Clone, Serialize, Deserialize)]
pub struct FlowData {
pub nodes: Vec<Node>,
pub edges: Vec<Edge>,
}
74 changes: 74 additions & 0 deletions kite-sdk-flow/crates/kiteflow-engine/src/engine/node.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
use serde::{Serialize, Deserialize};

#[derive(Clone, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum Node {
EntryCommand { id: String, data: NodeDataEntryCommand },
EntryEvent { id: String, data: NodeDataEntryEvent },
EntryError { id: String, data: NodeDataEntryError },
OptionText { id: String, data: NodeDataOptionText },
ActionLog { id: String, data: NodeDataActionLog },
ActionResponseText { id: String, data: NodeDataActionResponseText },
}

impl Node {
pub fn id(&self) -> &str {
match self {
Node::EntryCommand { id, .. } => id,
Node::EntryEvent { id, .. } => id,
Node::EntryError { id, .. } => id,
Node::OptionText { id, .. } => id,
Node::ActionLog { id, .. } => id,
Node::ActionResponseText { id, .. } => id,
}
}

pub fn is_entry(&self) -> bool {
matches!(self, Node::EntryCommand { .. } | Node::EntryEvent { .. } | Node::EntryError { .. })
}

pub fn is_action(&self) -> bool {
return false;
}

pub fn is_condition(&self) -> bool {
return false;
}

pub fn is_option(&self) -> bool {
return false;
}
}

#[derive(Clone, Serialize, Deserialize)]
pub struct NodeDataEntryCommand {
pub name: String,
pub description: String
}

#[derive(Clone, Serialize, Deserialize)]
pub struct NodeDataEntryEvent {
pub event_type: String
}

#[derive(Clone, Serialize, Deserialize)]
pub struct NodeDataEntryError {}

#[derive(Clone, Serialize, Deserialize)]
pub struct NodeDataOptionText {
pub name: String,
pub description: String,
pub required: bool
}

#[derive(Clone, Serialize, Deserialize)]
pub struct NodeDataActionLog {
pub log_level: String,
pub log_message: String
}


#[derive(Clone, Serialize, Deserialize)]
pub struct NodeDataActionResponseText {
pub text: String
}
Loading

0 comments on commit 2d0db0c

Please sign in to comment.