@almadar/std 16.178.0 → 16.180.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 (80) hide show
  1. package/behaviors/lolo/ui/core/atoms/std-detail-layout.lolo +82 -0
  2. package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +20 -2
  3. package/behaviors/lolo/ui/core/molecules/ui-fx-overlay.lolo +63 -0
  4. package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +1 -1
  5. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +6 -0
  6. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +2 -2
  7. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +2 -2
  8. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +2 -2
  9. package/behaviors/lolo/ui/game/atoms/std-fx-particles.lolo +23 -4
  10. package/behaviors/lolo/ui/game/atoms/std-platformer-body.lolo +251 -0
  11. package/behaviors/lolo/ui/game/atoms/ui-draw-fx-layer.lolo +109 -0
  12. package/behaviors/lolo/ui/game/organisms/std-arcade-board-3d.lolo +32 -2
  13. package/behaviors/lolo/ui/game/organisms/std-crew-board-2d.lolo +32 -2
  14. package/behaviors/lolo/ui/game/organisms/std-dungeon-board-2d.lolo +32 -2
  15. package/behaviors/lolo/ui/game/organisms/std-market-board-3d.lolo +32 -2
  16. package/behaviors/lolo/ui/game/organisms/std-objective-board-3d.lolo +32 -2
  17. package/behaviors/lolo/ui/game/organisms/std-platformer-board-2d.lolo +391 -0
  18. package/behaviors/lolo/ui/game/organisms/std-survival-board-3d.lolo +32 -2
  19. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +34 -6
  20. package/behaviors/lolo/ui/game/organisms/std-tactics-board-3d.lolo +34 -4
  21. package/behaviors/lolo/ui/learning/atoms/std-learn-arrangement.lolo +8 -0
  22. package/behaviors/lolo/ui/learning/atoms/std-learn-classify.lolo +8 -0
  23. package/behaviors/lolo/ui/learning/atoms/std-learn-derivation.lolo +8 -0
  24. package/behaviors/lolo/ui/learning/atoms/std-learn-doser.lolo +9 -0
  25. package/behaviors/lolo/ui/learning/atoms/std-learn-estimate.lolo +8 -0
  26. package/behaviors/lolo/ui/learning/atoms/std-learn-fx-cues.lolo +147 -0
  27. package/behaviors/lolo/ui/learning/atoms/std-learn-goal-seek.lolo +8 -0
  28. package/behaviors/lolo/ui/learning/atoms/std-learn-hotspot.lolo +8 -0
  29. package/behaviors/lolo/ui/learning/atoms/std-learn-predict.lolo +8 -0
  30. package/behaviors/lolo/ui/learning/atoms/std-learn-scatter-fit.lolo +9 -0
  31. package/behaviors/lolo/ui/learning/atoms/std-learn-speed-drill.lolo +8 -0
  32. package/behaviors/lolo/ui/learning/atoms/std-learn-tour-3d.lolo +9 -0
  33. package/behaviors/registry/ui/core/atoms/std-detail-layout.orb +265 -0
  34. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +55 -17
  35. package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +281 -0
  36. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +1 -1
  37. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +8 -0
  38. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +6 -0
  39. package/behaviors/registry/ui/core/organisms/ui-form.orb +6 -0
  40. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +2 -2
  41. package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +265 -4
  42. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +2136 -0
  43. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +523 -0
  44. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +159 -70
  45. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +148 -58
  46. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +169 -58
  47. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +160 -70
  48. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +151 -60
  49. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +2981 -0
  50. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +150 -60
  51. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +163 -316
  52. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +156 -184
  53. package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +62 -0
  54. package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +73 -0
  55. package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +66 -0
  56. package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +71 -0
  57. package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +72 -0
  58. package/behaviors/registry/ui/learning/atoms/std-learn-fx-cues.orb +1546 -0
  59. package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +58 -0
  60. package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +72 -0
  61. package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +72 -0
  62. package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +71 -0
  63. package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +72 -0
  64. package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +176 -0
  65. package/canonical-operators.json +14 -2
  66. package/dist/behaviors/exports-reader.js +8655 -5239
  67. package/dist/behaviors/functions/index.d.ts +686 -16
  68. package/dist/behaviors/functions/index.js +8637 -5240
  69. package/dist/behaviors/index.d.ts +1 -1
  70. package/dist/behaviors/index.js +8656 -5240
  71. package/dist/behaviors/query.js +8655 -5239
  72. package/dist/behaviors-embeddings.hash.json +3 -3
  73. package/dist/behaviors-embeddings.json +381 -353
  74. package/dist/behaviors-registry.json +2415 -443
  75. package/dist/index.d.ts +1 -1
  76. package/dist/index.js +8656 -5240
  77. package/dist/knob-embeddings.hash.json +3 -3
  78. package/dist/knob-embeddings.json +1 -1
  79. package/dist/registry/factory-signatures.json +1 -1
  80. package/package.json +2 -2
