cpee 2.1.125 → 2.1.127

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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/compliance.html +301 -0
  3. data/cockpit/css/compliance.css +38 -0
  4. data/cockpit/css/llm.css +27 -4
  5. data/cockpit/css/llm_active.svg +43 -0
  6. data/cockpit/css/llm_inactive.svg +43 -0
  7. data/cockpit/css/mode_active.svg +85 -0
  8. data/cockpit/css/mode_inactive.svg +77 -0
  9. data/cockpit/css/ui.css +21 -1
  10. data/cockpit/js/compliance.js +134 -0
  11. data/cockpit/js/instance.js +6 -1
  12. data/cockpit/js/llm.js +262 -86
  13. data/cockpit/js/parameters.js +19 -12
  14. data/cockpit/js/wfadaptor.js +49 -13
  15. data/cockpit/llm.html +34 -7
  16. data/cockpit/llmmodel.html +205 -0
  17. data/cockpit/only_llm.html +15 -7
  18. data/cockpit/rngs/requirements.rng +8 -0
  19. data/cockpit/themes/base.js +42 -18
  20. data/cockpit/themes/control/rngs/choose.rng +8 -1
  21. data/cockpit/themes/control/rngs/parallel.rng +4 -10
  22. data/cockpit/themes/dataflow/rngs/choose.rng +8 -1
  23. data/cockpit/themes/dataflow/rngs/parallel.rng +4 -10
  24. data/cockpit/themes/default/rngs/choose.rng +8 -1
  25. data/cockpit/themes/default/rngs/parallel.rng +4 -10
  26. data/cockpit/themes/extended/rngs/choose.rng +8 -1
  27. data/cockpit/themes/extended/rngs/parallel.rng +4 -10
  28. data/cockpit/themes/packed/rngs/choose.rng +8 -1
  29. data/cockpit/themes/packed/rngs/parallel.rng +4 -10
  30. data/cockpit/themes/preset/rngs/choose.rng +8 -1
  31. data/cockpit/themes/preset/rngs/parallel.rng +4 -10
  32. data/cockpit/themes/preset_model/rngs/alternative.rng +8 -0
  33. data/cockpit/themes/preset_model/rngs/call.rng +34 -0
  34. data/cockpit/themes/preset_model/rngs/callmanipulate.rng +39 -0
  35. data/cockpit/themes/preset_model/rngs/choose.rng +27 -0
  36. data/cockpit/themes/preset_model/rngs/critical.rng +8 -0
  37. data/cockpit/themes/preset_model/rngs/escape.rng +5 -0
  38. data/cockpit/themes/preset_model/rngs/group.rng +3 -0
  39. data/cockpit/themes/preset_model/rngs/loop.rng +14 -0
  40. data/cockpit/themes/preset_model/rngs/manipulate.rng +32 -0
  41. data/cockpit/themes/preset_model/rngs/otherwise.rng +5 -0
  42. data/cockpit/themes/preset_model/rngs/parallel.rng +24 -0
  43. data/cockpit/themes/preset_model/rngs/parallel_branch.rng +5 -0
  44. data/cockpit/themes/preset_model/rngs/scripts.rng +5 -0
  45. data/cockpit/themes/preset_model/rngs/start.rng +22 -0
  46. data/cockpit/themes/preset_model/rngs/stop.rng +5 -0
  47. data/cockpit/themes/preset_model/rngs/terminate.rng +8 -0
  48. data/cockpit/themes/preset_model/rngs/wait_for_signal.rng +8 -0
  49. data/cockpit/themes/preset_model/symbols/alternative.svg +15 -0
  50. data/cockpit/themes/preset_model/symbols/arrow.svg +3 -0
  51. data/cockpit/themes/preset_model/symbols/call.svg +19 -0
  52. data/cockpit/themes/preset_model/symbols/call_sensor.svg +23 -0
  53. data/cockpit/themes/preset_model/symbols/callmanipulate.svg +23 -0
  54. data/cockpit/themes/preset_model/symbols/callmanipulate_sensor.svg +26 -0
  55. data/cockpit/themes/preset_model/symbols/callmanipulate_sensor_signal.svg +32 -0
  56. data/cockpit/themes/preset_model/symbols/callmanipulate_signal.svg +29 -0
  57. data/cockpit/themes/preset_model/symbols/choose.svg +15 -0
  58. data/cockpit/themes/preset_model/symbols/choose_exclusive.svg +15 -0
  59. data/cockpit/themes/preset_model/symbols/choose_exclusive_finish.svg +5 -0
  60. data/cockpit/themes/preset_model/symbols/choose_inclusive.svg +13 -0
  61. data/cockpit/themes/preset_model/symbols/choose_inclusive_finish.svg +4 -0
  62. data/cockpit/themes/preset_model/symbols/closed_loop.svg +5 -0
  63. data/cockpit/themes/preset_model/symbols/closed_loop_cancel.svg +5 -0
  64. data/cockpit/themes/preset_model/symbols/closed_loop_control.svg +5 -0
  65. data/cockpit/themes/preset_model/symbols/closed_loop_measuring.svg +6 -0
  66. data/cockpit/themes/preset_model/symbols/complex.svg +8 -0
  67. data/cockpit/themes/preset_model/symbols/critical.svg +5 -0
  68. data/cockpit/themes/preset_model/symbols/delete.svg +4 -0
  69. data/cockpit/themes/preset_model/symbols/end.svg +3 -0
  70. data/cockpit/themes/preset_model/symbols/escape.svg +5 -0
  71. data/cockpit/themes/preset_model/symbols/event_end.svg +3 -0
  72. data/cockpit/themes/preset_model/symbols/loop.svg +15 -0
  73. data/cockpit/themes/preset_model/symbols/loop_end.svg +15 -0
  74. data/cockpit/themes/preset_model/symbols/manipulate.svg +19 -0
  75. data/cockpit/themes/preset_model/symbols/mark.svg +8 -0
  76. data/cockpit/themes/preset_model/symbols/otherwise.svg +5 -0
  77. data/cockpit/themes/preset_model/symbols/parallel.svg +6 -0
  78. data/cockpit/themes/preset_model/symbols/parallel_branch.svg +5 -0
  79. data/cockpit/themes/preset_model/symbols/parallel_branch_event.svg +14 -0
  80. data/cockpit/themes/preset_model/symbols/parallel_branch_normal.svg +5 -0
  81. data/cockpit/themes/preset_model/symbols/parallel_eventbased_exclusive.svg +9 -0
  82. data/cockpit/themes/preset_model/symbols/parallel_eventbased_parallel.svg +8 -0
  83. data/cockpit/themes/preset_model/symbols/scripts.svg +4 -0
  84. data/cockpit/themes/preset_model/symbols/start.svg +3 -0
  85. data/cockpit/themes/preset_model/symbols/start_event.svg +5 -0
  86. data/cockpit/themes/preset_model/symbols/stop.svg +5 -0
  87. data/cockpit/themes/preset_model/symbols/terminate.svg +4 -0
  88. data/cockpit/themes/preset_model/symbols/wait_for_signal.svg +21 -0
  89. data/cockpit/themes/preset_model/theme.js +50 -0
  90. data/cockpit/themes/presetaltid/rngs/choose.rng +8 -1
  91. data/cockpit/themes/presetaltid/rngs/parallel.rng +4 -10
  92. data/cockpit/themes/presetid/rngs/choose.rng +8 -1
  93. data/cockpit/themes/presetid/rngs/parallel.rng +4 -10
  94. data/cockpit/themes/reduced/rngs/choose.rng +8 -1
  95. data/cockpit/themes/reduced/rngs/parallel.rng +4 -10
  96. data/cpee.gemspec +1 -1
  97. data/server/executionhandlers/ruby/connection.rb +2 -2
  98. data/server/executionhandlers/ruby/dsl_to_dslx.xsl +20 -3
  99. data/server/routing/end.pid +1 -1
  100. data/server/routing/forward-events-00.pid +1 -1
  101. data/server/routing/forward-votes.pid +1 -1
  102. data/server/routing/persist.pid +1 -1
  103. data/server/routing/persist.rb +1 -5
  104. metadata +68 -1
