@almadar/std 16.235.0 → 16.236.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 (244) hide show
  1. package/behaviors/behaviors-registry.json +4402 -1898
  2. package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +25 -41
  3. package/behaviors/lolo/infra/atoms/std-audit-capture.lolo +0 -5
  4. package/behaviors/lolo/infra/atoms/std-cache-aside.lolo +0 -24
  5. package/behaviors/lolo/infra/atoms/std-circuit-breaker.lolo +1 -17
  6. package/behaviors/lolo/infra/atoms/std-data-erasure.lolo +17 -24
  7. package/behaviors/lolo/infra/atoms/std-data-import.lolo +8 -11
  8. package/behaviors/lolo/infra/atoms/std-game-clock.lolo +2 -0
  9. package/behaviors/lolo/infra/atoms/std-knowledge-loop.lolo +0 -5
  10. package/behaviors/lolo/infra/atoms/std-lifecycle.lolo +3 -1
  11. package/behaviors/lolo/infra/atoms/std-mod-queue.lolo +40 -18
  12. package/behaviors/lolo/infra/atoms/std-notification-preferences.lolo +20 -11
  13. package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +0 -5
  14. package/behaviors/lolo/infra/atoms/std-permission-matrix.lolo +23 -11
  15. package/behaviors/lolo/infra/atoms/std-rate-limiter.lolo +84 -22
  16. package/behaviors/lolo/infra/atoms/std-status-lifecycle.lolo +1 -6
  17. package/behaviors/lolo/ml/atoms/std-graph-builder.lolo +3 -1
  18. package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +0 -4
  19. package/behaviors/lolo/ml/atoms/std-ml-similarity.lolo +0 -4
  20. package/behaviors/lolo/ui/avl/atoms/ui-avl-state-machine.lolo +12 -0
  21. package/behaviors/lolo/ui/core/atoms/std-app-layout.lolo +55 -9
  22. package/behaviors/lolo/ui/core/atoms/std-app-search.lolo +6 -2
  23. package/behaviors/lolo/ui/core/atoms/std-billable-hour.lolo +19 -14
  24. package/behaviors/lolo/ui/core/atoms/std-board.lolo +77 -27
  25. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +44 -28
  26. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +7 -3
  27. package/behaviors/lolo/ui/core/atoms/std-esign-flow.lolo +25 -13
  28. package/behaviors/lolo/ui/core/atoms/std-esign-request.lolo +5 -0
  29. package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +0 -5
  30. package/behaviors/lolo/ui/core/atoms/std-export.lolo +0 -10
  31. package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +7 -3
  32. package/behaviors/lolo/ui/core/atoms/std-form-advanced.lolo +1 -6
  33. package/behaviors/lolo/ui/core/atoms/std-geosearch.lolo +1 -0
  34. package/behaviors/lolo/ui/core/atoms/std-graphs.lolo +20 -4
  35. package/behaviors/lolo/ui/core/atoms/std-import.lolo +0 -5
  36. package/behaviors/lolo/ui/core/atoms/std-list.lolo +46 -32
  37. package/behaviors/lolo/ui/core/atoms/std-modal-editor.lolo +2 -2
  38. package/behaviors/lolo/ui/core/atoms/std-rating-review.lolo +12 -13
  39. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +16 -12
  40. package/behaviors/lolo/ui/core/atoms/std-recurrence.lolo +10 -1
  41. package/behaviors/lolo/ui/core/atoms/std-role-gate.lolo +39 -0
  42. package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +78 -16
  43. package/behaviors/lolo/ui/core/atoms/std-selection.lolo +15 -10
  44. package/behaviors/lolo/ui/core/atoms/std-stats.lolo +5 -5
  45. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +3 -0
  46. package/behaviors/lolo/ui/core/atoms/std-thread.lolo +41 -73
  47. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +20 -11
  48. package/behaviors/lolo/ui/core/atoms/std-vote.lolo +0 -4
  49. package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +3 -3
  50. package/behaviors/lolo/ui/core/atoms/ui-presence.lolo +21 -0
  51. package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +6 -1
  52. package/behaviors/lolo/ui/core/molecules/ui-chart.lolo +11 -1
  53. package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +13 -8
  54. package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +7 -2
  55. package/behaviors/lolo/ui/core/molecules/ui-commit-row.lolo +2 -2
  56. package/behaviors/lolo/ui/core/molecules/ui-confirm-dialog.lolo +8 -0
  57. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +41 -3
  58. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +41 -3
  59. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +30 -9
  60. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +8 -3
  61. package/behaviors/lolo/ui/core/molecules/ui-document-viewer.lolo +6 -1
  62. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +13 -0
  63. package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +6 -1
  64. package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +6 -1
  65. package/behaviors/lolo/ui/core/molecules/ui-form-actions.lolo +6 -1
  66. package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +6 -1
  67. package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +6 -1
  68. package/behaviors/lolo/ui/core/molecules/ui-meter.lolo +6 -1
  69. package/behaviors/lolo/ui/core/molecules/ui-modal.lolo +5 -0
  70. package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +11 -1
  71. package/behaviors/lolo/ui/core/molecules/ui-page-transition.lolo +1 -1
  72. package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +44 -15
  73. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +41 -3
  74. package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +8 -2
  75. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +66 -12
  76. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +9 -3
  77. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +9 -3
  78. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +18 -9
  79. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +55 -10
  80. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +55 -10
  81. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +8 -3
  82. package/behaviors/lolo/ui/core/organisms/ui-state-machine-view.lolo +12 -0
  83. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +8 -3
  84. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +2 -44
  85. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +6 -1
  86. package/behaviors/lolo/ui/core/templates/ui-generic-app-template.lolo +2 -37
  87. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +8 -2
  88. package/behaviors/lolo/ui/game/organisms/std-arcade-board-3d.lolo +2 -2
  89. package/behaviors/lolo/ui/game/organisms/std-crew-board-2d.lolo +0 -4
  90. package/behaviors/lolo/ui/game/organisms/std-platformer-puzzle.lolo +2 -66
  91. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +0 -4
  92. package/behaviors/lolo/ui/game/organisms/std-worldmap-board-2d.lolo +0 -4
  93. package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +6 -6
  94. package/behaviors/lolo-behavior-contracts.json +1 -1
  95. package/behaviors/registry/factory-signatures.json +1 -1
  96. package/behaviors/registry/infra/atoms/std-approval-gate.orb +124 -67
  97. package/behaviors/registry/infra/atoms/std-audit-capture.orb +0 -8
  98. package/behaviors/registry/infra/atoms/std-cache-aside.orb +0 -84
  99. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +1 -44
  100. package/behaviors/registry/infra/atoms/std-data-erasure.orb +124 -55
  101. package/behaviors/registry/infra/atoms/std-data-import.orb +12 -11
  102. package/behaviors/registry/infra/atoms/std-game-clock.orb +31 -0
  103. package/behaviors/registry/infra/atoms/std-knowledge-loop.orb +0 -57
  104. package/behaviors/registry/infra/atoms/std-lifecycle.orb +43 -0
  105. package/behaviors/registry/infra/atoms/std-mod-queue.orb +379 -103
  106. package/behaviors/registry/infra/atoms/std-notification-preferences.orb +126 -12
  107. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +0 -11
  108. package/behaviors/registry/infra/atoms/std-permission-matrix.orb +128 -12
  109. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +287 -72
  110. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +5 -8
  111. package/behaviors/registry/ml/atoms/std-graph-builder.orb +11 -0
  112. package/behaviors/registry/ml/atoms/std-ml-classify.orb +0 -7
  113. package/behaviors/registry/ml/atoms/std-ml-similarity.orb +0 -7
  114. package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +82 -0
  115. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +417 -9
  116. package/behaviors/registry/ui/core/atoms/std-app-search.orb +53 -1
  117. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +209 -19
  118. package/behaviors/registry/ui/core/atoms/std-board.orb +242 -61
  119. package/behaviors/registry/ui/core/atoms/std-browse.orb +295 -41
  120. package/behaviors/registry/ui/core/atoms/std-calendar.orb +96 -2
  121. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +122 -15
  122. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +11 -0
  123. package/behaviors/registry/ui/core/atoms/std-event-log.orb +0 -8
  124. package/behaviors/registry/ui/core/atoms/std-export.orb +0 -16
  125. package/behaviors/registry/ui/core/atoms/std-file-store.orb +109 -2
  126. package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -43
  127. package/behaviors/registry/ui/core/atoms/std-geosearch.orb +5 -0
  128. package/behaviors/registry/ui/core/atoms/std-graphs.orb +173 -66
  129. package/behaviors/registry/ui/core/atoms/std-import.orb +0 -8
  130. package/behaviors/registry/ui/core/atoms/std-list.orb +226 -34
  131. package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +10 -1
  132. package/behaviors/registry/ui/core/atoms/std-rating-review.orb +37 -19
  133. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +204 -11
  134. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +89 -4
  135. package/behaviors/registry/ui/core/atoms/std-role-gate.orb +217 -0
  136. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +419 -19
  137. package/behaviors/registry/ui/core/atoms/std-selection.orb +140 -10
  138. package/behaviors/registry/ui/core/atoms/std-stats.orb +73 -1
  139. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +3 -0
  140. package/behaviors/registry/ui/core/atoms/std-thread.orb +190 -115
  141. package/behaviors/registry/ui/core/atoms/std-version-history.orb +127 -13
  142. package/behaviors/registry/ui/core/atoms/std-vote.orb +0 -9
  143. package/behaviors/registry/ui/core/atoms/std-wizard.orb +33 -3
  144. package/behaviors/registry/ui/core/atoms/ui-presence.orb +59 -0
  145. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +53 -1
  146. package/behaviors/registry/ui/core/molecules/ui-chart.orb +68 -1
  147. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +291 -8
  148. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +87 -2
  149. package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +3 -2
  150. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +32 -0
  151. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +189 -3
  152. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +189 -3
  153. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +81 -24
  154. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +121 -3
  155. package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +53 -1
  156. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +40 -0
  157. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +53 -1
  158. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +53 -1
  159. package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +53 -1
  160. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +53 -1
  161. package/behaviors/registry/ui/core/molecules/ui-menu.orb +57 -1
  162. package/behaviors/registry/ui/core/molecules/ui-meter.orb +53 -1
  163. package/behaviors/registry/ui/core/molecules/ui-modal.orb +8 -0
  164. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +60 -1
  165. package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +1 -1
  166. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +393 -23
  167. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +189 -3
  168. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +99 -2
  169. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +282 -20
  170. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +130 -3
  171. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +130 -3
  172. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +367 -9
  173. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +104 -13
  174. package/behaviors/registry/ui/core/organisms/ui-form.orb +104 -13
  175. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +121 -3
  176. package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +82 -0
  177. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +121 -3
  178. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -172
  179. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +53 -1
  180. package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -116
  181. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +99 -2
  182. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +10 -0
  183. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +0 -7
  184. package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +1 -807
  185. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +0 -7
  186. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +0 -7
  187. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +6 -0
  188. package/canonical-operators.json +18 -1
  189. package/dist/behaviors/exports-reader.js +7662 -3762
  190. package/dist/behaviors/functions/index.d.ts +309 -104
  191. package/dist/behaviors/functions/index.js +7651 -3762
  192. package/dist/behaviors/index.d.ts +1 -1
  193. package/dist/behaviors/index.js +7663 -3763
  194. package/dist/behaviors/query.js +7662 -3762
  195. package/dist/behaviors-embeddings.hash.json +3 -3
  196. package/dist/behaviors-embeddings.json +35 -27
  197. package/dist/behaviors-registry.json +4402 -1898
  198. package/dist/index.d.ts +3 -3
  199. package/dist/index.js +7680 -3763
  200. package/dist/knob-embeddings.hash.json +3 -3
  201. package/dist/knob-embeddings.json +612 -352
  202. package/dist/modules/anim.d.ts +1 -1
  203. package/dist/modules/array.d.ts +1 -1
  204. package/dist/modules/array.js +15 -0
  205. package/dist/modules/async.d.ts +1 -1
  206. package/dist/modules/behavior.d.ts +1 -1
  207. package/dist/modules/browser.d.ts +1 -1
  208. package/dist/modules/composition.d.ts +1 -1
  209. package/dist/modules/contract.d.ts +1 -1
  210. package/dist/modules/core.d.ts +1 -1
  211. package/dist/modules/core.js +2 -0
  212. package/dist/modules/data.d.ts +1 -1
  213. package/dist/modules/ease.d.ts +1 -1
  214. package/dist/modules/format.d.ts +1 -1
  215. package/dist/modules/geo.d.ts +1 -1
  216. package/dist/modules/graph.d.ts +1 -1
  217. package/dist/modules/grid.d.ts +1 -1
  218. package/dist/modules/index.d.ts +1 -1
  219. package/dist/modules/index.js +17 -0
  220. package/dist/modules/integration.d.ts +1 -1
  221. package/dist/modules/json.d.ts +1 -1
  222. package/dist/modules/llm.d.ts +1 -1
  223. package/dist/modules/math.d.ts +1 -1
  224. package/dist/modules/memory.d.ts +1 -1
  225. package/dist/modules/nn.d.ts +1 -1
  226. package/dist/modules/noise.d.ts +1 -1
  227. package/dist/modules/object.d.ts +1 -1
  228. package/dist/modules/os.d.ts +1 -1
  229. package/dist/modules/path.d.ts +1 -1
  230. package/dist/modules/prob.d.ts +1 -1
  231. package/dist/modules/session.d.ts +1 -1
  232. package/dist/modules/str.d.ts +1 -1
  233. package/dist/modules/tensor.d.ts +1 -1
  234. package/dist/modules/time.d.ts +1 -1
  235. package/dist/modules/trace.d.ts +1 -1
  236. package/dist/modules/train.d.ts +1 -1
  237. package/dist/modules/validate.d.ts +1 -1
  238. package/dist/modules/vector.d.ts +1 -1
  239. package/dist/modules/workspace.d.ts +1 -1
  240. package/dist/registry/factory-signatures.json +1 -1
  241. package/dist/registry.d.ts +2 -2
  242. package/dist/registry.js +17 -0
  243. package/dist/{types-Ggla7OK7.d.ts → types-DLx38UFZ.d.ts} +23 -3
  244. package/package.json +2 -2
