@almadar/std 16.243.0 → 16.244.1

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 (140) hide show
  1. package/behaviors/behaviors-registry.json +72537 -31220
  2. package/behaviors/lolo/agent/atoms/std-agent-context.lolo +24 -4
  3. package/behaviors/lolo/agent/atoms/std-agent-memory.lolo +20 -5
  4. package/behaviors/lolo/agent/atoms/std-agent-proposal.lolo +550 -0
  5. package/behaviors/lolo/agent/atoms/std-agent-session.lolo +284 -25
  6. package/behaviors/lolo/agent/atoms/std-agent-suggestions.lolo +841 -0
  7. package/behaviors/lolo/agent/atoms/std-agent-tool-loop.lolo +58 -8
  8. package/behaviors/lolo/agent/organisms/std-agent-assistant.lolo +1 -0
  9. package/behaviors/lolo/infra/atoms/std-page-treat.lolo +28 -1
  10. package/behaviors/lolo/ui/avl/atoms/ui-avl-state-machine.lolo +22 -0
  11. package/behaviors/lolo/ui/avl/atoms/ui-avl-transition-explainer.lolo +175 -0
  12. package/behaviors/lolo/ui/avl/atoms/ui-module-card.lolo +22 -0
  13. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +23 -4
  14. package/behaviors/lolo/ui/core/atoms/std-hero.lolo +72 -33
  15. package/behaviors/lolo/ui/core/molecules/ui-agent-chat-feed.lolo +1 -1
  16. package/behaviors/lolo/ui/core/molecules/ui-markdown-content.lolo +54 -0
  17. package/behaviors/lolo/ui/core/molecules/ui-upload-drop-zone.lolo +5 -0
  18. package/behaviors/lolo/ui/core/organisms/ui-segment-renderer.lolo +127 -3
  19. package/behaviors/lolo/ui/core/organisms/ui-state-machine-view.lolo +22 -0
  20. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +2 -2
  21. package/behaviors/lolo/ui/learning/atoms/std-learn-arrangement.lolo +87 -17
  22. package/behaviors/lolo/ui/learning/atoms/std-learn-classify.lolo +172 -37
  23. package/behaviors/lolo/ui/learning/atoms/std-learn-coupled-sim.lolo +183 -70
  24. package/behaviors/lolo/ui/learning/atoms/std-learn-derivation.lolo +78 -13
  25. package/behaviors/lolo/ui/learning/atoms/std-learn-diagram.lolo +58 -2
  26. package/behaviors/lolo/ui/learning/atoms/std-learn-doser.lolo +107 -12
  27. package/behaviors/lolo/ui/learning/atoms/std-learn-estimate.lolo +83 -10
  28. package/behaviors/lolo/ui/learning/atoms/std-learn-goal-seek.lolo +130 -9
  29. package/behaviors/lolo/ui/learning/atoms/std-learn-grid-sim.lolo +143 -59
  30. package/behaviors/lolo/ui/learning/atoms/std-learn-hotspot.lolo +96 -22
  31. package/behaviors/lolo/ui/learning/atoms/std-learn-live-sim.lolo +66 -5
  32. package/behaviors/lolo/ui/learning/atoms/std-learn-predict.lolo +84 -6
  33. package/behaviors/lolo/ui/learning/atoms/std-learn-sandbox.lolo +80 -14
  34. package/behaviors/lolo/ui/learning/atoms/std-learn-scatter-fit.lolo +99 -5
  35. package/behaviors/lolo/ui/learning/atoms/std-learn-scenario.lolo +81 -7
  36. package/behaviors/lolo/ui/learning/atoms/std-learn-speed-drill.lolo +83 -7
  37. package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +224 -99
  38. package/behaviors/lolo/ui/learning/atoms/std-learn-tour-3d.lolo +63 -2
  39. package/behaviors/lolo/ui/learning/atoms/std-learn-trace-player.lolo +99 -38
  40. package/behaviors/lolo/ui/learning/atoms/std-learn-transport.lolo +7 -7
  41. package/behaviors/lolo/ui/learning/atoms/std-learn-tree.lolo +69 -4
  42. package/behaviors/lolo-behavior-contracts.json +1 -1
  43. package/behaviors/registry/agent/atoms/std-agent-context.orb +205 -6
  44. package/behaviors/registry/agent/atoms/std-agent-memory.orb +146 -4
  45. package/behaviors/registry/agent/atoms/std-agent-proposal.orb +1972 -0
  46. package/behaviors/registry/agent/atoms/std-agent-session.orb +2021 -597
  47. package/behaviors/registry/agent/atoms/std-agent-suggestions.orb +5079 -0
  48. package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +287 -5
  49. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +7 -0
  50. package/behaviors/registry/factory-signatures.json +1 -1
  51. package/behaviors/registry/infra/atoms/std-page-treat.orb +327 -2
  52. package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +134 -0
  53. package/behaviors/registry/ui/avl/atoms/ui-avl-transition-explainer.orb +678 -0
  54. package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +122 -0
  55. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +73 -4
  56. package/behaviors/registry/ui/core/atoms/std-hero.orb +174 -97
  57. package/behaviors/registry/ui/core/molecules/ui-markdown-content.orb +204 -1
  58. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +12 -0
  59. package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +683 -30
  60. package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +748 -21
  61. package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1429 -41
  62. package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +1031 -185
  63. package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +807 -132
  64. package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +553 -6
  65. package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +987 -21
  66. package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +582 -16
  67. package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +954 -13
  68. package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +828 -88
  69. package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +730 -28
  70. package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +479 -9
  71. package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +797 -46
  72. package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +757 -58
  73. package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1176 -164
  74. package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +599 -12
  75. package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +832 -150
  76. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +1561 -127
  77. package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +655 -6
  78. package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +634 -43
  79. package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +85 -31
  80. package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +425 -9
  81. package/canonical-operators.json +45 -2
  82. package/dist/behaviors/exports-reader.js +16667 -7868
  83. package/dist/behaviors/functions/index.d.ts +711 -32
  84. package/dist/behaviors/functions/index.js +16651 -7869
  85. package/dist/behaviors/index.d.ts +1 -1
  86. package/dist/behaviors/index.js +16668 -7869
  87. package/dist/behaviors/query.js +16667 -7868
  88. package/dist/behaviors-embeddings.hash.json +3 -3
  89. package/dist/behaviors-embeddings.json +77 -53
  90. package/dist/behaviors-registry.json +72537 -31220
  91. package/dist/index.d.ts +3 -3
  92. package/dist/index.js +16101 -7275
  93. package/dist/knob-embeddings.hash.json +3 -3
  94. package/dist/knob-embeddings.json +11617 -1225
  95. package/dist/modules/anim.d.ts +1 -1
  96. package/dist/modules/array.d.ts +1 -1
  97. package/dist/modules/async.d.ts +1 -1
  98. package/dist/modules/behavior.d.ts +1 -1
  99. package/dist/modules/browser.d.ts +1 -1
  100. package/dist/modules/composition.d.ts +1 -1
  101. package/dist/modules/contract.d.ts +1 -1
  102. package/dist/modules/core.d.ts +1 -1
  103. package/dist/modules/core.js +29 -2
  104. package/dist/modules/data.d.ts +1 -1
  105. package/dist/modules/ease.d.ts +1 -1
  106. package/dist/modules/format.d.ts +1 -1
  107. package/dist/modules/geo.d.ts +1 -1
  108. package/dist/modules/graph.d.ts +1 -1
  109. package/dist/modules/grid.d.ts +1 -1
  110. package/dist/modules/i18n.d.ts +1 -1
  111. package/dist/modules/index.d.ts +1 -1
  112. package/dist/modules/index.js +29 -2
  113. package/dist/modules/integration.d.ts +1 -1
  114. package/dist/modules/json.d.ts +1 -1
  115. package/dist/modules/llm.d.ts +1 -1
  116. package/dist/modules/math.d.ts +1 -1
  117. package/dist/modules/memory.d.ts +1 -1
  118. package/dist/modules/nn.d.ts +1 -1
  119. package/dist/modules/noise.d.ts +1 -1
  120. package/dist/modules/object.d.ts +1 -1
  121. package/dist/modules/os.d.ts +1 -1
  122. package/dist/modules/path.d.ts +1 -1
  123. package/dist/modules/prob.d.ts +1 -1
  124. package/dist/modules/session.d.ts +1 -1
  125. package/dist/modules/str.d.ts +1 -1
  126. package/dist/modules/tensor.d.ts +1 -1
  127. package/dist/modules/time.d.ts +1 -1
  128. package/dist/modules/trace.d.ts +1 -1
  129. package/dist/modules/train.d.ts +1 -1
  130. package/dist/modules/validate.d.ts +1 -1
  131. package/dist/modules/vector.d.ts +1 -1
  132. package/dist/modules/workspace.d.ts +1 -1
  133. package/dist/registry/factory-signatures.json +1 -1
  134. package/dist/registry.d.ts +2 -2
  135. package/dist/registry.js +29 -2
  136. package/dist/{types-Cdb321uM.d.ts → types-Y-yYWEOX.d.ts} +1 -1
  137. package/i18n/ar.json +3 -1
  138. package/i18n/en.json +2 -0
  139. package/i18n/sl.json +3 -1
  140. package/package.json +3 -3