data/cockpit/llm.html CHANGED
@@ -261,17 +261,44 @@
261
261
  </ui-tabbar>
262
262
  <ui-content>
263
263
  <ui-area data-belongs-to-tab="details" id='graphcolumn' oncontextmenu='return false'>
264
- <div id="modelling">
264
+ <ui-part id="modelling">
265
265
  <div id='graphgrid'>
266
266
  <div class="resource-label" style="display: none"></div>
267
267
  <svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:x="http://www.w3.org/1999/xlink" id='graphcanvas' class='graphcolumn' width='1' height='1'></svg>
268
268
  </div>
269
- </div>
270
- <div id='status'></div>
271
- <div id='prompt_container' class="max">
272
- <div id='prompt' contenteditable="true" title="Please enter your modelling instructions here..." placeholder="Please enter your modelling instructions here..."></div>
273
- <div id='prompt_submit_container' class="single"><button id='prompt_submit_button' title="CTRL-ENTER to Submit" class="llm_button small">➤</button><button id='prompt_reset_button' title="Reset Context" class="llm_button small">🗲</button></div>
274
- </div>
269
+ </ui-part>
270
+ <ui-resizehandle class='hidden'>drag to resize</ui-resizehandle>
271
+ <ui-part id='input'>
272
+ <div id='status'></div>
273
+ <div id='prompt_container' class="max">
274
+ <div id='prompt' contenteditable="true" title="Please enter your modelling instructions here..." placeholder="Please enter your modelling instructions here..."></div>
275
+ <div id='prompt_submit_container' class="single">
276
+ <select name="generation" id="generation" class='hidden'>
277
+ <option value="model">Only Model</option>
278
+ <option value="dataflow" selected="selected">Model and Dataflow</option>
279
+ </select>
280
+ <select name="mode" id="mode" class='active hidden'>
281
+ <option value="noendpoints" selected="selected">Generate/Adapt from Scratch</option>
282
+ <option value="endpoints">Generate/Adapt with Endpoint Knowledge</option>
283
+ </select>
284
+ <button id='prompt_submit_button' title="CTRL-ENTER to Submit" class="llm_button small">➤</button>
285
+ <button id='prompt_reset_button' title="Reset Context" class="llm_button small">🗲</button>
286
+ <button id='prompt_prop_button' title="Properties" class="llm_button small">⚙</button>
287
+ <select name="llms" id="llms" class='active hidden'>
288
+ <option value="gemini-3.1-flash-lite" selected="selected">gemini 3.1 Flash Lite</option>
289
+ <option value="gemini-3.1-flash">gemini 3.1 Flash</option>
290
+ <option value="gemini-3.1-pro">gemini 3.1 Pro</option>
291
+ <option value="gpt-4o">gpt 4o</option>
292
+ <option value="gpt-4o-mini">gpt 4o mini</option>
293
+ <option value="gpt-5.4-nano-2026-03-17">gpt 5.4 nano</option>
294
+ <option value="mistralai/Ministral-3-14B-Reasoning-2512"> Morp. Ministral 3</option>
295
+ <option value="google/gemma-4-31B-it">Morp. Gemma 4</option>
296
+ <option value="Qwen/Qwen3.6-35B-A3B">Morp. Qwen 3.6</option>
297
+ <option value="qwen-35-35b-coding">Morp. Qwen 35B Coding</option>
298
+ </select>
299
+ </div>
300
+ </div>
301
+ </ui-part>
275
302
  </ui-area>