@@ -172,6 +172,14 @@
172
172
  "required": false,
173
173
  "type": "string"
174
174
  },
175
+ "roles": {
176
+ "items": {
177
+ "type": "string"
178
+ },
179
+ "name": "roles",
180
+ "required": false,
181
+ "type": "array"
182
+ },
175
183
  "variant": {
176
184
  "name": "variant",
177
185
  "required": false,
@@ -270,6 +278,13 @@
270
278
  "label": "Title",
271
279
  "tier": "presentation",
272
280
  "type": "string"
281
+ },
282
+ "viewerRole": {
283
+ "default": "",
284
+ "description": "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show.",
285
+ "label": "Viewer's role",
286
+ "tier": "policy",
287
+ "type": "string"
273
288
  }
274
289
  },
275
290
  "effectRow": [
@@ -414,7 +429,40 @@
414
429
  "error": "@config.error",
415
430
  "fields": "@config.fields",
416
431
  "isLoading": "@config.isLoading",
417
- "itemActions": "@config.itemActions",
432
+ "itemActions": [
433
+ "array/filter",
434
+ "@config.itemActions",
435
+ [
436
+ "fn",
437
+ "action",
438
+ [
439
+ "or",
440
+ [
441
+ "=",
442
+ [
443
+ "array/len",
444
+ [
445
+ "object/get",
446
+ "@action",
447
+ "roles",
448
+ []
449
+ ]
450
+ ],
451
+ 0.0
452
+ ],
453
+ [
454
+ "array/includes",
455
+ [
456
+ "object/get",
457
+ "@action",
458
+ "roles",
459
+ []
460
+ ],
461
+ "@config.viewerRole"
462
+ ]
463
+ ]
464
+ ]
465
+ ],
418
466
  "items": "@config.items",
419
467
  "look": "@config.look",
420
468
  "title": "@config.title",
@@ -439,7 +487,40 @@
439
487
  "error": "@config.error",
440
488
  "fields": "@config.fields",
441
489
  "isLoading": "@config.isLoading",
442
- "itemActions": "@config.itemActions",
490
+ "itemActions": [
491
+ "array/filter",
492
+ "@config.itemActions",
493
+ [
494
+ "fn",
495
+ "action",
496
+ [
497
+ "or",
498
+ [
499
+ "=",
500
+ [
501
+ "array/len",
502
+ [
503
+ "object/get",
504
+ "@action",
505
+ "roles",
506
+ []
507
+ ]
508
+ ],
509
+ 0.0
510
+ ],
511
+ [
512
+ "array/includes",
513
+ [
514
+ "object/get",
515
+ "@action",
516
+ "roles",
517
+ []
518
+ ],
519
+ "@config.viewerRole"
520
+ ]
521
+ ]
522
+ ]
523
+ ],
443
524
  "items": "@config.items",
444
525
  "look": "@config.look",
445
526
  "title": "@config.title",
@@ -467,7 +548,40 @@
467
548
  "error": "@config.error",
468
549
  "fields": "@config.fields",
469
550
  "isLoading": "@config.isLoading",
470
- "itemActions": "@config.itemActions",
551
+ "itemActions": [
552
+ "array/filter",
553
+ "@config.itemActions",
554
+ [
555
+ "fn",
556
+ "action",
557
+ [
558
+ "or",
559
+ [
560
+ "=",
561
+ [
562
+ "array/len",
563
+ [
564
+ "object/get",
565
+ "@action",
566
+ "roles",
567
+ []
568
+ ]
569
+ ],
570
+ 0.0
571
+ ],
572
+ [
573
+ "array/includes",
574
+ [
575
+ "object/get",
576
+ "@action",
577
+ "roles",
578
+ []
579
+ ],
580
+ "@config.viewerRole"
581
+ ]
582
+ ]
583
+ ]
584
+ ],
471
585
  "items": "@config.items",
472
586
  "look": "@config.look",
473
587
  "title": "@config.title",
@@ -521,6 +635,10 @@
521
635
  {
522
636
  "name": "variant",
523
637
  "type": "string"
638
+ },
639
+ {
640
+ "name": "roles",
641
+ "type": "[string]"
524
642
  }
525
643
  ],