@@ -358,16 +358,51 @@
358
358
  "default": [],
359
359
  "items": {
360
360
  "properties": {
361
+ "bornAt": {
362
+ "name": "bornAt",
363
+ "required": false,
364
+ "type": "number"
365
+ },
366
+ "color": {
367
+ "name": "color",
368
+ "required": false,
369
+ "type": "string"
370
+ },
371
+ "effect": {
372
+ "name": "effect",
373
+ "required": false,
374
+ "type": "string"
375
+ },
361
376
  "id": {
362
377
  "name": "id",
363
378
  "required": true,
364
379
  "type": "string"
365
380
  },
381
+ "maxTtl": {
382
+ "name": "maxTtl",
383
+ "required": false,
384
+ "type": "number"
385
+ },
366
386
  "message": {
367
387
  "name": "message",
368
388
  "required": false,
369
389
  "type": "string"
370
390
  },
391
+ "particleCount": {
392
+ "name": "particleCount",
393
+ "required": false,
394
+ "type": "number"
395
+ },
396
+ "size": {
397
+ "name": "size",
398
+ "required": false,
399
+ "type": "number"
400
+ },
401
+ "space": {
402
+ "name": "space",
403
+ "required": false,
404
+ "type": "string"
405
+ },
371
406
  "ttl": {
372
407
  "name": "ttl",
373
408
  "required": true,
@@ -378,6 +413,21 @@
378
413
  "required": true,
379
414
  "type": "string"
380
415
  },
416
+ "vx": {
417
+ "name": "vx",
418
+ "required": false,
419
+ "type": "number"
420
+ },
421
+ "vy": {
422
+ "name": "vy",
423
+ "required": false,
424
+ "type": "number"
425
+ },
426
+ "vz": {
427
+ "name": "vz",
428
+ "required": false,
429
+ "type": "number"
430
+ },
381
431
  "x": {
382
432
  "name": "x",
383
433
  "required": true,
@@ -1335,6 +1385,100 @@
1335
1385
  "tier": "presentation",
1336
1386
  "type": "[Feature]"
1337
1387
  },
1388
+ "fxPresets": {
1389
+ "default": [
1390
+ {
1391
+ "color": "#ff5252",
1392
+ "color2": "#7a1010",
1393
+ "count": 6.0,
1394
+ "glow": 0.12,
1395
+ "gravity": 0.6,
1396
+ "shape": "spark",
1397
+ "size": 0.5,
1398
+ "type": "hit",
1399
+ "vy": -0.2
1400
+ }
1401
+ ],
1402
+ "description": "This board's effect vocabulary — one look/recipe row per fx type its mechanics emit; unknown types fall back to a neutral spark.",
1403
+ "items": {
1404
+ "properties": {
1405
+ "color": {
1406
+ "name": "color",
1407
+ "required": false,
1408
+ "type": "string"
1409
+ },
1410
+ "color2": {
1411
+ "name": "color2",
1412
+ "required": false,
1413
+ "type": "string"
1414
+ },
1415
+ "count": {
1416
+ "name": "count",
1417
+ "required": false,
1418
+ "type": "number"
1419
+ },
1420
+ "effect": {
1421
+ "name": "effect",
1422
+ "required": false,
1423
+ "type": "string"
1424
+ },
1425
+ "glow": {
1426
+ "name": "glow",
1427
+ "required": false,
1428
+ "type": "number"
1429
+ },
1430
+ "gravity": {
1431
+ "name": "gravity",
1432
+ "required": false,
1433
+ "type": "number"
1434
+ },
1435
+ "particleCount": {
1436
+ "name": "particleCount",
1437
+ "required": false,
1438
+ "type": "number"
1439
+ },
1440
+ "shape": {
1441
+ "name": "shape",
1442
+ "required": false,
1443
+ "type": "string"
1444
+ },
1445
+ "size": {
1446
+ "name": "size",
1447
+ "required": false,
1448
+ "type": "number"
1449
+ },
1450
+ "space": {
1451
+ "name": "space",
1452
+ "required": false,
1453
+ "type": "string"
1454
+ },
1455
+ "type": {
1456
+ "name": "type",
1457
+ "required": true,
1458
+ "type": "string"
1459
+ },
1460
+ "vx": {
1461
+ "name": "vx",
1462
+ "required": false,
1463
+ "type": "number"
1464
+ },
1465
+ "vy": {
1466
+ "name": "vy",
1467
+ "required": false,
1468
+ "type": "number"
1469
+ },
1470
+ "vz": {
1471
+ "name": "vz",
1472
+ "required": false,
1473
+ "type": "number"
1474
+ }
1475
+ },
1476
+ "type": "object"
1477
+ },
1478
+ "label": "Fx Presets",
1479
+ "tier": "presentation",
1480
+ "type": "[FxPreset]"
1481
+ },
1338
1482
  "gridHeight": {
1339
1483
  "default": 2.0,
1340
1484
  "description": "Grid row count (matches TacticsAuthority.gridHeight).",
@@ -2576,100 +2720,14 @@
2576
2720
  ],
2577
2721
  [
2578
2722
  "array/concat",
2579
- [
2580
- "array/map",
2581
- [
2582
- "array/filter",
2583
- "@entity.fx",
2584
- [
2585
- "fn",
2586
- "f",
2587
- [
2588
- "object/get",
2589
- "@entity.meshAssetArt",
2590
- [
2591
- "object/get",
2592
- "@f",
2593
- "type"
2594
- ]
2595
- ]
2596
- ]
2597
- ],
2598
- [
2599
- "fn",
2600
- "f",
2601
- {
2602
- "items": [
2603
- "object/get",
2604
- [
2605
- "object/get",
2606
- "@entity.meshAssetArt",
2607
- [
2608
- "object/get",
2609
- "@f",
2610
- "type"
2611
- ]
2612
- ],
2613
- "idle"
2614
- ],
2615
- "position": {
2616
- "x": [
2617
- "object/get",
2618
- "@f",
2619
- "x"
2620
- ],
2621
- "y": [
2622
- "object/get",
2623
- "@f",
2624
- "y"
2625
- ],
2626
- "z": [
2627
- "object/get",
2628
- "@f",
2629
- "z"
2630
- ]
2631
- },
2632
- "type": "draw-group"
2633
- }
2634
- ]
2635
- ],
2723
+ [],
2636
2724
  [
2637
2725
  {
2638
- "items": [
2639
- "array/map",
2640
- "@entity.fx",
2641
- [
2642
- "fn",
2643
- "f",
2644
- {
2645
- "color": "#ffe066",
2646
- "position": {
2647
- "x": [
2648
- "object/get",
2649
- "@f",
2650
- "x"
2651
- ],
2652
- "y": [
2653
- "object/get",
2654
- "@f",
2655
- "y"
2656
- ],
2657
- "z": [
2658
- "object/get",
2659
- "@f",
2660
- "z"
2661
- ]
2662
- },
2663
- "text": [
2664
- "object/get",
2665
- "@f",
2666
- "message"
2667
- ],
2668
- "type": "draw-text"
2669
- }
2670
- ]
2671
- ],
2672
- "type": "draw-text-layer"
2726
+ "art": "@entity.meshAssetArt",
2727
+ "items": "@entity.fx",
2728
+ "presets": "@config.fxPresets",
2729
+ "tickMs": 500.0,
2730
+ "type": "draw-fx-layer"
2673
2731
  }
2674
2732
  ]
2675
2733
  ]
@@ -3996,100 +4054,14 @@
3996
4054
  ],
3997
4055
  [
3998
4056
  "array/concat",
3999
- [
4000
- "array/map",
4001
- [
4002
- "array/filter",
4003
- "@entity.fx",
4004
- [
4005
- "fn",
4006
- "f",
4007
- [
4008
- "object/get",
4009
- "@entity.meshAssetArt",
4010
- [
4011
- "object/get",
4012
- "@f",
4013
- "type"
4014
- ]
4015
- ]
4016
- ]
4017
- ],
4018
- [
4019
- "fn",
4020
- "f",
4021
- {
4022
- "items": [
4023
- "object/get",
4024
- [
4025
- "object/get",
4026
- "@entity.meshAssetArt",
4027
- [
4028
- "object/get",
4029
- "@f",
4030
- "type"
4031
- ]
4032
- ],
4033
- "idle"
4034
- ],
4035
- "position": {
4036
- "x": [
4037
- "object/get",
4038
- "@f",
4039
- "x"
4040
- ],
4041
- "y": [
4042
- "object/get",
4043
- "@f",
4044
- "y"
4045
- ],
4046
- "z": [
4047
- "object/get",
4048
- "@f",
4049
- "z"
4050
- ]
4051
- },
4052
- "type": "draw-group"
4053
- }
4054
- ]
4055
- ],
4057
+ [],
4056
4058
  [
4057
4059
  {
4058
- "items": [
4059
- "array/map",
4060
- "@entity.fx",
4061
- [
4062
- "fn",
4063
- "f",
4064
- {
4065
- "color": "#ffe066",
4066
- "position": {
4067
- "x": [
4068
- "object/get",
4069
- "@f",
4070
- "x"
4071
- ],
4072
- "y": [
4073
- "object/get",
4074
- "@f",
4075
- "y"
4076
- ],
4077
- "z": [
4078
- "object/get",
4079
- "@f",
4080
- "z"
4081
- ]
4082
- },
4083
- "text": [
4084
- "object/get",
4085
- "@f",
4086
- "message"
4087
- ],
4088
- "type": "draw-text"
4089
- }
4090
- ]
4091
- ],
4092
- "type": "draw-text-layer"
4060
+ "art": "@entity.meshAssetArt",
4061
+ "items": "@entity.fx",
4062
+ "presets": "@config.fxPresets",
4063
+ "tickMs": 500.0,
4064
+ "type": "draw-fx-layer"
4093
4065
  }
4094
4066
  ]
4095
4067
  ]
@@ -82,6 +82,15 @@
82
82
  "parent": "trt_01M055GQ1E7K3CRWHDCC78SAD0",
83
83
  "renames": []
84
84
  },