276
303
  <ui-resizehandle data-belongs-to-tab="details" data-label="drag to resize"></ui-resizehandle>
277
304
  <ui-area data-belongs-to-tab="details" id="detailcolumn">
@@ -0,0 +1,205 @@
1
+ <!--
2
+ This file is part of CPEE.
3
+
4
+ CPEE is free software: you can redistribute it and/or modify it under the terms
5
+ of the GNU General Public License as published by the Free Software Foundation,
6
+ either version 3 of the License, or (at your option) any later version.
7
+
8
+ CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
9
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
10
+ PARTICULAR PURPOSE. See the GNU General Public License for more details.
11
+
12
+ You should have received a copy of the GNU General Public License along with
13
+ CPEE (file COPYING in the main directory). If not, see
14
+ <http://www.gnu.org/licenses/>.
15
+ -->
16
+
17
+ <!DOCTYPE html>
18
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
19
+ <head>
20
+ <meta charset="utf-8"/>
21
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
22
+ <title>CPEE Cockpit</title>
23
+
24
+ <!-- libs, do not modify. When local than load local libs. -->
25
+ <script type="text/javascript" src="/js_libs/jquery.min.js"></script>
26
+ <script type="text/javascript" src="/js_libs/jquery.browser.js"></script>
27
+ <script type="text/javascript" src="/js_libs/jquery.svg.min.js"></script>
28
+ <script type="text/javascript" src="/js_libs/jquery.svgdom.min.js"></script>
29
+ <script type="text/javascript" src="/js_libs/vkbeautify.js"></script>
30
+ <script type="text/javascript" src="/js_libs/util.js"></script>
31
+ <script type="text/javascript" src="/js_libs/printf.js"></script>
32
+ <script type="text/javascript" src="/js_libs/strftime.min.js"></script>
33
+ <script type="text/javascript" src="/js_libs/parsequery.js"></script>
34
+ <script type="text/javascript" src="/js_libs/underscore.min.js"></script>
35
+ <script type="text/javascript" src="/js_libs/jquery.caret.min.js"></script>
36
+ <script type="text/javascript" src="/js_libs/jquery.cookie.js"></script>
37
+
38
+ <script type="text/javascript" src="/js_libs/relaxngui.js"></script>
39
+
40
+ <script type="text/javascript" src="/js_libs/uidash.js"></script>
41
+ <script type="text/javascript" src="/js_libs/custommenu.js"></script>
42
+
43
+ <link rel="stylesheet" href="/js_libs/custommenu.css" type="text/css"/>
44
+ <link rel="stylesheet" href="/js_libs/uidash.css" type="text/css"/>
45
+
46
+ <link rel="stylesheet" href="/js_libs/relaxngui.css" type="text/css"/>
47
+
48
+ <!-- modelling ui -->
49
+ <script type="text/javascript" src="js/wfadaptor.js"></script>
50
+ <link rel="stylesheet" href="css/wfadaptor.css" type="text/css" data-include-export="true"/>
51
+
52
+ <!-- custom stuff, play arround -->
53
+ <script type="text/javascript" src="js/ui.js"></script>
54
+ <script type="text/javascript" src="js/instance.js"></script>
55
+ <script type="text/javascript" src="js/details.js"></script>
56
+ <script type="text/javascript" src="js/parameters.js"></script>
57
+ <script type="text/javascript" src="js/extended_columns.js"></script>
58
+ <script type="text/javascript" src="js/modifiers.js"></script>
59
+ <script type="text/javascript" src="themes/base.js"></script>
60
+
61
+ <script type="text/javascript" src="js/llm.js"></script>
62
+ <link rel="stylesheet" href="css/llm.css" type="text/css"/>
63
+ <link rel="stylesheet" href="css/llmmodel.css" type="text/css"/>
64
+
65
+ <link rel="stylesheet" href="css/ui.css" type="text/css"/>
66
+ <link rel="stylesheet" href="css/extended_columns-label.css" type="text/css"/>
67
+ <link rel="stylesheet" href="css/extended_columns-svg.css" type="text/css" data-include-export="true"/>
68
+ <link rel="stylesheet" href="/global_ui/uicpee.css" type="text/css"/>
69
+ <style></style>
70
+ </head>
71
+ <body data-base-port="8298" data-res-port="9303" data-theme-base="themes" is="x-ui-">
72
+ <div class='hidden' id='relaxngworker'></div>
73
+
74
+ <div class='menu' id='templates'></div>
75
+ <div class='menu' id='modeltypes'></div>
76
+
77
+ <template id="label">
78
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" style="position: absolute; top: 0; left: 0;" class="displaylabel">
79
+ <g transform="translate(1 %%1) rotate(-%%2)">
80
+ <rect class="displaylabel" width="200" height="14" x="8" y="0" rx="5" ry="5"/>
81
+ <path class="displaylabel" d="M10,13 0,13 8,8"/>
82
+ <path class="displaylabelinner" d="M10,11.5 8.5,11.5 8.5,9.5 10,9.5"/>
83
+ <text class="label" x="18" y="10">aaaa</text>
84
+ </g>
85
+ </svg>
86
+ </template>
87
+
88
+ <ui-tabbed id="instance">
89
+ <ui-tabbar>
90
+ <ui-tab class="switch" ></ui-tab>
91
+ <ui-tab class="" data-tab="new" id="tabnew" >New</ui-tab>
92
+ <ui-tab class="inactive hidden" data-tab="instance" id="tabinstance" >Instance</ui-tab>
93
+ <ui-behind ><a style='display:none' target='_blank' id='current-instance'></a><a style='display:none' target='_blank' id='current-instance-properties'>P</a><a style='display:none' target='_blank' id='current-instance-subscriptions'>S</a><a style='display:none' target='_blank' id='current-instance-callbacks'>C</a></ui-behind>
94
+ <ui-last ><a class="logo" href=".."></a></ui-last>
95
+ </ui-tabbar>
96
+ <ui-content>
97
+ <ui-area data-belongs-to-tab="new" id="areanew"> <!--{{{-->
98
+ <table class='x-ui-layout'>
99
+ <tr>
100
+ <td>Resources:</td>
101
+ <td><input name="res-url" type="text" value=""/></td>
102
+ <td></td>
103
+ </tr>
104
+ <tr>
105
+ <td>Engine:</td>
106
+ <td><input name="base-url" type="text" value=""/></td>
107
+ <td><button name="base">create new instance</button></td>
108
+ </tr>
109
+ <tr>
110
+ <td>Instance:</td>
111
+ <td><input name="instance-url" type="text" value=""/></td>
112
+ <td><button name="instance">monitor instance</button></td>
113
+ </tr>
114
+ </table>
115
+ </ui-area> <!--}}}-->
116
+ <ui-area data-belongs-to-tab="instance" id="areainstance" class="inactive"> <!--{{{-->
117
+ <div>
118
+ <div class='section'>
119
+ <div>
120
+ <form id='fuckchrome'>
121
+ <input type='file' name='testsetfile' id='testsetfile'/>
122
+ </form>
123
+ <button title='a template includes various settings, subscriptions or a (partial) model' name="loadtestset">load template</button><button title='a testset includes various settings, subscriptions or a model' name="loadtestsetfile">load testset</button>
124
+ </div>
125
+ <div>
126
+ <input type='file' name='modelfile' id='modelfile'/>
127
+ <button title='a standalone process model is only loadable if the currently loaded testset sucessfully prepared the current instance for the type of model' name="loadmodelfile">load model</button>
128
+ </div>
129
+ </div><div class='section'>
130
+ <a id="savetestsetfile" href="" download=""></a>
131
+ <a id="savesvgfile" href="" download=""></a>
132
+ <button title='a testset includes various settings, subscriptions and a model' name="savetestsetfile">save<br>testset</button>
133
+ <button title='a testset includes various settings, subscriptions and a model' name="savesvgfile">save svg<br>graph</button>
134
+ </div><div class='section' id='modifiers'>
135
+ <template id="item">
136
+ <div>
137
+ <div class='title'><strong></strong></div>
138
+ <div class='select'><select></select></div>
139
+ <div class='additional'></div>
140
+ </div>
141
+ </template>
142
+ </div>
143
+ </div>
144
+ </ui-area> <!--}}}-->
145
+ </ui-content>
146
+ </ui-tabbed>
147
+
148
+ <ui-rest id="main" class="hidden">
149
+ <ui-tabbar>
150
+ <ui-before ></ui-before>
151
+ <ui-tab class="" data-tab="details" id="tabdetails">Graph</ui-tab>
152
+ <ui-tab class="inactive" data-tab="dsl" id="tabdsl" >Description</ui-tab>
153
+ <ui-tab class="inactive" data-tab="log" id="tablog" >Log</ui-tab>
154
+ <ui-behind ><a style='display:none' target='_blank' id='current-track'>T</a><a style='display:none' target='_blank' id='current-graph'>G</a></ui-behind>
155
+ </ui-tabbar>
156
+ <ui-content>
157
+ <ui-area data-belongs-to-tab="details" id='graphcolumn' oncontextmenu='return false'>
158
+ <ui-part id='modelling'>
159
+ <div id='graphgrid'>
160
+ <div class="resource-label" style="display: none"></div>
161
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:x="http://www.w3.org/1999/xlink" id='graphcanvas' class='graphcolumn' width='1' height='1'></svg>
162
+ </div>
163
+ </ui-part>
164
+ </ui-area>
165
+ <ui-resizehandle data-belongs-to-tab="details" data-label="drag to resize"></ui-resizehandle>
166
+ <ui-area data-belongs-to-tab="details" id="detailcolumn">
167
+ <ui-part id='details'>
168
+ <div id="dat_details" class='x-ui-layout'></div>
169
+ </ui-part>
170
+ <ui-resizehandle class='hidden'>drag to resize</ui-resizehandle>
171
+ <ui-part id='input'>
172
+ <div id='status'></div>
173
+ <div id='prompt_container' class="max">
174
+ <div id='prompt' contenteditable="true" title="Please enter your modelling instructions here..." placeholder="Please enter your modelling instructions here..."></div>
175
+ <div id='prompt_submit_container' class="single">
176
+ <select name="generation" id="generation" class='hidden'>
177
+ <option value="model" selected="selected">Only Model</option>
178
+ <option value="dataflow">Model and Dataflow</option>
179
+ </select>
180
+ <select name="mode" id="mode" class='hidden'>
181
+ <option value="noendpoints" selected="selected">Generate/Adapt from Scratch</option>
182
+ <option value="endpoints">Generate/Adapt with Endpoint Knowledge</option>
183
+ </select>
184
+ <button id='prompt_submit_button' title="CTRL-ENTER to Submit" class="llm_button small">➤</button>
185
+ <button id='prompt_reset_button' title="Reset Context" class="llm_button small">🗲</button>
186
+ <button id='prompt_prop_button' title="Properties" class="llm_button small">⚙</button>
187
+ <select name="llms" id="llms" class='active hidden'>
188
+ <option value="gemini-3.1-flash-lite" selected="selected">gemini 3.1 Flash Lite</option>
189
+ <option value="gemini-3.1-flash">gemini 3.1 Flash</option>
190
+ <option value="gemini-3.1-pro">gemini 3.1 Pro</option>
191
+ </select>
192
+ </div>
193
+ </div>
194
+ </ui-part>
195
+ </ui-area>
196
+ <ui-area data-belongs-to-tab="dsl" id="areadsl" class="inactive"></ui-area>
197
+ <ui-area data-belongs-to-tab="log" id="arealog" class="inactive"> <!--{{{-->
198
+ <div>Persistent Log: <a style='display:none' target='_blank' id='current-log'></a> [<a style='display:none' target='_blank' id='xml-log'>X</a>,<a style='display:none' target='_blank' id='shifted-log'>S</a>]</div>
199
+ <table id="dat_log" class="x-ui-layout"></table>
200
+ </ui-area> <!--}}}-->
201
+ </ui-content>
202
+ </ui-rest>
203
+
204
+ </body>
205
+ </html>
@@ -215,19 +215,26 @@
215
215
  <ui-content>