526
644
  "TimelineItemsItem": [
@@ -46,15 +46,6 @@
46
46
  "parent": "trt_01KXG04TAATRX8PKKYZ2W1WQ3K",
47
47
  "renames": []
48
48
  },
49
- "evt_01KXG04TADXBY5RKKJ8HPNBXBQ": {
50
- "bakedName": "CounterTemplateLoaded",
51
- "curName": "CounterTemplateLoaded",
52
- "id": "evt_01KXG04TADXBY5RKKJ8HPNBXBQ",
53
- "kind": "event",
54
- "owner": "workspace",
55
- "parent": "trt_01KXG04TAATRX8PKKYZ2W1WQ3K",
56
- "renames": []
57
- },
58
49
  "orb_01KXG04TAAS05A5AT0PK9N6VAR": {
59
50
  "bakedName": "CounterTemplateOrbital",
60
51
  "curName": "CounterTemplateOrbital",
@@ -194,13 +185,6 @@
194
185
  "tier": "presentation",
195
186
  "type": "event"
196
187
  },
197
- "selfFetch": {
198
- "default": true,
199
- "description": "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's.",
200
- "label": "Fetch its own rows on mount?",
201
- "tier": "internal",
202
- "type": "boolean"
203
- },
204
188
  "showReset": {
205
189
  "default": true,
206
190
  "description": "Show reset button",
@@ -274,52 +258,6 @@
274
258
  "eventId": "evt_01KXG04TADKWPZVDR2YXHJ9EQX",
275
259
  "scope": "external",
276
260
  "tier": "essential"
277
- },
278
- {
279
- "description": "CounterTemplate rows finished loading; payload.data holds the collection.",
280
- "event": "CounterTemplateLoaded",
281
- "eventId": "evt_01KXG04TADXBY5RKKJ8HPNBXBQ",
282
- "payloadSchema": [
283
- {
284
- "entity": "CounterTemplateItem",
285
- "name": "data",
286
- "properties": [
287
- {
288
- "name": "id",
289
- "required": true,
290
- "type": "string"
291
- },
292
- {
293
- "name": "count",
294
- "type": "number"
295
- },
296
- {
297
- "name": "decrementDisabled",
298
- "type": "boolean"
299
- },
300
- {
301
- "name": "incrementDisabled",
302
- "type": "boolean"
303
- },
304
- {
305
- "name": "decrementLabel",
306
- "type": "string"
307
- },
308
- {
309
- "name": "incrementLabel",
310
- "type": "string"
311
- },
312
- {
313
- "name": "rangeText",
314
- "type": "string"
315
- }
316
- ],
317
- "type": "[object]"
318
- }
319
- ],
320
- "scope": "internal",
321
- "synonyms": "loaded, fetched, retrieved",
322
- "tier": "essential"
323
261
  }
