ivoryos 0.1.9__py3-none-any.whl → 0.1.12__py3-none-any.whl

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.

Potentially problematic release.


This version of ivoryos might be problematic. Click here for more details.

Files changed (37) hide show
  1. ivoryos/__init__.py +122 -99
  2. ivoryos/config.py +47 -47
  3. ivoryos/routes/auth/auth.py +100 -65
  4. ivoryos/routes/auth/templates/auth/login.html +25 -25
  5. ivoryos/routes/auth/templates/auth/signup.html +32 -32
  6. ivoryos/routes/control/control.py +400 -272
  7. ivoryos/routes/control/templates/control/controllers.html +75 -75
  8. ivoryos/routes/control/templates/control/controllers_home.html +50 -50
  9. ivoryos/routes/control/templates/control/controllers_new.html +89 -89
  10. ivoryos/routes/database/database.py +188 -114
  11. ivoryos/routes/database/templates/database/experiment_database.html +72 -72
  12. ivoryos/routes/design/design.py +543 -416
  13. ivoryos/routes/design/templates/design/experiment_builder.html +415 -415
  14. ivoryos/routes/design/templates/design/experiment_run.html +325 -325
  15. ivoryos/routes/main/main.py +42 -25
  16. ivoryos/routes/main/templates/main/help.html +141 -141
  17. ivoryos/routes/main/templates/main/home.html +68 -68
  18. ivoryos/static/.DS_Store +0 -0
  19. ivoryos/static/js/overlay.js +12 -12
  20. ivoryos/static/js/socket_handler.js +34 -34
  21. ivoryos/static/js/sortable_card.js +24 -24
  22. ivoryos/static/js/sortable_design.js +36 -36
  23. ivoryos/static/style.css +201 -201
  24. ivoryos/templates/base.html +143 -143
  25. ivoryos/utils/db_models.py +544 -518
  26. ivoryos/utils/form.py +328 -316
  27. ivoryos/utils/global_config.py +67 -67
  28. ivoryos/utils/llm_agent.py +183 -183
  29. ivoryos/utils/script_runner.py +166 -164
  30. ivoryos/utils/utils.py +437 -422
  31. ivoryos/version.py +1 -0
  32. {ivoryos-0.1.9.dist-info → ivoryos-0.1.12.dist-info}/LICENSE +21 -21
  33. {ivoryos-0.1.9.dist-info → ivoryos-0.1.12.dist-info}/METADATA +170 -169
  34. ivoryos-0.1.12.dist-info/RECORD +47 -0
  35. {ivoryos-0.1.9.dist-info → ivoryos-0.1.12.dist-info}/WHEEL +1 -1
  36. ivoryos-0.1.9.dist-info/RECORD +0 -45
  37. {ivoryos-0.1.9.dist-info → ivoryos-0.1.12.dist-info}/top_level.txt +0 -0