216
216
  <ui-area data-belongs-to-tab="details" id='graphcolumn' oncontextmenu='return false'>
217
217
  <div id='prompt_container' class="stand_alone">
218
- <div id='prompt' contenteditable="true" title="Please enter your modelling instructions here... CTRL-ENTER or press '➤' to submit ..." placeholder="Please enter your modelling instructions here... CTRL-ENTER or press '➤' to submit ..."></div>
218
+ <div id='prompt' contenteditable="true" title="CTRL-ENTER or press '➤' to submit ..." placeholder="Please enter your modelling instructions here..."></div>
219
219
  </div>
220
220
  <div id='status'></div>
221
221
  <div id='llm_params' class="multi">
222
- <label id="llmlabel" for="llms">Choose LLM:</label>
222
+ <select name="generation" id="generation" class='hidden'>
223
+ <option value="model" selected="selected">Only Model</option>
224
+ <option value="dataflow">Model and Dataflow</option>
225
+ <option value="endpointsfirst">Model and Dataflow Alternative</option>
226
+ </select>
227
+ <select name="mode" id="mode" class='hidden'>
228
+ <option value="noendpoints" selected="selected">Generate/Adapt from Scratch</option>
229
+ <option value="endpoints">Generate/Adapt with Endpoint Knowledge</option>
230
+ </select>
223
231
  <select name="llms" id="llms">