324
262
  ],
325
263
  "entityContract": {
@@ -342,52 +280,6 @@
342
280
  "key": "INIT",
343
281
  "name": "Initialize"
344
282
  },
345
- {
346
- "description": "CounterTemplate rows finished loading; payload.data holds the collection.",
347
- "id": "evt_01KXG04TADXBY5RKKJ8HPNBXBQ",
348
- "key": "CounterTemplateLoaded",
349
- "name": "Counter template loaded",
350
- "payloadSchema": [
351
- {
352
- "entity": "CounterTemplateItem",
353
- "name": "data",
354
- "properties": [
355
- {
356
- "name": "id",
357
- "required": true,
358
- "type": "string"
359
- },
360
- {
361
- "name": "count",
362
- "type": "number"
363
- },
364
- {
365
- "name": "decrementDisabled",
366
- "type": "boolean"
367
- },
368
- {
369
- "name": "incrementDisabled",
370
- "type": "boolean"
371
- },
372
- {
373
- "name": "decrementLabel",
374
- "type": "string"
375
- },
376
- {
377
- "name": "incrementLabel",
378
- "type": "string"
379
- },
380
- {
381
- "name": "rangeText",
382
- "type": "string"
383
- }
384
- ],
385
- "type": "[object]"
386
- }
387
- ],
388
- "synonyms": "loaded, fetched, retrieved",
389
- "tier": "essential"
390
- },
391
283
  {
392
284
  "description": "Called when increment is clicked",
393
285
  "id": "evt_01KXG04TADGEMAVSQP576EWT36",
@@ -422,11 +314,7 @@
422
314
  [
423
315
  "fetch",
424
316
  "CounterTemplateItem",
425
- {
426
- "emit": {
427
- "success": "CounterTemplateLoaded"
428
- }
429
- }
317
+ {}
430
318
  ],
431
319
  [
432
320
  "render-ui",
@@ -451,65 +339,6 @@
451
339
  "event": "INIT",
452
340
  "eventId": "evt_01KXG04TAAZBPQE4K43H6GG762",
453
341
  "from": "idle",
454
- "guard": "@config.selfFetch",
455
- "to": "idle"
456
- },
457
- {
458
- "effects": [
459
- [
460
- "render-ui",
461
- "main",
462
- {
463
- "className": "@config.className",
464
- "decrementEvent": "@config.decrementEvent",
465
- "entity": "@entity",
466
- "incrementEvent": "@config.incrementEvent",
467
- "onDecrement": "@config.onDecrement",
468
- "onIncrement": "@config.onIncrement",
469
- "onReset": "@config.onReset",
470
- "resetEvent": "@config.resetEvent",
471
- "showReset": "@config.showReset",
472
- "size": "@config.size",
473
- "title": "@config.title",
474
- "type": "counter-template",
475
- "variant": "@config.variant"
476
- }
477
- ]
478
- ],
479
- "event": "INIT",
480
- "eventId": "evt_01KXG04TAAZBPQE4K43H6GG762",
481
- "from": "idle",
482
- "guard": [
483
- "not",
484
- "@config.selfFetch"
485
- ],
486
- "to": "idle"
487
- },
488
- {
489
- "effects": [
490
- [
491
- "render-ui",
492
- "main",
493
- {
494
- "className": "@config.className",
495
- "decrementEvent": "@config.decrementEvent",
496
- "entity": "@payload.data",
497
- "incrementEvent": "@config.incrementEvent",
498
- "onDecrement": "@config.onDecrement",
499
- "onIncrement": "@config.onIncrement",
500
- "onReset": "@config.onReset",
501
- "resetEvent": "@config.resetEvent",
502
- "showReset": "@config.showReset",
503
- "size": "@config.size",
504
- "title": "@config.title",
505
- "type": "counter-template",
506
- "variant": "@config.variant"
507
- }
508
- ]
509
- ],
510
- "event": "CounterTemplateLoaded",
511
- "eventId": "evt_01KXG04TADXBY5RKKJ8HPNBXBQ",
512
- "from": "idle",
513
342
  "to": "idle"
514
343
  }
515
344
  ]
