@almadar/std 16.187.0 → 16.189.0

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 (102) hide show
  1. package/behaviors/lolo/ui/core/.hand-authored.json +4 -4
  2. package/behaviors/lolo/ui/core/atoms/std-board.lolo +138 -4
  3. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +148 -8
  4. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +161 -11
  5. package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +255 -2
  6. package/behaviors/lolo/ui/core/atoms/std-gallery.lolo +148 -1
  7. package/behaviors/lolo/ui/core/atoms/std-list.lolo +193 -1
  8. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +731 -0
  9. package/behaviors/lolo/ui/core/atoms/std-related.lolo +5 -1
  10. package/behaviors/lolo/ui/core/atoms/std-selection.lolo +182 -1
  11. package/behaviors/lolo/ui/core/atoms/std-tree.lolo +113 -3
  12. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +1 -1
  13. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +80 -0
  14. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +213 -0
  15. package/behaviors/lolo/ui/core/molecules/{ui-rich-block-editor.lolo → ui-rich-text-editor.lolo} +25 -25
  16. package/behaviors/lolo/ui/game/atoms/std-area-fill.lolo +93 -0
  17. package/behaviors/lolo/ui/game/atoms/std-choice-gate.lolo +100 -0
  18. package/behaviors/lolo/ui/game/atoms/std-coef-pad.lolo +114 -0
  19. package/behaviors/lolo/ui/game/atoms/std-curve-fog.lolo +50 -0
  20. package/behaviors/lolo/ui/game/atoms/std-loop-lock.lolo +79 -0
  21. package/behaviors/lolo/ui/game/atoms/std-pad-lock.lolo +97 -0
  22. package/behaviors/lolo/ui/game/atoms/std-patrol-hazard.lolo +14 -7
  23. package/behaviors/lolo/ui/game/atoms/std-platformer-body.lolo +48 -5
  24. package/behaviors/lolo/ui/game/atoms/std-velocity-gate.lolo +101 -0
  25. package/behaviors/lolo/ui/game/atoms/std-zone-card.lolo +95 -0
  26. package/behaviors/lolo/ui/game/organisms/std-platformer-board-2d.lolo +9 -0
  27. package/behaviors/registry/infra/atoms/std-approval-gate.orb +16 -8
  28. package/behaviors/registry/infra/atoms/std-cache-aside.orb +62 -31
  29. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +32 -16
  30. package/behaviors/registry/infra/atoms/std-data-erasure.orb +16 -8
  31. package/behaviors/registry/infra/atoms/std-mod-queue.orb +16 -8
  32. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +28 -14
  33. package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +2 -1
  34. package/behaviors/registry/ml/organisms/std-escalating-decision.orb +10 -5
  35. package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +4 -2
  36. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +2 -1
  37. package/behaviors/registry/ui/core/atoms/std-board.orb +355 -2
  38. package/behaviors/registry/ui/core/atoms/std-browse.orb +304 -31
  39. package/behaviors/registry/ui/core/atoms/std-calendar.orb +393 -25
  40. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +2 -1
  41. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +4 -2
  42. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +6 -3
  43. package/behaviors/registry/ui/core/atoms/std-event-log.orb +773 -0
  44. package/behaviors/registry/ui/core/atoms/std-export.orb +4 -2
  45. package/behaviors/registry/ui/core/atoms/std-gallery.orb +390 -0
  46. package/behaviors/registry/ui/core/atoms/std-import.orb +4 -2
  47. package/behaviors/registry/ui/core/atoms/std-list.orb +451 -0
  48. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +3360 -0
  49. package/behaviors/registry/ui/core/atoms/std-related.orb +23 -1
  50. package/behaviors/registry/ui/core/atoms/std-selection.orb +436 -0
  51. package/behaviors/registry/ui/core/atoms/std-tree.orb +292 -1
  52. package/behaviors/registry/ui/core/atoms/std-version-history.orb +1 -1
  53. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +342 -0
  54. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +655 -0
  55. package/behaviors/registry/ui/core/molecules/{ui-rich-block-editor.orb → ui-rich-text-editor.orb} +84 -97
  56. package/behaviors/registry/ui/game/atoms/std-area-fill.orb +955 -0
  57. package/behaviors/registry/ui/game/atoms/std-choice-gate.orb +855 -0
  58. package/behaviors/registry/ui/game/atoms/std-coef-pad.orb +928 -0
  59. package/behaviors/registry/ui/game/atoms/std-curve-fog.orb +337 -0
  60. package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +1 -1
  61. package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +1 -1
  62. package/behaviors/registry/ui/game/atoms/std-lives.orb +1 -1
  63. package/behaviors/registry/ui/game/atoms/std-loop-lock.orb +785 -0
  64. package/behaviors/registry/ui/game/atoms/std-pad-lock.orb +933 -0
  65. package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +190 -44
  66. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +1330 -653
  67. package/behaviors/registry/ui/game/atoms/std-velocity-gate.orb +1040 -0
  68. package/behaviors/registry/ui/game/atoms/std-zone-card.orb +642 -0
  69. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +8 -4
  70. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +6 -3
  71. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +10 -5
  72. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +8 -4
  73. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +8 -4
  74. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +36 -1
  75. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +8 -4
  76. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +12 -6
  77. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +8 -4
  78. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +6 -3
  79. package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +1 -1
  80. package/behaviors/registry/ui/marketing/atoms/std-marketing-article.orb +2 -1
  81. package/behaviors/registry/ui/marketing/atoms/std-marketing-footer.orb +2 -1
  82. package/behaviors/registry/ui/marketing/atoms/std-marketing-split.orb +2 -1
  83. package/behaviors/registry/ui/marketing/atoms/std-marketing-stats.orb +2 -1
  84. package/behaviors/registry/ui/marketing/atoms/std-marketing-steps.orb +2 -1
  85. package/behaviors/registry/ui/marketing/atoms/std-marketing-team.orb +2 -1
  86. package/dist/behaviors/exports-reader.js +10971 -6255
  87. package/dist/behaviors/functions/index.d.ts +1205 -256
  88. package/dist/behaviors/functions/index.js +10932 -6245
  89. package/dist/behaviors/index.d.ts +1 -1
  90. package/dist/behaviors/index.js +10972 -6256
  91. package/dist/behaviors/query.js +10971 -6255
  92. package/dist/behaviors-embeddings.hash.json +3 -3
  93. package/dist/behaviors-embeddings.json +485 -469
  94. package/dist/behaviors-registry.json +6125 -2940
  95. package/dist/index.d.ts +1 -1
  96. package/dist/index.js +10972 -6256
  97. package/dist/knob-embeddings.hash.json +3 -3
  98. package/dist/knob-embeddings.json +1 -1
  99. package/dist/registry/factory-signatures.json +1 -1
  100. package/package.json +4 -4
  101. package/behaviors/lolo/ui/core/atoms/std-rich-editor.lolo +0 -790
  102. package/behaviors/registry/ui/core/atoms/std-rich-editor.orb +0 -2225
