klue-langcraft 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d602a256a1c785e201aa855cbd20a48dc8400c358589a8e9fa3d899c8ae1249f
4
- data.tar.gz: 8c78bb231cc1b13f3a50d315036bf895123f365b1e11b22940324c803a179f70
3
+ metadata.gz: 3e6e99cd20f8b4020ee4a895e32c4ffdbed6f4fcb92079db78c973337a73c570
4
+ data.tar.gz: 9ac8b289d7d8d5aaa2dafec3d2181d278829df88714680cc986f4652a0d80273
5
5
  SHA512:
6
- metadata.gz: de1535dabb901c06d46310dd2991ce5188b35690d5008ac9304a45493a335bbd4b482693048ac59ac23f0deaad87cfaf56c229edc5ffedf6c7e95899ce1192b5
7
- data.tar.gz: 66d3bc952009ea2e761bab7a878dc80869e06bde74fdfef962e80ecec9a3aa0532a6a16370b4da366d5c23b05387a4366f44c57758c725648a812eacec5b15fd
6
+ metadata.gz: f14b941d93e2b103efa214f50bc3d9b6b151b75a8dfbd7957dec78fd3bee113b1f8026d689d7974447f6b0819b546e0daf189990505e35e056acdd1811909853
7
+ data.tar.gz: fe8998e329fbd0cc6bc84c30dee4d98a69dfebd28b8fe60ec4148a0633f11e52db3ec90f5b0cbc820399e38643bbf7799b4f88c2b8505a79db24a914feb63b78
@@ -8,6 +8,11 @@ KManager.action :project_plan do
8
8
  grid_layout(y: 190, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
9
9
 
10
10
  todo(title: 'DSLs as Code sample DSL')
11
+ todo(title: 'Automate Base DSL setup')
12
+ todo(title: 'Automate DSL definion/designer for target DSL')
13
+ # todo(title: '')
14
+ # todo(title: '')
15
+ # todo(title: '')
11
16
 
12
17
  end
13
18
  .page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [0.0.6](https://github.com/appydave/klue-langcraft/compare/v0.0.5...v0.0.6) (2024-09-20)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * update documentation for usecases ([298f85a](https://github.com/appydave/klue-langcraft/commit/298f85aabf2a8acfad4926f2127017174df03ce4))
7
+
1
8
  ## [0.0.5](https://github.com/appydave/klue-langcraft/compare/v0.0.4...v0.0.5) (2024-09-20)
2
9
 
3
10
 
data/README.md CHANGED
@@ -50,8 +50,6 @@ You can also run `bin/console` for an interactive prompt that will allow you to
50
50
  ```bash
51
51
  bin/console
52
52
 
53
- Aaa::Bbb::Program.execute()
54
- # => ""
55
53
  ```
56
54
 
57
55
  `klue-langcraft` is setup with Guard, run `guard`, this will watch development file changes and run tests automatically, if successful, it will then run rubocop for style quality.
data/docs/dsl-rules.md ADDED
@@ -0,0 +1,262 @@
1
+ # DSL Rules
2
+
3
+ The DSL using ruby like syntax that maps paramaters and values in fashion similar to the Ruby programming language.
4
+
5
+ ## Data Types in DSLs
6
+
7
+ DSLs can use various types of data as input and provide flexibility in handling different kinds of values. Below are the main data types supported:
8
+
9
+ - **Strings:** Represent textual data and are enclosed in quotes. They are typically used for descriptive content or text-based parameters.
10
+ - **Symbols:** Identifiers often used for keys or labels in configuration. Symbols are concise and unique, making them ideal for representing options or identifiers.
11
+ - **Booleans:** Represent true/false values and are useful for toggling features or conditions within the DSL.
12
+ - **Integers:** Whole numbers without fractions, often used for quantities, counts, or IDs.
13
+ - **Floats:** Numbers that include decimal points, used when more precise values are required, such as for time durations or percentages.
14
+
15
+ These data types allow the DSL to handle a wide variety of input values, making it versatile for different use cases and configurations.
16
+
17
+ Note: Data types are currently only cosmetic, everything will get stored as a string internally, but we might put in some validation that can at least let us know if we've got the wrong sort of data provided.
18
+
19
+
20
+ ## DSL argument rules
21
+
22
+ In Ruby, parameters (or "arguments") come in various types such as positional, optional, splat (*), and keyword arguments (**).
23
+ Each parameter type follows specific conventions, and the Ruby language uses distinct terms for each.
24
+ Below is an overview of these types and their corresponding metadata fields.
25
+
26
+ ### Methods and Arguements
27
+
28
+ #### 1. Positional Parameters
29
+ - **Description**: These are the most common type of parameters. They are passed in the exact order defined in the method signature.
30
+ - **Ruby Example**: `def method(a, b)`
31
+ - **Metadata Fields**:
32
+ - `type`: positional
33
+ - `name`: a (or the parameter name)
34
+ - **Inferred Fields**:
35
+ - `required`: true
36
+
37
+ ```ruby
38
+ param :a, type: :positional # required: true
39
+ param :b, type: :positional # required: true
40
+ ```
41
+
42
+
43
+ #### 2. Optional Parameters
44
+ - **Description**: These are positional parameters with default values, making them optional.
45
+ - **Ruby Example**: `def method(a = 1)`
46
+ - **Metadata Fields**:
47
+ - `type`: positional
48
+ - `name`: a
49
+ - `default_value`: 1
50
+ - **Inferred Fields**:
51
+ - `required`: false
52
+
53
+ ```ruby
54
+ param :a, type: :positional, default: 1 # required: false
55
+ ```
56
+
57
+ #### 3. Splat Parameters (*)
58
+ - **Description**: The splat operator `*` captures any number of additional positional arguments into an array.
59
+ - **Ruby Example**: `def method(*args)`
60
+ - **Metadata Fields**:
61
+ - `type`: splat
62
+ - `name`: args
63
+ - **Inferred Fields**:
64
+ - `required`: false
65
+ - `variadic`: true
66
+
67
+ ```ruby
68
+ param :args, type: :splat # required: false, variadic: true
69
+ ```
70
+
71
+ #### 4. Keyword Parameters
72
+ - **Description**: Keyword arguments are named arguments passed as a hash or individual key-value pairs. They can be required or optional.
73
+ - **Ruby Example**: `def method(a:, b: 1)`
74
+ - **For required keyword argument**:
75
+ - **Metadata Fields**:
76
+ - `type`: keyword
77
+ - `name`: a
78
+ - **Inferred Fields**:
79
+ - `required`: true
80
+ - **For optional keyword argument**:
81
+ - **Metadata Fields**:
82
+ - `type`: keyword
83
+ - `name`: b
84
+ - `default_value`: 1
85
+ - **Inferred Fields**:
86
+ - `required`: false
87
+
88
+ ```ruby
89
+ param :a, type: :keyword # required: true
90
+ param :b, type: :keyword, default: 1 # required: true
91
+ ```
92
+
93
+
94
+ #### 5. Double Splat Parameters (**)
95
+ - **Description**: The double splat operator `**` captures any number of additional keyword arguments into a hash.
96
+ - **Ruby Example**: `def method(**opts)`
97
+ - **Metadata Fields**:
98
+ - `type`: double_splat
99
+ - `name`: opts
100
+ - **Inferred Fields**:
101
+ - `required`: false
102
+ - `variadic`: true
103
+
104
+ ```ruby
105
+ param :opts, type: :double_splat # required: false, variadic: true
106
+ ```
107
+
108
+ #### Block Paramaters
109
+
110
+ The idea of ruby block parameters have been deprectated, instead the syntax has been retained for containers, see below.
111
+
112
+ ## DSL Containers
113
+
114
+ Containers represent a named block that can take parameters and contain aditional nested elements.
115
+
116
+ They follow usage that is similar in concept to an XML element, in that they have a name, then can take paramaters (aka attributes) and then can be self closing.
117
+
118
+ The container will be represented as a `do ... end` when hosting child containers
119
+ The container can also be self closing, in which case there is no `do ... end`, there is just an element with zero or more parameters followed by a newline.
120
+
121
+ The root containers will be called `definition`, all other containers will be known as `node`
122
+
123
+ ### Rules
124
+
125
+ These rules should be observed when dealing with different parameters and blocks
126
+
127
+ **Required vs Optional Parameters:**
128
+
129
+ - **Positional required parameters**: Defined without a default value.
130
+ - **Optional positional parameters**: Have default values or are represented with splat (`*`).
131
+ - **Required keyword arguments**: Must be passed explicitly unless a default value is provided.
132
+ - **Optional keyword arguments**: Have default values or can be omitted.
133
+
134
+ ### Order and constraints
135
+
136
+ A container can take parameters based on the defined styles, but they must follow an order and adhere to constraints.
137
+
138
+ **Order/Construction:**
139
+
140
+ 1. Declarative parameters (if present, the method name acts as the first positional parameter)
141
+ 2. Required positional parameters
142
+ 3. Optional positional parameters
143
+ 4. Splat parameters, zero or one
144
+ 5. Required keyword parameters
145
+ 6. Optional keyword parameters
146
+ 7. Double splat parameters, zero or one
147
+
148
+ **Constraints:**
149
+
150
+ 1. Declarative parameters, if present, replace the first positional parameter, and no additional required positional parameters can come before it.
151
+ 2. Required positional parameters must come before any optional positional parameters.
152
+ 3. The splat parameter, if present, must come after all positional parameters (required and optional).
153
+ 4. Keyword parameters (both required and optional) must come after all positional and splat parameters.
154
+ 5. The double splat parameter, if present, must be the last parameter.
155
+ 6. You can't have more than one splat or double splat parameter in a container.
156
+ 7. Once you start using keyword parameters, you can't use positional parameters anymore in that container.
157
+
158
+ ## Examples
159
+
160
+ The following examples will build on top of one another to create an Agent as Code DSL designed for Agent Workflows.
161
+
162
+ The example workflow will ben implementation of the agent as code for YouTube Launch Optimization.
163
+
164
+ ### Root Node (#1).
165
+
166
+ The root node for a DSL is named `definition`, it behaves like any other `node` accept that you provide the DSL name.
167
+
168
+ An agentic workflow might take a name and optional description.
169
+
170
+ ```ruby
171
+ # Sample DSL
172
+ workflow :youtube_launch_optimizer, 'Optimize the video publishing for YouTube Titles, Descriptions, Thumbnails and social content' do
173
+ end
174
+ ```
175
+
176
+ ```ruby
177
+ # DSL Definition
178
+ definition :workflow do
179
+ param :name, type: :positional
180
+ param :description, type: :positional, default: nil
181
+ end
182
+ ```
183
+
184
+ ### Root Node (#2).
185
+
186
+ An agentic workflow might take a name only and use a child node for description using a self closing syntax.
187
+
188
+ ```ruby
189
+ # Sample DSL
190
+ workflow :youtube_launch_optimizer do
191
+ description 'Optimize the video publishing for YouTube Titles, Descriptions, Thumbnails and social content'
192
+ end
193
+ ```
194
+
195
+ ```ruby
196
+ # DSL Definition
197
+ definition :workflow do
198
+ param :name, type: :positional
199
+ node :description do
200
+ param :description, type: :positional
201
+ end
202
+ end
203
+ ```
204
+
205
+ ### Single Node with List (#3)
206
+
207
+ Here we have a single node called settings with a list of setting that contains a key and a value.
208
+ Notice `repeat: true` is used to indicate that the setting is a repeatable element.
209
+
210
+ ```ruby
211
+ # Sample DSL
212
+
213
+ workflow :youtube_launch_optimizer do
214
+ settings do
215
+ setting :prompt_path, 'prompts/youtube/launch_optimizer'
216
+ setting :default_llm, :gpt4o
217
+ end
218
+ end
219
+ ```
220
+
221
+ ```ruby
222
+ # DSL Definition
223
+ definition :workflow do
224
+ param :name, type: :positional
225
+ node :settings do
226
+ node :setting, repeat: true do
227
+ param :key, type: :positional
228
+ param :value, type: :positional
229
+ end
230
+ end
231
+ end
232
+ ```
233
+
234
+ ### Single Node with list - declaritve syntax (#4)
235
+
236
+ Like before, we have a single node called settings with a list of setting that contains a key and a value.
237
+ This time the you can use the method name as the first paramater value because it is of type declarative.
238
+ This can make some DSL usage a little easier to understand
239
+
240
+ ```ruby
241
+ # Sample DSL
242
+
243
+ workflow :youtube_launch_optimizer do
244
+ settings do
245
+ prompt_path 'prompts/youtube/launch_optimizer'
246
+ default_llm :gpt4o
247
+ end
248
+ end
249
+ ```
250
+
251
+ ```ruby
252
+ # DSL Definition
253
+ definition :workflow do
254
+ param :name, type: :positional
255
+ node :settings do
256
+ node :setting, repeat: true do
257
+ param :key, type: :declaritive # the method name typed in will be come the value for the key paramater
258
+ param :value, type: :positional
259
+ end
260
+ end
261
+ end
262
+ ```
@@ -0,0 +1,58 @@
1
+ definition :workflow do
2
+ param :name, type: :positional
3
+
4
+ node :description do
5
+ param :description, type: :positional
6
+ end
7
+
8
+ node :settings do
9
+ node :setting, repeat: true do
10
+ param :key, type: :declarative # Allows method name to be used as the key
11
+ param :value, type: :positional
12
+ end
13
+ end
14
+
15
+ node :prompts do
16
+ node :prompt, repeat: true do
17
+ param :key, type: :positional
18
+ param :content, type: :named, name: ''
19
+ end
20
+ end
21
+
22
+ # Section node with repeatable steps
23
+ node :section, repeat: true do
24
+ param :name, type: :positional
25
+
26
+ node :step, repeat: true do
27
+ param :key, type: :positional
28
+
29
+ node :input, repeat: true do
30
+ param :key, type: :positional
31
+ end
32
+
33
+ node :prompt do
34
+ param :key, type: :positional
35
+ end
36
+
37
+ node :output, repeat: true do
38
+ param :key, type: :positional
39
+ end
40
+ end
41
+ end
42
+
43
+ node :actions do
44
+ node :save do
45
+ end
46
+
47
+ node :save_json do
48
+ param :path, type: :positional
49
+ end
50
+
51
+ node :action, repeat: true do
52
+ param :name, type: :positional # Action name (e.g., save, save_json)
53
+
54
+ # Named parameters for actions
55
+ param :args, type: :named, name: 'args', repeat: true, optional: true # Optional args like file path for save_json
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,47 @@
1
+ workflow :youtube_launch_optimizer do
2
+ description 'This workflow optimizes video launch by analyzing, preparing, and generating content for various platforms.'
3
+
4
+ settings do
5
+ prompt_path 'prompts/youtube/launch_optimizer'
6
+ default_llm :gpt4o
7
+ end
8
+
9
+ prompts do
10
+ prompt :some_prompt , content: '1-1-some.txt'
11
+ prompt :another_prompt , content: '1-2-another.txt'
12
+ prompt :yet_another_prompt , content: '1-3-yet-another.txt'
13
+ end
14
+
15
+ section 'Section 1' do
16
+ step 'Step 1' do
17
+ input :attribute1
18
+ input :attribute2
19
+ end
20
+
21
+ step 'Step 2' do
22
+ input :attribute1
23
+ prompt :some_prompt
24
+ output :attribute3
25
+ end
26
+
27
+ step 'Step 3' do
28
+ input :attribute2
29
+ input :attribute3
30
+ prompt :another_prompt
31
+ output :attribute4
32
+ end
33
+ end
34
+
35
+ section 'Section 2' do
36
+ step 'Other Step 1' do
37
+ input :attribute1
38
+ prompt :yet_another_prompt
39
+ output :attribute5
40
+ end
41
+ end
42
+
43
+ actions do
44
+ save
45
+ save_json '~/gpt-workflows/youtube-launch-optimizer.json'
46
+ end
47
+ end
@@ -1,56 +1,62 @@
1
- <mxfile host="NbD">
2
- <diagram id="gj7" name="In progress">
1
+ <mxfile host="DKN">
2
+ <diagram id="y30" 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_gj7" parent="gj7"/>
6
- <mxCell id="node_root_gj7" parent="page_root_gj7"/>
7
- <mxCell id="gj7-2" value="DSLs as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333" vertex="1" parent="node_root_gj7">
5
+ <mxCell id="page_root_y30" parent="y30"/>
6
+ <mxCell id="node_root_y30" parent="page_root_y30"/>
7
+ <mxCell id="y30-2" value="DSLs as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333" vertex="1" parent="node_root_y30">
8
8
  <mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
9
9
  </mxCell>
10
+ <mxCell id="y30-3" value="Automate Base DSL setup" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333" vertex="1" parent="node_root_y30">
11
+ <mxGeometry x="330" y="10" width="300" height="60" as="geometry"/>
12
+ </mxCell>
13
+ <mxCell id="y30-4" value="Automate DSL definion/designer for target DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333" vertex="1" parent="node_root_y30">
14
+ <mxGeometry x="650" y="10" width="300" height="60" as="geometry"/>
15
+ </mxCell>
10
16
  </root>
11
17
  </mxGraphModel>
12
18
  </diagram>
13
- <diagram id="QnN" name="To Do">
19
+ <diagram id="gaX" name="To Do">
14
20
  <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
21
  <root>
16
- <mxCell id="page_root_QnN" parent="QnN"/>
17
- <mxCell id="node_root_QnN" parent="page_root_QnN"/>
18
- <mxCell id="QnN-2" value="Add guideline documentation" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_QnN">
22
+ <mxCell id="page_root_gaX" parent="gaX"/>
23
+ <mxCell id="node_root_gaX" parent="page_root_gaX"/>
24
+ <mxCell id="gaX-2" value="Add guideline documentation" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_gaX">
19
25
  <mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
20
26
  </mxCell>
21
- <mxCell id="QnN-3" value="Docs as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_QnN">
27
+ <mxCell id="gaX-3" value="Docs as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_gaX">
22
28
  <mxGeometry x="330" y="10" width="300" height="60" as="geometry"/>
23
29
  </mxCell>
24
- <mxCell id="QnN-4" value="Agent as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_QnN">
30
+ <mxCell id="gaX-4" value="Agent as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_gaX">
25
31
  <mxGeometry x="650" y="10" width="300" height="60" as="geometry"/>
26
32
  </mxCell>
27
- <mxCell id="QnN-5" value="Poly as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_QnN">
33
+ <mxCell id="gaX-5" value="Poly as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_gaX">
28
34
  <mxGeometry x="10" y="90" width="300" height="60" as="geometry"/>
29
35
  </mxCell>
30
- <mxCell id="QnN-6" value="Voice as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_QnN">
36
+ <mxCell id="gaX-6" value="Voice as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_gaX">
31
37
  <mxGeometry x="330" y="90" width="300" height="60" as="geometry"/>
32
38
  </mxCell>
33
- <mxCell id="QnN-7" value="Data as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_QnN">
39
+ <mxCell id="gaX-7" value="Data as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_gaX">
34
40
  <mxGeometry x="650" y="90" width="300" height="60" as="geometry"/>
35
41
  </mxCell>
36
- <mxCell id="QnN-8" value="Chart Design as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_QnN">
42
+ <mxCell id="gaX-8" value="Chart Design as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_gaX">
37
43
  <mxGeometry x="10" y="170" width="300" height="60" as="geometry"/>
38
44
  </mxCell>
39
- <mxCell id="QnN-9" value="Video as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_QnN">
45
+ <mxCell id="gaX-9" value="Video as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_gaX">
40
46
  <mxGeometry x="330" y="170" width="300" height="60" as="geometry"/>
41
47
  </mxCell>
42
- <mxCell id="QnN-10" value="Image as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_QnN">
48
+ <mxCell id="gaX-10" value="Image as Code sample DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_gaX">
43
49
  <mxGeometry x="650" y="170" width="300" height="60" as="geometry"/>
44
50
  </mxCell>
45
51
  </root>
46
52
  </mxGraphModel>
47
53
  </diagram>
48
- <diagram id="ym1" name="Done">
54
+ <diagram id="Iaa" name="Done">
49
55
  <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">
50
56
  <root>
51
- <mxCell id="page_root_ym1" parent="ym1"/>
52
- <mxCell id="node_root_ym1" parent="page_root_ym1"/>
53
- <mxCell id="ym1-2" value="Setup project with CI/CD, tests, linting, basic doumentation, semantic versioning" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_ym1">
57
+ <mxCell id="page_root_Iaa" parent="Iaa"/>
58
+ <mxCell id="node_root_Iaa" parent="page_root_Iaa"/>
59
+ <mxCell id="Iaa-2" value="Setup project with CI/CD, tests, linting, basic doumentation, semantic versioning" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Iaa">
54
60
  <mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
55
61
  </mxCell>
56
62
  </root>
@@ -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_ym1"><g data-cell-id="node_root_ym1"><g data-cell-id="ym1-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;">Setup project with CI/CD, tests, linting, basic doumentation, semantic versioning</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Setup project with CI/CD, tests, linting, basic do...</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="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_Iaa"><g data-cell-id="node_root_Iaa"><g data-cell-id="Iaa-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;">Setup project with CI/CD, tests, linting, basic doumentation, semantic versioning</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Setup project with CI/CD, tests, linting, basic do...</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_gj7"><g data-cell-id="node_root_gj7"><g data-cell-id="gj7-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;">DSLs as Code sample DSL</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">DSLs as Code sample DSL</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="62px" viewBox="-0.5 -0.5 942 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_y30"><g data-cell-id="node_root_y30"><g data-cell-id="y30-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;">DSLs as Code sample DSL</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">DSLs as Code sample DSL</text></switch></g></g></g><g data-cell-id="y30-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;">Automate Base DSL setup</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Automate Base DSL setup</text></switch></g></g></g><g data-cell-id="y30-4"><g><rect x="640" y="0" width="300" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" 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;">Automate DSL definion/designer for target DSL</div></div></div></foreignObject><text x="790" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Automate DSL definion/designer for target DSL</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_QnN"><g data-cell-id="node_root_QnN"><g data-cell-id="QnN-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;">Add guideline documentation</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Add guideline documentation</text></switch></g></g></g><g data-cell-id="QnN-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;">Docs as Code sample DSL</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Docs as Code sample DSL</text></switch></g></g></g><g data-cell-id="QnN-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;">Agent as Code sample DSL</div></div></div></foreignObject><text x="790" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Agent as Code sample DSL</text></switch></g></g></g><g data-cell-id="QnN-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;">Poly as Code sample DSL</div></div></div></foreignObject><text x="150" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Poly as Code sample DSL</text></switch></g></g></g><g data-cell-id="QnN-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;">Voice as Code sample DSL</div></div></div></foreignObject><text x="470" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Voice as Code sample DSL</text></switch></g></g></g><g data-cell-id="QnN-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;">Data as Code sample DSL</div></div></div></foreignObject><text x="790" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Data as Code sample DSL</text></switch></g></g></g><g data-cell-id="QnN-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;">Chart Design as Code sample DSL</div></div></div></foreignObject><text x="150" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Chart Design as Code sample DSL</text></switch></g></g></g><g data-cell-id="QnN-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;">Video as Code sample DSL</div></div></div></foreignObject><text x="470" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Video as Code sample DSL</text></switch></g></g></g><g data-cell-id="QnN-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;">Image as Code sample DSL</div></div></div></foreignObject><text x="790" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Image as Code sample DSL</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="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_gaX"><g data-cell-id="node_root_gaX"><g data-cell-id="gaX-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;">Add guideline documentation</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Add guideline documentation</text></switch></g></g></g><g data-cell-id="gaX-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;">Docs as Code sample DSL</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Docs as Code sample DSL</text></switch></g></g></g><g data-cell-id="gaX-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;">Agent as Code sample DSL</div></div></div></foreignObject><text x="790" y="34" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Agent as Code sample DSL</text></switch></g></g></g><g data-cell-id="gaX-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;">Poly as Code sample DSL</div></div></div></foreignObject><text x="150" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Poly as Code sample DSL</text></switch></g></g></g><g data-cell-id="gaX-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;">Voice as Code sample DSL</div></div></div></foreignObject><text x="470" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Voice as Code sample DSL</text></switch></g></g></g><g data-cell-id="gaX-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;">Data as Code sample DSL</div></div></div></foreignObject><text x="790" y="114" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Data as Code sample DSL</text></switch></g></g></g><g data-cell-id="gaX-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;">Chart Design as Code sample DSL</div></div></div></foreignObject><text x="150" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Chart Design as Code sample DSL</text></switch></g></g></g><g data-cell-id="gaX-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;">Video as Code sample DSL</div></div></div></foreignObject><text x="470" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Video as Code sample DSL</text></switch></g></g></g><g data-cell-id="gaX-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;">Image as Code sample DSL</div></div></div></foreignObject><text x="790" y="194" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Image as Code sample DSL</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>
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Klue
4
4
  module Langcraft
5
- VERSION = '0.0.6'
5
+ VERSION = '0.0.7'
6
6
  end
7
7
  end
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "klue-langcraft",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "klue-langcraft",
9
- "version": "0.0.6",
9
+ "version": "0.0.7",
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": "klue-langcraft",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "Domain Specific Language Crafting",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: klue-langcraft
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
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-09-20 00:00:00.000000000 Z
11
+ date: 2024-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k_log
@@ -48,6 +48,9 @@ files:
48
48
  - Rakefile
49
49
  - bin/console
50
50
  - bin/setup
51
+ - docs/dsl-rules.md
52
+ - docs/dsl-samples/youtube-launch-optimizer.defn.klue
53
+ - docs/dsl-samples/youtube-launch-optimizer.klue
51
54
  - docs/project-plan/project-plan.md
52
55
  - docs/project-plan/project.drawio
53
56
  - docs/project-plan/project_done.svg