@@ -331,6 +331,14 @@
331
331
  "required": false,
332
332
  "type": "string"
333
333
  },
334
+ "roles": {
335
+ "items": {
336
+ "type": "string"
337
+ },
338
+ "name": "roles",
339
+ "required": false,
340
+ "type": "array"
341
+ },
334
342
  "variant": {
335
343
  "name": "variant",
336
344
  "required": false,
@@ -370,6 +378,13 @@
370
378
  },
371
379
  "tier": "presentation",
372
380
  "type": "DashboardLayoutUser"
381
+ },
382
+ "viewerRole": {
383
+ "default": "",
384
+ "description": "The viewer's role that each action's `roles` is checked against; bind it at the call site (e.g. `viewerRole: @user.role`). Empty = only actions with no `roles` show.",
385
+ "label": "Viewer's role",
386
+ "tier": "policy",
387
+ "type": "string"
373
388
  }
374
389
  },
375
390
  "effectRow": [
@@ -517,7 +532,40 @@
517
532
  "showThemeToggle": "@config.showThemeToggle",
518
533
  "sidebarContent": "@config.sidebarContent",
519
534
  "sidebarFooter": "@config.sidebarFooter",
520
- "topBarActions": "@config.topBarActions",
535
+ "topBarActions": [
536
+ "array/filter",
537
+ "@config.topBarActions",
538
+ [
539
+ "fn",
540
+ "action",
541
+ [
542
+ "or",
543
+ [
544
+ "=",
545
+ [
546
+ "array/len",
547
+ [
548
+ "object/get",
549
+ "@action",
550
+ "roles",
551
+ []
552
+ ]
553
+ ],
554
+ 0.0
555
+ ],
556
+ [
557
+ "array/includes",
558
+ [
559
+ "object/get",
560
+ "@action",
561
+ "roles",
562
+ []
563
+ ],
564
+ "@config.viewerRole"
565
+ ]
566
+ ]
567
+ ]
568
+ ],
521
569
  "type": "dashboard-layout",
522
570
  "user": "@config.user"
523
571
  }