@@ -82,6 +82,15 @@
82
82
  "parent": "trt_01KZEFWYXP5EK4MMGJG1PAGTNG",
83
83
  "renames": []
84
84
  },
85
+ "evt_01M459W76TQEW5K292QJWH96EB": {
86
+ "bakedName": "ROSTER_LOADED",
87
+ "curName": "ROSTER_LOADED",
88
+ "id": "evt_01M459W76TQEW5K292QJWH96EB",
89
+ "kind": "event",
90
+ "owner": "workspace",
91
+ "parent": "trt_01KZEFWYXP5EK4MMGJG1PAGTNG",
92
+ "renames": []
93
+ },
85
94
  "orb_01KZEFWYXPQ981SKZVC2A5E2Q9": {
86
95
  "bakedName": "LearnClassifyOrbital",
87
96
  "curName": "LearnClassifyOrbital",
@@ -124,6 +133,79 @@
124
133
  "name": "active",
125
134
  "type": "boolean"
126
135
  },
136
+ {
137
+ "items": {
138
+ "properties": {
139
+ "category": {
140
+ "name": "category",
141
+ "required": true,
142
+ "type": "string"
143
+ },
144
+ "explanation": {
145
+ "name": "explanation",
146
+ "required": false,
147
+ "type": "string"
148
+ },
149
+ "hint": {
150
+ "name": "hint",
151
+ "required": false,
152
+ "type": "string"
153
+ },
154
+ "options": {
155
+ "items": {
156
+ "properties": {
157
+ "category": {
158
+ "name": "category",
159
+ "required": true,
160
+ "type": "string"
161
+ },
162
+ "label": {
163
+ "name": "label",
164
+ "required": true,
165
+ "type": "string"
166
+ }
167
+ },
168
+ "type": "object"
169
+ },
170
+ "name": "options",
171
+ "required": false,
172
+ "type": "array"
173
+ },
174
+ "text": {
175
+ "name": "text",
176
+ "required": true,
177
+ "type": "string"
178
+ }
179
+ },
180
+ "type": "object"
181
+ },
182
+ "name": "items",
183
+ "type": "array"
184
+ },
185
+ {
186
+ "items": {
187
+ "properties": {
188
+ "color": {
189
+ "name": "color",
190
+ "required": true,
191
+ "type": "string"
192
+ },
193
+ "label": {
194
+ "name": "label",
195
+ "required": true,
196
+ "type": "string"
197
+ },
198
+ "value": {
199
+ "name": "value",
200
+ "required": true,
201
+ "type": "string"
202
+ }
203
+ },
204
+ "type": "object"
205
+ },
206
+ "name": "categories",
207
+ "type": "array"
208
+ },
127
209
  {
128
210
  "name": "title",
129
211
  "type": "string"
@@ -663,6 +745,17 @@
663
745
  "tier": "presentation",
664
746
  "type": "string"
665
747
  },
748
+ "rosterSource": {
749
+ "default": "config",
750
+ "description": "Where the roster comes from: config reads the items/categories knob(s) at INIT; event waits for ROSTER_LOADED and takes the roster from its payload.",
751
+ "label": "Roster Source",
752
+ "tier": "domain",
753
+ "type": "string",
754
+ "values": [
755
+ "config",
756
+ "event"
757
+ ]
758
+ },
666
759
  "scoreCap": {
667
760
  "default": 0.0,
668
761
  "description": "Upper bound on the rubric score; 0 means uncapped.",
@@ -736,6 +829,10 @@
736
829
  "kind": "set",
737
830
  "resource": "@entity.backdropShapes"
738
831
  },
832
+ {
833
+ "kind": "set",
834
+ "resource": "@entity.categories"
835
+ },
739
836
  {
740
837
  "kind": "set",
741
838
  "resource": "@entity.categoryStats"
@@ -777,6 +874,10 @@
777
874
  "kind": "set",
778
875
  "resource": "@entity.itemText"
779
876
  },
877
+ {
878
+ "kind": "set",
879
+ "resource": "@entity.items"
880
+ },
780
881
  {
781
882
  "kind": "set",
782
883
  "resource": "@entity.roundComplete"
@@ -873,6 +974,7 @@
873
974
  "active",
874
975
  "attemptedCount",
875
976
  "backdropShapes",
977
+ "categories",
876
978
  "categoryStats",
877
979
  "correctCategory",
878
980
  "correctCount",
@@ -882,6 +984,7 @@
882
984
  "itemHint",
883
985
  "itemIndex",
884
986
  "itemText",
987
+ "items",
885
988
  "roundComplete",
886
989
  "roundView",
887
990
  "running",
@@ -922,6 +1025,83 @@
922
1025
  ],
923
1026
  "tier": "domain"
924
1027
  },
