@almadar/std 16.181.0 → 16.183.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 (90) hide show
  1. package/behaviors/lolo/infra/atoms/std-calendar-sync.lolo +290 -0
  2. package/behaviors/lolo/infra/atoms/std-migration-job.lolo +2 -2
  3. package/behaviors/lolo/infra/atoms/std-notification-center.lolo +290 -0
  4. package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +238 -40
  5. package/behaviors/lolo/ui/core/atoms/std-esign-flow.lolo +180 -3
  6. package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +6 -0
  7. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +4 -4
  8. package/behaviors/lolo/ui/game/.hand-authored.json +1 -1
  9. package/behaviors/lolo/ui/game/atoms/std-fx-trail.lolo +63 -0
  10. package/behaviors/lolo/ui/game/atoms/std-gate-lock.lolo +96 -0
  11. package/behaviors/lolo/ui/game/atoms/std-lives.lolo +121 -0
  12. package/behaviors/lolo/ui/game/atoms/std-patrol-hazard.lolo +96 -0
  13. package/behaviors/lolo/ui/game/atoms/std-tutorial-overlay.lolo +164 -0
  14. package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +5 -0
  15. package/behaviors/lolo/ui/game/atoms/ui-game-hud.lolo +5 -0
  16. package/behaviors/lolo/ui/game/templates/ui-game-shell.lolo +5 -5
  17. package/behaviors/lolo/ui/learning/atoms/std-learn-slope-probe.lolo +117 -0
  18. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +18 -0
  19. package/behaviors/registry/infra/atoms/std-calendar-sync.orb +1643 -0
  20. package/behaviors/registry/infra/atoms/std-migration-job.orb +2 -2
  21. package/behaviors/registry/infra/atoms/std-notification-center.orb +1621 -0
  22. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +1734 -169
  23. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +846 -2
  24. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +9 -0
  25. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +4 -2
  26. package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +376 -0
  27. package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +852 -0
  28. package/behaviors/registry/ui/game/atoms/std-lives.orb +739 -0
  29. package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +768 -0
  30. package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +1060 -0
  31. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +13 -1
  32. package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +13 -1
  33. package/behaviors/registry/ui/game/templates/ui-game-shell.orb +5 -5
  34. package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +908 -0
  35. package/canonical-operators.json +21 -1
  36. package/dist/behaviors/exports-reader.js +9021 -3497
  37. package/dist/behaviors/functions/index.d.ts +1001 -10
  38. package/dist/behaviors/functions/index.js +18568 -13079
  39. package/dist/behaviors/index.d.ts +1 -1
  40. package/dist/behaviors/index.js +9022 -3498
  41. package/dist/behaviors/query.js +9021 -3497
  42. package/dist/behaviors-embeddings.hash.json +3 -3
  43. package/dist/behaviors-embeddings.json +347 -315
  44. package/dist/behaviors-registry.json +2694 -56
  45. package/dist/index.d.ts +3 -3
  46. package/dist/index.js +8502 -2941
  47. package/dist/knob-embeddings.hash.json +3 -3
  48. package/dist/knob-embeddings.json +1 -1
  49. package/dist/modules/anim.d.ts +1 -1
  50. package/dist/modules/array.d.ts +1 -1
  51. package/dist/modules/async.d.ts +1 -1
  52. package/dist/modules/behavior.d.ts +1 -1
  53. package/dist/modules/browser.d.ts +1 -1
  54. package/dist/modules/browser.js +21 -0
  55. package/dist/modules/composition.d.ts +1 -1
  56. package/dist/modules/contract.d.ts +1 -1
  57. package/dist/modules/core.d.ts +1 -1
  58. package/dist/modules/core.js +18 -2
  59. package/dist/modules/data.d.ts +1 -1
  60. package/dist/modules/ease.d.ts +1 -1
  61. package/dist/modules/format.d.ts +1 -1
  62. package/dist/modules/geo.d.ts +1 -1
  63. package/dist/modules/graph.d.ts +1 -1
  64. package/dist/modules/grid.d.ts +1 -1
  65. package/dist/modules/index.d.ts +1 -1
  66. package/dist/modules/index.js +39 -2
  67. package/dist/modules/integration.d.ts +1 -1
  68. package/dist/modules/llm.d.ts +1 -1
  69. package/dist/modules/math.d.ts +1 -1
  70. package/dist/modules/memory.d.ts +1 -1
  71. package/dist/modules/nn.d.ts +1 -1
  72. package/dist/modules/noise.d.ts +1 -1
  73. package/dist/modules/object.d.ts +1 -1
  74. package/dist/modules/os.d.ts +1 -1
  75. package/dist/modules/path.d.ts +1 -1
  76. package/dist/modules/prob.d.ts +1 -1
  77. package/dist/modules/session.d.ts +1 -1
  78. package/dist/modules/str.d.ts +1 -1
  79. package/dist/modules/tensor.d.ts +1 -1
  80. package/dist/modules/time.d.ts +1 -1
  81. package/dist/modules/trace.d.ts +1 -1
  82. package/dist/modules/train.d.ts +1 -1
  83. package/dist/modules/validate.d.ts +1 -1
  84. package/dist/modules/vector.d.ts +1 -1
  85. package/dist/modules/workspace.d.ts +1 -1
  86. package/dist/registry/factory-signatures.json +1 -1
  87. package/dist/registry.d.ts +1 -1
  88. package/dist/registry.js +39 -2
  89. package/dist/{types-DGJ6Y6nW.d.ts → types-BXWzEjFm.d.ts} +1 -1
  90. package/package.json +3 -3