@@ -631,6 +679,10 @@
631
679
  {
632
680
  "name": "variant",
633
681
  "type": "string"
682
+ },
683
+ {
684
+ "name": "roles",
685
+ "type": "[string]"
634
686
  }
635
687
  ],
636
688
  "DashboardLayoutUser": [
@@ -19,15 +19,6 @@
19
19
  "parent": "trt_01KXG04TDBVMKKGGKC4SF9M7JS",
20
20
  "renames": []
21
21
  },
22
- "evt_01KXG04TDEP7KJSJF4M4V70Q4J": {
23
- "bakedName": "GenericAppTemplateLoaded",
24
- "curName": "GenericAppTemplateLoaded",
25
- "id": "evt_01KXG04TDEP7KJSJF4M4V70Q4J",
26
- "kind": "event",
27
- "owner": "workspace",
28
- "parent": "trt_01KXG04TDBVMKKGGKC4SF9M7JS",
29
- "renames": []
30
- },
31
22
  "orb_01KXG04TDB3TJHM94ZTY58DP7F": {
32
23
  "bakedName": "GenericAppTemplateOrbital",
33
24
  "curName": "GenericAppTemplateOrbital",
@@ -113,13 +104,6 @@
113
104
  "tier": "presentation",
114
105
  "type": "node"
115
106
  },