85
+ "evt_01M0GTSZ00ZPKZDDZTWYT6RMGB": {
86
+ "bakedName": "LEARN_ROUND_COMPLETE",
87
+ "curName": "LEARN_ROUND_COMPLETE",
88
+ "id": "evt_01M0GTSZ00ZPKZDDZTWYT6RMGB",
89
+ "kind": "event",
90
+ "owner": "workspace",
91
+ "parent": "trt_01M055GQ1E7K3CRWHDCC78SAD0",
92
+ "renames": []
93
+ },
85
94
  "orb_01M055GQ1EMETS8ZCD55EFG32J": {
86
95
  "bakedName": "LearnArrangementOrbital",
87
96
  "curName": "LearnArrangementOrbital",
@@ -573,6 +582,24 @@
573
582
  "scope": "external",
574
583
  "synonyms": "arrangement reset, retry, restart",
575
584
  "tier": "domain"
585
+ },
586
+ {
587
+ "description": "Fired when a Check grades the arrangement fully correct — the standard learning completion broadcast a celebration/progression sibling (fx cues, badges) rides.",
588
+ "event": "LEARN_ROUND_COMPLETE",
589
+ "eventId": "evt_01M0GTSZ00ZPKZDDZTWYT6RMGB",
590
+ "payloadSchema": [
591
+ {
592
+ "name": "score",
593
+ "type": "number"
594
+ },
595
+ {
596
+ "name": "total",
597
+ "type": "number"
598
+ }
599
+ ],
600
+ "scope": "external",
601
+ "synonyms": "round complete, finished, done, completion, all correct",
602
+ "tier": "domain"
576
603
  }
