ad-agent_architecture 0.0.22 → 0.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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