116
- "selfFetch": {
117
- "default": true,
118
- "description": "true (default) = standalone mount self-populates on INIT. false = a composing atom owns the fetch and routes its loaded event here — suppresses the wrapper's own un-hydrated fetch so it cannot race the composer's.",
119
- "label": "Fetch its own rows on mount?",
120
- "tier": "internal",
121
- "type": "boolean"
122
- },
123
107
  "subtitle": {
124
108
  "description": "Subtitle or description",
125
109
  "label": "Subtitle",
@@ -144,30 +128,6 @@
144
128
  "resource": "main"
145
129
  }
146
130
  ],
147
- "emits": [
148
- {
149
- "description": "GenericAppTemplate rows finished loading; payload.data holds the collection.",
150
- "event": "GenericAppTemplateLoaded",
151
- "eventId": "evt_01KXG04TDEP7KJSJF4M4V70Q4J",
152
- "payloadSchema": [
153
- {
154
- "entity": "GenericAppTemplateItem",
155
- "name": "data",
156
- "properties": [
157
- {
158
- "name": "id",
159
- "required": true,
160
- "type": "string"
161
- }
162
- ],
163
- "type": "[object]"
164
- }
165
- ],
166
- "scope": "internal",
167
- "synonyms": "loaded, fetched, retrieved",
168
- "tier": "essential"
169
- }
170
- ],
171
131
  "entityContract": {
172
132
  "provides": [],
173
133
  "requires": []
@@ -187,28 +147,6 @@
187
147
  "id": "evt_01KXG04TDBE232FYBJ4V8RCY1J",
188
148
  "key": "INIT",
189
149
  "name": "Initialize"
190
- },
191
- {
192
- "description": "GenericAppTemplate rows finished loading; payload.data holds the collection.",
193
- "id": "evt_01KXG04TDEP7KJSJF4M4V70Q4J",
194
- "key": "GenericAppTemplateLoaded",
195
- "name": "Generic app template loaded",
196
- "payloadSchema": [
197
- {
198
- "entity": "GenericAppTemplateItem",
199
- "name": "data",
200
- "properties": [
201
- {
202
- "name": "id",
203
- "required": true,
204
- "type": "string"
205
- }
206
- ],
207
- "type": "[object]"
208
- }
209
- ],
210
- "synonyms": "loaded, fetched, retrieved",
211
- "tier": "essential"
212
150
  }