1028
+ {
1029
+ "description": "Runtime content feed, honoured only when rosterSource is event — mode names the instrument it is for (the matchMode it carries, blank when standalone), items is the roster to classify and categories the category buckets; a matching instrument re-initialises from them exactly as INIT does from config, any other instrument hides.",
1030
+ "id": "evt_01M459W76TQEW5K292QJWH96EB",
1031
+ "key": "ROSTER_LOADED",
1032
+ "name": "Roster Loaded",
1033
+ "payloadSchema": [
1034
+ {
1035
+ "name": "mode",
1036
+ "required": true,
1037
+ "type": "string"
1038
+ },
1039
+ {
1040
+ "name": "items",
1041
+ "properties": [
1042
+ {
1043
+ "name": "text",
1044
+ "required": true,
1045
+ "type": "string"
1046
+ },
1047
+ {
1048
+ "name": "category",
1049
+ "required": true,
1050
+ "type": "string"
1051
+ },
1052
+ {
1053
+ "name": "hint",
1054
+ "type": "string"
1055
+ },
1056
+ {
1057
+ "name": "explanation",
1058
+ "type": "string"
1059
+ },
1060
+ {
1061
+ "name": "options",
1062
+ "properties": [
1063
+ {
1064
+ "name": "category",
1065
+ "required": true,
1066
+ "type": "string"
1067
+ },
1068
+ {
1069
+ "name": "label",
1070
+ "required": true,
1071
+ "type": "string"
1072
+ }
1073
+ ],
1074
+ "type": "[object]"
1075
+ }
1076
+ ],
1077
+ "required": true,
1078
+ "type": "[object]"
1079
+ },
1080
+ {
1081
+ "name": "categories",
1082
+ "properties": [
1083
+ {
1084
+ "name": "value",
1085
+ "required": true,
1086
+ "type": "string"
1087
+ },
1088
+ {
1089
+ "name": "label",
1090
+ "required": true,
1091
+ "type": "string"
1092
+ },
1093
+ {
1094
+ "name": "color",
1095
+ "required": true,
1096
+ "type": "string"
1097
+ }
1098
+ ],
1099
+ "required": true,
1100
+ "type": "[object]"
1101
+ }
1102
+ ],
1103
+ "tier": "domain"
1104
+ },
925
1105
  {
926
1106
  "description": "Learner picked a category for the current item; verdicted against the item's declared correct category.",
927
1107
  "id": "evt_01KZEFWYXQT0V3ZJ5R1TC6GDEM",
@@ -1018,6 +1198,16 @@
1018
1198
  "transitions": [
1019
1199
  {
1020
1200
  "effects": [
1201
+ [
1202
+ "set",
1203
+ "@entity.items",
1204
+ "@config.items"
1205
+ ],
1206
+ [
1207
+ "set",
1208
+ "@entity.categories",
1209
+ "@config.categories"
1210
+ ],
1021
1211
  [
1022
1212
  "set",
1023
1213
  "@entity.active",
@@ -1083,7 +1273,7 @@
1083
1273
  "@entity.totalItems",
1084
1274
  [
1085
1275
  "array/len",
1086
- "@config.items"
1276
+ "@entity.items"
1087
1277
  ]
1088
1278
  ],
1089
1279
  [
@@ -1091,7 +1281,7 @@
1091
1281
  "@entity.categoryStats",
1092
1282
  [
1093
1283
  "array/map",
1094
- "@config.categories",
1284
+ "@entity.categories",
1095
1285
  [
1096
1286
  "fn",
1097
1287
  "c",
@@ -1119,7 +1309,7 @@
1119
1309
  "item",
1120
1310
  [
1121
1311
  "array/nth",
1122
- "@config.items",
1312
+ "@entity.items",
1123
1313
  0.0
1124
1314
  ]
1125
1315
  ]
@@ -1173,7 +1363,7 @@
1173
1363
  "categoryCount",
1174
1364
  [
1175
1365
  "array/len",
1176
- "@config.categories"
1366
+ "@entity.categories"
1177
1367
  ]
1178
1368
  ],
1179
1369
  [
@@ -1308,7 +1498,7 @@
1308
1498
  "category",
1309
1499
  [
1310
1500
  "array/nth",
1311
- "@config.categories",
1501
+ "@entity.categories",
1312
1502
  "@i"
1313
1503
  ]
1314
1504
  ],
@@ -1474,7 +1664,7 @@
1474
1664
  "category",
1475
1665
  [
1476
1666
  "array/nth",
1477
- "@config.categories",
1667
+ "@entity.categories",
1478
1668
  "@i"
1479
1669
  ]
1480
1670
  ],
@@ -1667,7 +1857,7 @@
1667
1857
  "object/get",
1668
1858
  [
1669
1859
  "array/nth",
1670
- "@config.items",
1860
+ "@entity.items",
1671
1861
  "@entity.itemIndex"
1672
1862
  ],
1673
1863
  "options",
@@ -1758,7 +1948,7 @@
1758
1948
  "array/map",
1759
1949
  [
1760
1950
  "array/reverse",
1761
- "@config.categories"
1951
+ "@entity.categories"
1762
1952
  ],
1763
1953
  [
1764
1954
  "fn",
@@ -2103,9 +2293,17 @@
2103
2293
  "eventId": "evt_01KZEFWYXP1NHSN9QKG27M098G",
2104
2294
  "from": "idle",
2105
2295
  "guard": [
2106
- "==",
2107
- "@config.matchMode",
2108
- ""
2296
+ "and",
2297
+ [
2298
+ "==",
2299
+ "@config.matchMode",
2300
+ ""
2301
+ ],
2302
+ [
2303
+ "==",
2304
+ "@config.rosterSource",
2305
+ "config"
2306
+ ]
2109
2307
  ],
2110
2308
  "to": "idle"
2111
2309
  },
@@ -2153,6 +2351,16 @@
2153
2351
  },
2154
2352
  {
2155
2353
  "effects": [
2354
+ [
2355
+ "set",
2356
+ "@entity.items",
2357
+ "@config.items"
2358
+ ],
2359
+ [
2360
+ "set",
2361
+ "@entity.categories",
2362
+ "@config.categories"
2363
+ ],
2156
2364
  [
2157
2365
  "set",
2158
2366
  "@entity.active",
@@ -2218,7 +2426,7 @@
2218
2426
  "@entity.totalItems",
2219
2427
  [
2220
2428
  "array/len",
2221
- "@config.items"
2429
+ "@entity.items"
2222
2430
  ]
2223
2431
  ],
2224
2432
  [
@@ -2226,7 +2434,7 @@
2226
2434
  "@entity.categoryStats",
2227
2435
  [
2228
2436
  "array/map",
2229
- "@config.categories",
2437
+ "@entity.categories",
2230
2438
  [
2231
2439
  "fn",
2232
2440
  "c",
@@ -2254,7 +2462,7 @@
2254
2462
  "item",
2255
2463
  [
2256
2464
  "array/nth",
2257
- "@config.items",
2465
+ "@entity.items",
2258
2466
  0.0
2259
2467
  ]
2260
2468
  ]
@@ -2308,7 +2516,7 @@
2308
2516
  "categoryCount",
2309
2517
  [
2310
2518
  "array/len",
2311
- "@config.categories"
2519
+ "@entity.categories"
2312
2520
  ]
2313
2521
  ],
2314
2522
  [
@@ -2443,7 +2651,7 @@
2443
2651
  "category",
2444
2652
  [
2445
2653
  "array/nth",
2446
- "@config.categories",
2654
+ "@entity.categories",
2447
2655
  "@i"
2448
2656
  ]
2449
2657
  ],
@@ -2609,7 +2817,7 @@
2609
2817
  "category",
2610
2818
  [
2611
2819
  "array/nth",
2612
- "@config.categories",
2820
+ "@entity.categories",
2613
2821
  "@i"
2614
2822
  ]
2615
2823
  ],
@@ -2802,7 +3010,7 @@
2802
3010
  "object/get",
2803
3011
  [
2804
3012
  "array/nth",
2805
- "@config.items",
3013
+ "@entity.items",
2806
3014
  "@entity.itemIndex"
2807
3015
  ],
2808
3016
  "options",
@@ -2863,7 +3071,7 @@
2863
3071
  "array/map",
2864
3072
  [
2865
3073
  "array/reverse",
2866
- "@config.categories"
3074
+ "@entity.categories"
2867
3075
  ],
2868
3076
  [
2869
3077
  "fn",
@@ -3231,9 +3439,1189 @@
3231
3439
  "eventId": "evt_01KZEFWYXQWVDTDPHMGJ8KGQN8",
3232
3440
  "from": "idle",
3233
3441
  "guard": [
3234
- "==",
3235
- "@payload.mode",
3236
- "@config.matchMode"
3442
+ "and",
3443
+ [
3444
+ "==",
3445
+ "@payload.mode",
3446
+ "@config.matchMode"
3447
+ ],
3448
+ [
3449
+ "==",
3450
+ "@config.rosterSource",
3451
+ "config"
3452
+ ]
3453
+ ],
3454
+ "to": "idle"
3455
+ },
3456
+ {
3457
+ "effects": [
3458
+ [
3459
+ "set",
3460
+ "@entity.items",
3461
+ "@payload.items"
3462
+ ],
3463
+ [
3464
+ "set",
3465
+ "@entity.categories",
3466
+ "@payload.categories"
3467
+ ],
3468
+ [
3469
+ "set",
3470
+ "@entity.active",
3471
+ true
3472
+ ],
3473
+ [
3474
+ "set",
3475
+ "@entity.title",
3476
+ "@config.title"
3477
+ ],
3478
+ [
3479
+ "set",
3480
+ "@entity.itemIndex",
3481
+ 0.0
3482
+ ],
3483
+ [
3484
+ "set",
3485
+ "@entity.correctCount",
3486
+ 0.0
3487
+ ],
3488
+ [
3489
+ "set",
3490
+ "@entity.attemptedCount",
3491
+ 0.0
3492
+ ],
3493
+ [
3494
+ "set",
3495
+ "@entity.selectedCategory",
3496
+ ""
3497
+ ],
3498
+ [
3499
+ "set",
3500
+ "@entity.feedback",
3501
+ ""
3502
+ ],
3503
+ [
3504
+ "set",
3505
+ "@entity.verdict",
3506
+ ""
3507
+ ],
3508
+ [
3509
+ "set",
3510
+ "@entity.roundComplete",
3511
+ false
3512
+ ],
3513
+ [
3514
+ "set",
3515
+ "@entity.running",
3516
+ "@config.autoRun"
3517
+ ],
3518
+ [
3519
+ "set",
3520
+ "@entity.elapsedMs",
3521
+ 0.0
3522
+ ],
3523
+ [
3524
+ "set",
3525
+ "@entity.score",
3526
+ 0.0
3527
+ ],
3528
+ [
3529
+ "set",
3530
+ "@entity.totalItems",
3531
+ [
3532
+ "array/len",
3533
+ "@entity.items"
3534
+ ]
3535
+ ],
3536
+ [
3537
+ "set",
3538
+ "@entity.categoryStats",
3539
+ [
3540
+ "array/map",
3541
+ "@entity.categories",
3542
+ [
3543
+ "fn",
3544
+ "c",
3545
+ {
3546
+ "attempted": 0.0,
3547
+ "category": [
3548
+ "object/get",
3549
+ "@c",
3550
+ "value"
3551
+ ],
3552
+ "correct": 0.0,
3553
+ "label": [
3554
+ "object/get",
3555
+ "@c",
3556
+ "label"
3557
+ ]
3558
+ }
3559
+ ]
3560
+ ]
3561
+ ],
3562
+ [
3563
+ "let",
3564
+ [
3565
+ [
3566
+ "item",
3567
+ [
3568
+ "array/nth",
3569
+ "@entity.items",
3570
+ 0.0
3571
+ ]
3572
+ ]
3573
+ ],
3574
+ [
3575
+ "do",
3576
+ [
3577
+ "set",
3578
+ "@entity.itemText",
3579
+ [
3580
+ "object/get",
3581
+ "@item",
3582
+ "text"
3583
+ ]
3584
+ ],
3585
+ [
3586
+ "set",
3587
+ "@entity.itemHint",
3588
+ [
3589
+ "object/get",
3590
+ "@item",
3591
+ "hint",
3592
+ ""
3593
+ ]
3594
+ ],
3595
+ [
3596
+ "set",
3597
+ "@entity.itemExplanation",
3598
+ [
3599
+ "object/get",
3600
+ "@item",
3601
+ "explanation",
3602
+ ""
3603
+ ]
3604
+ ],
3605
+ [
3606
+ "set",
3607
+ "@entity.correctCategory",
3608
+ [
3609
+ "object/get",
3610
+ "@item",
3611
+ "category"
3612
+ ]
3613
+ ]
3614
+ ]
3615
+ ],
3616
+ [
3617
+ "let",
3618
+ [
3619
+ [
3620
+ "categoryCount",
3621
+ [
3622
+ "array/len",
3623
+ "@entity.categories"
3624
+ ]
3625
+ ],
3626
+ [
3627
+ "marginX",
3628
+ 30.0
3629
+ ],
3630
+ [
3631
+ "marginY",
3632
+ 20.0
3633
+ ],
3634
+ [
3635
+ "plotWidth",
3636
+ [
3637
+ "-",
3638
+ "@config.width",
3639
+ [
3640
+ "*",
3641
+ "@marginX",
3642
+ 2.0
3643
+ ]
3644
+ ]
3645
+ ],
3646
+ [
3647
+ "plotHeight",
3648
+ [
3649
+ "-",
3650
+ "@config.height",
3651
+ [
3652
+ "*",
3653
+ "@marginY",
3654
+ 2.0
3655
+ ]
3656
+ ]
3657
+ ],
3658
+ [
3659
+ "plotBottom",
3660
+ [
3661
+ "-",
3662
+ "@config.height",
3663
+ "@marginY"
3664
+ ]
3665
+ ],
3666
+ [
3667
+ "tierHeight",
3668
+ [
3669
+ "/",
3670
+ "@plotHeight",
3671
+ "@categoryCount"
3672
+ ]
3673
+ ],
3674
+ [
3675
+ "maxWidth",
3676
+ [
3677
+ "*",
3678
+ "@plotWidth",
3679
+ 0.95
3680
+ ]
3681
+ ],
3682
+ [
3683
+ "minWidth",
3684
+ [
3685
+ "-",
3686
+ "@maxWidth",
3687
+ [
3688
+ "*",
3689
+ "@config.taper",
3690
+ [
3691
+ "-",
3692
+ "@maxWidth",
3693
+ [
3694
+ "*",
3695
+ "@plotWidth",
3696
+ 0.3
3697
+ ]
3698
+ ]
3699
+ ]
3700
+ ]
3701
+ ],
3702
+ [
3703
+ "widthStep",
3704
+ [
3705
+ "/",
3706
+ [
3707
+ "-",
3708
+ "@maxWidth",
3709
+ "@minWidth"
3710
+ ],
3711
+ [
3712
+ "math/max",
3713
+ 1.0,
3714
+ [
3715
+ "-",
3716
+ "@categoryCount",
3717
+ 1.0
3718
+ ]
3719
+ ]
3720
+ ]
3721
+ ],
3722
+ [
3723
+ "centerX",
3724
+ [
3725
+ "/",
3726
+ "@config.width",
3727
+ 2.0
3728
+ ]
3729
+ ],
3730
+ [
3731
+ "revealed",
3732
+ [
3733
+ "!=",
3734
+ "@entity.selectedCategory",
3735
+ ""
3736
+ ]
3737
+ ],
3738
+ [
3739
+ "rects",
3740
+ [
3741
+ "array/flatten",
3742
+ [
3743
+ "array/map",
3744
+ [
3745
+ "array/range",
3746
+ "@categoryCount"
3747
+ ],
3748
+ [
3749
+ "fn",
3750
+ "i",
3751
+ [
3752
+ "let",
3753
+ [
3754
+ [
3755
+ "category",
3756
+ [
3757
+ "array/nth",
3758
+ "@entity.categories",
3759
+ "@i"
3760
+ ]
3761
+ ],
3762
+ [
3763
+ "categoryValue",
3764
+ [
3765
+ "object/get",
3766
+ "@category",
3767
+ "value"
3768
+ ]
3769
+ ],
3770
+ [
3771
+ "w",
3772
+ [
3773
+ "-",
3774
+ "@maxWidth",
3775
+ [
3776
+ "*",
3777
+ "@i",
3778
+ "@widthStep"
3779
+ ]
3780
+ ]
3781
+ ],
3782
+ [
3783
+ "yTop",
3784
+ [
3785
+ "-",
3786
+ "@plotBottom",
3787
+ [
3788
+ "*",
3789
+ [
3790
+ "+",
3791
+ "@i",
3792
+ 1.0
3793
+ ],
3794
+ "@tierHeight"
3795
+ ]
3796
+ ]
3797
+ ],
3798
+ [
3799
+ "x",
3800
+ [
3801
+ "-",
3802
+ "@centerX",
3803
+ [
3804
+ "/",
3805
+ "@w",
3806
+ 2.0
3807
+ ]
3808
+ ]
3809
+ ],
3810
+ [
3811
+ "isCorrectCategory",
3812
+ [
3813
+ "==",
3814
+ "@categoryValue",
3815
+ "@entity.correctCategory"
3816
+ ]
3817
+ ],
3818
+ [
3819
+ "isSelectedCategory",
3820
+ [
3821
+ "==",
3822
+ "@categoryValue",
3823
+ "@entity.selectedCategory"
3824
+ ]
3825
+ ],
3826
+ [
3827
+ "fillColor",
3828
+ [
3829
+ "if",
3830
+ [
3831
+ "and",
3832
+ "@revealed",
3833
+ "@isCorrectCategory"
3834
+ ],
3835
+ "@config.correctColor",
3836
+ [
3837
+ "if",
3838
+ [
3839
+ "and",
3840
+ "@revealed",
3841
+ "@isSelectedCategory"
3842
+ ],
3843
+ "@config.incorrectColor",
3844
+ [
3845
+ "object/get",
3846
+ "@category",
3847
+ "color"
3848
+ ]
3849
+ ]
3850
+ ]
3851
+ ],
3852
+ [
3853
+ "baseRect",
3854
+ {
3855
+ "fillStyle": "tint",
3856
+ "fillTone": "@fillColor",
3857
+ "height": "@tierHeight",
3858
+ "id": [
3859
+ "str/concat",
3860
+ "category-",
3861
+ "@i"
3862
+ ],
3863
+ "tone": "@fillColor",
3864
+ "type": "rect",
3865
+ "width": "@w",
3866
+ "x": "@x",
3867
+ "y": "@yTop"
3868
+ }
3869
+ ]
3870
+ ],
3871
+ [
3872
+ "if",
3873
+ [
3874
+ "and",
3875
+ "@revealed",
3876
+ "@isSelectedCategory"
3877
+ ],
3878
+ [
3879
+ "@baseRect",
3880
+ {
3881
+ "fillStyle": "outline",
3882
+ "height": "@tierHeight",
3883
+ "id": [
3884
+ "str/concat",
3885
+ "category-pick-ring-",
3886
+ "@i"
3887
+ ],
3888
+ "opacity": 1.0,
3889
+ "stroke": "bold",
3890
+ "tone": "ink",
3891
+ "type": "rect",
3892
+ "width": "@w",
3893
+ "x": "@x",
3894
+ "y": "@yTop"
3895
+ }
3896
+ ],
3897
+ [
3898
+ "@baseRect"
3899
+ ]
3900
+ ]
3901
+ ]
3902
+ ]
3903
+ ]
3904
+ ]
3905
+ ],
3906
+ [
3907
+ "labels",
3908
+ [
3909
+ "array/map",
3910
+ [
3911
+ "array/range",
3912
+ "@categoryCount"
3913
+ ],
3914
+ [
3915
+ "fn",
3916
+ "i",
3917
+ [
3918
+ "let",
3919
+ [
3920
+ [
3921
+ "category",
3922
+ [
3923
+ "array/nth",
3924
+ "@entity.categories",
3925
+ "@i"
3926
+ ]
3927
+ ],
3928
+ [
3929
+ "yTop",
3930
+ [
3931
+ "-",
3932
+ "@plotBottom",
3933
+ [
3934
+ "*",
3935
+ [
3936
+ "+",
3937
+ "@i",
3938
+ 1.0
3939
+ ],
3940
+ "@tierHeight"
3941
+ ]
3942
+ ]
3943
+ ]
3944
+ ],
3945
+ {
3946
+ "align": "center",
3947
+ "id": [
3948
+ "str/concat",
3949
+ "category-label-",
3950
+ "@i"
3951
+ ],
3952
+ "text": [
3953
+ "object/get",
3954
+ "@category",
3955
+ "label"
3956
+ ],
3957
+ "textSize": "sm",
3958
+ "tone": "label",
3959
+ "type": "text",
3960
+ "x": "@centerX",
3961
+ "y": [
3962
+ "+",
3963
+ "@yTop",
3964
+ [
3965
+ "/",
3966
+ "@tierHeight",
3967
+ 2.0
3968
+ ],
3969
+ 5.0
3970
+ ]
3971
+ }
3972
+ ]
3973
+ ]
3974
+ ]
3975
+ ],
3976
+ [
3977
+ "backdropShapes",
3978
+ [
3979
+ "array/concat",
3980
+ "@rects",
3981
+ "@labels"
3982
+ ]
3983
+ ],
3984
+ [
3985
+ "summaryView",
3986
+ [
3987
+ {
3988
+ "content": "Round Complete",
3989
+ "type": "typography",
3990
+ "variant": "h4"
3991
+ },
3992
+ {
3993
+ "label": "Final Score",
3994
+ "max": "@entity.attemptedCount",
3995
+ "type": "stat-display",
3996
+ "value": "@entity.correctCount"
3997
+ },
3998
+ {
3999
+ "children": [
4000
+ "array/map",
4001
+ "@entity.categoryStats",
4002
+ [
4003
+ "fn",
4004
+ "s",
4005
+ {
4006
+ "content": [
4007
+ "str/concat",
4008
+ [
4009
+ "object/get",
4010
+ "@s",
4011
+ "label"
4012
+ ],
4013
+ ": ",
4014
+ [
4015
+ "str/concat",
4016
+ "",
4017
+ [
4018
+ "object/get",
4019
+ "@s",
4020
+ "correct"
4021
+ ]
4022
+ ],
4023
+ "/",
4024
+ [
4025
+ "str/concat",
4026
+ "",
4027
+ [
4028
+ "object/get",
4029
+ "@s",
4030
+ "attempted"
4031
+ ]
4032
+ ]
4033
+ ],
4034
+ "type": "typography",
4035
+ "variant": "body"
4036
+ }
4037
+ ]
4038
+ ],
4039
+ "direction": "vertical",
4040
+ "gap": "xs",
4041
+ "type": "stack"
4042
+ },
4043
+ {
4044
+ "action": "RETRY",
4045
+ "icon": "rotate-ccw",
4046
+ "label": "@config.retryLabel",
4047
+ "type": "button",
4048
+ "variant": "primary"
4049
+ }
4050
+ ]
4051
+ ],
4052
+ [
4053
+ "itemView",
4054
+ [
4055
+ {
4056
+ "children": [
4057
+ "array/concat",
4058
+ [
4059
+ {
4060
+ "content": "@entity.itemText",
4061
+ "type": "typography",
4062
+ "variant": "body"
4063
+ }
4064
+ ],
4065
+ [
4066
+ "if",
4067
+ [
4068
+ "and",
4069
+ "@config.showHint",
4070
+ [
4071
+ "!=",
4072
+ "@entity.itemHint",
4073
+ ""
4074
+ ]
4075
+ ],
4076
+ [
4077
+ {
4078
+ "color": "muted",
4079
+ "content": "@entity.itemHint",
4080
+ "type": "typography",
4081
+ "variant": "caption"
4082
+ }
4083
+ ],
4084
+ []
4085
+ ]
4086
+ ],
4087
+ "padding": "md",
4088
+ "type": "card",
4089
+ "variant": "bordered"
4090
+ },
4091
+ {
4092
+ "animate": "@config.animate",
4093
+ "backgroundColor": "@config.backgroundColor",
4094
+ "edges": [],
4095
+ "height": "@config.height",
4096
+ "interactive": "@config.interactive",
4097
+ "keyMap": {
4098
+ "ArrowRight": "ADVANCE",
4099
+ "KeyR": "RETRY",
4100
+ "Space": "TOGGLE_RUN"
4101
+ },
4102
+ "nodes": [],
4103
+ "shapes": "@backdropShapes",
4104
+ "type": "biology-canvas",
4105
+ "width": "@config.width"
4106
+ },
4107
+ {
4108
+ "children": [
4109
+ "let",
4110
+ [
4111
+ [
4112
+ "itemOptions",
4113
+ [
4114
+ "object/get",
4115
+ [
4116
+ "array/nth",
4117
+ "@entity.items",
4118
+ "@entity.itemIndex"
4119
+ ],
4120
+ "options",
4121
+ []
4122
+ ]
4123
+ ],
4124
+ [
4125
+ "locked",
4126
+ [
4127
+ "!=",
4128
+ "@entity.selectedCategory",
4129
+ ""
4130
+ ]
4131
+ ]
4132
+ ],
4133
+ [
4134
+ "if",
4135
+ [
4136
+ ">",
4137
+ [
4138
+ "array/len",
4139
+ "@itemOptions"
4140
+ ],
4141
+ 0.0
4142
+ ],
4143
+ [
4144
+ "array/map",
4145
+ "@itemOptions",
4146
+ [
4147
+ "fn",
4148
+ "o",
4149
+ {
4150
+ "action": "PICK",
4151
+ "actionPayload": {
4152
+ "category": [
4153
+ "object/get",
4154
+ "@o",
4155
+ "category"
4156
+ ]
4157
+ },
4158
+ "disabled": "@locked",
4159
+ "label": [
4160
+ "object/get",
4161
+ "@o",
4162
+ "label"
4163
+ ],
4164
+ "size": "lg",
4165
+ "type": "button",
4166
+ "variant": [
4167
+ "if",
4168
+ [
4169
+ "not",
4170
+ "@locked"
4171
+ ],
4172
+ "secondary",
4173
+ [
4174
+ "if",
4175
+ [
4176
+ "==",
4177
+ [
4178
+ "object/get",
4179
+ "@o",
4180
+ "category"
4181
+ ],
4182
+ "@entity.correctCategory"
4183
+ ],
4184
+ "success",
4185
+ [
4186
+ "if",
4187
+ [
4188
+ "==",
4189
+ [
4190
+ "object/get",
4191
+ "@o",
4192
+ "category"
4193
+ ],
4194
+ "@entity.selectedCategory"
4195
+ ],
4196
+ "danger",
4197
+ "ghost"
4198
+ ]
4199
+ ]
4200
+ ]
4201
+ }
4202
+ ]
4203
+ ],
4204
+ [
4205
+ "array/map",
4206
+ [
4207
+ "array/reverse",
4208
+ "@entity.categories"
4209
+ ],
4210
+ [
4211
+ "fn",
4212
+ "c",
4213
+ {
4214
+ "action": "PICK",
4215
+ "actionPayload": {
4216
+ "category": [
4217
+ "object/get",
4218
+ "@c",
4219
+ "value"
4220
+ ]
4221
+ },
4222
+ "disabled": "@locked",
4223
+ "label": [
4224
+ "object/get",
4225
+ "@c",
4226
+ "label"
4227
+ ],
4228
+ "size": "lg",
4229
+ "type": "button",
4230
+ "variant": [
4231
+ "if",
4232
+ [
4233
+ "not",
4234
+ "@locked"
4235
+ ],
4236
+ "secondary",
4237
+ [
4238
+ "if",
4239
+ [
4240
+ "==",
4241
+ [
4242
+ "object/get",
4243
+ "@c",
4244
+ "value"
4245
+ ],
4246
+ "@entity.correctCategory"
4247
+ ],
4248
+ "success",
4249
+ [
4250
+ "if",
4251
+ [
4252
+ "==",
4253
+ [
4254
+ "object/get",
4255
+ "@c",
4256
+ "value"
4257
+ ],
4258
+ "@entity.selectedCategory"
4259
+ ],
4260
+ "danger",
4261
+ "ghost"
4262
+ ]
4263
+ ]
4264
+ ]
4265
+ }
4266
+ ]
4267
+ ]
4268
+ ]
4269
+ ],
4270
+ "direction": "vertical",
4271
+ "gap": "sm",
4272
+ "type": "stack"
4273
+ },
4274
+ [
4275
+ "if",
4276
+ [
4277
+ "==",
4278
+ "@entity.verdict",
4279
+ ""
4280
+ ],
4281
+ null,
4282
+ {
4283
+ "children": [
4284
+ {
4285
+ "label": [
4286
+ "if",
4287
+ [
4288
+ "==",
4289
+ "@entity.verdict",
4290
+ "correct"
4291
+ ],
4292
+ "Correct",
4293
+ "Incorrect"
4294
+ ],
4295
+ "type": "badge",
4296
+ "variant": [
4297
+ "if",
4298
+ [
4299
+ "==",
4300
+ "@entity.verdict",
4301
+ "correct"
4302
+ ],
4303
+ "success",
4304
+ "error"
4305
+ ]
4306
+ },
4307
+ {
4308
+ "content": "@entity.feedback",
4309
+ "type": "typography",
4310
+ "variant": "body"
4311
+ }
4312
+ ],
4313
+ "direction": "vertical",
4314
+ "gap": "xs",
4315
+ "type": "stack"
4316
+ }
4317
+ ],
4318
+ {
4319
+ "align": "center",
4320
+ "children": [
4321
+ {
4322
+ "action": "ADVANCE",
4323
+ "disabled": [
4324
+ "==",
4325
+ "@entity.selectedCategory",
4326
+ ""
4327
+ ],
4328
+ "icon": "chevron-right",
4329
+ "label": "@config.advanceLabel",
4330
+ "type": "button",
4331
+ "variant": "primary"
4332
+ },
4333
+ [
4334
+ "if",
4335
+ "@entity.running",
4336
+ {
4337
+ "action": "TOGGLE_RUN",
4338
+ "aria-pressed": "true",
4339
+ "icon": "pause",
4340
+ "label": "Pause",
4341
+ "type": "button",
4342
+ "variant": "ghost"
4343
+ },
4344
+ {
4345
+ "action": "TOGGLE_RUN",
4346
+ "aria-pressed": "false",
4347
+ "icon": "play",
4348
+ "label": "Auto",
4349
+ "type": "button",
4350
+ "variant": "ghost"
4351
+ }
4352
+ ],
4353
+ [
4354
+ "if",
4355
+ [
4356
+ ">",
4357
+ "@config.passScore",
4358
+ 0.0
4359
+ ],
4360
+ {
4361
+ "color": "muted",
4362
+ "content": [
4363
+ "str/concat",
4364
+ "Pass at ",
4365
+ "@config.passScore"
4366
+ ],
4367
+ "type": "typography",
4368
+ "variant": "caption"
4369
+ },
4370
+ null
4371
+ ]
4372
+ ],
4373
+ "direction": "horizontal",
4374
+ "gap": "sm",
4375
+ "type": "stack",
4376
+ "wrap": true
4377
+ }
4378
+ ]
4379
+ ]
4380
+ ],
4381
+ [
4382
+ "do",
4383
+ [
4384
+ "set",
4385
+ "@entity.backdropShapes",
4386
+ "@backdropShapes"
4387
+ ],
4388
+ [
4389
+ "set",
4390
+ "@entity.roundView",
4391
+ [
4392
+ "if",
4393
+ "@entity.roundComplete",
4394
+ "@summaryView",
4395
+ "@itemView"
4396
+ ]
4397
+ ]
4398
+ ]
4399
+ ],
4400
+ [
4401
+ "render-ui",
4402
+ "main",
4403
+ {
4404
+ "children": [
4405
+ {
4406
+ "children": [
4407
+ {
4408
+ "align": "start",
4409
+ "children": [
4410
+ {
4411
+ "children": [
4412
+ {
4413
+ "content": "@entity.title",
4414
+ "type": "typography",
4415
+ "variant": "h4"
4416
+ },
4417
+ [
4418
+ "if",
4419
+ [
4420
+ "==",
4421
+ "@config.summary",
4422
+ ""
4423
+ ],
4424
+ null,
4425
+ {
4426
+ "color": "muted",
4427
+ "content": "@config.summary",
4428
+ "type": "typography",
4429
+ "variant": "body2"
4430
+ }
4431
+ ]
4432
+ ],
4433
+ "direction": "vertical",
4434
+ "gap": "xs",
4435
+ "type": "stack"
4436
+ },
4437
+ {
4438
+ "label": [
4439
+ "if",
4440
+ "@entity.roundComplete",
4441
+ "Round complete",
4442
+ [
4443
+ "if",
4444
+ [
4445
+ "or",
4446
+ [
4447
+ "!=",
4448
+ "@config.pointsPerCorrect",
4449
+ 1.0
4450
+ ],
4451
+ [
4452
+ ">",
4453
+ "@config.penaltyPerMiss",
4454
+ 0.0
4455
+ ]
4456
+ ],
4457
+ [
4458
+ "str/concat",
4459
+ "Score ",
4460
+ "@entity.score"
4461
+ ],
4462
+ [
4463
+ "str/concat",
4464
+ "@entity.correctCount",
4465
+ " / ",
4466
+ "@entity.attemptedCount",
4467
+ " correct"
4468
+ ]
4469
+ ]
4470
+ ],
4471
+ "type": "badge",
4472
+ "variant": [
4473
+ "if",
4474
+ "@entity.roundComplete",
4475
+ "primary",
4476
+ [
4477
+ "if",
4478
+ [
4479
+ "==",
4480
+ "@entity.verdict",
4481
+ "correct"
4482
+ ],
4483
+ "success",
4484
+ [
4485
+ "if",
4486
+ [
4487
+ "==",
4488
+ "@entity.verdict",
4489
+ "incorrect"
4490
+ ],
4491
+ "error",
4492
+ "neutral"
4493
+ ]
4494
+ ]
4495
+ ]
4496
+ }
4497
+ ],
4498
+ "direction": "horizontal",
4499
+ "gap": "md",
4500
+ "justify": "between",
4501
+ "type": "stack"
4502
+ },
4503
+ {
4504
+ "label": [
4505
+ "str/concat",
4506
+ "Item ",
4507
+ [
4508
+ "str/concat",
4509
+ "",
4510
+ [
4511
+ "+",
4512
+ "@entity.itemIndex",
4513
+ 1.0
4514
+ ]
4515
+ ],
4516
+ " of ",
4517
+ [
4518
+ "str/concat",
4519
+ "",
4520
+ "@entity.totalItems"
4521
+ ]
4522
+ ],
4523
+ "max": "@entity.totalItems",
4524
+ "showPercentage": false,
4525
+ "type": "progress-bar",
4526
+ "value": [
4527
+ "+",
4528
+ "@entity.itemIndex",
4529
+ 1.0
4530
+ ]
4531
+ },
4532
+ {
4533
+ "children": "@entity.roundView",
4534
+ "direction": "vertical",
4535
+ "gap": "md",
4536
+ "type": "stack"
4537
+ }
4538
+ ],
4539
+ "direction": "vertical",
4540
+ "gap": "md",
4541
+ "type": "stack"
4542
+ }
4543
+ ],
4544
+ "padding": "md",
4545
+ "type": "box"
4546
+ }
4547
+ ]
4548
+ ],
4549
+ "event": "ROSTER_LOADED",
4550
+ "eventId": "evt_01M459W76TQEW5K292QJWH96EB",
4551
+ "from": "idle",
4552
+ "guard": [
4553
+ "and",
4554
+ [
4555
+ "==",
4556
+ "@config.rosterSource",
4557
+ "event"
4558
+ ],
4559
+ [
4560
+ "and",
4561
+ [
4562
+ "==",
4563
+ "@payload.mode",
4564
+ "@config.matchMode"
4565
+ ],
4566
+ [
4567
+ "and",
4568
+ [
4569
+ ">",
4570
+ [
4571
+ "array/len",
4572
+ "@payload.items"
4573
+ ],
4574
+ 0.0
4575
+ ],
4576
+ [
4577
+ ">",
4578
+ [
4579
+ "array/len",
4580
+ "@payload.categories"
4581
+ ],
4582
+ 0.0
4583
+ ]
4584
+ ]
4585
+ ]
4586
+ ],
4587
+ "to": "idle"
4588
+ },
4589
+ {
4590
+ "effects": [
4591
+ [
4592
+ "set",
4593
+ "@entity.active",
4594
+ false
4595
+ ],
4596
+ [
4597
+ "set",
4598
+ "@entity.running",
4599
+ false
4600
+ ],
4601
+ [
4602
+ "render-ui",
4603
+ "main",
4604
+ null
4605
+ ]
4606
+ ],
4607
+ "event": "ROSTER_LOADED",
4608
+ "eventId": "evt_01M459W76TQEW5K292QJWH96EB",
4609
+ "from": "idle",
4610
+ "guard": [
4611
+ "and",
4612
+ [
4613
+ "==",
4614
+ "@config.rosterSource",
4615
+ "event"
4616
+ ],
4617
+ [
4618
+ "not",
4619
+ [
4620
+ "==",
4621
+ "@payload.mode",
4622
+ "@config.matchMode"
4623
+ ]
4624
+ ]
3237
4625
  ],
3238
4626
  "to": "idle"
3239
4627
  },
@@ -3261,7 +4649,7 @@
3261
4649
  "array/first",
3262
4650
  [
3263
4651
  "array/filter",
3264
- "@config.categories",
4652
+ "@entity.categories",
3265
4653
  [
3266
4654
  "fn",
3267
4655
  "c",
@@ -3470,7 +4858,7 @@
3470
4858
  "categoryCount",
3471
4859
  [
3472
4860
  "array/len",
3473
- "@config.categories"
4861
+ "@entity.categories"
3474
4862
  ]
3475
4863
  ],
3476
4864
  [
@@ -3605,7 +4993,7 @@
3605
4993
  "category",
3606
4994
  [
3607
4995
  "array/nth",
3608
- "@config.categories",
4996
+ "@entity.categories",
3609
4997
  "@i"
3610
4998
  ]
3611
4999
  ],
@@ -3771,7 +5159,7 @@
3771
5159
  "category",
3772
5160
  [
3773
5161
  "array/nth",
3774
- "@config.categories",
5162
+ "@entity.categories",
3775
5163
  "@i"
3776
5164
  ]
3777
5165
  ],
@@ -3964,7 +5352,7 @@
3964
5352
  "object/get",
3965
5353
  [
3966
5354
  "array/nth",
3967
- "@config.items",
5355
+ "@entity.items",
3968
5356
  "@entity.itemIndex"
3969
5357
  ],
3970
5358
  "options",
@@ -4025,7 +5413,7 @@
4025
5413
  "array/map",
4026
5414
  [
4027
5415
  "array/reverse",
4028
- "@config.categories"
5416
+ "@entity.categories"
4029
5417
  ],
4030
5418
  [
4031
5419
  "fn",
@@ -4526,7 +5914,7 @@
4526
5914
  "item",
4527
5915
  [
4528
5916
  "array/nth",
4529
- "@config.items",
5917
+ "@entity.items",
4530
5918
  "@nextIndex"
4531
5919
  ]
4532
5920
  ]
@@ -4602,7 +5990,7 @@
4602
5990
  "categoryCount",
4603
5991
  [
4604
5992
  "array/len",
4605
- "@config.categories"
5993
+ "@entity.categories"
4606
5994
  ]
4607
5995
  ],
4608
5996
  [
@@ -4737,7 +6125,7 @@
4737
6125
  "category",
4738
6126
  [
4739
6127
  "array/nth",
4740
- "@config.categories",
6128
+ "@entity.categories",
4741
6129
  "@i"
4742
6130
  ]
4743
6131
  ],
@@ -4903,7 +6291,7 @@
4903
6291
  "category",
4904
6292
  [
4905
6293
  "array/nth",
4906
- "@config.categories",
6294
+ "@entity.categories",
4907
6295
  "@i"
4908
6296
  ]
4909
6297
  ],
@@ -5096,7 +6484,7 @@
5096
6484
  "object/get",
5097
6485
  [
5098
6486
  "array/nth",
5099
- "@config.items",
6487
+ "@entity.items",
5100
6488
  "@entity.itemIndex"
5101
6489
  ],
5102
6490
  "options",
@@ -5157,7 +6545,7 @@
5157
6545
  "array/map",
5158
6546
  [
5159
6547
  "array/reverse",
5160
- "@config.categories"
6548
+ "@entity.categories"
5161
6549
  ],
5162
6550
  [
5163
6551
  "fn",
@@ -5613,7 +7001,7 @@
5613
7001
  "@entity.categoryStats",
5614
7002
  [
5615
7003
  "array/map",
5616
- "@config.categories",
7004
+ "@entity.categories",
5617
7005
  [
5618
7006
  "fn",
5619
7007
  "c",
@@ -5641,7 +7029,7 @@
5641
7029
  "item",
5642
7030
  [
5643
7031
  "array/nth",
5644
- "@config.items",
7032
+ "@entity.items",
5645
7033
  0.0
5646
7034
  ]
5647
7035
  ]
@@ -5695,7 +7083,7 @@
5695
7083
  "categoryCount",
5696
7084
  [
5697
7085
  "array/len",
5698
- "@config.categories"
7086
+ "@entity.categories"
5699
7087
  ]
5700
7088
  ],
5701
7089
  [
@@ -5830,7 +7218,7 @@
5830
7218
  "category",
5831
7219
  [
5832
7220
  "array/nth",
5833
- "@config.categories",
7221
+ "@entity.categories",
5834
7222
  "@i"
5835
7223
  ]
5836
7224
  ],
@@ -5996,7 +7384,7 @@
5996
7384
  "category",
5997
7385
  [
5998
7386
  "array/nth",
5999
- "@config.categories",
7387
+ "@entity.categories",
6000
7388
  "@i"
6001
7389
  ]
6002
7390
  ],
@@ -6189,7 +7577,7 @@
6189
7577
  "object/get",
6190
7578
  [
6191
7579
  "array/nth",
6192
- "@config.items",
7580
+ "@entity.items",
6193
7581
  "@entity.itemIndex"
6194
7582
  ],
6195
7583
  "options",
@@ -6250,7 +7638,7 @@
6250
7638
  "array/map",
6251
7639
  [
6252
7640
  "array/reverse",
6253
- "@config.categories"
7641
+ "@entity.categories"
6254
7642
  ],
6255
7643
  [
6256
7644
  "fn",