@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,955 @@
1
+ {
2
+ "description": "Headless area-fill mechanic: the player paints area under a curve by moving through a fill region. Listens BODY_MOVED and, per fill, accumulates height(x) × |dx| while the player is inside the fill's x-range (the per-tick step is clamped to 0.5 world units — the physical per-tick maximum — so teleports and respawns paint nothing) — height is linear interpolation of the config curve samples above the fill's baseline (the platformer body's leftSamp/rightSamp idiom). rateMode picks the rate: \"area\" (height × |dx|, default — fills fastest where the curve is tallest), \"speed\" (|dx| only, flat rate), or \"ride\" (|dx| only while the move reports skating — walking the same distance paints nothing). When a fill's filled reaches its target it flips reported and emits AREA_FILLED once (the shared entity carries the rest); each fill also stamps a frontier (x0 + span × min(1, filled/target)) so boards can shade the painted region left-to-right as the gauge grows. RESTART resets every fill. Renders nothing; boards shade the painted region and read filled/frontier from the shared entity (the render authority).",
3
+ "ledger": {
4
+ "entries": {
5
+ "ent_01M11YTBT97CN5A2TMP33YQY1Q": {
6
+ "bakedName": "AreaFillData",
7
+ "curName": "AreaFillData",
8
+ "id": "ent_01M11YTBT97CN5A2TMP33YQY1Q",
9
+ "kind": "entity",
10
+ "owner": "workspace",
11
+ "renames": []
12
+ },
13
+ "evt_01M11YTBT9PGK372101AFZTYVZ": {
14
+ "bakedName": "RESTART",
15
+ "curName": "RESTART",
16
+ "id": "evt_01M11YTBT9PGK372101AFZTYVZ",
17
+ "kind": "event",
18
+ "owner": "workspace",
19
+ "parent": "trt_01M11YTBT93WB5MVA0SQR2ZMPR",
20
+ "renames": []
21
+ },
22
+ "evt_01M11YTBT9QMZES8B24W46FK85": {
23
+ "bakedName": "AREA_FILLED",
24
+ "curName": "AREA_FILLED",
25
+ "id": "evt_01M11YTBT9QMZES8B24W46FK85",
26
+ "kind": "event",
27
+ "owner": "workspace",
28
+ "parent": "trt_01M11YTBT93WB5MVA0SQR2ZMPR",
29
+ "renames": []
30
+ },
31
+ "evt_01M11YTBT9RQY0RWBP60CWAEP8": {
32
+ "bakedName": "INIT",
33
+ "curName": "INIT",
34
+ "id": "evt_01M11YTBT9RQY0RWBP60CWAEP8",
35
+ "kind": "event",
36
+ "owner": "workspace",
37
+ "parent": "trt_01M11YTBT93WB5MVA0SQR2ZMPR",
38
+ "renames": []
39
+ },
40
+ "evt_01M11YTBT9YEJHGSHNR1P4SRPV": {
41
+ "bakedName": "BODY_MOVED",
42
+ "curName": "BODY_MOVED",
43
+ "id": "evt_01M11YTBT9YEJHGSHNR1P4SRPV",
44
+ "kind": "event",
45
+ "owner": "workspace",
46
+ "parent": "trt_01M11YTBT93WB5MVA0SQR2ZMPR",
47
+ "renames": []
48
+ },
49
+ "orb_01M11YTBT9H0PJZPA7FTJSEK3E": {
50
+ "bakedName": "AreaFillOrbital",
51
+ "curName": "AreaFillOrbital",
52
+ "id": "orb_01M11YTBT9H0PJZPA7FTJSEK3E",
53
+ "kind": "orbital",
54
+ "owner": "workspace",
55
+ "renames": []
56
+ },
57
+ "pag_01M11YTBT9632GJKNK1ZK8B7DA": {
58
+ "bakedName": "AreaFillPage",
59
+ "curName": "AreaFillPage",
60
+ "id": "pag_01M11YTBT9632GJKNK1ZK8B7DA",
61
+ "kind": "page",
62
+ "owner": "workspace",
63
+ "renames": []
64
+ },
65
+ "trt_01M11YTBT93WB5MVA0SQR2ZMPR": {
66
+ "bakedName": "AreaFill",
67
+ "curName": "AreaFill",
68
+ "id": "trt_01M11YTBT93WB5MVA0SQR2ZMPR",
69
+ "kind": "trait",
70
+ "owner": "workspace",
71
+ "renames": []
72
+ }
73
+ },
74
+ "schemaVersion": 1
75
+ },
76
+ "name": "std-area-fill",
77
+ "orbitals": [
78
+ {
79
+ "entity": {
80
+ "fields": [
81
+ {
82
+ "name": "id",
83
+ "required": true,
84
+ "type": "string"
85
+ },
86
+ {
87
+ "default": [],
88
+ "items": {
89
+ "properties": {
90
+ "baseline": {
91
+ "name": "baseline",
92
+ "required": true,
93
+ "type": "number"
94
+ },
95
+ "filled": {
96
+ "name": "filled",
97
+ "required": false,
98
+ "type": "number"
99
+ },
100
+ "frontier": {
101
+ "name": "frontier",
102
+ "required": false,
103
+ "type": "number"
104
+ },
105
+ "hint": {
106
+ "name": "hint",
107
+ "required": false,
108
+ "type": "string"
109
+ },
110
+ "id": {
111
+ "name": "id",
112
+ "required": true,
113
+ "type": "string"
114
+ },
115
+ "rateMode": {
116
+ "name": "rateMode",
117
+ "required": false,
118
+ "type": "string"
119
+ },
120
+ "reported": {
121
+ "name": "reported",
122
+ "required": false,
123
+ "type": "boolean"
124
+ },
125
+ "samples": {
126
+ "items": {
127
+ "properties": {
128
+ "x": {
129
+ "name": "x",
130
+ "required": true,
131
+ "type": "number"
132
+ },
133
+ "y": {
134
+ "name": "y",
135
+ "required": true,
136
+ "type": "number"
137
+ }
138
+ },
139
+ "type": "object"
140
+ },
141
+ "name": "samples",
142
+ "required": true,
143
+ "type": "array"
144
+ },
145
+ "target": {
146
+ "name": "target",
147
+ "required": true,
148
+ "type": "number"
149
+ },
150
+ "x0": {
151
+ "name": "x0",
152
+ "required": true,
153
+ "type": "number"
154
+ },
155
+ "x1": {
156
+ "name": "x1",
157
+ "required": true,
158
+ "type": "number"
159
+ }
160
+ },
161
+ "type": "object"
162
+ },
163
+ "name": "fills",
164
+ "type": "array"
165
+ },
166
+ {
167
+ "default": 0.0,
168
+ "name": "lastX",
169
+ "type": "number"
170
+ }
171
+ ],
172
+ "id": "ent_01M11YTBT97CN5A2TMP33YQY1Q",
173
+ "name": "AreaFillData",
174
+ "persistence": "runtime",
175
+ "shared": true
176
+ },
177
+ "id": "orb_01M11YTBT9H0PJZPA7FTJSEK3E",
178
+ "name": "AreaFillOrbital",
179
+ "pages": [
180
+ {
181
+ "id": "pag_01M11YTBT9632GJKNK1ZK8B7DA",
182
+ "name": "AreaFillPage",
183
+ "path": "/area-fill",
184
+ "traits": [
185
+ {
186
+ "ref": "AreaFill",
187
+ "refId": "trt_01M11YTBT93WB5MVA0SQR2ZMPR"
188
+ }
189
+ ]
190
+ }
191
+ ],
192
+ "traits": [
193
+ {
194
+ "category": "lifecycle",
195
+ "config": {
196
+ "fills": {
197
+ "default": [],
198
+ "description": "One row per fill region: id, x-range (x0..x1 in world units), baseline the height is measured from, target area, rateMode (area | speed | ride — default area), optional hint, and the curve samples to interpolate. filled/frontier/reported are stamped at runtime.",
199
+ "items": {
200
+ "properties": {
201
+ "baseline": {
202
+ "name": "baseline",
203
+ "required": true,
204
+ "type": "number"
205
+ },
206
+ "filled": {
207
+ "name": "filled",
208
+ "required": false,
209
+ "type": "number"
210
+ },
211
+ "frontier": {
212
+ "name": "frontier",
213
+ "required": false,
214
+ "type": "number"
215
+ },
216
+ "hint": {
217
+ "name": "hint",
218
+ "required": false,
219
+ "type": "string"
220
+ },
221
+ "id": {
222
+ "name": "id",
223
+ "required": true,
224
+ "type": "string"
225
+ },
226
+ "rateMode": {
227
+ "name": "rateMode",
228
+ "required": false,
229
+ "type": "string"
230
+ },
231
+ "reported": {
232
+ "name": "reported",
233
+ "required": false,
234
+ "type": "boolean"
235
+ },
236
+ "samples": {
237
+ "items": {
238
+ "properties": {
239
+ "x": {
240
+ "name": "x",
241
+ "required": true,
242
+ "type": "number"
243
+ },
244
+ "y": {
245
+ "name": "y",
246
+ "required": true,
247
+ "type": "number"
248
+ }
249
+ },
250
+ "type": "object"
251
+ },
252
+ "name": "samples",
253
+ "required": true,
254
+ "type": "array"
255
+ },
256
+ "target": {
257
+ "name": "target",
258
+ "required": true,
259
+ "type": "number"
260
+ },
261
+ "x0": {
262
+ "name": "x0",
263
+ "required": true,
264
+ "type": "number"
265
+ },
266
+ "x1": {
267
+ "name": "x1",
268
+ "required": true,
269
+ "type": "number"
270
+ }
271
+ },
272
+ "type": "object"
273
+ },
274
+ "label": "Fills",
275
+ "tier": "domain",
276
+ "type": "[AreaFill]"
277
+ },
278
+ "running": {
279
+ "default": true,
280
+ "description": "When true, BODY_MOVED paints every fill the player moves through; toggle to freeze every fill as-is.",
281
+ "label": "Running",
282
+ "tier": "domain",
283
+ "type": "boolean"
284
+ }
285
+ },
286
+ "emits": [
287
+ {
288
+ "description": "A fill's painted area reached its target (x, y = the player's position at completion, for burst placement). When several fills complete on one move, the first reports and the shared entity carries the rest.",
289
+ "event": "AREA_FILLED",
290
+ "eventId": "evt_01M11YTBT9QMZES8B24W46FK85",
291
+ "payloadSchema": [
292
+ {
293
+ "name": "id",
294
+ "required": true,
295
+ "type": "string"
296
+ },
297
+ {
298
+ "name": "x",
299
+ "required": true,
300
+ "type": "number"
301
+ },
302
+ {
303
+ "name": "y",
304
+ "required": true,
305
+ "type": "number"
306
+ }
307
+ ],
308
+ "scope": "external",
309
+ "tier": "domain"
310
+ }
311
+ ],
312
+ "entityContract": {
313
+ "provides": [
314
+ "fills",
315
+ "lastX"
316
+ ],
317
+ "requires": []
318
+ },
319
+ "entityRebindable": true,
320
+ "entityRefIds": {
321
+ "AreaFillData": "ent_01M11YTBT97CN5A2TMP33YQY1Q"
322
+ },
323
+ "id": "trt_01M11YTBT93WB5MVA0SQR2ZMPR",
324
+ "linkedEntity": "AreaFillData",
325
+ "linkedEntityId": "ent_01M11YTBT97CN5A2TMP33YQY1Q",
326
+ "name": "AreaFill",
327
+ "scope": "instance",
328
+ "stateMachine": {
329
+ "events": [
330
+ {
331
+ "id": "evt_01M11YTBT9RQY0RWBP60CWAEP8",
332
+ "key": "INIT",
333
+ "name": "Initialize"
334
+ },
335
+ {
336
+ "id": "evt_01M11YTBT9YEJHGSHNR1P4SRPV",
337
+ "key": "BODY_MOVED",
338
+ "name": "Body Moved",
339
+ "payloadSchema": [
340
+ {
341
+ "name": "x",
342
+ "required": true,
343
+ "type": "number"
344
+ },
345
+ {
346
+ "name": "y",
347
+ "required": true,
348
+ "type": "number"
349
+ },
350
+ {
351
+ "name": "vx",
352
+ "required": true,
353
+ "type": "number"
354
+ },
355
+ {
356
+ "name": "vy",
357
+ "required": true,
358
+ "type": "number"
359
+ },
360
+ {
361
+ "name": "grounded",
362
+ "required": true,
363
+ "type": "boolean"
364
+ },
365
+ {
366
+ "name": "skating",
367
+ "required": true,
368
+ "type": "boolean"
369
+ },
370
+ {
371
+ "name": "speed",
372
+ "required": true,
373
+ "type": "number"
374
+ }
375
+ ]
376
+ },
377
+ {
378
+ "id": "evt_01M11YTBT9PGK372101AFZTYVZ",
379
+ "key": "RESTART",
380
+ "name": "Restart",
381
+ "payloadSchema": [
382
+ {
383
+ "name": "id",
384
+ "type": "string"
385
+ }
386
+ ]
387
+ },
388
+ {
389
+ "description": "A fill's painted area reached its target (x, y = the player's position at completion, for burst placement). When several fills complete on one move, the first reports and the shared entity carries the rest.",
390
+ "id": "evt_01M11YTBT9QMZES8B24W46FK85",
391
+ "key": "AREA_FILLED",
392
+ "name": "Area Filled",
393
+ "payloadSchema": [
394
+ {
395
+ "name": "id",
396
+ "required": true,
397
+ "type": "string"
398
+ },
399
+ {
400
+ "name": "x",
401
+ "required": true,
402
+ "type": "number"
403
+ },
404
+ {
405
+ "name": "y",
406
+ "required": true,
407
+ "type": "number"
408
+ }
409
+ ],
410
+ "tier": "domain"
411
+ }
412
+ ],
413
+ "states": [
414
+ {
415
+ "isInitial": true,
416
+ "name": "active"
417
+ }
418
+ ],
419
+ "transitions": [
420
+ {
421
+ "effects": [
422
+ [
423
+ "set",
424
+ "@entity.fills",
425
+ [
426
+ "array/map",
427
+ "@config.fills",
428
+ [
429
+ "fn",
430
+ "f",
431
+ [
432
+ "object/merge",
433
+ "@f",
434
+ {
435
+ "filled": 0.0,
436
+ "frontier": [
437
+ "object/get",
438
+ "@f",
439
+ "x0"
440
+ ],
441
+ "reported": false
442
+ }
443
+ ]
444
+ ]
445
+ ]
446
+ ],
447
+ [
448
+ "set",
449
+ "@entity.lastX",
450
+ 0.0
451
+ ]
452
+ ],
453
+ "event": "INIT",
454
+ "eventId": "evt_01M11YTBT9RQY0RWBP60CWAEP8",
455
+ "from": "active",
456
+ "to": "active"
457
+ },
458
+ {
459
+ "effects": [
460
+ [
461
+ "let",
462
+ [
463
+ [
464
+ "adx",
465
+ [
466
+ "math/abs",
467
+ [
468
+ "-",
469
+ "@payload.x",
470
+ "@entity.lastX"
471
+ ]
472
+ ]
473
+ ]
474
+ ],
475
+ [
476
+ "set",
477
+ "@entity.fills",
478
+ [
479
+ "array/map",
480
+ "@entity.fills",
481
+ [
482
+ "fn",
483
+ "f",
484
+ [
485
+ "let",
486
+ [
487
+ [
488
+ "inside",
489
+ [
490
+ "and",
491
+ [
492
+ ">=",
493
+ "@payload.x",
494
+ [
495
+ "object/get",
496
+ "@f",
497
+ "x0"
498
+ ]
499
+ ],
500
+ [
501
+ "<=",
502
+ "@payload.x",
503
+ [
504
+ "object/get",
505
+ "@f",
506
+ "x1"
507
+ ]
508
+ ]
509
+ ]
510
+ ]
511
+ ],
512
+ [
513
+ "let",
514
+ [
515
+ [
516
+ "leftSamp",
517
+ [
518
+ "array/last",
519
+ [
520
+ "array/filter",
521
+ [
522
+ "object/get",
523
+ "@f",
524
+ "samples"
525
+ ],
526
+ [
527
+ "fn",
528
+ "s",
529
+ [
530
+ "<=",
531
+ [
532
+ "object/get",
533
+ "@s",
534
+ "x"
535
+ ],
536
+ "@payload.x"
537
+ ]
538
+ ]
539
+ ]
540
+ ]
541
+ ]
542
+ ],
543
+ [
544
+ "let",
545
+ [
546
+ [
547
+ "rightSamp",
548
+ [
549
+ "array/first",
550
+ [
551
+ "array/filter",
552
+ [
553
+ "object/get",
554
+ "@f",
555
+ "samples"
556
+ ],
557
+ [
558
+ "fn",
559
+ "s",
560
+ [
561
+ ">",
562
+ [
563
+ "object/get",
564
+ "@s",
565
+ "x"
566
+ ],
567
+ "@payload.x"
568
+ ]
569
+ ]
570
+ ]
571
+ ]
572
+ ]
573
+ ],
574
+ [
575
+ "let",
576
+ [
577
+ [
578
+ "h",
579
+ [
580
+ "if",
581
+ [
582
+ "or",
583
+ [
584
+ "==",
585
+ "@leftSamp",
586
+ null
587
+ ],
588
+ [
589
+ "==",
590
+ "@rightSamp",
591
+ null
592
+ ]
593
+ ],
594
+ 0.0,
595
+ [
596
+ "-",
597
+ [
598
+ "+",
599
+ [
600
+ "object/get",
601
+ "@leftSamp",
602
+ "y"
603
+ ],
604
+ [
605
+ "*",
606
+ [
607
+ "/",
608
+ [
609
+ "-",
610
+ [
611
+ "object/get",
612
+ "@rightSamp",
613
+ "y"
614
+ ],
615
+ [
616
+ "object/get",
617
+ "@leftSamp",
618
+ "y"
619
+ ]
620
+ ],
621
+ [
622
+ "-",
623
+ [
624
+ "object/get",
625
+ "@rightSamp",
626
+ "x"
627
+ ],
628
+ [
629
+ "object/get",
630
+ "@leftSamp",
631
+ "x"
632
+ ]
633
+ ]
634
+ ],
635
+ [
636
+ "-",
637
+ "@payload.x",
638
+ [
639
+ "object/get",
640
+ "@leftSamp",
641
+ "x"
642
+ ]
643
+ ]
644
+ ]
645
+ ],
646
+ [
647
+ "object/get",
648
+ "@f",
649
+ "baseline"
650
+ ]
651
+ ]
652
+ ]
653
+ ]
654
+ ],
655
+ [
656
+ "let",
657
+ [
658
+ [
659
+ "step",
660
+ [
661
+ "math/min",
662
+ "@adx",
663
+ 0.5
664
+ ]
665
+ ]
666
+ ],
667
+ [
668
+ "let",
669
+ [
670
+ [
671
+ "rate",
672
+ [
673
+ "if",
674
+ "@inside",
675
+ [
676
+ "if",
677
+ [
678
+ "==",
679
+ [
680
+ "object/get",
681
+ "@f",
682
+ "rateMode"
683
+ ],
684
+ "ride"
685
+ ],
686
+ [
687
+ "if",
688
+ "@payload.skating",
689
+ "@step",
690
+ 0.0
691
+ ],
692
+ [
693
+ "if",
694
+ [
695
+ "==",
696
+ [
697
+ "object/get",
698
+ "@f",
699
+ "rateMode"
700
+ ],
701
+ "speed"
702
+ ],
703
+ "@step",
704
+ [
705
+ "*",
706
+ "@step",
707
+ "@h"
708
+ ]
709
+ ]
710
+ ],
711
+ 0.0
712
+ ]
713
+ ]
714
+ ],
715
+ [
716
+ "let",
717
+ [
718
+ [
719
+ "newFilled",
720
+ [
721
+ "+",
722
+ [
723
+ "object/get",
724
+ "@f",
725
+ "filled"
726
+ ],
727
+ "@rate"
728
+ ]
729
+ ]
730
+ ],
731
+ [
732
+ "object/merge",
733
+ "@f",
734
+ {
735
+ "filled": "@newFilled",
736
+ "frontier": [
737
+ "+",
738
+ [
739
+ "object/get",
740
+ "@f",
741
+ "x0"
742
+ ],
743
+ [
744
+ "*",
745
+ [
746
+ "-",
747
+ [
748
+ "object/get",
749
+ "@f",
750
+ "x1"
751
+ ],
752
+ [
753
+ "object/get",
754
+ "@f",
755
+ "x0"
756
+ ]
757
+ ],
758
+ [
759
+ "math/min",
760
+ 1.0,
761
+ [
762
+ "/",
763
+ "@newFilled",
764
+ [
765
+ "object/get",
766
+ "@f",
767
+ "target"
768
+ ]
769
+ ]
770
+ ]
771
+ ]
772
+ ]
773
+ }
774
+ ]
775
+ ]
776
+ ]
777
+ ]
778
+ ]
779
+ ]
780
+ ]
781
+ ]
782
+ ]
783
+ ]
784
+ ]
785
+ ],
786
+ [
787
+ "set",
788
+ "@entity.lastX",
789
+ "@payload.x"
790
+ ],
791
+ [
792
+ "let",
793
+ [
794
+ [
795
+ "newly",
796
+ [
797
+ "array/filter",
798
+ "@entity.fills",
799
+ [
800
+ "fn",
801
+ "f",
802
+ [
803
+ "and",
804
+ [
805
+ ">=",
806
+ [
807
+ "object/get",
808
+ "@f",
809
+ "filled"
810
+ ],
811
+ [
812
+ "object/get",
813
+ "@f",
814
+ "target"
815
+ ]
816
+ ],
817
+ [
818
+ "==",
819
+ [
820
+ "object/get",
821
+ "@f",
822
+ "reported"
823
+ ],
824
+ false
825
+ ]
826
+ ]
827
+ ]
828
+ ]
829
+ ]
830
+ ],
831
+ [
832
+ "if",
833
+ [
834
+ ">",
835
+ [
836
+ "array/len",
837
+ "@newly"
838
+ ],
839
+ 0.0
840
+ ],
841
+ [
842
+ "do",
843
+ [
844
+ "set",
845
+ "@entity.fills",
846
+ [
847
+ "array/map",
848
+ "@entity.fills",
849
+ [
850
+ "fn",
851
+ "f",
852
+ [
853
+ "if",
854
+ [
855
+ "==",
856
+ [
857
+ "object/get",
858
+ "@f",
859
+ "id"
860
+ ],
861
+ [
862
+ "object/get",
863
+ [
864
+ "array/first",
865
+ "@newly"
866
+ ],
867
+ "id"
868
+ ]
869
+ ],
870
+ [
871
+ "object/merge",
872
+ "@f",
873
+ {
874
+ "reported": true
875
+ }
876
+ ],
877
+ "@f"
878
+ ]
879
+ ]
880
+ ]
881
+ ],
882
+ [
883
+ "emit",
884
+ "AREA_FILLED",
885
+ {
886
+ "id": [
887
+ "object/get",
888
+ [
889
+ "array/first",
890
+ "@newly"
891
+ ],
892
+ "id"
893
+ ],
894
+ "x": "@payload.x",
895
+ "y": "@payload.y"
896
+ }
897
+ ]
898
+ ],
899
+ null
900
+ ]
901
+ ]
902
+ ],
903
+ "event": "BODY_MOVED",
904
+ "eventId": "evt_01M11YTBT9YEJHGSHNR1P4SRPV",
905
+ "from": "active",
906
+ "guard": "@config.running",
907
+ "to": "active"
908
+ },
909
+ {
910
+ "effects": [
911
+ [
912
+ "set",
913
+ "@entity.fills",
914
+ [
915
+ "array/map",
916
+ "@config.fills",
917
+ [
918
+ "fn",
919
+ "f",
920
+ [
921
+ "object/merge",
922
+ "@f",
923
+ {
924
+ "filled": 0.0,
925
+ "frontier": [
926
+ "object/get",
927
+ "@f",
928
+ "x0"
929
+ ],
930
+ "reported": false
931
+ }
932
+ ]
933
+ ]
934
+ ]
935
+ ],
936
+ [
937
+ "set",
938
+ "@entity.lastX",
939
+ 0.0
940
+ ]
941
+ ],
942
+ "event": "RESTART",
943
+ "eventId": "evt_01M11YTBT9PGK372101AFZTYVZ",
944
+ "from": "active",
945
+ "to": "active"
946
+ }
947
+ ]
948
+ }
949
+ }
950
+ ]
951
+ }
952
+ ],
953
+ "schemaVersion": 1,
954
+ "version": "1.0.0"
955
+ }