577
604
  ],
578
605
  "entityContract": {
@@ -676,6 +703,24 @@
676
703
  "name": "Arrangement Reset",
677
704
  "synonyms": "arrangement reset, retry, restart",
678
705
  "tier": "domain"
706
+ },
707
+ {
708
+ "description": "Fired when a Check grades the arrangement fully correct — the standard learning completion broadcast a celebration/progression sibling (fx cues, badges) rides.",
709
+ "id": "evt_01M0GTSZ00ZPKZDDZTWYT6RMGB",
710
+ "key": "LEARN_ROUND_COMPLETE",
711
+ "name": "Learn Round Complete",
712
+ "payloadSchema": [
713
+ {
714
+ "name": "score",
715
+ "type": "number"
716
+ },
717
+ {
718
+ "name": "total",
719
+ "type": "number"
720
+ }
721
+ ],
722
+ "synonyms": "round complete, finished, done, completion, all correct",
723
+ "tier": "domain"
679
724
  }
680
725
  ],
681
726
  "states": [
@@ -3130,6 +3175,23 @@
3130
3175
  "correctCount": "@entity.correctCount",
3131
3176
  "total": "@entity.totalItems"
3132
3177
  }
3178
+ ],
3179
+ [
3180
+ "if",
3181
+ [
3182
+ "==",
3183
+ "@entity.correctCount",
3184
+ "@entity.totalItems"
3185
+ ],
3186
+ [
3187
+ "emit",
3188
+ "LEARN_ROUND_COMPLETE",
3189
+ {
3190
+ "score": "@entity.correctCount",
3191
+ "total": "@entity.totalItems"
3192
+ }
3193
+ ],
3194
+ null
3133
3195
  ]
