ad-agent_architecture 0.0.22 → 0.0.24

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '096d9b336ce4edb552ce3091104f81142bd2ffd2c2a72b258a2bc72fba6fe16c'
4
- data.tar.gz: 00f3b208af153a3354206f7824a3cee0ca4c373f4ef1859b39e5fae2ddcafe6c
3
+ metadata.gz: bb0ac3c3eaf389d3f9c89683812d3ef4d85c410c7ba1d06a9d254860b799794e
4
+ data.tar.gz: c07eb5bbd709abe28658d369c0be14983f896199a9712264659df7ac6d4ca8da
5
5
  SHA512:
6
- metadata.gz: 218f08fc1e3ae91b11ab2df491dcd0470a8a91ea91917c96b31b7ec58f3022e323cfb4c73b96583af5b90b95368ae4c2c64bd6cf7ba0335f0f26793fbbec882c
7
- data.tar.gz: 6914e5ccdf5a4e309d43f65c3ba2c8f8be56723d2b3863e58c4614cb30801769cae6999d5095ede94831e94f9252faccdf458e52b861ca52b0748743b4913b26
6
+ metadata.gz: 438d553e29e15550305df69ec948ab391e4b405cdb5e15236b718e99bdb5a9b9461903ba9f65eebc3750de47d6a7cb38f5979841416f145a31688660c346853f
7
+ data.tar.gz: 584836dfa4233ea6b23179ccd784105a30bf094a16cedf70597244544274c650dc269fd1703a3848f5bbcc9827303c61d42416bc1491121c9f1ac1ebb25befbd
@@ -12,7 +12,9 @@ KManager.action :project_plan do
12
12
 
13
13
  # Prompts need to support file read operation
14
14
 
15
- todo(title: 'Prompt setter in step DSL will now lookup common prompts')
15
+ todo(title: 'Fix Alpine Javascript Issues')
16
+ todo(title: 'Add dynamic menu support for attributes, prompts, settings and section menus')
17
+
16
18
  end
17
19
  .page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
18
20
 
@@ -20,15 +22,23 @@ KManager.action :project_plan do
20
22
 
21
23
  grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
22
24
 
25
+ # todo(title: 'Add hydrate DSL from saved workflow ID')
26
+ # todo(title: 'Add hydrate DSL from saved JSON')
27
+ # todo(title: 'Geneate DSL structure from saved YAML')
23
28
  todo(title: 'Visual graph of the workflow')
24
- todo(title: 'Horizontal')
25
29
  todo(title: 'Clicking on sections will show the steps in that section')
26
30
  todo(title: 'Clicking on attributes will show all attributes in the workflow')
27
31
  todo(title: 'Clicking on prompts will show all prompts in the workflow')
28
32
  todo(title: 'Clicking on dashboard will show visual hierarchy of the workflow')
29
33
  todo(title: 'Need a runs button')
30
34
  todo(title: 'VCode Editor: https://chatgpt.com/c/e09e1367-db5e-4786-b362-db35805b1e20')
31
-
35
+ todo(title: 'Report: Simple hierarchy of the workflow')
36
+ todo(title: 'Generator: Agent Framework CrewAI')
37
+ todo(title: 'Generator: Agent Framework Langchain')
38
+ todo(title: 'Generator: Agent Framework Rasa')
39
+ todo(title: 'Generator: Agent Framework Botpress')
40
+ todo(title: 'Generator: Agent Framework Dialogflow')
41
+ todo(title: 'Generator: Agent Framework Microsoft Bot Framework')
32
42
  end
33
43
  .page('Done', theme: :style_06, margin_left: 0, margin_top: 0) do
34
44
 
@@ -36,6 +46,13 @@ KManager.action :project_plan do
36
46
 
37
47
  grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
38
48
 
49
+ todo(title: 'Steps display horizontally')
50
+ todo(title: 'Add saved workflow ID and save? to the DSL')
51
+ todo(title: 'Prompt set in step DSL will now lookup common prompts')
52
+ todo(title: 'Create tests for Agent Data Builder and hook up to save YAML/JSON')
53
+ todo(title: 'Settings need to persist in the settings or workflow table')
54
+ todo(title: 'Add add title name & description support to Agent Data Builder')
55
+ todo(title: 'Add fluent method access to all DSLs')
39
56
  todo(title: 'Generate DSL for an Agent Architecture workflow')
40
57
  todo(title: 'Attributes are auto created when used in a step, but not preconfigured')
41
58
  todo(title: 'Add support for project plan')
data/.rubocop.yml CHANGED
@@ -21,6 +21,7 @@ Metrics/BlockLength:
21
21
  Exclude:
22
22
  - "**/spec/**/*"
23
23
  - "*.gemspec"
24
+ - "lib/ad/agent_architecture/dsl/actions/save_database.rb"
24
25
  AllowedMethods:
25
26
  - configure
26
27
  - context
@@ -91,6 +92,10 @@ Lint/AmbiguousBlockAssociation:
91
92
  Style/AccessorGrouping:
92
93
  Enabled: false
93
94
 
95
+ Naming/PredicateName:
96
+ Exclude:
97
+ - "lib/ad/agent_architecture/dsl/attribute_dsl.rb"
98
+
94
99
  Metrics/AbcSize:
95
100
  Exclude:
96
101
  - "lib/ad/agent_architecture/**/*"
@@ -123,6 +128,7 @@ RSpec/MultipleExpectations:
123
128
  Max: 3
124
129
  Exclude:
125
130
  - "spec/ad/agent_architecture/dsl/actions/save_database_spec.rb"
131
+ - "spec/ad/agent_architecture/report/agent_data_builder_spec.rb"
126
132
 
127
133
  RSpec/MultipleMemoizedHelpers:
128
134
  Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [0.0.23](https://github.com/appydave/ad-agent_architecture/compare/v0.0.22...v0.0.23) (2024-07-06)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Add features and improvements to DSL and Agent Data Builder ([740261c](https://github.com/appydave/ad-agent_architecture/commit/740261c785ce8500d67d479f7ca8967baa4a4ab5))
7
+
8
+ ## [0.0.22](https://github.com/appydave/ad-agent_architecture/compare/v0.0.21...v0.0.22) (2024-07-04)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * bug in prompt lookup ([40ab2bb](https://github.com/appydave/ad-agent_architecture/commit/40ab2bbf7b7145eefa861ef621cc7381ffe0cd92))
14
+
1
15
  ## [0.0.21](https://github.com/appydave/ad-agent_architecture/compare/v0.0.20...v0.0.21) (2024-07-04)
2
16
 
3
17
 
@@ -1,64 +1,106 @@
1
- <mxfile host="8nL">
2
- <diagram id="b04" name="In progress">
1
+ <mxfile host="3jg">
2
+ <diagram id="C4t" name="In progress">
3
3
  <mxGraphModel dx="0" dy="0" background="#FFFAFA" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
4
4
  <root>
5
- <mxCell id="page_root_b04" parent="b04"/>
6
- <mxCell id="node_root_b04" parent="page_root_b04"/>
7
- <mxCell id="b04-2" value="Prompt setter in step DSL will now lookup common prompts" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333" vertex="1" parent="node_root_b04">
5
+ <mxCell id="page_root_C4t" parent="C4t"/>
6
+ <mxCell id="node_root_C4t" parent="page_root_C4t"/>
7
+ <mxCell id="C4t-2" value="Fix Alpine Javascript Issues" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333" vertex="1" parent="node_root_C4t">
8
8
  <mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
9
9
  </mxCell>
10
+ <mxCell id="C4t-3" value="Add dynamic menu support for attributes, prompts, settings and section menus" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333" vertex="1" parent="node_root_C4t">
11
+ <mxGeometry x="330" y="10" width="300" height="60" as="geometry"/>
12
+ </mxCell>
10
13
  </root>
11
14
  </mxGraphModel>
12
15
  </diagram>
13
- <diagram id="pnQ" name="To Do">
16
+ <diagram id="uuM" name="To Do">
14
17
  <mxGraphModel dx="0" dy="0" background="#FFFAFA" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
15
18
  <root>
16
- <mxCell id="page_root_pnQ" parent="pnQ"/>
17
- <mxCell id="node_root_pnQ" parent="page_root_pnQ"/>
18
- <mxCell id="pnQ-2" value="Visual graph of the workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_pnQ">
19
+ <mxCell id="page_root_uuM" parent="uuM"/>
20
+ <mxCell id="node_root_uuM" parent="page_root_uuM"/>
21
+ <mxCell id="uuM-2" value="Visual graph of the workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
19
22
  <mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
20
23
  </mxCell>
21
- <mxCell id="pnQ-3" value="Horizontal" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_pnQ">
24
+ <mxCell id="uuM-3" value="Clicking on sections will show the steps in that section" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
22
25
  <mxGeometry x="330" y="10" width="300" height="60" as="geometry"/>
23
26
  </mxCell>
24
- <mxCell id="pnQ-4" value="Clicking on sections will show the steps in that section" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_pnQ">
27
+ <mxCell id="uuM-4" value="Clicking on attributes will show all attributes in the workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
25
28
  <mxGeometry x="650" y="10" width="300" height="60" as="geometry"/>
26
29
  </mxCell>
27
- <mxCell id="pnQ-5" value="Clicking on attributes will show all attributes in the workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_pnQ">
30
+ <mxCell id="uuM-5" value="Clicking on prompts will show all prompts in the workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
28
31
  <mxGeometry x="10" y="90" width="300" height="60" as="geometry"/>
29
32
  </mxCell>
30
- <mxCell id="pnQ-6" value="Clicking on prompts will show all prompts in the workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_pnQ">
33
+ <mxCell id="uuM-6" value="Clicking on dashboard will show visual hierarchy of the workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
31
34
  <mxGeometry x="330" y="90" width="300" height="60" as="geometry"/>
32
35
  </mxCell>
33
- <mxCell id="pnQ-7" value="Clicking on dashboard will show visual hierarchy of the workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_pnQ">
36
+ <mxCell id="uuM-7" value="Need a runs button" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
34
37
  <mxGeometry x="650" y="90" width="300" height="60" as="geometry"/>
35
38
  </mxCell>
36
- <mxCell id="pnQ-8" value="Need a runs button" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_pnQ">
39
+ <mxCell id="uuM-8" value="VCode Editor: https://chatgpt.com/c/e09e1367-db5e-4786-b362-db35805b1e20" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
37
40
  <mxGeometry x="10" y="170" width="300" height="60" as="geometry"/>
38
41
  </mxCell>
39
- <mxCell id="pnQ-9" value="VCode Editor: https://chatgpt.com/c/e09e1367-db5e-4786-b362-db35805b1e20" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_pnQ">
42
+ <mxCell id="uuM-9" value="Report: Simple hierarchy of the workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
40
43
  <mxGeometry x="330" y="170" width="300" height="60" as="geometry"/>
41
44
  </mxCell>
45
+ <mxCell id="uuM-10" value="Generator: Agent Framework CrewAI" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
46
+ <mxGeometry x="650" y="170" width="300" height="60" as="geometry"/>
47
+ </mxCell>
48
+ <mxCell id="uuM-11" value="Generator: Agent Framework Langchain" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
49
+ <mxGeometry x="10" y="250" width="300" height="60" as="geometry"/>
50
+ </mxCell>
51
+ <mxCell id="uuM-12" value="Generator: Agent Framework Rasa" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
52
+ <mxGeometry x="330" y="250" width="300" height="60" as="geometry"/>
53
+ </mxCell>
54
+ <mxCell id="uuM-13" value="Generator: Agent Framework Botpress" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
55
+ <mxGeometry x="650" y="250" width="300" height="60" as="geometry"/>
56
+ </mxCell>
57
+ <mxCell id="uuM-14" value="Generator: Agent Framework Dialogflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
58
+ <mxGeometry x="10" y="330" width="300" height="60" as="geometry"/>
59
+ </mxCell>
60
+ <mxCell id="uuM-15" value="Generator: Agent Framework Microsoft Bot Framework" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uuM">
61
+ <mxGeometry x="330" y="330" width="300" height="60" as="geometry"/>
62
+ </mxCell>
42
63
  </root>
43
64
  </mxGraphModel>
44
65
  </diagram>
45
- <diagram id="trc" name="Done">
66
+ <diagram id="Tjn" name="Done">
46
67
  <mxGraphModel dx="0" dy="0" background="#FFFAFA" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
47
68
  <root>
48
- <mxCell id="page_root_trc" parent="trc"/>
49
- <mxCell id="node_root_trc" parent="page_root_trc"/>
50
- <mxCell id="trc-2" value="Generate DSL for an Agent Architecture workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_trc">
69
+ <mxCell id="page_root_Tjn" parent="Tjn"/>
70
+ <mxCell id="node_root_Tjn" parent="page_root_Tjn"/>
71
+ <mxCell id="Tjn-2" value="Steps display horizontally" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
51
72
  <mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
52
73
  </mxCell>
53
- <mxCell id="trc-3" value="Attributes are auto created when used in a step, but not preconfigured" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_trc">
74
+ <mxCell id="Tjn-3" value="Add saved workflow ID and save? to the DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
54
75
  <mxGeometry x="330" y="10" width="300" height="60" as="geometry"/>
55
76
  </mxCell>
56
- <mxCell id="trc-4" value="Add support for project plan" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_trc">
77
+ <mxCell id="Tjn-4" value="Prompt set in step DSL will now lookup common prompts" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
57
78
  <mxGeometry x="650" y="10" width="300" height="60" as="geometry"/>
58
79
  </mxCell>
59
- <mxCell id="trc-5" value="Fix the DB issue introduced via DSL refactor" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_trc">
80
+ <mxCell id="Tjn-5" value="Create tests for Agent Data Builder and hook up to save YAML/JSON" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
60
81
  <mxGeometry x="10" y="90" width="300" height="60" as="geometry"/>
61
82
  </mxCell>
83
+ <mxCell id="Tjn-6" value="Settings need to persist in the settings or workflow table" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
84
+ <mxGeometry x="330" y="90" width="300" height="60" as="geometry"/>
85
+ </mxCell>
86
+ <mxCell id="Tjn-7" value="Add add title name &amp; description support to Agent Data Builder" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
87
+ <mxGeometry x="650" y="90" width="300" height="60" as="geometry"/>
88
+ </mxCell>
89
+ <mxCell id="Tjn-8" value="Add fluent method access to all DSLs" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
90
+ <mxGeometry x="10" y="170" width="300" height="60" as="geometry"/>
91
+ </mxCell>
92
+ <mxCell id="Tjn-9" value="Generate DSL for an Agent Architecture workflow" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
93
+ <mxGeometry x="330" y="170" width="300" height="60" as="geometry"/>
94
+ </mxCell>
95
+ <mxCell id="Tjn-10" value="Attributes are auto created when used in a step, but not preconfigured" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
96
+ <mxGeometry x="650" y="170" width="300" height="60" as="geometry"/>
97
+ </mxCell>
98
+ <mxCell id="Tjn-11" value="Add support for project plan" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
99
+ <mxGeometry x="10" y="250" width="300" height="60" as="geometry"/>
100
+ </mxCell>
101
+ <mxCell id="Tjn-12" value="Fix the DB issue introduced via DSL refactor" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Tjn">
102
+ <mxGeometry x="330" y="250" width="300" height="60" as="geometry"/>
103
+ </mxCell>
62
104
  </root>
63
105
  </mxGraphModel>
64
106
  </diagram>
@@ -1,3 +1,3 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="942px" height="142px" viewBox="-0.5 -0.5 942 142"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffffff-0.9-ffffff-0.1-s-0"><stop offset="0%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;"/><stop offset="100%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.1;"/></linearGradient></defs><g><g data-cell-id="page_root_trc"><g data-cell-id="node_root_trc"><g data-cell-id="trc-2"><g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Generate DSL for an Agent Architecture workflow</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Generate DSL for an Agent Architecture workflow</text></switch></g></g></g><g data-cell-id="trc-3"><g><rect x="320" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 330.15 -1 Q 319 -1 319 10.15 L 319 24 Q 470 42 621 24 L 621 10.15 Q 621 -1 609.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Attributes are auto created when used in a step, but not preconfigured</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Attributes are auto created when used in a step, b...</text></switch></g></g></g><g data-cell-id="trc-4"><g><rect x="640" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 650.15 -1 Q 639 -1 639 10.15 L 639 24 Q 790 42 941 24 L 941 10.15 Q 941 -1 929.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 641px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Add support for project plan</div></div></div></foreignObject><text x="790" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Add support for project plan</text></switch></g></g></g><g data-cell-id="trc-5"><g><rect x="0" y="80" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 79 Q -1 79 -1 90.15 L -1 104 Q 150 122 301 104 L 301 90.15 Q 301 79 289.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 110px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Fix the DB issue introduced via DSL refactor</div></div></div></foreignObject><text x="150" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Fix the DB issue introduced via DSL refactor</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="942px" height="302px" viewBox="-0.5 -0.5 942 302"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffffff-0.9-ffffff-0.1-s-0"><stop offset="0%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;"/><stop offset="100%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.1;"/></linearGradient></defs><g><g data-cell-id="page_root_Tjn"><g data-cell-id="node_root_Tjn"><g data-cell-id="Tjn-2"><g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Steps display horizontally</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Steps display horizontally</text></switch></g></g></g><g data-cell-id="Tjn-3"><g><rect x="320" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 330.15 -1 Q 319 -1 319 10.15 L 319 24 Q 470 42 621 24 L 621 10.15 Q 621 -1 609.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Add saved workflow ID and save? to the DSL</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Add saved workflow ID and save? to the DSL</text></switch></g></g></g><g data-cell-id="Tjn-4"><g><rect x="640" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 650.15 -1 Q 639 -1 639 10.15 L 639 24 Q 790 42 941 24 L 941 10.15 Q 941 -1 929.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 641px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Prompt set in step DSL will now lookup common prompts</div></div></div></foreignObject><text x="790" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Prompt set in step DSL will now lookup common prom...</text></switch></g></g></g><g data-cell-id="Tjn-5"><g><rect x="0" y="80" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 79 Q -1 79 -1 90.15 L -1 104 Q 150 122 301 104 L 301 90.15 Q 301 79 289.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 110px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Create tests for Agent Data Builder and hook up to save YAML/JSON</div></div></div></foreignObject><text x="150" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Create tests for Agent Data Builder and hook up to...</text></switch></g></g></g><g data-cell-id="Tjn-6"><g><rect x="320" y="80" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 330.15 79 Q 319 79 319 90.15 L 319 104 Q 470 122 621 104 L 621 90.15 Q 621 79 609.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 110px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Settings need to persist in the settings or workflow table</div></div></div></foreignObject><text x="470" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Settings need to persist in the settings or workfl...</text></switch></g></g></g><g data-cell-id="Tjn-7"><g><rect x="640" y="80" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 650.15 79 Q 639 79 639 90.15 L 639 104 Q 790 122 941 104 L 941 90.15 Q 941 79 929.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 110px; margin-left: 641px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Add add title name &amp; description support to Agent Data Builder</div></div></div></foreignObject><text x="790" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Add add title name &amp; description support to Agent...</text></switch></g></g></g><g data-cell-id="Tjn-8"><g><rect x="0" y="160" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 159 Q -1 159 -1 170.15 L -1 184 Q 150 202 301 184 L 301 170.15 Q 301 159 289.85 159 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 190px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Add fluent method access to all DSLs</div></div></div></foreignObject><text x="150" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Add fluent method access to all DSLs</text></switch></g></g></g><g data-cell-id="Tjn-9"><g><rect x="320" y="160" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 330.15 159 Q 319 159 319 170.15 L 319 184 Q 470 202 621 184 L 621 170.15 Q 621 159 609.85 159 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 190px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Generate DSL for an Agent Architecture workflow</div></div></div></foreignObject><text x="470" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Generate DSL for an Agent Architecture workflow</text></switch></g></g></g><g data-cell-id="Tjn-10"><g><rect x="640" y="160" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 650.15 159 Q 639 159 639 170.15 L 639 184 Q 790 202 941 184 L 941 170.15 Q 941 159 929.85 159 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 190px; margin-left: 641px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Attributes are auto created when used in a step, but not preconfigured</div></div></div></foreignObject><text x="790" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Attributes are auto created when used in a step, b...</text></switch></g></g></g><g data-cell-id="Tjn-11"><g><rect x="0" y="240" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 239 Q -1 239 -1 250.15 L -1 264 Q 150 282 301 264 L 301 250.15 Q 301 239 289.85 239 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 270px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Add support for project plan</div></div></div></foreignObject><text x="150" y="274" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Add support for project plan</text></switch></g></g></g><g data-cell-id="Tjn-12"><g><rect x="320" y="240" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 330.15 239 Q 319 239 319 250.15 L 319 264 Q 470 282 621 264 L 621 250.15 Q 621 239 609.85 239 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 270px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Fix the DB issue introduced via DSL refactor</div></div></div></foreignObject><text x="470" y="274" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Fix the DB issue introduced via DSL refactor</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
@@ -1,3 +1,3 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="302px" height="62px" viewBox="-0.5 -0.5 302 62"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffffff-0.9-ffffff-0.1-s-0"><stop offset="0%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;"/><stop offset="100%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.1;"/></linearGradient></defs><g><g data-cell-id="page_root_b04"><g data-cell-id="node_root_b04"><g data-cell-id="b04-2"><g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Prompt setter in step DSL will now lookup common prompts</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Prompt setter in step DSL will now lookup common p...</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="622px" height="62px" viewBox="-0.5 -0.5 622 62"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffffff-0.9-ffffff-0.1-s-0"><stop offset="0%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;"/><stop offset="100%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.1;"/></linearGradient></defs><g><g data-cell-id="page_root_C4t"><g data-cell-id="node_root_C4t"><g data-cell-id="C4t-2"><g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Fix Alpine Javascript Issues</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Fix Alpine Javascript Issues</text></switch></g></g></g><g data-cell-id="C4t-3"><g><rect x="320" y="0" width="300" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><path d="M 330.15 -1 Q 319 -1 319 10.15 L 319 24 Q 470 42 621 24 L 621 10.15 Q 621 -1 609.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Add dynamic menu support for attributes, prompts, settings and section menus</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Add dynamic menu support for attributes, prompts,...</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
@@ -1,3 +1,3 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="942px" height="222px" viewBox="-0.5 -0.5 942 222"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffffff-0.9-ffffff-0.1-s-0"><stop offset="0%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;"/><stop offset="100%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.1;"/></linearGradient></defs><g><g data-cell-id="page_root_pnQ"><g data-cell-id="node_root_pnQ"><g data-cell-id="pnQ-2"><g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Visual graph of the workflow</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Visual graph of the workflow</text></switch></g></g></g><g data-cell-id="pnQ-3"><g><rect x="320" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 -1 Q 319 -1 319 10.15 L 319 24 Q 470 42 621 24 L 621 10.15 Q 621 -1 609.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Horizontal</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Horizontal</text></switch></g></g></g><g data-cell-id="pnQ-4"><g><rect x="640" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 -1 Q 639 -1 639 10.15 L 639 24 Q 790 42 941 24 L 941 10.15 Q 941 -1 929.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 641px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Clicking on sections will show the steps in that section</div></div></div></foreignObject><text x="790" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Clicking on sections will show the steps in that s...</text></switch></g></g></g><g data-cell-id="pnQ-5"><g><rect x="0" y="80" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 79 Q -1 79 -1 90.15 L -1 104 Q 150 122 301 104 L 301 90.15 Q 301 79 289.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 110px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Clicking on attributes will show all attributes in the workflow</div></div></div></foreignObject><text x="150" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Clicking on attributes will show all attributes in...</text></switch></g></g></g><g data-cell-id="pnQ-6"><g><rect x="320" y="80" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 79 Q 319 79 319 90.15 L 319 104 Q 470 122 621 104 L 621 90.15 Q 621 79 609.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 110px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Clicking on prompts will show all prompts in the workflow</div></div></div></foreignObject><text x="470" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Clicking on prompts will show all prompts in the w...</text></switch></g></g></g><g data-cell-id="pnQ-7"><g><rect x="640" y="80" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 79 Q 639 79 639 90.15 L 639 104 Q 790 122 941 104 L 941 90.15 Q 941 79 929.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 110px; margin-left: 641px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Clicking on dashboard will show visual hierarchy of the workflow</div></div></div></foreignObject><text x="790" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Clicking on dashboard will show visual hierarchy o...</text></switch></g></g></g><g data-cell-id="pnQ-8"><g><rect x="0" y="160" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 159 Q -1 159 -1 170.15 L -1 184 Q 150 202 301 184 L 301 170.15 Q 301 159 289.85 159 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 190px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Need a runs button</div></div></div></foreignObject><text x="150" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Need a runs button</text></switch></g></g></g><g data-cell-id="pnQ-9"><g><rect x="320" y="160" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 159 Q 319 159 319 170.15 L 319 184 Q 470 202 621 184 L 621 170.15 Q 621 159 609.85 159 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 190px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">VCode Editor: https://chatgpt.com/c/e09e1367-db5e-4786-b362-db35805b1e20</div></div></div></foreignObject><text x="470" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">VCode Editor: https://chatgpt.com/c/e09e1367-db5e-...</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="942px" height="382px" viewBox="-0.5 -0.5 942 382"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffffff-0.9-ffffff-0.1-s-0"><stop offset="0%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;"/><stop offset="100%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.1;"/></linearGradient></defs><g><g data-cell-id="page_root_uuM"><g data-cell-id="node_root_uuM"><g data-cell-id="uuM-2"><g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Visual graph of the workflow</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Visual graph of the workflow</text></switch></g></g></g><g data-cell-id="uuM-3"><g><rect x="320" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 -1 Q 319 -1 319 10.15 L 319 24 Q 470 42 621 24 L 621 10.15 Q 621 -1 609.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Clicking on sections will show the steps in that section</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Clicking on sections will show the steps in that s...</text></switch></g></g></g><g data-cell-id="uuM-4"><g><rect x="640" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 -1 Q 639 -1 639 10.15 L 639 24 Q 790 42 941 24 L 941 10.15 Q 941 -1 929.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 641px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Clicking on attributes will show all attributes in the workflow</div></div></div></foreignObject><text x="790" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Clicking on attributes will show all attributes in...</text></switch></g></g></g><g data-cell-id="uuM-5"><g><rect x="0" y="80" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 79 Q -1 79 -1 90.15 L -1 104 Q 150 122 301 104 L 301 90.15 Q 301 79 289.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 110px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Clicking on prompts will show all prompts in the workflow</div></div></div></foreignObject><text x="150" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Clicking on prompts will show all prompts in the w...</text></switch></g></g></g><g data-cell-id="uuM-6"><g><rect x="320" y="80" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 79 Q 319 79 319 90.15 L 319 104 Q 470 122 621 104 L 621 90.15 Q 621 79 609.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 110px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Clicking on dashboard will show visual hierarchy of the workflow</div></div></div></foreignObject><text x="470" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Clicking on dashboard will show visual hierarchy o...</text></switch></g></g></g><g data-cell-id="uuM-7"><g><rect x="640" y="80" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 79 Q 639 79 639 90.15 L 639 104 Q 790 122 941 104 L 941 90.15 Q 941 79 929.85 79 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 110px; margin-left: 641px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Need a runs button</div></div></div></foreignObject><text x="790" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Need a runs button</text></switch></g></g></g><g data-cell-id="uuM-8"><g><rect x="0" y="160" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 159 Q -1 159 -1 170.15 L -1 184 Q 150 202 301 184 L 301 170.15 Q 301 159 289.85 159 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 190px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">VCode Editor: https://chatgpt.com/c/e09e1367-db5e-4786-b362-db35805b1e20</div></div></div></foreignObject><text x="150" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">VCode Editor: https://chatgpt.com/c/e09e1367-db5e-...</text></switch></g></g></g><g data-cell-id="uuM-9"><g><rect x="320" y="160" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 159 Q 319 159 319 170.15 L 319 184 Q 470 202 621 184 L 621 170.15 Q 621 159 609.85 159 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 190px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Report: Simple hierarchy of the workflow</div></div></div></foreignObject><text x="470" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Report: Simple hierarchy of the workflow</text></switch></g></g></g><g data-cell-id="uuM-10"><g><rect x="640" y="160" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 159 Q 639 159 639 170.15 L 639 184 Q 790 202 941 184 L 941 170.15 Q 941 159 929.85 159 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 190px; margin-left: 641px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Generator: Agent Framework CrewAI</div></div></div></foreignObject><text x="790" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Generator: Agent Framework CrewAI</text></switch></g></g></g><g data-cell-id="uuM-11"><g><rect x="0" y="240" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 239 Q -1 239 -1 250.15 L -1 264 Q 150 282 301 264 L 301 250.15 Q 301 239 289.85 239 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 270px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Generator: Agent Framework Langchain</div></div></div></foreignObject><text x="150" y="274" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Generator: Agent Framework Langchain</text></switch></g></g></g><g data-cell-id="uuM-12"><g><rect x="320" y="240" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 239 Q 319 239 319 250.15 L 319 264 Q 470 282 621 264 L 621 250.15 Q 621 239 609.85 239 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 270px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Generator: Agent Framework Rasa</div></div></div></foreignObject><text x="470" y="274" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Generator: Agent Framework Rasa</text></switch></g></g></g><g data-cell-id="uuM-13"><g><rect x="640" y="240" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 239 Q 639 239 639 250.15 L 639 264 Q 790 282 941 264 L 941 250.15 Q 941 239 929.85 239 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 270px; margin-left: 641px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Generator: Agent Framework Botpress</div></div></div></foreignObject><text x="790" y="274" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Generator: Agent Framework Botpress</text></switch></g></g></g><g data-cell-id="uuM-14"><g><rect x="0" y="320" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 319 Q -1 319 -1 330.15 L -1 344 Q 150 362 301 344 L 301 330.15 Q 301 319 289.85 319 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 350px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Generator: Agent Framework Dialogflow</div></div></div></foreignObject><text x="150" y="354" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Generator: Agent Framework Dialogflow</text></switch></g></g></g><g data-cell-id="uuM-15"><g><rect x="320" y="320" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 319 Q 319 319 319 330.15 L 319 344 Q 470 362 621 344 L 621 330.15 Q 621 319 609.85 319 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 350px; margin-left: 321px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Generator: Agent Framework Microsoft Bot Framework</div></div></div></foreignObject><text x="470" y="354" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Generator: Agent Framework Microsoft Bot Framework</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
data/docs/requirements.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # AppyDave - Agent Architecture Schema
2
2
 
3
+ GPT:
4
+ https://chatgpt.com/c/d938fd7c-28d4-4543-9246-eae6676d8aa5
5
+ https://chatgpt.com/c/e7b66d48-4134-4573-b5c6-54988e5f008c
6
+ https://chatgpt.com/c/e09e1367-db5e-4786-b362-db35805b1e20
7
+
8
+
9
+ Schema:
10
+ https://dbdiagram.io/d/641d5cc05758ac5f1723d0c7
11
+
3
12
  ## Purpose
4
13
 
5
14
  The application is designed to handle structured workflows for building documents or text-based assets using LLMs from OpenAi, Anthropic and others. It should be adaptable to any workflow that follows a structured concept or a series of steps.
@@ -27,14 +27,14 @@ module Ad
27
27
  db.create_table :workflows do
28
28
  primary_key :id
29
29
  String :name, null: false
30
- String :description
30
+ String :description, null: true
31
31
  end
32
32
 
33
33
  db.create_table :sections do
34
34
  primary_key :id
35
35
  foreign_key :workflow_id, :workflows
36
36
  String :name, null: false
37
- String :description
37
+ String :description, null: true
38
38
  Integer :order
39
39
  end
40
40
 
@@ -43,7 +43,7 @@ module Ad
43
43
  foreign_key :section_id, :sections
44
44
  String :name, null: false
45
45
  String :action, default: 'gpt'
46
- String :description
46
+ String :description, null: true
47
47
  Integer :order
48
48
  String :prompt
49
49
  end
@@ -52,6 +52,7 @@ module Ad
52
52
  primary_key :id
53
53
  foreign_key :workflow_id, :workflows
54
54
  String :name, null: false
55
+ String :description, null: true
55
56
  String :type
56
57
  Boolean :is_array
57
58
  end
@@ -74,6 +75,15 @@ module Ad
74
75
  String :name, null: false
75
76
  String :path, null: true
76
77
  String :content, null: true
78
+ String :description, null: true
79
+ foreign_key :workflow_id, :workflows
80
+ end
81
+
82
+ db.create_table :settings do
83
+ primary_key :id
84
+ String :name, null: false
85
+ String :value
86
+ String :description, null: true
77
87
  foreign_key :workflow_id, :workflows
78
88
  end
79
89
 
@@ -11,6 +11,7 @@ module Ad
11
11
  one_to_many :attributes, class: 'Ad::AgentArchitecture::Database::Attribute'
12
12
  one_to_many :workflow_runs, class: 'Ad::AgentArchitecture::Database::WorkflowRun'
13
13
  one_to_many :prompts, class: 'Ad::AgentArchitecture::Database::Prompt'
14
+ one_to_many :settings, class: 'Ad::AgentArchitecture::Database::Setting'
14
15
  end
15
16
 
16
17
  # Section model represents a section entity in the database.
@@ -47,10 +48,16 @@ module Ad
47
48
  many_to_one :attribute, class: 'Ad::AgentArchitecture::Database::Attribute'
48
49
  end
49
50
 
51
+ # Prompt model represents a prompt entity in the database.
50
52
  class Prompt < Sequel::Model
51
53
  many_to_one :workflow, class: 'Ad::AgentArchitecture::Database::Workflow'
52
54
  end
53
55
 
56
+ # Setting model represents a setting entity in the database.
57
+ class Setting < Sequel::Model
58
+ many_to_one :workflow, class: 'Ad::AgentArchitecture::Database::Workflow'
59
+ end
60
+
54
61
  # WorkflowRun model represents a workflow run entity in the database.
55
62
  class WorkflowRun < Sequel::Model
56
63
  many_to_one :workflow, class: 'Ad::AgentArchitecture::Database::Workflow'
@@ -6,22 +6,34 @@ module Ad
6
6
  module Actions
7
7
  # Save workflow graph to database
8
8
  class SaveDatabase
9
- def initialize(workflow_hash)
10
- @workflow_hash = workflow_hash
9
+ attr_reader :workflow_id
10
+
11
+ def initialize(workflow)
12
+ @workflow_hash = workflow.data
11
13
  end
12
14
 
13
15
  def save
14
- puts JSON.pretty_generate(@workflow_hash)
16
+ @workflow_id = nil
17
+ # puts JSON.pretty_generate(@workflow_hash)
15
18
  DB.transaction do
16
19
  # puts "Saving Workflow: #{@workflow_hash[:name]}"
17
20
  # Save workflow
18
- workflow_record = Ad::AgentArchitecture::Database::Workflow.create(name: @workflow_hash[:name])
21
+ workflow_record = Ad::AgentArchitecture::Database::Workflow.create(
22
+ name: @workflow_hash[:name],
23
+ description: @workflow_hash[:description]
24
+ )
25
+
26
+ @workflow_id = workflow_record.id
19
27
 
20
28
  # Saving attributes
21
29
  attribute_records = @workflow_hash[:attributes].map do |_name, attr|
22
30
  # puts "Saving Attribute: #{attr}"
23
31
  Ad::AgentArchitecture::Database::Attribute.create(
24
- name: attr[:name], type: attr[:type], is_array: attr[:is_array], workflow: workflow_record
32
+ name: attr[:name],
33
+ type: attr[:type],
34
+ is_array: attr[:is_array],
35
+ description: attr[:description],
36
+ workflow: workflow_record
25
37
  )
26
38
  end
27
39
 
@@ -31,7 +43,22 @@ module Ad
31
43
  @workflow_hash[:prompts].each_value do |prompt|
32
44
  # puts "Saving Prompt: #{prompt}"
33
45
  Ad::AgentArchitecture::Database::Prompt.create(
34
- name: prompt[:name], path: prompt[:path], content: prompt[:content], workflow: workflow_record
46
+ name: prompt[:name],
47
+ path: prompt[:path],
48
+ content: prompt[:content],
49
+ description: prompt[:description],
50
+ workflow: workflow_record
51
+ )
52
+ end
53
+
54
+ # Save settings
55
+ @workflow_hash[:settings].each do |name, setting|
56
+ puts "Saving Setting: #{setting}"
57
+ Ad::AgentArchitecture::Database::Setting.create(
58
+ name: name.to_s,
59
+ value: setting[:value],
60
+ description: setting[:description],
61
+ workflow: workflow_record
35
62
  )
36
63
  end
37
64
 
@@ -39,32 +66,42 @@ module Ad
39
66
  @workflow_hash[:sections].each do |section|
40
67
  # puts "Saving Section: #{section}"
41
68
  section_record = Ad::AgentArchitecture::Database::Section.create(
42
- name: section[:name], order: section[:order], workflow: workflow_record
69
+ name: section[:name],
70
+ order: section[:order],
71
+ description: section[:description],
72
+ workflow: workflow_record
43
73
  )
44
74
 
45
75
  section[:steps].each do |step|
46
76
  # puts "Saving Step: #{step}"
47
77
  step_record = Ad::AgentArchitecture::Database::Step.create(
48
- name: step[:name], order: step[:order], prompt: step[:prompt], section: section_record
78
+ name: step[:name],
79
+ order: step[:order],
80
+ prompt: step[:prompt],
81
+ description: step[:description],
82
+ section: section_record
49
83
  )
50
84
 
51
85
  step[:input_attributes].each do |attr_name|
52
86
  # puts "Saving Input Attribute for Step: #{attr_name}"
53
87
  Ad::AgentArchitecture::Database::InputAttribute.create(
54
- step: step_record, attribute: attribute_map[attr_name.to_sym]
88
+ step: step_record,
89
+ attribute: attribute_map[attr_name.to_sym]
55
90
  )
56
91
  end
57
92
 
58
93
  step[:output_attributes].each do |attr_name|
59
94
  # puts "Saving Output Attribute for Step: #{attr_name}"
60
95
  Ad::AgentArchitecture::Database::OutputAttribute.create(
61
- step: step_record, attribute: attribute_map[attr_name.to_sym]
96
+ step: step_record,
97
+ attribute: attribute_map[attr_name.to_sym]
62
98
  )
63
99
  end
64
100
  end
65
101
  end
66
102
  end
67
- rescue StandardError
103
+ @workflow_id
104
+ rescue StandardError => e
68
105
  puts "An error occurred: #{e.message}"
69
106
  raise
70
107
  end
@@ -8,13 +8,12 @@ module Ad
8
8
  module Actions
9
9
  # Save workflow graph to JSON file
10
10
  class SaveJson
11
- def initialize(workflow_hash)
12
- @workflow_hash = workflow_hash
11
+ def initialize(hash)
12
+ @hash = hash
13
13
  end
14
14
 
15
15
  def save(file_name)
16
- # Pretty JSON
17
- File.write(file_name, JSON.pretty_generate(@workflow_hash))
16
+ File.write(file_name, JSON.pretty_generate(@hash))
18
17
  end
19
18
  end
20
19
  end
@@ -6,17 +6,22 @@ module Ad
6
6
  # This class is responsible for defining the agent DSL
7
7
  class AgentDsl
8
8
  attr_reader :workflow
9
+ attr_accessor :workflow_id
9
10
 
10
- def self.create(name, &block)
11
- new(name).tap do |dsl|
11
+ def self.create(name, description: nil, &block)
12
+ new(name, description: description).tap do |dsl|
12
13
  dsl.instance_eval(&block) if block_given?
13
14
  end
14
15
  end
15
16
 
16
- def initialize(name)
17
+ def description(description)
18
+ @workflow.description(description)
19
+ end
20
+
21
+ def initialize(name, description: nil)
17
22
  raise ArgumentError, 'Agent name must be a string or symbol' unless name.is_a?(String) || name.is_a?(Symbol)
18
23
 
19
- @workflow = WorkflowDsl.new(name)
24
+ @workflow = WorkflowDsl.new(name, description: description)
20
25
  end
21
26
 
22
27
  def settings(&block)
@@ -31,28 +36,33 @@ module Ad
31
36
  @workflow.prompts(&block)
32
37
  end
33
38
 
34
- def section(name, &block)
39
+ def section(name, description: nil, &block)
35
40
  raise ArgumentError, 'Section name must be a string or symbol' unless name.is_a?(String) || name.is_a?(Symbol)
36
41
 
37
- @workflow.section(name, &block)
42
+ @workflow.section(name, description: description, &block)
38
43
  end
39
44
 
40
45
  def save
41
- Ad::AgentArchitecture::Dsl::Actions::SaveDatabase.new(@workflow.data).save
46
+ id = Ad::AgentArchitecture::Dsl::Actions::SaveDatabase.new(@workflow).save
47
+ @workflow_id = id
42
48
 
43
49
  self
44
50
  end
45
51
 
46
52
  def save_json(file_name = nil)
47
53
  full_file_name = file_name || 'workflow.json'
48
- Ad::AgentArchitecture::Dsl::Actions::SaveJson.new(@workflow.data).save(full_file_name)
54
+ raise ArgumentError, 'Workflow needs to be saved, befor you can save JSON' unless @workflow_id
55
+
56
+ Ad::AgentArchitecture::Dsl::Actions::SaveJson.new(@workflow_id).save(full_file_name)
49
57
 
50
58
  self
51
59
  end
52
60
 
53
61
  def save_yaml(file_name = nil)
54
62
  full_file_name = file_name || 'workflow.yaml'
55
- Ad::AgentArchitecture::Dsl::Actions::SaveYaml.new(@workflow.data).save(full_file_name)
63
+ raise ArgumentError, 'Workflow needs to be saved, befor you can save YAML' unless @workflow_id
64
+
65
+ Ad::AgentArchitecture::Dsl::Actions::SaveYaml.new(@workflow_id).save(full_file_name)
56
66
 
57
67
  self
58
68
  end
@@ -5,10 +5,36 @@ module Ad
5
5
  module Dsl
6
6
  # This class is responsible for defining the attributes of a workflow
7
7
  class AttributeDsl < ChildDsl
8
- def attribute(name, type:, is_array: false)
8
+ attr_reader :current_attribute
9
+
10
+ def attribute(name, type: :string, is_array: false, description: nil, &block)
9
11
  raise ArgumentError, 'Attribute name must be a string or symbol' unless name.is_a?(String) || name.is_a?(Symbol)
10
12
 
11
- attributes[name] = { name: name, type: type, is_array: is_array }
13
+ @current_attribute = { name: name, type: type, is_array: is_array, description: description }
14
+
15
+ attributes[name] = current_attribute
16
+
17
+ instance_eval(&block) if block_given?
18
+
19
+ self
20
+ end
21
+
22
+ def description(description)
23
+ current_attribute[:description] = description
24
+
25
+ self
26
+ end
27
+
28
+ def type(type)
29
+ current_attribute[:type] = type
30
+
31
+ self
32
+ end
33
+
34
+ def is_array(is_array)
35
+ current_attribute[:is_array] = is_array
36
+
37
+ self
12
38
  end
13
39
  end
14
40
  end
@@ -17,6 +17,11 @@ module Ad
17
17
  settings[name.to_sym] || settings[name.to_s]
18
18
  end
19
19
 
20
+ def setting_value(name, default: nil)
21
+ lookup = get_setting(name)
22
+ lookup ? lookup[:value] : default
23
+ end
24
+
20
25
  def attributes
21
26
  data[:attributes]
22
27
  end
@@ -33,9 +38,9 @@ module Ad
33
38
  prompts[name.to_sym] || prompts[name.to_s]
34
39
  end
35
40
 
36
- def get_prompt_content(name)
41
+ def prompt_content(name, default: nil)
37
42
  lookup = get_prompt(name)
38
- lookup ? lookup[:content] : nil
43
+ lookup ? lookup[:content] : default
39
44
  end
40
45
  end
41
46
  end
@@ -5,17 +5,37 @@ module Ad
5
5
  module Dsl
6
6
  # This class is responsible for defining the prompts of a workflow
7
7
  class PromptDsl < ChildDsl
8
- def prompt(name, path: nil, content: nil)
8
+ attr_reader :current_prompt
9
+
10
+ def prompt(name, path: nil, content: nil, description: nil, &block)
9
11
  raise ArgumentError, 'Prompt name must be a string or symbol' unless name.is_a?(String) || name.is_a?(Symbol)
10
12
 
11
- prompts[name] = { name: name, content: content }
13
+ @current_prompt = { name: name, path: path, content: content, description: description }
14
+
15
+ prompts[name] = current_prompt
16
+
17
+ instance_eval(&block) if block_given?
18
+
19
+ self
20
+ end
21
+
22
+ def description(description)
23
+ current_prompt[:description] = description
24
+
25
+ self
26
+ end
27
+
28
+ def content(content)
29
+ current_prompt[:content] = content
30
+
31
+ self
12
32
  end
13
33
 
14
- def prompt_file(file)
34
+ def load_file(file)
15
35
  prompt_path = settings[:prompt_path]
16
36
  raise 'Prompt path not defined in settings. Set "prompt_path" to the path where you are keping prompts' unless prompt_path
17
37
 
18
- full_path = File.join(prompt_path, file)
38
+ full_path = File.join(prompt_path[:value], file)
19
39
  File.read(full_path)
20
40
  end
21
41
  end
@@ -5,19 +5,27 @@ module Ad
5
5
  module Dsl
6
6
  # This class is responsible for creating a section in the workflow
7
7
  class SectionDsl < ChildDsl
8
- def initialize(workflow, name, order)
8
+ def initialize(workflow, name, order, description: nil)
9
9
  super(workflow)
10
10
 
11
- @section = { name: name, order: order, steps: [] }
11
+ @section = { name: name, order: order, description: description, steps: [] }
12
12
  sections << @section
13
13
  @current_step_order = 1
14
14
  end
15
15
 
16
- def step(name, &block)
16
+ def description(description)
17
+ @section[:description] = description
18
+
19
+ self
20
+ end
21
+
22
+ def step(name, description: nil, &block)
17
23
  raise ArgumentError, 'Step name must be a string or symbol' unless name.is_a?(String) || name.is_a?(Symbol)
18
24
 
19
- StepDsl.new(workflow, @section, name, @current_step_order).instance_eval(&block)
25
+ StepDsl.new(workflow, @section, name, @current_step_order, description: description).instance_eval(&block)
20
26
  @current_step_order += 1
27
+
28
+ self
21
29
  end
22
30
  end
23
31
  end
@@ -5,9 +5,9 @@ module Ad
5
5
  module Dsl
6
6
  # This class is responsible for defining the settings of a workflow
7
7
  class SettingsDsl < ChildDsl
8
- def method_missing(name, *args, &block)
8
+ def method_missing(name, *args, **kwargs, &block)
9
9
  if args.length == 1 && block.nil?
10
- data[:settings][name] = args.first
10
+ data[:settings][name] = { value: args.first, description: kwargs[:description] }
11
11
  else
12
12
  super
13
13
  end
@@ -10,11 +10,12 @@ module Ad
10
10
  attr_reader :section
11
11
  attr_reader :step
12
12
 
13
- def initialize(workflow, section, name, order)
13
+ def initialize(workflow, section, name, order, description: nil)
14
14
  super(workflow)
15
15
  @step = {
16
16
  name: name,
17
17
  order: order,
18
+ description: description,
18
19
  prompt: '',
19
20
  input_attributes: [],
20
21
  output_attributes: []
@@ -37,9 +38,13 @@ module Ad
37
38
  end
38
39
 
39
40
  def prompt(prompt, **_opts)
40
- lookup_prompt = get_prompt_content(prompt)
41
+ content = prompt_content(prompt)
42
+ @step[:prompt] = content || prompt
43
+ self
44
+ end
41
45
 
42
- @step[:prompt] = lookup_prompt || prompt
46
+ def description(description)
47
+ @step[:description] = description
43
48
  self
44
49
  end
45
50
 
@@ -9,11 +9,16 @@ module Ad
9
9
 
10
10
  attr_reader :data
11
11
 
12
- def initialize(name)
13
- @data = { name: name, sections: [], attributes: {}, prompts: {}, settings: {} }
12
+ def initialize(name, description: nil)
13
+ @data = { name: name, description: description, sections: [], attributes: {}, prompts: {}, settings: {} }
14
14
  @current_section_order = 1
15
15
  end
16
16
 
17
+ def description(description)
18
+ @data[:description] = description
19
+ self
20
+ end
21
+
17
22
  def settings(&block)
18
23
  dsl = SettingsDsl.new(self)
19
24
  dsl.instance_eval(&block) if block_given?
@@ -32,8 +37,8 @@ module Ad
32
37
  dsl
33
38
  end
34
39
 
35
- def section(name, &block)
36
- dsl = SectionDsl.new(self, name, @current_section_order)
40
+ def section(name, description: nil, &block)
41
+ dsl = SectionDsl.new(self, name, @current_section_order, description: description)
37
42
  @current_section_order += 1
38
43
  dsl.instance_eval(&block) if block_given?
39
44
  dsl
@@ -0,0 +1,132 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ad
4
+ module AgentArchitecture
5
+ module Report
6
+ # This class is responsible for building the agent data for export or visualization
7
+ class AgentDataBuilder
8
+ attr_reader :workflow_id, :data
9
+
10
+ def initialize(workflow_id)
11
+ @workflow_id = workflow_id
12
+ @data = {}
13
+ end
14
+
15
+ def build
16
+ fetch_workflow
17
+ fetch_sections
18
+ fetch_attributes
19
+ fetch_prompts
20
+ data
21
+ end
22
+
23
+ private
24
+
25
+ def fetch_workflow
26
+ workflow = Ad::AgentArchitecture::Database::Workflow.where(id: workflow_id).first
27
+
28
+ @data[:name] = workflow.name
29
+ @data[:title] = Cmdlet::Case::Title.new.call(workflow.name)
30
+ @data[:description] = workflow.description
31
+ @data[:settings] = fetch_settings(workflow)
32
+ end
33
+
34
+ def fetch_sections
35
+ @data[:sections] = []
36
+ sections = Ad::AgentArchitecture::Database::Section.where(workflow_id: workflow_id).order(:order)
37
+ sections.each do |section|
38
+ section_data = {
39
+ name: section.name,
40
+ title: Cmdlet::Case::Title.new.call(section.name),
41
+ order: section.order,
42
+ description: section.description,
43
+ steps: fetch_steps(section.id)
44
+ }
45
+ @data[:sections] << section_data
46
+ end
47
+ end
48
+
49
+ def fetch_steps(section_id)
50
+ steps = Ad::AgentArchitecture::Database::Step.where(section_id: section_id).order(:order)
51
+ steps.map do |step|
52
+ {
53
+ name: step.name,
54
+ title: Cmdlet::Case::Title.new.call(step.name),
55
+ order: step.order,
56
+ description: step.description,
57
+ prompt: step.prompt,
58
+ input_attributes: fetch_input_attributes(step.id),
59
+ output_attributes: fetch_output_attributes(step.id)
60
+ }
61
+ end
62
+ end
63
+
64
+ def fetch_input_attributes(step_id)
65
+ Ad::AgentArchitecture::Database::InputAttribute.where(step_id: step_id).map do |input|
66
+ attribute = input.attribute
67
+ {
68
+ name: attribute.name,
69
+ type: attribute.type,
70
+ is_array: attribute.is_array,
71
+ description: attribute.description,
72
+ title: Cmdlet::Case::Title.new.call(attribute.name)
73
+ }
74
+ end
75
+ end
76
+
77
+ def fetch_output_attributes(step_id)
78
+ Ad::AgentArchitecture::Database::OutputAttribute.where(step_id: step_id).map do |output|
79
+ attribute = output.attribute
80
+ {
81
+ name: attribute.name,
82
+ type: attribute.type,
83
+ is_array: attribute.is_array,
84
+ description: attribute.description,
85
+ title: Cmdlet::Case::Title.new.call(attribute.name)
86
+ }
87
+ end
88
+ end
89
+
90
+ def fetch_attributes
91
+ @data[:attributes] = {}
92
+ attributes = Ad::AgentArchitecture::Database::Attribute.where(workflow_id: workflow_id)
93
+ attributes.each do |attr|
94
+ @data[:attributes][attr.name.to_sym] = {
95
+ name: attr.name,
96
+ type: attr.type,
97
+ is_array: attr.is_array,
98
+ description: attr.description,
99
+ title: Cmdlet::Case::Title.new.call(attr.name)
100
+ }
101
+ end
102
+ end
103
+
104
+ def fetch_prompts
105
+ @data[:prompts] = {}
106
+ prompts = Ad::AgentArchitecture::Database::Prompt.where(workflow_id: workflow_id)
107
+ prompts.each do |prompt|
108
+ @data[:prompts][prompt.name.to_sym] = {
109
+ name: prompt.name,
110
+ content: prompt.content,
111
+ description: prompt.description,
112
+ title: Cmdlet::Case::Title.new.call(prompt.name)
113
+ }
114
+ end
115
+ end
116
+
117
+ def fetch_settings(_workflow)
118
+ result = {}
119
+ settings = Ad::AgentArchitecture::Database::Setting.where(workflow_id: workflow_id)
120
+ settings.each do |setting|
121
+ result[setting.name.to_sym] = {
122
+ value: setting.value,
123
+ description: setting.description,
124
+ title: Cmdlet::Case::Title.new.call(setting.name)
125
+ }
126
+ end
127
+ result
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ad
4
4
  module AgentArchitecture
5
- VERSION = '0.0.22'
5
+ VERSION = '0.0.24'
6
6
  end
7
7
  end
@@ -3,6 +3,7 @@
3
3
  require 'sequel'
4
4
  require 'sqlite3'
5
5
  require 'k_log'
6
+ require 'cmdlet'
6
7
 
7
8
  require 'ad/agent_architecture/version'
8
9
  require 'ad/agent_architecture/database/create_schema'
@@ -26,6 +27,7 @@ require 'ad/agent_architecture/dsl/actions/save_database'
26
27
  require 'ad/agent_architecture/dsl/actions/save_json'
27
28
  require 'ad/agent_architecture/dsl/actions/save_yaml'
28
29
  require 'ad/agent_architecture/report/dsl_generator'
30
+ require 'ad/agent_architecture/report/agent_data_builder'
29
31
  require 'ad/agent_architecture/report/workflow_detail_report'
30
32
  require 'ad/agent_architecture/report/workflow_list_report'
31
33
 
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "ad-agent_architecture",
3
- "version": "0.0.22",
3
+ "version": "0.0.24",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "ad-agent_architecture",
9
- "version": "0.0.22",
9
+ "version": "0.0.24",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.3",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ad-agent_architecture",
3
- "version": "0.0.22",
3
+ "version": "0.0.24",
4
4
  "description": "Architecture/Schema for AI Agents",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ad-agent_architecture
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-04 00:00:00.000000000 Z
11
+ date: 2024-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cmdlet
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: k_log
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -102,6 +116,7 @@ files:
102
116
  - lib/ad/agent_architecture/dsl/settings_dsl.rb
103
117
  - lib/ad/agent_architecture/dsl/step_dsl.rb
104
118
  - lib/ad/agent_architecture/dsl/workflow_dsl.rb
119
+ - lib/ad/agent_architecture/report/agent_data_builder.rb
105
120
  - lib/ad/agent_architecture/report/dsl_generator.rb
106
121
  - lib/ad/agent_architecture/report/workflow_detail_report.rb
107
122
  - lib/ad/agent_architecture/report/workflow_list_report.rb