@@ -0,0 +1,933 @@
1
+ {
2
+ "description": "Headless pad-lock mechanic: floor pads that light when the player steps on them, completing a set when every pad is lit. Listens BODY_MOVED and lights any unlit live pad the player's rect touches (|dx| <= reachX, |dy| <= reachY of the pad center); a lit pad stays lit. Pads may carry a group number (grp 0 = ungrouped, always live): when groups are used, only pads of the lowest uncompleted group are live — pads of later groups refuse to light until the current group finishes, so one sum must be finished before the next. When a group completes the trait emits PAD_GROUP_COMPLETED once for it (first newly completed group reports; the shared entity carries the rest); when every pad in the set is lit it stamps completed and emits PAD_SET_COMPLETED once. The lowest uncompleted group is stamped on the shared entity as currentGrp so boards can pulse exactly the live pads (0 = no group open / ungrouped pads). RESTART unlights every pad and resets the set. Renders nothing; boards draw the pads and read lit from the shared entity (the render authority).",
3
+ "ledger": {
4
+ "entries": {
5
+ "ent_01M11SKWZK3WVGRB0CXK5XDRD1": {
6
+ "bakedName": "PadLockData",
7
+ "curName": "PadLockData",
8
+ "id": "ent_01M11SKWZK3WVGRB0CXK5XDRD1",
9
+ "kind": "entity",
10
+ "owner": "workspace",
11
+ "renames": []
12
+ },
13
+ "evt_01M11SKWZK2EGTZKGC033DY32H": {
14
+ "bakedName": "PAD_SET_COMPLETED",
15
+ "curName": "PAD_SET_COMPLETED",
16
+ "id": "evt_01M11SKWZK2EGTZKGC033DY32H",
17
+ "kind": "event",
18
+ "owner": "workspace",
19
+ "parent": "trt_01M11SKWZKJJ1FFWQH24V3MCSS",
20
+ "renames": []
21
+ },
22
+ "evt_01M11SKWZKBD4V7V42BQRRY2WB": {
23
+ "bakedName": "RESTART",
24
+ "curName": "RESTART",
25
+ "id": "evt_01M11SKWZKBD4V7V42BQRRY2WB",
26
+ "kind": "event",
27
+ "owner": "workspace",
28
+ "parent": "trt_01M11SKWZKJJ1FFWQH24V3MCSS",
29
+ "renames": []
30
+ },
31
+ "evt_01M11SKWZKCMJ1J6T6CR4GEZF0": {
32
+ "bakedName": "BODY_MOVED",
33
+ "curName": "BODY_MOVED",
34
+ "id": "evt_01M11SKWZKCMJ1J6T6CR4GEZF0",
35
+ "kind": "event",
36
+ "owner": "workspace",
37
+ "parent": "trt_01M11SKWZKJJ1FFWQH24V3MCSS",
38
+ "renames": []
39
+ },
40
+ "evt_01M11SKWZKNWN3E08BW67F3PMH": {
41
+ "bakedName": "PAD_GROUP_COMPLETED",
42
+ "curName": "PAD_GROUP_COMPLETED",
43
+ "id": "evt_01M11SKWZKNWN3E08BW67F3PMH",
44
+ "kind": "event",
45
+ "owner": "workspace",
46
+ "parent": "trt_01M11SKWZKJJ1FFWQH24V3MCSS",
47
+ "renames": []
48
+ },
49
+ "evt_01M11SKWZKSASBJ3WM89XAY30M": {
50
+ "bakedName": "INIT",
51
+ "curName": "INIT",
52
+ "id": "evt_01M11SKWZKSASBJ3WM89XAY30M",
53
+ "kind": "event",
54
+ "owner": "workspace",
55
+ "parent": "trt_01M11SKWZKJJ1FFWQH24V3MCSS",
56
+ "renames": []
57
+ },
58
+ "orb_01M11SKWZK63ZAE06JJQD7ASGA": {
59
+ "bakedName": "PadLockOrbital",
60
+ "curName": "PadLockOrbital",
61
+ "id": "orb_01M11SKWZK63ZAE06JJQD7ASGA",
62
+ "kind": "orbital",
63
+ "owner": "workspace",
64
+ "renames": []
65
+ },
66
+ "pag_01M11SKWZK1VQ92QZDBMDZQZMQ": {
67
+ "bakedName": "PadLockPage",
68
+ "curName": "PadLockPage",
69
+ "id": "pag_01M11SKWZK1VQ92QZDBMDZQZMQ",
70
+ "kind": "page",
71
+ "owner": "workspace",
72
+ "renames": []
73
+ },
74
+ "trt_01M11SKWZKJJ1FFWQH24V3MCSS": {
75
+ "bakedName": "PadLock",
76
+ "curName": "PadLock",
77
+ "id": "trt_01M11SKWZKJJ1FFWQH24V3MCSS",
78
+ "kind": "trait",
79
+ "owner": "workspace",
80
+ "renames": []
81
+ }
82
+ },
83
+ "schemaVersion": 1
84
+ },
85
+ "name": "std-pad-lock",
86
+ "orbitals": [
87
+ {
88
+ "entity": {
89
+ "fields": [
90
+ {
91
+ "name": "id",
92
+ "required": true,
93
+ "type": "string"
94
+ },
95
+ {
96
+ "default": [],
97
+ "items": {
98
+ "properties": {
99
+ "grp": {
100
+ "name": "grp",
101
+ "required": true,
102
+ "type": "number"
103
+ },
104
+ "id": {
105
+ "name": "id",
106
+ "required": true,
107
+ "type": "string"
108
+ },
109
+ "lit": {
110
+ "name": "lit",
111
+ "required": false,
112
+ "type": "boolean"
113
+ },
114
+ "x": {
115
+ "name": "x",
116
+ "required": true,
117
+ "type": "number"
118
+ },
119
+ "y": {
120
+ "name": "y",
121
+ "required": true,
122
+ "type": "number"
123
+ }
124
+ },
125
+ "type": "object"
126
+ },
127
+ "name": "pads",
128
+ "type": "array"
129
+ },
130
+ {
131
+ "default": [],
132
+ "items": {
133
+ "type": "number"
134
+ },
135
+ "name": "groupsDone",
136
+ "type": "array"
137
+ },
138
+ {
139
+ "default": 0.0,
140
+ "name": "currentGrp",
141
+ "type": "number"
142
+ },
143
+ {
144
+ "default": false,
145
+ "name": "completed",
146
+ "type": "boolean"
147
+ }
148
+ ],
149
+ "id": "ent_01M11SKWZK3WVGRB0CXK5XDRD1",
150
+ "name": "PadLockData",
151
+ "persistence": "runtime",
152
+ "shared": true
153
+ },
154
+ "id": "orb_01M11SKWZK63ZAE06JJQD7ASGA",
155
+ "name": "PadLockOrbital",
156
+ "pages": [
157
+ {
158
+ "id": "pag_01M11SKWZK1VQ92QZDBMDZQZMQ",
159
+ "name": "PadLockPage",
160
+ "path": "/pad-lock",
161
+ "traits": [
162
+ {
163
+ "ref": "PadLock",
164
+ "refId": "trt_01M11SKWZKJJ1FFWQH24V3MCSS"
165
+ }
166
+ ]
167
+ }
168
+ ],
169
+ "traits": [
170
+ {
171
+ "category": "lifecycle",
172
+ "config": {
173
+ "pads": {
174
+ "default": [],
175
+ "description": "One row per floor pad: id, center (x, y in world units), and grp (0 = ungrouped, always live; N = live only while it is the lowest uncompleted group). lit is stamped at runtime.",
176
+ "items": {
177
+ "properties": {
178
+ "grp": {
179
+ "name": "grp",
180
+ "required": true,
181
+ "type": "number"
182
+ },
183
+ "id": {
184
+ "name": "id",
185
+ "required": true,
186
+ "type": "string"
187
+ },
188
+ "lit": {
189
+ "name": "lit",
190
+ "required": false,
191
+ "type": "boolean"
192
+ },
193
+ "x": {
194
+ "name": "x",
195
+ "required": true,
196
+ "type": "number"
197
+ },
198
+ "y": {
199
+ "name": "y",
200
+ "required": true,
201
+ "type": "number"
202
+ }
203
+ },
204
+ "type": "object"
205
+ },
206
+ "label": "Pads",
207
+ "tier": "domain",
208
+ "type": "[PadLock]"
209
+ },
210
+ "reachX": {
211
+ "default": 0.7,
212
+ "description": "Horizontal tolerance (world units) around a pad's center when testing player contact (approximates the body's half-width plus a step).",
213
+ "label": "Reach X",
214
+ "tier": "domain",
215
+ "type": "number"
216
+ },
217
+ "reachY": {
218
+ "default": 1.2,
219
+ "description": "Vertical tolerance (world units) around a pad's center when testing player contact (covers skating over the surface the pad sits on).",
220
+ "label": "Reach Y",
221
+ "tier": "domain",
222
+ "type": "number"
223
+ },
224
+ "running": {
225
+ "default": true,
226
+ "description": "When true, BODY_MOVED lights touched live pads and reports group/set completion; toggle to freeze every pad as-is.",
227
+ "label": "Running",
228
+ "tier": "domain",
229
+ "type": "boolean"
230
+ }
231
+ },
232
+ "emits": [
233
+ {
234
+ "description": "Every pad of one group is lit; fires once per group, in group order — later groups stay dead until the lowest uncompleted group finishes. Boards layer a small fx and unlock the next group's pads.",
235
+ "event": "PAD_GROUP_COMPLETED",
236
+ "eventId": "evt_01M11SKWZKNWN3E08BW67F3PMH",
237
+ "payloadSchema": [
238
+ {
239
+ "name": "grp",
240
+ "required": true,
241
+ "type": "number"
242
+ }
243
+ ],
244
+ "scope": "external",
245
+ "tier": "domain"
246
+ },
247
+ {
248
+ "description": "Every pad in the set is lit; fires once per run. Boards layer the treasure fx and spill the bonus reward.",
249
+ "event": "PAD_SET_COMPLETED",
250
+ "eventId": "evt_01M11SKWZK2EGTZKGC033DY32H",
251
+ "scope": "external",
252
+ "tier": "domain"
253
+ }
254
+ ],
255
+ "entityContract": {
256
+ "provides": [
257
+ "completed",
258
+ "currentGrp",
259
+ "groupsDone",
260
+ "pads"
261
+ ],
262
+ "requires": []
263
+ },
264
+ "entityRebindable": true,
265
+ "entityRefIds": {
266
+ "PadLockData": "ent_01M11SKWZK3WVGRB0CXK5XDRD1"
267
+ },
268
+ "id": "trt_01M11SKWZKJJ1FFWQH24V3MCSS",
269
+ "linkedEntity": "PadLockData",
270
+ "linkedEntityId": "ent_01M11SKWZK3WVGRB0CXK5XDRD1",
271
+ "name": "PadLock",
272
+ "scope": "instance",
273
+ "stateMachine": {
274
+ "events": [
275
+ {
276
+ "id": "evt_01M11SKWZKSASBJ3WM89XAY30M",
277
+ "key": "INIT",
278
+ "name": "Initialize"
279
+ },
280
+ {
281
+ "id": "evt_01M11SKWZKCMJ1J6T6CR4GEZF0",
282
+ "key": "BODY_MOVED",
283
+ "name": "Body Moved",
284
+ "payloadSchema": [
285
+ {
286
+ "name": "x",
287
+ "required": true,
288
+ "type": "number"
289
+ },
290
+ {
291
+ "name": "y",
292
+ "required": true,
293
+ "type": "number"
294
+ },
295
+ {
296
+ "name": "vx",
297
+ "required": true,
298
+ "type": "number"
299
+ },
300
+ {
301
+ "name": "vy",
302
+ "required": true,
303
+ "type": "number"
304
+ },
305
+ {
306
+ "name": "grounded",
307
+ "required": true,
308
+ "type": "boolean"
309
+ },
310
+ {
311
+ "name": "skating",
312
+ "required": true,
313
+ "type": "boolean"
314
+ },
315
+ {
316
+ "name": "speed",
317
+ "required": true,
318
+ "type": "number"
319
+ }
320
+ ]
321
+ },
322
+ {
323
+ "id": "evt_01M11SKWZKBD4V7V42BQRRY2WB",
324
+ "key": "RESTART",
325
+ "name": "Restart",
326
+ "payloadSchema": [
327
+ {
328
+ "name": "id",
329
+ "type": "string"
330
+ }
331
+ ]
332
+ },
333
+ {
334
+ "description": "Every pad of one group is lit; fires once per group, in group order — later groups stay dead until the lowest uncompleted group finishes. Boards layer a small fx and unlock the next group's pads.",
335
+ "id": "evt_01M11SKWZKNWN3E08BW67F3PMH",
336
+ "key": "PAD_GROUP_COMPLETED",
337
+ "name": "Pad Group Completed",
338
+ "payloadSchema": [
339
+ {
340
+ "name": "grp",
341
+ "required": true,
342
+ "type": "number"
343
+ }
344
+ ],
345
+ "tier": "domain"
346
+ },
347
+ {
348
+ "description": "Every pad in the set is lit; fires once per run. Boards layer the treasure fx and spill the bonus reward.",
349
+ "id": "evt_01M11SKWZK2EGTZKGC033DY32H",
350
+ "key": "PAD_SET_COMPLETED",
351
+ "name": "Pad Set Completed",
352
+ "tier": "domain"
353
+ }
354
+ ],
355
+ "states": [
356
+ {
357
+ "isInitial": true,
358
+ "name": "active"
359
+ }
360
+ ],
361
+ "transitions": [
362
+ {
363
+ "effects": [
364
+ [
365
+ "set",
366
+ "@entity.pads",
367
+ [
368
+ "array/map",
369
+ "@config.pads",
370
+ [
371
+ "fn",
372
+ "p",
373
+ [
374
+ "object/merge",
375
+ "@p",
376
+ {
377
+ "lit": false
378
+ }
379
+ ]
380
+ ]
381
+ ]
382
+ ],
383
+ [
384
+ "set",
385
+ "@entity.groupsDone",
386
+ []
387
+ ],
388
+ [
389
+ "set",
390
+ "@entity.currentGrp",
391
+ 0.0
392
+ ],
393
+ [
394
+ "set",
395
+ "@entity.completed",
396
+ false
397
+ ]
398
+ ],
399
+ "event": "INIT",
400
+ "eventId": "evt_01M11SKWZKSASBJ3WM89XAY30M",
401
+ "from": "active",
402
+ "to": "active"
403
+ },
404
+ {
405
+ "effects": [
406
+ [
407
+ "let",
408
+ [
409
+ [
410
+ "grpIds",
411
+ [
412
+ "array/reduce",
413
+ [
414
+ "array/map",
415
+ [
416
+ "array/filter",
417
+ "@entity.pads",
418
+ [
419
+ "fn",
420
+ "p",
421
+ [
422
+ ">",
423
+ [
424
+ "object/get",
425
+ "@p",
426
+ "grp"
427
+ ],
428
+ 0.0
429
+ ]
430
+ ]
431
+ ],
432
+ [
433
+ "fn",
434
+ "p",
435
+ [
436
+ "object/get",
437
+ "@p",
438
+ "grp"
439
+ ]
440
+ ]
441
+ ],
442
+ [],
443
+ [
444
+ "fn",
445
+ [
446
+ "acc",
447
+ "g"
448
+ ],
449
+ [
450
+ "if",
451
+ [
452
+ ">",
453
+ [
454
+ "array/len",
455
+ [
456
+ "array/filter",
457
+ "@acc",
458
+ [
459
+ "fn",
460
+ "x",
461
+ [
462
+ "==",
463
+ "@x",
464
+ "@g"
465
+ ]
466
+ ]
467
+ ]
468
+ ],
469
+ 0.0
470
+ ],
471
+ "@acc",
472
+ [
473
+ "array/append",
474
+ "@acc",
475
+ "@g"
476
+ ]
477
+ ]
478
+ ]
479
+ ]
480
+ ]
481
+ ],
482
+ [
483
+ "let",
484
+ [
485
+ [
486
+ "openGrps",
487
+ [
488
+ "array/filter",
489
+ "@grpIds",
490
+ [
491
+ "fn",
492
+ "g",
493
+ [
494
+ "<",
495
+ [
496
+ "array/len",
497
+ [
498
+ "array/filter",
499
+ "@entity.pads",
500
+ [
501
+ "fn",
502
+ "p",
503
+ [
504
+ "and",
505
+ [
506
+ "==",
507
+ [
508
+ "object/get",
509
+ "@p",
510
+ "grp"
511
+ ],
512
+ "@g"
513
+ ],
514
+ [
515
+ "==",
516
+ [
517
+ "object/get",
518
+ "@p",
519
+ "lit"
520
+ ],
521
+ true
522
+ ]
523
+ ]
524
+ ]
525
+ ]
526
+ ],
527
+ [
528
+ "array/len",
529
+ [
530
+ "array/filter",
531
+ "@entity.pads",
532
+ [
533
+ "fn",
534
+ "p",
535
+ [
536
+ "==",
537
+ [
538
+ "object/get",
539
+ "@p",
540
+ "grp"
541
+ ],
542
+ "@g"
543
+ ]
544
+ ]
545
+ ]
546
+ ]
547
+ ]
548
+ ]
549
+ ]
550
+ ]
551
+ ],
552
+ [
553
+ "let",
554
+ [
555
+ [
556
+ "currentGrp",
557
+ [
558
+ "array/reduce",
559
+ "@openGrps",
560
+ 9999.0,
561
+ [
562
+ "fn",
563
+ [
564
+ "acc",
565
+ "g"
566
+ ],
567
+ [
568
+ "math/min",
569
+ "@acc",
570
+ "@g"
571
+ ]
572
+ ]
573
+ ]
574
+ ]
575
+ ],
576
+ [
577
+ "let",
578
+ [
579
+ [
580
+ "newPads",
581
+ [
582
+ "array/map",
583
+ "@entity.pads",
584
+ [
585
+ "fn",
586
+ "p",
587
+ [
588
+ "object/merge",
589
+ "@p",
590
+ {
591
+ "lit": [
592
+ "or",
593
+ [
594
+ "object/get",
595
+ "@p",
596
+ "lit"
597
+ ],
598
+ [
599
+ "and",
600
+ [
601
+ "or",
602
+ [
603
+ "==",
604
+ [
605
+ "object/get",
606
+ "@p",
607
+ "grp"
608
+ ],
609
+ 0.0
610
+ ],
611
+ [
612
+ "==",
613
+ [
614
+ "object/get",
615
+ "@p",
616
+ "grp"
617
+ ],
618
+ "@currentGrp"
619
+ ]
620
+ ],
621
+ [
622
+ "and",
623
+ [
624
+ "<=",
625
+ [
626
+ "math/abs",
627
+ [
628
+ "-",
629
+ "@payload.x",
630
+ [
631
+ "object/get",
632
+ "@p",
633
+ "x"
634
+ ]
635
+ ]
636
+ ],
637
+ "@config.reachX"
638
+ ],
639
+ [
640
+ "<=",
641
+ [
642
+ "math/abs",
643
+ [
644
+ "-",
645
+ "@payload.y",
646
+ [
647
+ "object/get",
648
+ "@p",
649
+ "y"
650
+ ]
651
+ ]
652
+ ],
653
+ "@config.reachY"
654
+ ]
655
+ ]
656
+ ]
657
+ ]
658
+ }
659
+ ]
660
+ ]
661
+ ]
662
+ ]
663
+ ],
664
+ [
665
+ "let",
666
+ [
667
+ [
668
+ "doneNow",
669
+ [
670
+ "array/filter",
671
+ "@grpIds",
672
+ [
673
+ "fn",
674
+ "g",
675
+ [
676
+ "==",
677
+ [
678
+ "array/len",
679
+ [
680
+ "array/filter",
681
+ "@newPads",
682
+ [
683
+ "fn",
684
+ "p",
685
+ [
686
+ "and",
687
+ [
688
+ "==",
689
+ [
690
+ "object/get",
691
+ "@p",
692
+ "grp"
693
+ ],
694
+ "@g"
695
+ ],
696
+ [
697
+ "==",
698
+ [
699
+ "object/get",
700
+ "@p",
701
+ "lit"
702
+ ],
703
+ true
704
+ ]
705
+ ]
706
+ ]
707
+ ]
708
+ ],
709
+ [
710
+ "array/len",
711
+ [
712
+ "array/filter",
713
+ "@newPads",
714
+ [
715
+ "fn",
716
+ "p",
717
+ [
718
+ "==",
719
+ [
720
+ "object/get",
721
+ "@p",
722
+ "grp"
723
+ ],
724
+ "@g"
725
+ ]
726
+ ]
727
+ ]
728
+ ]
729
+ ]
730
+ ]
731
+ ]
732
+ ]
733
+ ],
734
+ [
735
+ "let",
736
+ [
737
+ [
738
+ "newlyGrp",
739
+ [
740
+ "array/filter",
741
+ "@doneNow",
742
+ [
743
+ "fn",
744
+ "g",
745
+ [
746
+ "==",
747
+ [
748
+ "array/len",
749
+ [
750
+ "array/filter",
751
+ "@entity.groupsDone",
752
+ [
753
+ "fn",
754
+ "d",
755
+ [
756
+ "==",
757
+ "@d",
758
+ "@g"
759
+ ]
760
+ ]
761
+ ]
762
+ ],
763
+ 0.0
764
+ ]
765
+ ]
766
+ ]
767
+ ]
768
+ ],
769
+ [
770
+ "do",
771
+ [
772
+ "set",
773
+ "@entity.pads",
774
+ "@newPads"
775
+ ],
776
+ [
777
+ "set",
778
+ "@entity.currentGrp",
779
+ [
780
+ "if",
781
+ [
782
+ "==",
783
+ "@currentGrp",
784
+ 9999.0
785
+ ],
786
+ 0.0,
787
+ "@currentGrp"
788
+ ]
789
+ ],
790
+ [
791
+ "if",
792
+ [
793
+ ">",
794
+ [
795
+ "array/len",
796
+ "@newlyGrp"
797
+ ],
798
+ 0.0
799
+ ],
800
+ [
801
+ "do",
802
+ [
803
+ "set",
804
+ "@entity.groupsDone",
805
+ "@doneNow"
806
+ ],
807
+ [
808
+ "emit",
809
+ "PAD_GROUP_COMPLETED",
810
+ {
811
+ "grp": [
812
+ "array/first",
813
+ "@newlyGrp"
814
+ ]
815
+ }
816
+ ]
817
+ ],
818
+ null
819
+ ],
820
+ [
821
+ "if",
822
+ [
823
+ "and",
824
+ [
825
+ "==",
826
+ "@entity.completed",
827
+ false
828
+ ],
829
+ [
830
+ "==",
831
+ [
832
+ "array/len",
833
+ [
834
+ "array/filter",
835
+ "@newPads",
836
+ [
837
+ "fn",
838
+ "p",
839
+ [
840
+ "==",
841
+ [
842
+ "object/get",
843
+ "@p",
844
+ "lit"
845
+ ],
846
+ false
847
+ ]
848
+ ]
849
+ ]
850
+ ],
851
+ 0.0
852
+ ]
853
+ ],
854
+ [
855
+ "do",
856
+ [
857
+ "set",
858
+ "@entity.completed",
859
+ true
860
+ ],
861
+ [
862
+ "emit",
863
+ "PAD_SET_COMPLETED",
864
+ {}
865
+ ]
866
+ ],
867
+ null
868
+ ]
869
+ ]
870
+ ]
871
+ ]
872
+ ]
873
+ ]
874
+ ]
875
+ ]
876
+ ],
877
+ "event": "BODY_MOVED",
878
+ "eventId": "evt_01M11SKWZKCMJ1J6T6CR4GEZF0",
879
+ "from": "active",
880
+ "guard": "@config.running",
881
+ "to": "active"
882
+ },
883
+ {
884
+ "effects": [
885
+ [
886
+ "set",
887
+ "@entity.pads",
888
+ [
889
+ "array/map",
890
+ "@config.pads",
891
+ [
892
+ "fn",
893
+ "p",
894
+ [
895
+ "object/merge",
896
+ "@p",
897
+ {
898
+ "lit": false
899
+ }
900
+ ]
901
+ ]
902
+ ]
903
+ ],
904
+ [
905
+ "set",
906
+ "@entity.groupsDone",
907
+ []
908
+ ],
909
+ [
910
+ "set",
911
+ "@entity.currentGrp",
912
+ 0.0
913
+ ],
914
+ [
915
+ "set",
916
+ "@entity.completed",
917
+ false
918
+ ]
919
+ ],
920
+ "event": "RESTART",
921
+ "eventId": "evt_01M11SKWZKBD4V7V42BQRRY2WB",
922
+ "from": "active",
923
+ "to": "active"
924
+ }
925
+ ]
926
+ }
927
+ }
928
+ ]
929
+ }
930
+ ],
931
+ "schemaVersion": 1,
932
+ "version": "1.0.0"
933
+ }