3134
3196
  ],
3135
3197
  "event": "CHECK",
@@ -73,6 +73,15 @@
73
73
  "parent": "trt_01KZEFWYXP5EK4MMGJG1PAGTNG",
74
74
  "renames": []
75
75
  },
76
+ "evt_01M0GTSZ2XJ5HY779EQ093CV2M": {
77
+ "bakedName": "LEARN_ROUND_COMPLETE",
78
+ "curName": "LEARN_ROUND_COMPLETE",
79
+ "id": "evt_01M0GTSZ2XJ5HY779EQ093CV2M",
80
+ "kind": "event",
81
+ "owner": "workspace",
82
+ "parent": "trt_01KZEFWYXP5EK4MMGJG1PAGTNG",
83
+ "renames": []
84
+ },
76
85
  "orb_01KZEFWYXPQ981SKZVC2A5E2Q9": {
77
86
  "bakedName": "LearnClassifyOrbital",
78
87
  "curName": "LearnClassifyOrbital",
@@ -691,6 +700,24 @@
691
700
  "scope": "external",
692
701
  "synonyms": "classify update, pick result, score, running score, verdict",
693
702
  "tier": "domain"
703
+ },
704
+ {
705
+ "description": "Fired once when the round finishes (the advance past the final item) — the standard learning completion broadcast a celebration/progression sibling (fx cues, badges) rides.",
706
+ "event": "LEARN_ROUND_COMPLETE",
707
+ "eventId": "evt_01M0GTSZ2XJ5HY779EQ093CV2M",
708
+ "payloadSchema": [
709
+ {
710
+ "name": "score",
711
+ "type": "number"
712
+ },
713
+ {
714
+ "name": "total",
715
+ "type": "number"
716
+ }
717
+ ],
718
+ "scope": "external",
719
+ "synonyms": "round complete, finished, done, completion",
720
+ "tier": "domain"
694
721
  }
695
722
  ],
696
723
  "entityContract": {
@@ -814,6 +841,24 @@
814
841
  ],
815
842
  "synonyms": "classify update, pick result, score, running score, verdict",
816
843
  "tier": "domain"
844
+ },
845
+ {
846
+ "description": "Fired once when the round finishes (the advance past the final item) — the standard learning completion broadcast a celebration/progression sibling (fx cues, badges) rides.",
847
+ "id": "evt_01M0GTSZ2XJ5HY779EQ093CV2M",
848
+ "key": "LEARN_ROUND_COMPLETE",
849
+ "name": "Learn Round Complete",
850
+ "payloadSchema": [
851
+ {
852
+ "name": "score",
853
+ "type": "number"
854
+ },
855
+ {
856
+ "name": "total",
857
+ "type": "number"
858
+ }
859
+ ],
860
+ "synonyms": "round complete, finished, done, completion",
861
+ "tier": "domain"
817
862
  }
818
863
  ],
819
864
  "states": [
@@ -3837,6 +3882,34 @@
3837
3882
  },