224
- <!--<option value="gemini-2.0-flash" selected>gemini 2 Flash</option>-->
225
- <option value="gemini-2.5-flash-lite" selected>gemini 2.5 Flash Lite</option>
226
- <option value="gemini-2.5-flash">gemini 2.5 Flash</option>
227
- <option value="gemini-2.5-pro">gemini 2.5 Pro</option>
228
- <option value="gpt-4">gpt 4</option>
232
+ <option value="gemini-3.1-flash-lite" selected="selected">gemini 3.1 Flash Lite</option>
233
+ <option value="gemini-3.1-flash">gemini 3.1 Flash</option>
234
+ <option value="gemini-3.1-pro">gemini 3.1 Pro</option>
229
235
  <option value="gpt-4o">gpt 4o</option>
230
236
  <option value="gpt-4o-mini">gpt 4o mini</option>
237
+ <option value="gpt-5.4-nano-2026-03-17">gpt 5.4 nano</option>
231
238
  <option value="mistralai/Ministral-3-14B-Reasoning-2512"> Morp. Ministral 3</option>
232
239
  <option value="google/gemma-4-31B-it">Morp. Gemma 4</option>
233
240
  <option value="Qwen/Qwen3.6-35B-A3B">Morp. Qwen 3.6</option>
@@ -240,6 +247,7 @@
240
247
  <div><input id="loadtxt" accept=".txt" type="file"/></div>