@@ -1,24 +1,24 @@
1
- $(function() {
2
- $("#sortable-grid").sortable({
3
- items: ".card",
4
- cursor: "move",
5
- opacity: 0.7,
6
- revert: true,
7
- placeholder: "ui-state-highlight",
8
- start: function(event, ui) {
9
- ui.placeholder.height(ui.item.height());
10
- },
11
- update: function() {
12
- const newOrder = $("#sortable-grid").sortable("toArray");
13
- $.ajax({
14
- url: saveOrderUrl, // saveOrderUrl should be set dynamically in your HTML template
15
- method: 'POST',
16
- contentType: 'application/json',
17
- data: JSON.stringify({ order: newOrder }),
18
- success: function() {
19
- console.log('Order saved');
20
- }
21
- });
22
- }
23
- }).disableSelection();
24
- });
1
+ $(function() {
2
+ $("#sortable-grid").sortable({
3
+ items: ".card",
4
+ cursor: "move",
5
+ opacity: 0.7,
6
+ revert: true,
7
+ placeholder: "ui-state-highlight",
8
+ start: function(event, ui) {
9
+ ui.placeholder.height(ui.item.height());
10
+ },
11
+ update: function() {
12
+ const newOrder = $("#sortable-grid").sortable("toArray");
13
+ $.ajax({
14
+ url: saveOrderUrl, // saveOrderUrl should be set dynamically in your HTML template
15
+ method: 'POST',
16
+ contentType: 'application/json',
17
+ data: JSON.stringify({ order: newOrder }),
18
+ success: function() {
19
+ console.log('Order saved');
20
+ }
21
+ });
22
+ }
23
+ }).disableSelection();
24
+ });
@@ -1,36 +1,36 @@
1
- $(document).ready(function(){
2
- function slideout(){
3
- setTimeout(function(){
4
- $("#response").slideUp("slow", function () {});
5
- }, 2000);
6
- }
7
-
8
- $("#response").hide();
9
-
10
- $(function() {
11
- $("#list ul").sortable({
12
- cancel: ".unsortable",
13
- opacity: 0.8,
14
- cursor: 'move',
15
- update: function() {
16
- var item_order = [];
17
- $('ul.reorder li').each(function() {
18
- item_order.push($(this).attr("id"));
19
- });
20
- var order_string = 'order=' + item_order.join(',');
21
-
22
- $.ajax({
23
- method: "POST",
24
- url: updateListUrl, // updateListUrl should be set dynamically in your HTML template
25
- data: order_string,
26
- cache: false,
27
- success: function(data){
28
- $("#response").html(data);
29
- $("#response").slideDown('slow');
30
- slideout();
31
- }
32
- });
33
- }
34
- });
35
- });
36
- });
1
+ $(document).ready(function(){
2
+ function slideout(){
3
+ setTimeout(function(){
4
+ $("#response").slideUp("slow", function () {});
5
+ }, 2000);
6
+ }
7
+
8
+ $("#response").hide();
9
+
10
+ $(function() {
11
+ $("#list ul").sortable({
12
+ cancel: ".unsortable",
13
+ opacity: 0.8,
14
+ cursor: 'move',
15
+ update: function() {
16
+ var item_order = [];
17
+ $('ul.reorder li').each(function() {
18
+ item_order.push($(this).attr("id"));
19
+ });
20
+ var order_string = 'order=' + item_order.join(',');
21
+
22
+ $.ajax({
23
+ method: "POST",
24
+ url: updateListUrl, // updateListUrl should be set dynamically in your HTML template
25
+ data: order_string,
26
+ cache: false,
27
+ success: function(data){
28
+ $("#response").html(data);
29
+ $("#response").slideDown('slow');
30
+ slideout();
31
+ }
32
+ });
33
+ }
34
+ });
35
+ });
36
+ });
ivoryos/static/style.css CHANGED
@@ -1,202 +1,202 @@
1
- .login {
2
- width: 500px;
3
- padding: 8% 0 0;
4
- margin: auto;
5
- align-content: center;
6
- }
7
- .card{
8
- display: flex;
9
- justify-content: flex-end;
10
- cursor: move;
11
- border: none;
12
- transition: transform 0.3s ease, box-shadow 0.3s ease;
13
-
14
- }
15
-
16
- .card a {
17
- text-decoration: none;
18
- }
19
- .card-title {
20
- color: #007bff; /* Bootstrap primary color */
21
- }
22
- .grid-container {
23
- display: grid;
24
- grid-template-columns: repeat(auto-fit, minmax(350px, 400px));
25
- gap: 25px;
26
- padding: 10px;
27
- }
28
- .navbar-nav {
29
- font-size: larger;
30
- }
31
- .navbar-nav li{
32
- margin-right:10px;
33
- margin-left:10px;
34
- }
35
-
36
- .canvas {
37
- height: 70vh;
38
- overflow: hidden;
39
- overflow-y: scroll;
40
- background: #e8e8cd;
41
- background-size: 20px 20px;
42
- background-image: radial-gradient(circle, cadetblue 1px, rgba(0, 0, 0, 0) 1px);
43
- }
44
-
45
- .canvas content{
46
- margin-top: 10px;
47
- }
48
- body {
49
- padding-top: 100px;
50
- background-color: #f8f9fa; /* Light grey background */
51
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
52
- }
53
- /*.run-panel-row-height {*/
54
- /* height: 80vh;*/
55
- /*}*/
56
- pre {
57
- tab-size: 4;
58
- }
59
- .scroll-column{
60
- height: 90vh;
61
- overflow: hidden;
62
- overflow-y: scroll;
63
- }
64
-
65
- label {
66
- display:block
67
- }
68
-
69
- .scroll {
70
- overflow: auto;
71
- -webkit-overflow-scrolling: touch; /* enables momentum-scrolling on iOS */
72
- position: absolute;
73
- top: 0;
74
- left: 0;
75
- right: 0;
76
- bottom: 0;
77
- }
78
-
79
-
80
- /*Remove the scrollbar from Chrome, Safari, Edge and IE*/
81
- ::-webkit-scrollbar {
82
- background: transparent;
83
- }
84
-
85
- * {
86
- -ms-overflow-style: none !important;
87
- }
88
- .script-table{
89
- background: white;
90
- width: fit-content;
91
- }
92
- .script-table td {
93
- border-bottom: none;
94
- border-top: cadetblue;
95
- }
96
- .script-table th{
97
- border-top: cadetblue;
98
- border-bottom: none;
99
- }
100
-
101
- .bottom-button {
102
- position: absolute;
103
- bottom: 20px;
104
- }
105
-
106
- hr.vertical {
107
- width: 5px;
108
- height: 100%;
109
- display: inline-block;
110
- /* or height in PX */
111
- }
112
- .list-group a {
113
- text-align: left;
114
- }
115
-
116
- .tray input[type="checkbox"]:checked + label{
117
- background: radial-gradient(circle, white 40%, midnightblue, dodgerblue 43%);
118
- }
119
-
120
- .btn-vial{
121
- height: 50px;
122
- width: 50px;
123
- border-radius: 50%;
124
- background: lightgray;
125
- margin-right: 10px;
126
- margin-top: 10px;
127
- /*text-align: center;*/
128
-
129
- }
130
-
131
- .tray {
132
- width: 70px;
133
- height: 70px;
134
- display: inline-block;
135
- background: darkgrey;
136
- /*text-align:center;*/
137
- vertical-align: middle;
138
- }
139
-
140
- .disabled-link {
141
- pointer-events: none;
142
- color: currentColor;
143
- cursor: not-allowed;
144
- opacity: 0.5;
145
- text-decoration: none;
146
- }
147
-
148
-
149
- .controller-card a {
150
- text-decoration: none;
151
- }
152
-
153
- #logging-panel {
154
- flex-grow: 1;
155
- height: 50vh;
156
- overflow-y: auto;
157
- background-color: #f5f5f5;
158
- padding: 10px;
159
- }
160
-
161
- .dropdown:hover .dropdown-menu {
162
- display: block;
163
- }
164
-
165
- #reorder {
166
- overflow-y: scroll;
167
- -webkit-overflow-scrolling: touch;
168
- }
169
-
170
- .accordion-item.design-control .accordion-button.collapsed {
171
- background-color:#c1f2f1 !important;
172
- }
173
- .accordion-item.design-control .accordion-button {
174
- background-color:#b3dad9 !important;
175
- }
176
- .accordion-item.design-control .accordion-button:hover {
177
- background-color:#b3dad9 !important;
178
- }
179
-
180
- .accordion-item.text-to-code .accordion-button.collapsed {
181
- background-color: #cdc1f2 !important;
182
- }
183
- .accordion-item.text-to-code .accordion-button {
184
- background-color: #cdc1f2 !important;
185
- }
186
- .accordion-item.text-to-code .accordion-button:hover {
187
- background-color: #b8afdc !important;
188
- }
189
- .overlay {
190
- position: fixed;
191
- top: 0;
192
- left: 0;
193
- width: 100%;
194
- height: 100%;
195
- background-color: rgba(0, 0, 0, 0.5);
196
- display: none;
197
- z-index: 1000;
198
- text-align: center;
199
- color: white;
200
- font-size: 24px;
201
- padding-top: 20%;
1
+ .login {
2
+ width: 500px;
3
+ padding: 8% 0 0;
4
+ margin: auto;
5
+ align-content: center;
6
+ }
7
+ .card{
8
+ display: flex;
9
+ justify-content: flex-end;
10
+ cursor: move;
11
+ border: none;
12
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
13
+
14
+ }
15
+
16
+ .card a {
17
+ text-decoration: none;
18
+ }
19
+ .card-title {
20
+ color: #007bff; /* Bootstrap primary color */
21
+ }
22
+ .grid-container {
23
+ display: grid;
24
+ grid-template-columns: repeat(auto-fit, minmax(350px, 400px));
25
+ gap: 25px;
26
+ padding: 10px;
27
+ }
28
+ .navbar-nav {
29
+ font-size: larger;
30
+ }
31
+ .navbar-nav li{
32
+ margin-right:10px;
33
+ margin-left:10px;
34
+ }
35
+
36
+ .canvas {
37
+ height: 70vh;
38
+ overflow: hidden;
39
+ overflow-y: scroll;
40
+ background: #e8e8cd;
41
+ background-size: 20px 20px;
42
+ background-image: radial-gradient(circle, cadetblue 1px, rgba(0, 0, 0, 0) 1px);
43
+ }
44
+
45
+ .canvas content{
46
+ margin-top: 10px;
47
+ }
48
+ body {
49
+ padding-top: 100px;
50
+ background-color: #f8f9fa; /* Light grey background */
51
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
52
+ }
53
+ /*.run-panel-row-height {*/
54
+ /* height: 80vh;*/
55
+ /*}*/
56
+ pre {
57
+ tab-size: 4;
58
+ }
59
+ .scroll-column{
60
+ height: 90vh;
61
+ overflow: hidden;
62
+ overflow-y: scroll;
63
+ }
64
+
65
+ label {
66
+ display:block
67
+ }
68
+
69
+ .scroll {
70
+ overflow: auto;
71
+ -webkit-overflow-scrolling: touch; /* enables momentum-scrolling on iOS */
72
+ position: absolute;
73
+ top: 0;
74
+ left: 0;
75
+ right: 0;
76
+ bottom: 0;
77
+ }
78
+
79
+
80
+ /*Remove the scrollbar from Chrome, Safari, Edge and IE*/
81
+ ::-webkit-scrollbar {
82
+ background: transparent;
83
+ }
84
+
85
+ * {
86
+ -ms-overflow-style: none !important;
87
+ }
88
+ .script-table{
89
+ background: white;
90
+ width: fit-content;
91
+ }
92
+ .script-table td {
93
+ border-bottom: none;
94
+ border-top: cadetblue;
95
+ }
96
+ .script-table th{
97
+ border-top: cadetblue;
98
+ border-bottom: none;
99
+ }
100
+
101
+ .bottom-button {
102
+ position: absolute;
103
+ bottom: 20px;
104
+ }
105
+
106
+ hr.vertical {
107
+ width: 5px;
108
+ height: 100%;
109
+ display: inline-block;
110
+ /* or height in PX */
111
+ }
112
+ .list-group a {
113
+ text-align: left;
114
+ }
115
+
116
+ .tray input[type="checkbox"]:checked + label{
117
+ background: radial-gradient(circle, white 40%, midnightblue, dodgerblue 43%);
118
+ }
119
+
120
+ .btn-vial{
121
+ height: 50px;
122
+ width: 50px;
123
+ border-radius: 50%;
124
+ background: lightgray;
125
+ margin-right: 10px;
126
+ margin-top: 10px;
127
+ /*text-align: center;*/
128
+
129
+ }
130
+
131
+ .tray {
132
+ width: 70px;
133
+ height: 70px;
134
+ display: inline-block;
135
+ background: darkgrey;
136
+ /*text-align:center;*/
137
+ vertical-align: middle;
138
+ }
139
+
140
+ .disabled-link {
141
+ pointer-events: none;
142
+ color: currentColor;
143
+ cursor: not-allowed;
144
+ opacity: 0.5;
145
+ text-decoration: none;
146
+ }
147
+
148
+
149
+ .controller-card a {
150
+ text-decoration: none;
151
+ }
152
+
153
+ #logging-panel {
154
+ flex-grow: 1;
155
+ height: 50vh;
156
+ overflow-y: auto;
157
+ background-color: #f5f5f5;
158
+ padding: 10px;
159
+ }
160
+
161
+ .dropdown:hover .dropdown-menu {
162
+ display: block;
163
+ }
164
+
165
+ #reorder {
166
+ overflow-y: scroll;
167
+ -webkit-overflow-scrolling: touch;
168
+ }
169
+
170
+ .accordion-item.design-control .accordion-button.collapsed {
171
+ background-color:#c1f2f1 !important;
172
+ }
173
+ .accordion-item.design-control .accordion-button {
174
+ background-color:#b3dad9 !important;
175
+ }
176
+ .accordion-item.design-control .accordion-button:hover {
177
+ background-color:#b3dad9 !important;
178
+ }
179
+
180
+ .accordion-item.text-to-code .accordion-button.collapsed {
181
+ background-color: #cdc1f2 !important;
182
+ }
183
+ .accordion-item.text-to-code .accordion-button {
184
+ background-color: #cdc1f2 !important;
185
+ }
186
+ .accordion-item.text-to-code .accordion-button:hover {
187
+ background-color: #b8afdc !important;
188
+ }
189
+ .overlay {
190
+ position: fixed;
191
+ top: 0;
192
+ left: 0;
193
+ width: 100%;
194
+ height: 100%;
195
+ background-color: rgba(0, 0, 0, 0.5);
196
+ display: none;
197
+ z-index: 1000;
198
+ text-align: center;
199
+ color: white;
200
+ font-size: 24px;
201
+ padding-top: 20%;
202
202
  }