@@ -0,0 +1,852 @@
1
+ {
2
+ "description": "Headless collectible-gate mechanic: doors that stay shut until the player's collected total reaches their cost. Listens COLLECT (the board's running total — stars, coins, keys) and flips every door whose cost is met, stamping open on the shared door rows and emitting GATE_OPENED for the first newly opened door (the shared entity is the render authority for the rest). While a closed door's rect contains the player it emits GATE_BLOCKED once per approach — re-arming only after the player steps out — so the board can answer with a PLACE back and a locked fx. RESTART re-locks every door and zeroes the total. Renders nothing; boards draw closed doors as bars/walls and open ones as gaps.",
3
+ "ledger": {
4
+ "entries": {
5
+ "ent_01M0PCAKPNCX4VB9ENH9KE7A6K": {
6
+ "bakedName": "GateLockData",
7
+ "curName": "GateLockData",
8
+ "id": "ent_01M0PCAKPNCX4VB9ENH9KE7A6K",
9
+ "kind": "entity",
10
+ "owner": "workspace",
11
+ "renames": []
12
+ },
13
+ "evt_01M0PCAKPP16E2RHR0S9VEFV68": {
14
+ "bakedName": "RESTART",
15
+ "curName": "RESTART",
16
+ "id": "evt_01M0PCAKPP16E2RHR0S9VEFV68",
17
+ "kind": "event",
18
+ "owner": "workspace",
19
+ "parent": "trt_01M0PCAKPP3AGKNKD907BM5QKD",
20
+ "renames": []
21
+ },
22
+ "evt_01M0PCAKPP7JVBGEQSC7EM17EB": {
23
+ "bakedName": "COLLECT",
24
+ "curName": "COLLECT",
25
+ "id": "evt_01M0PCAKPP7JVBGEQSC7EM17EB",
26
+ "kind": "event",
27
+ "owner": "workspace",
28
+ "parent": "trt_01M0PCAKPP3AGKNKD907BM5QKD",
29
+ "renames": []
30
+ },
31
+ "evt_01M0PCAKPP7PNVBR3Y0FDGC3V1": {
32
+ "bakedName": "BODY_MOVED",
33
+ "curName": "BODY_MOVED",
34
+ "id": "evt_01M0PCAKPP7PNVBR3Y0FDGC3V1",
35
+ "kind": "event",
36
+ "owner": "workspace",
37
+ "parent": "trt_01M0PCAKPP3AGKNKD907BM5QKD",
38
+ "renames": []
39
+ },
40
+ "evt_01M0PCAKPPCJ7VSDH5Y8HJKXT3": {
41
+ "bakedName": "GATE_BLOCKED",
42
+ "curName": "GATE_BLOCKED",
43
+ "id": "evt_01M0PCAKPPCJ7VSDH5Y8HJKXT3",
44
+ "kind": "event",
45
+ "owner": "workspace",
46
+ "parent": "trt_01M0PCAKPP3AGKNKD907BM5QKD",
47
+ "renames": []
48
+ },
49
+ "evt_01M0PCAKPPV7X94GZE9JRTD275": {
50
+ "bakedName": "INIT",
51
+ "curName": "INIT",
52
+ "id": "evt_01M0PCAKPPV7X94GZE9JRTD275",
53
+ "kind": "event",
54
+ "owner": "workspace",
55
+ "parent": "trt_01M0PCAKPP3AGKNKD907BM5QKD",
56
+ "renames": []
57
+ },
58
+ "evt_01M0PCAKPPW543QCFNMEFRA1TT": {
59
+ "bakedName": "GATE_OPENED",
60
+ "curName": "GATE_OPENED",
61
+ "id": "evt_01M0PCAKPPW543QCFNMEFRA1TT",
62
+ "kind": "event",
63
+ "owner": "workspace",
64
+ "parent": "trt_01M0PCAKPP3AGKNKD907BM5QKD",
65
+ "renames": []
66
+ },
67
+ "orb_01M0PCAKPNXVSHP71VCHBA5VXS": {
68
+ "bakedName": "GateLockOrbital",
69
+ "curName": "GateLockOrbital",
70
+ "id": "orb_01M0PCAKPNXVSHP71VCHBA5VXS",
71
+ "kind": "orbital",
72
+ "owner": "workspace",
73
+ "renames": []
74
+ },
75
+ "pag_01M0PCAKPPD2G05Q9R5T1NACNY": {
76
+ "bakedName": "GateLockPage",
77
+ "curName": "GateLockPage",
78
+ "id": "pag_01M0PCAKPPD2G05Q9R5T1NACNY",
79
+ "kind": "page",
80
+ "owner": "workspace",
81
+ "renames": []
82
+ },
83
+ "trt_01M0PCAKPP3AGKNKD907BM5QKD": {
84
+ "bakedName": "GateLock",
85
+ "curName": "GateLock",
86
+ "id": "trt_01M0PCAKPP3AGKNKD907BM5QKD",
87
+ "kind": "trait",
88
+ "owner": "workspace",
89
+ "renames": []
90
+ }
91
+ },
92
+ "schemaVersion": 1
93
+ },
94
+ "name": "std-gate-lock",
95
+ "orbitals": [
96
+ {
97
+ "entity": {
98
+ "fields": [
99
+ {
100
+ "name": "id",
101
+ "required": true,
102
+ "type": "string"
103
+ },
104
+ {
105
+ "default": [],
106
+ "items": {
107
+ "properties": {
108
+ "blocked": {
109
+ "name": "blocked",
110
+ "required": false,
111
+ "type": "boolean"
112
+ },
113
+ "cost": {
114
+ "name": "cost",
115
+ "required": true,
116
+ "type": "number"
117
+ },
118
+ "height": {
119
+ "name": "height",
120
+ "required": true,
121
+ "type": "number"
122
+ },
123
+ "id": {
124
+ "name": "id",
125
+ "required": true,
126
+ "type": "string"
127
+ },
128
+ "open": {
129
+ "name": "open",
130
+ "required": false,
131
+ "type": "boolean"
132
+ },
133
+ "touching": {
134
+ "name": "touching",
135
+ "required": false,
136
+ "type": "boolean"
137
+ },
138
+ "width": {
139
+ "name": "width",
140
+ "required": true,
141
+ "type": "number"
142
+ },
143
+ "x": {
144
+ "name": "x",
145
+ "required": true,
146
+ "type": "number"
147
+ },
148
+ "y": {
149
+ "name": "y",
150
+ "required": true,
151
+ "type": "number"
152
+ }
153
+ },
154
+ "type": "object"
155
+ },
156
+ "name": "doors",
157
+ "type": "array"
158
+ },
159
+ {
160
+ "default": 0.0,
161
+ "name": "total",
162
+ "type": "number"
163
+ }
164
+ ],
165
+ "id": "ent_01M0PCAKPNCX4VB9ENH9KE7A6K",
166
+ "name": "GateLockData",
167
+ "persistence": "runtime",
168
+ "shared": true
169
+ },
170
+ "id": "orb_01M0PCAKPNXVSHP71VCHBA5VXS",
171
+ "name": "GateLockOrbital",
172
+ "pages": [
173
+ {
174
+ "id": "pag_01M0PCAKPPD2G05Q9R5T1NACNY",
175
+ "name": "GateLockPage",
176
+ "path": "/gate-lock",
177
+ "traits": [
178
+ {
179
+ "ref": "GateLock",
180
+ "refId": "trt_01M0PCAKPP3AGKNKD907BM5QKD"
181
+ }
182
+ ]
183
+ }
184
+ ],
185
+ "traits": [
186
+ {
187
+ "category": "lifecycle",
188
+ "config": {
189
+ "doors": {
190
+ "default": [],
191
+ "description": "One row per gate: id, min-corner rect (x, y, width, height in world units) and the collected total that opens it. open/touching are stamped at runtime.",
192
+ "items": {
193
+ "properties": {
194
+ "blocked": {
195
+ "name": "blocked",
196
+ "required": false,
197
+ "type": "boolean"
198
+ },
199
+ "cost": {
200
+ "name": "cost",
201
+ "required": true,
202
+ "type": "number"
203
+ },
204
+ "height": {
205
+ "name": "height",
206
+ "required": true,
207
+ "type": "number"
208
+ },
209
+ "id": {
210
+ "name": "id",
211
+ "required": true,
212
+ "type": "string"
213
+ },
214
+ "open": {
215
+ "name": "open",
216
+ "required": false,
217
+ "type": "boolean"
218
+ },
219
+ "touching": {
220
+ "name": "touching",
221
+ "required": false,
222
+ "type": "boolean"
223
+ },
224
+ "width": {
225
+ "name": "width",
226
+ "required": true,
227
+ "type": "number"
228
+ },
229
+ "x": {
230
+ "name": "x",
231
+ "required": true,
232
+ "type": "number"
233
+ },
234
+ "y": {
235
+ "name": "y",
236
+ "required": true,
237
+ "type": "number"
238
+ }
239
+ },
240
+ "type": "object"
241
+ },
242
+ "label": "Doors",
243
+ "tier": "domain",
244
+ "type": "[Door]"
245
+ },
246
+ "reachMargin": {
247
+ "default": 0.6,
248
+ "description": "Extra world units padded around a closed door's rect when testing player contact (approximates the body's size).",
249
+ "label": "Reach Margin",
250
+ "tier": "domain",
251
+ "type": "number"
252
+ },
253
+ "running": {
254
+ "default": true,
255
+ "description": "When true, COLLECT opens doors and closed doors report contact; toggle to freeze every door as-is.",
256
+ "label": "Running",
257
+ "tier": "domain",
258
+ "type": "boolean"
259
+ }
260
+ },
261
+ "emits": [
262
+ {
263
+ "description": "A door's cost was reached by the collected total and it flipped open; boards layer unlock fx. When several doors open on one total, the first reports and the shared entity carries the rest.",
264
+ "event": "GATE_OPENED",
265
+ "eventId": "evt_01M0PCAKPPW543QCFNMEFRA1TT",
266
+ "payloadSchema": [
267
+ {
268
+ "name": "id",
269
+ "required": true,
270
+ "type": "string"
271
+ },
272
+ {
273
+ "name": "cost",
274
+ "required": true,
275
+ "type": "number"
276
+ }
277
+ ],
278
+ "scope": "external",
279
+ "tier": "domain"
280
+ },
281
+ {
282
+ "description": "The player is inside a closed door's rect; fires once per approach and re-arms after they step out. Boards answer with a PLACE back plus a locked fx.",
283
+ "event": "GATE_BLOCKED",
284
+ "eventId": "evt_01M0PCAKPPCJ7VSDH5Y8HJKXT3",
285
+ "payloadSchema": [
286
+ {
287
+ "name": "id",
288
+ "required": true,
289
+ "type": "string"
290
+ },
291
+ {
292
+ "name": "x",
293
+ "required": true,
294
+ "type": "number"
295
+ },
296
+ {
297
+ "name": "y",
298
+ "required": true,
299
+ "type": "number"
300
+ }
301
+ ],
302
+ "scope": "external",
303
+ "tier": "domain"
304
+ }
305
+ ],
306
+ "entityContract": {
307
+ "provides": [
308
+ "doors",
309
+ "total"
310
+ ],
311
+ "requires": []
312
+ },
313
+ "entityRebindable": true,
314
+ "entityRefIds": {
315
+ "GateLockData": "ent_01M0PCAKPNCX4VB9ENH9KE7A6K"
316
+ },
317
+ "id": "trt_01M0PCAKPP3AGKNKD907BM5QKD",
318
+ "linkedEntity": "GateLockData",
319
+ "linkedEntityId": "ent_01M0PCAKPNCX4VB9ENH9KE7A6K",
320
+ "name": "GateLock",
321
+ "scope": "instance",
322
+ "stateMachine": {
323
+ "events": [
324
+ {
325
+ "id": "evt_01M0PCAKPPV7X94GZE9JRTD275",
326
+ "key": "INIT",
327
+ "name": "Initialize"
328
+ },
329
+ {
330
+ "id": "evt_01M0PCAKPP7JVBGEQSC7EM17EB",
331
+ "key": "COLLECT",
332
+ "name": "Collect",
333
+ "payloadSchema": [
334
+ {
335
+ "name": "total",
336
+ "required": true,
337
+ "type": "number"
338
+ }
339
+ ]
340
+ },
341
+ {
342
+ "id": "evt_01M0PCAKPP7PNVBR3Y0FDGC3V1",
343
+ "key": "BODY_MOVED",
344
+ "name": "Body Moved",
345
+ "payloadSchema": [
346
+ {
347
+ "name": "x",
348
+ "required": true,
349
+ "type": "number"
350
+ },
351
+ {
352
+ "name": "y",
353
+ "required": true,
354
+ "type": "number"
355
+ },
356
+ {
357
+ "name": "vx",
358
+ "required": true,
359
+ "type": "number"
360
+ },
361
+ {
362
+ "name": "vy",
363
+ "required": true,
364
+ "type": "number"
365
+ },
366
+ {
367
+ "name": "grounded",
368
+ "required": true,
369
+ "type": "boolean"
370
+ },
371
+ {
372
+ "name": "skating",
373
+ "required": true,
374
+ "type": "boolean"
375
+ },
376
+ {
377
+ "name": "speed",
378
+ "required": true,
379
+ "type": "number"
380
+ }
381
+ ]
382
+ },
383
+ {
384
+ "id": "evt_01M0PCAKPP16E2RHR0S9VEFV68",
385
+ "key": "RESTART",
386
+ "name": "Restart",
387
+ "payloadSchema": [
388
+ {
389
+ "name": "id",
390
+ "type": "string"
391
+ }
392
+ ]
393
+ },
394
+ {
395
+ "description": "A door's cost was reached by the collected total and it flipped open; boards layer unlock fx. When several doors open on one total, the first reports and the shared entity carries the rest.",
396
+ "id": "evt_01M0PCAKPPW543QCFNMEFRA1TT",
397
+ "key": "GATE_OPENED",
398
+ "name": "Gate Opened",
399
+ "payloadSchema": [
400
+ {
401
+ "name": "id",
402
+ "required": true,
403
+ "type": "string"
404
+ },
405
+ {
406
+ "name": "cost",
407
+ "required": true,
408
+ "type": "number"
409
+ }
410
+ ],
411
+ "tier": "domain"
412
+ },
413
+ {
414
+ "description": "The player is inside a closed door's rect; fires once per approach and re-arms after they step out. Boards answer with a PLACE back plus a locked fx.",
415
+ "id": "evt_01M0PCAKPPCJ7VSDH5Y8HJKXT3",
416
+ "key": "GATE_BLOCKED",
417
+ "name": "Gate Blocked",
418
+ "payloadSchema": [
419
+ {
420
+ "name": "id",
421
+ "required": true,
422
+ "type": "string"
423
+ },
424
+ {
425
+ "name": "x",
426
+ "required": true,
427
+ "type": "number"
428
+ },
429
+ {
430
+ "name": "y",
431
+ "required": true,
432
+ "type": "number"
433
+ }
434
+ ],
435
+ "tier": "domain"
436
+ }
437
+ ],
438
+ "states": [
439
+ {
440
+ "isInitial": true,
441
+ "name": "active"
442
+ }
443
+ ],
444
+ "transitions": [
445
+ {
446
+ "effects": [
447
+ [
448
+ "set",
449
+ "@entity.doors",
450
+ [
451
+ "array/map",
452
+ "@config.doors",
453
+ [
454
+ "fn",
455
+ "d",
456
+ [
457
+ "object/merge",
458
+ "@d",
459
+ {
460
+ "blocked": false,
461
+ "open": false,
462
+ "touching": false
463
+ }
464
+ ]
465
+ ]
466
+ ]
467
+ ],
468
+ [
469
+ "set",
470
+ "@entity.total",
471
+ 0.0
472
+ ]
473
+ ],
474
+ "event": "INIT",
475
+ "eventId": "evt_01M0PCAKPPV7X94GZE9JRTD275",
476
+ "from": "active",
477
+ "to": "active"
478
+ },
479
+ {
480
+ "effects": [
481
+ [
482
+ "set",
483
+ "@entity.total",
484
+ "@payload.total"
485
+ ],
486
+ [
487
+ "let",
488
+ [
489
+ [
490
+ "newly",
491
+ [
492
+ "array/filter",
493
+ "@entity.doors",
494
+ [
495
+ "fn",
496
+ "d",
497
+ [
498
+ "and",
499
+ [
500
+ "==",
501
+ [
502
+ "object/get",
503
+ "@d",
504
+ "open"
505
+ ],
506
+ false
507
+ ],
508
+ [
509
+ "<=",
510
+ [
511
+ "object/get",
512
+ "@d",
513
+ "cost"
514
+ ],
515
+ "@payload.total"
516
+ ]
517
+ ]
518
+ ]
519
+ ]
520
+ ]
521
+ ],
522
+ [
523
+ "if",
524
+ [
525
+ ">",
526
+ [
527
+ "array/len",
528
+ "@newly"
529
+ ],
530
+ 0.0
531
+ ],
532
+ [
533
+ "do",
534
+ [
535
+ "set",
536
+ "@entity.doors",
537
+ [
538
+ "array/map",
539
+ "@entity.doors",
540
+ [
541
+ "fn",
542
+ "d",
543
+ [
544
+ "if",
545
+ [
546
+ "and",
547
+ [
548
+ "==",
549
+ [
550
+ "object/get",
551
+ "@d",
552
+ "open"
553
+ ],
554
+ false
555
+ ],
556
+ [
557
+ "<=",
558
+ [
559
+ "object/get",
560
+ "@d",
561
+ "cost"
562
+ ],
563
+ "@payload.total"
564
+ ]
565
+ ],
566
+ [
567
+ "object/merge",
568
+ "@d",
569
+ {
570
+ "open": true
571
+ }
572
+ ],
573
+ "@d"
574
+ ]
575
+ ]
576
+ ]
577
+ ],
578
+ [
579
+ "emit",
580
+ "GATE_OPENED",
581
+ {
582
+ "cost": [
583
+ "object/get",
584
+ [
585
+ "array/first",
586
+ "@newly"
587
+ ],
588
+ "cost"
589
+ ],
590
+ "id": [
591
+ "object/get",
592
+ [
593
+ "array/first",
594
+ "@newly"
595
+ ],
596
+ "id"
597
+ ]
598
+ }
599
+ ]
600
+ ],
601
+ null
602
+ ]
603
+ ]
604
+ ],
605
+ "event": "COLLECT",
606
+ "eventId": "evt_01M0PCAKPP7JVBGEQSC7EM17EB",
607
+ "from": "active",
608
+ "guard": "@config.running",
609
+ "to": "active"
610
+ },
611
+ {
612
+ "effects": [
613
+ [
614
+ "set",
615
+ "@entity.doors",
616
+ [
617
+ "array/map",
618
+ "@entity.doors",
619
+ [
620
+ "fn",
621
+ "d",
622
+ [
623
+ "let",
624
+ [
625
+ [
626
+ "inside",
627
+ [
628
+ "and",
629
+ [
630
+ "==",
631
+ [
632
+ "object/get",
633
+ "@d",
634
+ "open"
635
+ ],
636
+ false
637
+ ],
638
+ [
639
+ "and",
640
+ [
641
+ ">=",
642
+ "@payload.x",
643
+ [
644
+ "-",
645
+ [
646
+ "object/get",
647
+ "@d",
648
+ "x"
649
+ ],
650
+ "@config.reachMargin"
651
+ ]
652
+ ],
653
+ [
654
+ "and",
655
+ [
656
+ "<=",
657
+ "@payload.x",
658
+ [
659
+ "+",
660
+ [
661
+ "object/get",
662
+ "@d",
663
+ "x"
664
+ ],
665
+ [
666
+ "object/get",
667
+ "@d",
668
+ "width"
669
+ ],
670
+ "@config.reachMargin"
671
+ ]
672
+ ],
673
+ [
674
+ "and",
675
+ [
676
+ ">=",
677
+ "@payload.y",
678
+ [
679
+ "-",
680
+ [
681
+ "object/get",
682
+ "@d",
683
+ "y"
684
+ ],
685
+ "@config.reachMargin"
686
+ ]
687
+ ],
688
+ [
689
+ "<=",
690
+ "@payload.y",
691
+ [
692
+ "+",
693
+ [
694
+ "object/get",
695
+ "@d",
696
+ "y"
697
+ ],
698
+ [
699
+ "object/get",
700
+ "@d",
701
+ "height"
702
+ ],
703
+ "@config.reachMargin"
704
+ ]
705
+ ]
706
+ ]
707
+ ]
708
+ ]
709
+ ]
710
+ ]
711
+ ],
712
+ [
713
+ "object/merge",
714
+ "@d",
715
+ {
716
+ "blocked": [
717
+ "and",
718
+ "@inside",
719
+ [
720
+ "==",
721
+ [
722
+ "object/get",
723
+ "@d",
724
+ "touching"
725
+ ],
726
+ false
727
+ ]
728
+ ],
729
+ "touching": "@inside"
730
+ }
731
+ ]
732
+ ]
733
+ ]
734
+ ]
735
+ ],
736
+ [
737
+ "let",
738
+ [
739
+ [
740
+ "blocked",
741
+ [
742
+ "array/filter",
743
+ "@entity.doors",
744
+ [
745
+ "fn",
746
+ "d",
747
+ [
748
+ "==",
749
+ [
750
+ "object/get",
751
+ "@d",
752
+ "blocked"
753
+ ],
754
+ true
755
+ ]
756
+ ]
757
+ ]
758
+ ]
759
+ ],
760
+ [
761
+ "if",
762
+ [
763
+ ">",
764
+ [
765
+ "array/len",
766
+ "@blocked"
767
+ ],
768
+ 0.0
769
+ ],
770
+ [
771
+ "emit",
772
+ "GATE_BLOCKED",
773
+ {
774
+ "id": [
775
+ "object/get",
776
+ [
777
+ "array/first",
778
+ "@blocked"
779
+ ],
780
+ "id"
781
+ ],
782
+ "x": [
783
+ "object/get",
784
+ [
785
+ "array/first",
786
+ "@blocked"
787
+ ],
788
+ "x"
789
+ ],
790
+ "y": [
791
+ "object/get",
792
+ [
793
+ "array/first",
794
+ "@blocked"
795
+ ],
796
+ "y"
797
+ ]
798
+ }
799
+ ],
800
+ null
801
+ ]
802
+ ]
803
+ ],
804
+ "event": "BODY_MOVED",
805
+ "eventId": "evt_01M0PCAKPP7PNVBR3Y0FDGC3V1",
806
+ "from": "active",
807
+ "guard": "@config.running",
808
+ "to": "active"
809
+ },
810
+ {
811
+ "effects": [
812
+ [
813
+ "set",
814
+ "@entity.doors",
815
+ [
816
+ "array/map",
817
+ "@config.doors",
818
+ [
819
+ "fn",
820
+ "d",
821
+ [
822
+ "object/merge",
823
+ "@d",
824
+ {
825
+ "blocked": false,
826
+ "open": false,
827
+ "touching": false
828
+ }
829
+ ]
830
+ ]
831
+ ]
832
+ ],
833
+ [
834
+ "set",
835
+ "@entity.total",
836
+ 0.0
837
+ ]
838
+ ],
839
+ "event": "RESTART",
840
+ "eventId": "evt_01M0PCAKPP16E2RHR0S9VEFV68",
841
+ "from": "active",
842
+ "to": "active"
843
+ }
844
+ ]
845
+ }
846
+ }
847
+ ]
848
+ }
849
+ ],
850
+ "schemaVersion": 1,
851
+ "version": "1.0.0"
852
+ }