Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions examples/complex_llm_workflow/diagram.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sequential workflow</title>
<style>
body { font-family: system-ui, sans-serif; margin: 2rem; background: #fafafa; }
h1 { color: #333; }
#diagram { background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
</style>
</head>
<body>
<h1>Sequential workflow</h1>
<div id="diagram"></div>
<script type="module">
import { renderMermaidSVG } from "https://esm.sh/beautiful-mermaid@1";
const diagram = `flowchart LR
in((In))
out((Out))
subgraph sequential_workflow["Sequential workflow"]
country[Country]
gate{Gate}
subgraph parallel_workflow["Parallel workflow"]
food[Food]
sports[Sports]
weather[Weather]
end
parallel_workflow_aggregator[Parallel workflow Aggregator]
end
in --> country
country --> gate
gate -->|failure| out
gate --> food
gate --> sports
gate --> weather
food --> parallel_workflow_aggregator
parallel_workflow_aggregator --> out
sports --> parallel_workflow_aggregator
weather --> parallel_workflow_aggregator`;
const svg = renderMermaidSVG(diagram);
document.getElementById("diagram").innerHTML = svg;
</script>
</body>
</html>
39 changes: 16 additions & 23 deletions examples/complex_llm_workflow/diagram.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,24 @@
flowchart LR
in((In))
out((Out))
agent1[Agent1]
gate{Gate}
parallel_workflow_aggregator[Parallel workflow Aggregator]
agent2[Agent2]
agent3[Agent3]
agent4[Agent4]
subgraph parallel_workflow["Parallel workflow"]
agent2
agent3
agent4
end
subgraph sequential_workflow["Sequential workflow"]
agent1
gate
parallel_workflow
parallel_workflow_aggregator
country[Country]
gate{Gate}
subgraph parallel_workflow["Parallel workflow"]
food[Food]
sports[Sports]
weather[Weather]
end
parallel_workflow_aggregator[Parallel workflow Aggregator]
end
in --> agent1
agent1 --> gate
in --> country
country --> gate
gate -->|failure| out
gate --> agent2
gate --> agent3
gate --> agent4
agent2 --> parallel_workflow_aggregator
gate --> food
gate --> sports
gate --> weather
food --> parallel_workflow_aggregator
parallel_workflow_aggregator --> out
agent3 --> parallel_workflow_aggregator
agent4 --> parallel_workflow_aggregator
sports --> parallel_workflow_aggregator
weather --> parallel_workflow_aggregator
```
2 changes: 2 additions & 0 deletions examples/complex_llm_workflow/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ class WeatherStep < MARS::AgentStep
diagram = MARS::Rendering::Mermaid.new(sequential_workflow).render
File.write("examples/complex_llm_workflow/diagram.md", diagram)
puts "Complex workflow diagram saved to: examples/complex_llm_workflow/diagram.md"
MARS::Rendering::Html.new(sequential_workflow).write("examples/complex_llm_workflow/diagram.html")
puts "Complex workflow beautiful mermaid diagram saved to: examples/complex_llm_workflow/diagram.html"

# Run the workflow
puts sequential_workflow.run("Which is the largest country in Europe?")
28 changes: 9 additions & 19 deletions examples/complex_workflow/diagram.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,42 +18,32 @@ <h1>Main Pipeline</h1>
const diagram = `flowchart LR
in((In))
out((Out))
agent1[agent1]
gate{Gate}
agent4[agent4]
parallel_workflow_aggregator[Parallel workflow Aggregator]
agent2[agent2]
agent3[agent3]
parallel_workflow_2_aggregator[Parallel workflow 2 Aggregator]
agent5[agent5]
subgraph main_pipeline["Main Pipeline"]
agent1
gate
parallel_workflow_aggregator
agent1[agent1]
gate{Gate}
subgraph parallel_workflow_2["Parallel workflow 2"]
subgraph sequential_workflow["Sequential workflow"]
agent4
agent4[agent4]
subgraph parallel_workflow["Parallel workflow"]
agent2
agent3
agent2[agent2]
agent3[agent3]
end
parallel_workflow_aggregator
parallel_workflow_aggregator[Parallel workflow Aggregator]
end
agent5
agent5[agent5]
end
parallel_workflow_2_aggregator
parallel_workflow_2_aggregator[Parallel workflow 2 Aggregator]
end
in --> agent1
agent1 --> gate
gate -->|warning| agent4
gate -->|error| agent2
gate -->|error| agent3
gate --> agent4
gate --> agent5
agent4 --> agent2
agent4 --> agent3
agent2 --> parallel_workflow_aggregator
parallel_workflow_aggregator --> parallel_workflow_2_aggregator
parallel_workflow_aggregator --> agent5
agent3 --> parallel_workflow_aggregator
parallel_workflow_2_aggregator --> out
agent5 --> parallel_workflow_2_aggregator`;
Expand Down
28 changes: 9 additions & 19 deletions examples/complex_workflow/diagram.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,42 +2,32 @@
flowchart LR
in((In))
out((Out))
agent1[agent1]
gate{Gate}
agent4[agent4]
parallel_workflow_aggregator[Parallel workflow Aggregator]
agent2[agent2]
agent3[agent3]
parallel_workflow_2_aggregator[Parallel workflow 2 Aggregator]
agent5[agent5]
subgraph main_pipeline["Main Pipeline"]
agent1
gate
parallel_workflow_aggregator
agent1[agent1]
gate{Gate}
subgraph parallel_workflow_2["Parallel workflow 2"]
subgraph sequential_workflow["Sequential workflow"]
agent4
agent4[agent4]
subgraph parallel_workflow["Parallel workflow"]
agent2
agent3
agent2[agent2]
agent3[agent3]
end
parallel_workflow_aggregator
parallel_workflow_aggregator[Parallel workflow Aggregator]
end
agent5
agent5[agent5]
end
parallel_workflow_2_aggregator
parallel_workflow_2_aggregator[Parallel workflow 2 Aggregator]
end
in --> agent1
agent1 --> gate
gate -->|warning| agent4
gate -->|error| agent2
gate -->|error| agent3
gate --> agent4
gate --> agent5
agent4 --> agent2
agent4 --> agent3
agent2 --> parallel_workflow_aggregator
parallel_workflow_aggregator --> parallel_workflow_2_aggregator
parallel_workflow_aggregator --> agent5
agent3 --> parallel_workflow_aggregator
parallel_workflow_2_aggregator --> out
agent5 --> parallel_workflow_2_aggregator
Expand Down
2 changes: 2 additions & 0 deletions examples/complex_workflow/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,5 @@ class Agent5 < MARS::AgentStep
diagram = MARS::Rendering::Mermaid.new(main_workflow).render
File.write("examples/complex_workflow/diagram.md", diagram)
puts "Complex workflow diagram saved to: examples/complex_workflow/diagram.md"
MARS::Rendering::Html.new(main_workflow).write("examples/complex_workflow/diagram.html")
puts "Complex workflow beautiful mermaid diagram saved to: examples/complex_workflow/diagram.html"
38 changes: 38 additions & 0 deletions examples/parallel_workflow/diagram.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Parallel workflow</title>
<style>
body { font-family: system-ui, sans-serif; margin: 2rem; background: #fafafa; }
h1 { color: #333; }
#diagram { background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
</style>
</head>
<body>
<h1>Parallel workflow</h1>
<div id="diagram"></div>
<script type="module">
import { renderMermaidSVG } from "https://esm.sh/beautiful-mermaid@1";
const diagram = `flowchart LR
in((In))
out((Out))
aggregator[Aggregator]
subgraph parallel_workflow["Parallel workflow"]
agent1[agent1]
agent2[agent2]
agent3[agent3]
end
in --> agent1
in --> agent2
in --> agent3
agent1 --> aggregator
aggregator --> out
agent2 --> aggregator
agent3 --> aggregator`;
const svg = renderMermaidSVG(diagram);
document.getElementById("diagram").innerHTML = svg;
</script>
</body>
</html>
9 changes: 3 additions & 6 deletions examples/parallel_workflow/diagram.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,10 @@ flowchart LR
in((In))
out((Out))
aggregator[Aggregator]
agent1[Agent1]
agent2[Agent2]
agent3[Agent3]
subgraph parallel_workflow["Parallel workflow"]
agent1
agent2
agent3
agent1[agent1]
agent2[agent2]
agent3[agent3]
end
in --> agent1
in --> agent2
Expand Down
2 changes: 2 additions & 0 deletions examples/parallel_workflow/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,5 @@ class Agent3 < MARS::AgentStep
diagram = MARS::Rendering::Mermaid.new(parallel_workflow).render
File.write("examples/parallel_workflow/diagram.md", diagram)
puts "Parallel workflow diagram saved to: examples/parallel_workflow/diagram.md"
MARS::Rendering::Html.new(parallel_workflow).write("examples/parallel_workflow/diagram.html")
puts "Parallel workflow beautiful mermaid diagram saved to: examples/parallel_workflow/diagram.html"
38 changes: 38 additions & 0 deletions examples/simple_workflow/diagram.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Main Pipeline</title>
<style>
body { font-family: system-ui, sans-serif; margin: 2rem; background: #fafafa; }
h1 { color: #333; }
#diagram { background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
</style>
</head>
<body>
<h1>Main Pipeline</h1>
<div id="diagram"></div>
<script type="module">
import { renderMermaidSVG } from "https://esm.sh/beautiful-mermaid@1";
const diagram = `flowchart LR
in((In))
out((Out))
subgraph main_pipeline["Main Pipeline"]
agent1[agent1]
gate{Gate}
end
subgraph success_workflow["Success workflow"]
agent2[agent2]
agent3[agent3]
end
in --> agent1
agent1 --> gate
gate -->|success| agent2
agent2 --> agent3
agent3 --> out`;
const svg = renderMermaidSVG(diagram);
document.getElementById("diagram").innerHTML = svg;
</script>
</body>
</html>
13 changes: 8 additions & 5 deletions examples/simple_workflow/diagram.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@
flowchart LR
in((In))
out((Out))
agent1[Agent1]
gate{Gate}
agent2[Agent2]
agent3[Agent3]
subgraph main_pipeline["Main Pipeline"]
agent1[agent1]
gate{Gate}
end
subgraph success_workflow["Success workflow"]
agent2[agent2]
agent3[agent3]
end
in --> agent1
agent1 --> gate
gate -->|success| agent2
gate -->|default| out
agent2 --> agent3
agent3 --> out
```
2 changes: 2 additions & 0 deletions examples/simple_workflow/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,5 @@ class Agent3 < MARS::AgentStep
diagram = MARS::Rendering::Mermaid.new(main_workflow).render
File.write("examples/simple_workflow/diagram.md", diagram)
puts "Simple workflow diagram saved to: examples/simple_workflow/diagram.md"
MARS::Rendering::Html.new(main_workflow).write("examples/simple_workflow/diagram.html")
puts "Simple workflow beautiful mermaid diagram saved to: examples/simple_workflow/diagram.html"
1 change: 1 addition & 0 deletions lib/mars.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

loader = Zeitwerk::Loader.for_gem
loader.inflector.inflect("mars" => "MARS")
loader.ignore("#{__dir__}/mars_rb.rb")
loader.setup

module MARS
Expand Down
Loading