3838
3883
  {
3839
3884
  "effects": [
3885
+ [
3886
+ "if",
3887
+ [
3888
+ "and",
3889
+ [
3890
+ "not",
3891
+ "@config.loopRound"
3892
+ ],
3893
+ [
3894
+ ">=",
3895
+ [
3896
+ "+",
3897
+ "@entity.itemIndex",
3898
+ "@config.orderStride"
3899
+ ],
3900
+ "@entity.totalItems"
3901
+ ]
3902
+ ],
3903
+ [
3904
+ "emit",
3905
+ "LEARN_ROUND_COMPLETE",
3906
+ {
3907
+ "score": "@entity.correctCount",
3908
+ "total": "@entity.totalItems"
3909
+ }
3910
+ ],
3911
+ null
3912
+ ],
3840
3913
  [
3841
3914
  "let",
3842
3915
  [
@@ -64,6 +64,15 @@
64
64
  "parent": "trt_01M0CGJFW9PRAPQTAZS9GBDEVH",
65
65
  "renames": []
66
66
  },
67
+ "evt_01M0GTSZ55B00DB7TJF6M4N2CH": {
68
+ "bakedName": "LEARN_ROUND_COMPLETE",
69
+ "curName": "LEARN_ROUND_COMPLETE",
70
+ "id": "evt_01M0GTSZ55B00DB7TJF6M4N2CH",
71
+ "kind": "event",
72
+ "owner": "workspace",
73
+ "parent": "trt_01M0CGJFW9PRAPQTAZS9GBDEVH",
74
+ "renames": []
75
+ },
67
76
  "orb_01M0CGJFW9KQ380JGA7R8T6ZCR": {
68
77
  "bakedName": "LearnDerivationOrbital",
69
78
  "curName": "LearnDerivationOrbital",
@@ -548,6 +557,24 @@
548
557
  "scope": "external",
549
558
  "synonyms": "derivation update, proof step, derived line, candidate applied, goal reached",
550
559
  "tier": "domain"
560
+ },
561
+ {
562
+ "description": "Fired once when the step that derives the goal fact lands — the standard learning completion broadcast a celebration/progression sibling (fx cues, badges) rides.",
563
+ "event": "LEARN_ROUND_COMPLETE",
564
+ "eventId": "evt_01M0GTSZ55B00DB7TJF6M4N2CH",
565
+ "payloadSchema": [
566
+ {
567
+ "name": "score",
568
+ "type": "number"
569
+ },
570
+ {
571
+ "name": "total",
572
+ "type": "number"
573
+ }
574
+ ],
575
+ "scope": "external",
576
+ "synonyms": "round complete, finished, done, completion, goal reached",
577
+ "tier": "domain"
551
578
  }
552
579
  ],
553
580
  "entityContract": {
@@ -645,6 +672,24 @@
645
672
  ],
646
673
  "synonyms": "derivation update, proof step, derived line, candidate applied, goal reached",
647
674
  "tier": "domain"
675
+ },
676
+ {
677
+ "description": "Fired once when the step that derives the goal fact lands — the standard learning completion broadcast a celebration/progression sibling (fx cues, badges) rides.",
678
+ "id": "evt_01M0GTSZ55B00DB7TJF6M4N2CH",
679
+ "key": "LEARN_ROUND_COMPLETE",
680
+ "name": "Learn Round Complete",
681
+ "payloadSchema": [
682
+ {
683
+ "name": "score",
684
+ "type": "number"
685
+ },
686
+ {
687
+ "name": "total",
688
+ "type": "number"
689
+ }
690
+ ],
691
+ "synonyms": "round complete, finished, done, completion, goal reached",
692
+ "tier": "domain"
648
693
  }
649
694
  ],
650
695
  "states": [
@@ -1377,6 +1422,27 @@
1377
1422
  "set",
1378
1423
  "@entity.narration",
1379
1424
  "@entity.feedback"
1425
+ ],
1426
+ [
1427
+ "if",
1428
+ [
1429
+ "and",
1430
+ "@canDerive",
1431
+ [
1432
+ "==",
1433
+ "@derivedLabel",
1434
+ "@config.goalLabel"
1435
+ ]
1436
+ ],
1437
+ [
1438
+ "emit",
1439
+ "LEARN_ROUND_COMPLETE",
1440
+ {
1441
+ "score": 1.0,
1442
+ "total": 1.0
1443
+ }
1444
+ ],
1445
+ null
1380
1446
  ]
1381
1447
  ]
1382
1448
  ],