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