213
151
  ],
214
152
  "states": [
@@ -223,11 +161,7 @@
223
161
  [
224
162
  "fetch",
225
163
  "GenericAppTemplateItem",
226
- {
227
- "emit": {
228
- "success": "GenericAppTemplateLoaded"
229
- }
230
- }
164
+ {}
231
165
  ],
232
166
  [
233
167
  "render-ui",
@@ -247,55 +181,6 @@
247
181
  "event": "INIT",
248
182
  "eventId": "evt_01KXG04TDBE232FYBJ4V8RCY1J",
249
183
  "from": "idle",
250
- "guard": "@config.selfFetch",
251
- "to": "idle"
252
- },
253
- {
254
- "effects": [
255
- [
256
- "render-ui",
257
- "main",
258
- {
259
- "children": "@config.children",
260
- "className": "@config.className",
261
- "entity": "@entity",
262
- "footer": "@config.footer",
263
- "headerActions": "@config.headerActions",
264
- "subtitle": "@config.subtitle",
265
- "title": "@config.title",
266
- "type": "generic-app-template"
267
- }
268
- ]
269
- ],
270
- "event": "INIT",
271
- "eventId": "evt_01KXG04TDBE232FYBJ4V8RCY1J",
272
- "from": "idle",
273
- "guard": [
274
- "not",
275
- "@config.selfFetch"
276
- ],
277
- "to": "idle"
278
- },
279
- {
280
- "effects": [
281
- [
282
- "render-ui",
283
- "main",
284
- {
285
- "children": "@config.children",
286
- "className": "@config.className",
287
- "entity": "@payload.data",
288
- "footer": "@config.footer",
289
- "headerActions": "@config.headerActions",
290
- "subtitle": "@config.subtitle",
291
- "title": "@config.title",
292
- "type": "generic-app-template"
293
- }
294
- ]
295
- ],
296
- "event": "GenericAppTemplateLoaded",
297
- "eventId": "evt_01KXG04TDEP7KJSJF4M4V70Q4J",
298
- "from": "idle",
299
184
  "to": "idle"
300
185
  }
301
186
  ]