241
248
  <div id='prompt_submit_container' class="multi">
242
249
  <button id='prompt_undo_button' class='llm_button' title='undo (reset to state before your last submit)'>&#10554;</button>
250
+ <button id='prompt_reset_button' title="Reset Context" class="llm_button">🗲</button>
243
251
  <button id='prompt_attach_button' class='llm_button' title='load text from (txt) file'>&#128206;</button>
244
252
  <button id='prompt_submit_button' class='llm_button' title='submit'>&#x27A4;</button>
245
253
  </div>
@@ -0,0 +1,8 @@
1
+ <element rngui:version="1.2" name="requirements" ns="http://cpee.org/ns/properties/2.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org">
2
+ <zeroOrMore rngui:label="Create Requirement">
3
+ <element rngui:label='name'>
4
+ <anyName/>
5
+ <data type="string" rngui:label="value"/>
6
+ </element>
7
+ </zeroOrMore>
8
+ </element>
@@ -4,6 +4,7 @@ function WFAdaptorManifestationBase(adaptor) {
4
4
  this.adaptor = adaptor;
5
5
  this.resources = {};
6
6
  this.elements = {};
7
+ this.strings = {};
7
8
  this.events = {};
8
9
  this.compact = false;
9
10
  this.striped = false;
@@ -14,6 +15,7 @@ function WFAdaptorManifestationBase(adaptor) {
14
15
  this.source = function(base,opts) {
15
16
  if (base[0].namespaceURI == "http://relaxng.org/ns/structure/1.0") {
16
17
  $('#relaxngworker').empty();
18
+ self.adaptor.description.reset_used_id_list();
17
19
  var rngw = new RelaxNGui(base,$('#relaxngworker'),self.adaptor.description.context_eval);
18
20
  var nnew = $(rngw.save().documentElement);
19
21
  return(nnew);
@@ -260,17 +262,19 @@ function WFAdaptorManifestationBase(adaptor) {
260
262
  })
261
263
  }
262
264
  }
263
- if($('> code', xml_node).length > 0 && xml_node.get(0).tagName == 'call') {
264
- var icon = contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg);
265
- icon.find('.part-extra .colorstyle').css('fill','var(--wfadaptor-important');
266
- menu['Delete'].push({
267
- 'label': 'Remove Scripts',
268
- 'function_call': self.adaptor.description.remove,
269
- 'menu_icon': icon,
270
- 'type': undefined,
271
- 'params': ['> code', xml_node]
272
- });
265
+
266
+ if (self.elements[xml_node.get(0).tagName].removable_children) {
267
+ let group = self.elements[xml_node.get(0).tagName].removable_children(xml_node);
268
+ if (group.length > 0) {
269
+ if (!('Delete' in menu)) {
270
+ menu['Delete'] = [];
271
+ }
272
+ $(group).each((_,e)=>{
273
+ menu['Delete'].push(e);
274
+ });
275
+ }
273
276
  }
277
+
274
278
  if (xml_node.get(0).tagName == "call" || xml_node.get(0).tagName == "manipulate" || xml_node.get(0).tagName == "stop") {
275
279
  let exec_icon = contextMenuHandling_clean_icon(self.elements.call.illustrator.svg);
276
280
  let mark_icon = self.resources.mark;
@@ -385,6 +389,9 @@ function WFAdaptorManifestationBase(adaptor) {
385
389
  this.events.dragstart = function (svgid, e) { //{{{
386
390
  } //}}}
387
391
 
392
+ // Other Strings
393
+ this.strings.scripts = 'Scripts';
394
+
388
395
  // Other resources
389
396
  this.resources.arrow = self.adaptor.theme_dir + 'symbols/arrow.svg';
390
397
  this.resources.delete = self.adaptor.theme_dir + 'symbols/delete.svg';
@@ -441,7 +448,7 @@ function WFAdaptorManifestationBase(adaptor) {
441
448
  'permissible_children': function(node,mode) { //{{{
442
449
  if(node.children('code').length < 1)
443
450
  return [
444
- {'label': 'Scripts',
451
+ {'label': self.strings.scripts,
445
452
  'function_call': self.adaptor.description.insert_last_into,
446
453
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
447
454
  'type': undefined,
@@ -449,6 +456,23 @@ function WFAdaptorManifestationBase(adaptor) {
449
456
  ];
450
457
  return [];
451
458
  }, //}}}
459
+ 'removable_children': function(node) { //{{{
460
+ if(node.children('code').length > 0) {
461
+ var icon = contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg);
462
+ icon.find('.part-extra .colorstyle').css('fill','var(--wfadaptor-important');
463
+ return [
464
+ {
465
+ 'label': 'Remove ' + self.strings.scripts,
466
+ 'function_call': self.adaptor.description.remove,
467
+ 'menu_icon': icon,
468
+ 'type': undefined,
469
+ 'params': ['> code', node]
470
+ }
471
+ ];
472
+ } else {
473
+ return [];
474
+ }
475
+ }, //}}}
452
476
  'adaptor': {//{{{
453
477
  'mousedown': function (node,e) { self.events.mousedown(node,e,true,true); },
454
478
  'touchstart': function (node,e) { self.events.touchstart(node,e,true,true); },
@@ -759,7 +783,7 @@ function WFAdaptorManifestationBase(adaptor) {
759
783
  if (mode == 'into') { func = self.adaptor.description.insert_first_into }
760
784
  else { func = self.adaptor.description.insert_after }
761
785
  var childs = [
762
- {'label': 'Service Call with Scripts',
786
+ {'label': 'Service Call with ' + self.strings.scripts,
763
787
  'function_call': func,
764
788
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
765
789
  'type': 'callmanipulate',
@@ -856,7 +880,7 @@ function WFAdaptorManifestationBase(adaptor) {
856
880
  'params': [self.adaptor.description.elements.parallel_branch, node]}];
857
881
  }
858
882
  var childs = [
859
- {'label': 'Service Call with Scripts',
883
+ {'label': 'Service Call with ' + self.strings.scripts,
860
884
  'function_call': func,
861
885
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
862
886
  'type': 'callmanipulate',
@@ -947,7 +971,7 @@ function WFAdaptorManifestationBase(adaptor) {
947
971
  if (mode == 'into') { func = self.adaptor.description.insert_first_into }
948
972
  else { func = self.adaptor.description.insert_after }
949
973
  var childs = [
950
- {'label': 'Service Call with Scripts',
974
+ {'label': 'Service Call with ' + self.strings.scripts,
951
975
  'function_call': func,
952
976
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
953
977
  'type': 'callmanipulate',
@@ -1068,7 +1092,7 @@ function WFAdaptorManifestationBase(adaptor) {
1068
1092
  if (mode.match(/into/)) { func = self.adaptor.description.insert_first_into }
1069
1093
  else { func = self.adaptor.description.insert_after }
1070
1094
  var childs = [
1071
- {'label': 'Service Call with Scripts',
1095
+ {'label': 'Service Call with ' + self.strings.scripts,
1072
1096
  'function_call': func,
1073
1097
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
1074
1098
  'type': 'callmanipulate',
@@ -1146,7 +1170,7 @@ function WFAdaptorManifestationBase(adaptor) {
1146
1170
  if (mode == 'into') { func = self.adaptor.description.insert_first_into }
1147
1171
  else { func = self.adaptor.description.insert_after }
1148
1172
  var childs = [
1149
- {'label': 'Service Call with Scripts',
1173
+ {'label': 'Service Call with ' + self.strings.scripts,
1150
1174
  'function_call': func,
1151
1175
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
1152
1176
  'type': 'callmanipulate',
@@ -1236,7 +1260,7 @@ function WFAdaptorManifestationBase(adaptor) {
1236
1260
  if (mode == 'into') { func = self.adaptor.description.insert_first_into }
1237
1261
  else { func = self.adaptor.description.insert_after }
1238
1262
  var childs = [
1239
- {'label': 'Service Call with Scripts',
1263
+ {'label': 'Service Call with ' + self.strings.scripts,
1240
1264
  'function_call': func,
1241
1265
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
1242
1266
  'type': 'callmanipulate',
@@ -1411,7 +1435,7 @@ function WFAdaptorManifestationBase(adaptor) {
1411
1435
  if (mode == 'into') { func = self.adaptor.description.insert_first_into }
1412
1436
  else { func = self.adaptor.description.insert_after }
1413
1437
  var childs = [
1414
- {'label': 'Service Call with Scripts',
1438
+ {'label': 'Service Call with ' + self.strings.scripts,
1415
1439
  'function_call': func,
1416
1440
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
1417
1441
  'type': 'callmanipulate',
@@ -12,9 +12,16 @@
12
12
  <data type="string" rngui:label="Label"/>
13
13
  </attribute>
14
14
  <element rngui:ignore="true" name="alternative">
15
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
16
+ <data type="string" rngui:readonly="true"/>
17
+ </attribute>
15
18
  <attribute name="condition">
16
19
  <data type="string"/>
17
20
  </attribute>
18
21
  </element>
19
- <element rngui:ignore="true" name="otherwise"/>
22
+ <element rngui:ignore="true" name="otherwise">
23
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
24
+ <data type="string" rngui:readonly="true"/>
25
+ </attribute>
26
+ </element>
20
27
  </element>
@@ -12,19 +12,13 @@
12
12
  </choice>
13
13
  </attribute>
14
14
  <element rngui:ignore="true" name="parallel_branch">
15
- <attribute name="pass">
16
- <data type="string"/>
17
- </attribute>
18
- <attribute name="local">
19
- <data type="string"/>
15
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
16
+ <data type="string" rngui:readonly="true"/>
20
17
  </attribute>
21
18
  </element>
22
19
  <element rngui:ignore="true" name="parallel_branch">
23
- <attribute name="pass">
24
- <data type="string"/>
25
- </attribute>
26
- <attribute name="local">
27
- <data type="string"/>
20
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
21
+ <data type="string" rngui:readonly="true"/>
28
22
  </attribute>
29
23
  </element>
30
24
  </element>
@@ -12,9 +12,16 @@
12
12
  <data type="string" rngui:label="Label"/>
13
13
  </attribute>
14
14
  <element rngui:ignore="true" name="alternative">
15
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
16
+ <data type="string" rngui:readonly="true"/>
17
+ </attribute>
15
18
  <attribute name="condition">
16
19
  <data type="string"/>
17
20
  </attribute>
18
21
  </element>
19
- <element rngui:ignore="true" name="otherwise"/>
22
+ <element rngui:ignore="true" name="otherwise">
23
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
24
+ <data type="string" rngui:readonly="true"/>
25
+ </attribute>
26
+ </element>
20
27
  </element>
@@ -12,19 +12,13 @@
12
12
  </choice>
13
13
  </attribute>
14
14
  <element rngui:ignore="true" name="parallel_branch">
15
- <attribute name="pass">
16
- <data type="string"/>
17
- </attribute>
18
- <attribute name="local">
19
- <data type="string"/>
15
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
16
+ <data type="string" rngui:readonly="true"/>
20
17
  </attribute>
21
18
  </element>
22
19
  <element rngui:ignore="true" name="parallel_branch">
23
- <attribute name="pass">
24
- <data type="string"/>
25
- </attribute>
26
- <attribute name="local">
27
- <data type="string"/>
20
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
21
+ <data type="string" rngui:readonly="true"/>
28
22
  </attribute>
29
23
  </element>
30
24
  </element>
@@ -12,9 +12,16 @@
12
12
  <data type="string" rngui:label="Label"/>
13
13
  </attribute>
14
14
  <element rngui:ignore="true" name="alternative">
15
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
16
+ <data type="string" rngui:readonly="true"/>
17
+ </attribute>
15
18
  <attribute name="condition">
16
19
  <data type="string"/>
17
20
  </attribute>
18
21
  </element>
19
- <element rngui:ignore="true" name="otherwise"/>
22
+ <element rngui:ignore="true" name="otherwise">
23
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
24
+ <data type="string" rngui:readonly="true"/>
25
+ </attribute>
26
+ </element>
20
27
  </element>
@@ -12,19 +12,13 @@
12
12
  </choice>
13
13
  </attribute>
14
14
  <element rngui:ignore="true" name="parallel_branch">
15
- <attribute name="pass">
16
- <data type="string"/>
17
- </attribute>
18
- <attribute name="local">
19
- <data type="string"/>
15
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
16
+ <data type="string" rngui:readonly="true"/>
20
17
  </attribute>
21
18
  </element>
22
19
  <element rngui:ignore="true" name="parallel_branch">
23
- <attribute name="pass">
24
- <data type="string"/>
25
- </attribute>
26
- <attribute name="local">
27
- <data type="string"/>
20
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
21
+ <data type="string" rngui:readonly="true"/>
28
22
  </attribute>
29
23
  </element>
30
24
  </element>
@@ -12,9 +12,16 @@
12
12
  <data type="string" rngui:label="Label"/>
13
13
  </attribute>
14
14
  <element rngui:ignore="true" name="alternative">
15
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
16
+ <data type="string" rngui:readonly="true"/>
17
+ </attribute>
15
18
  <attribute name="condition">
16
19
  <data type="string"/>
17
20
  </attribute>
18
21
  </element>
19
- <element rngui:ignore="true" name="otherwise"/>
22
+ <element rngui:ignore="true" name="otherwise">
23
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
24
+ <data type="string" rngui:readonly="true"/>
25
+ </attribute>
26
+ </element>
20
27
  </element>