@almadar/std 16.234.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 (245) 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 +7697 -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/async.js +9 -0
  207. package/dist/modules/behavior.d.ts +1 -1
  208. package/dist/modules/browser.d.ts +1 -1
  209. package/dist/modules/composition.d.ts +1 -1
  210. package/dist/modules/contract.d.ts +1 -1
  211. package/dist/modules/core.d.ts +1 -1
  212. package/dist/modules/core.js +10 -0
  213. package/dist/modules/data.d.ts +1 -1
  214. package/dist/modules/ease.d.ts +1 -1
  215. package/dist/modules/format.d.ts +1 -1
  216. package/dist/modules/geo.d.ts +1 -1
  217. package/dist/modules/graph.d.ts +1 -1
  218. package/dist/modules/grid.d.ts +1 -1
  219. package/dist/modules/index.d.ts +1 -1
  220. package/dist/modules/index.js +34 -0
  221. package/dist/modules/integration.d.ts +1 -1
  222. package/dist/modules/json.d.ts +1 -1
  223. package/dist/modules/llm.d.ts +1 -1
  224. package/dist/modules/math.d.ts +1 -1
  225. package/dist/modules/memory.d.ts +1 -1
  226. package/dist/modules/nn.d.ts +1 -1
  227. package/dist/modules/noise.d.ts +1 -1
  228. package/dist/modules/object.d.ts +1 -1
  229. package/dist/modules/os.d.ts +1 -1
  230. package/dist/modules/path.d.ts +1 -1
  231. package/dist/modules/prob.d.ts +1 -1
  232. package/dist/modules/session.d.ts +1 -1
  233. package/dist/modules/str.d.ts +1 -1
  234. package/dist/modules/tensor.d.ts +1 -1
  235. package/dist/modules/time.d.ts +1 -1
  236. package/dist/modules/trace.d.ts +1 -1
  237. package/dist/modules/train.d.ts +1 -1
  238. package/dist/modules/validate.d.ts +1 -1
  239. package/dist/modules/vector.d.ts +1 -1
  240. package/dist/modules/workspace.d.ts +1 -1
  241. package/dist/registry/factory-signatures.json +1 -1
  242. package/dist/registry.d.ts +5 -2
  243. package/dist/registry.js +55 -1
  244. package/dist/{types-DwAW4Nni.d.ts → types-DLx38UFZ.d.ts} +31 -4
  245. package/package.json +2 -2
@@ -401,6 +401,71 @@
401
401
  "traits": [
402
402
  {
403
403
  "category": "interaction",
404
+ "config": {
405
+ "itemActions": {
406
+ "default": [
407
+ {
408
+ "event": "RESEND_REQUEST",
409
+ "label": "Resend",
410
+ "variant": "primary"
411
+ },
412
+ {
413
+ "event": "REQUEST_DELETE",
414
+ "label": "Cancel",
415
+ "variant": "danger"
416
+ },
417
+ {
418
+ "event": "CHECK_ENVELOPE_STATUS",
419
+ "label": "Refresh status",
420
+ "variant": "secondary"
421
+ }
422
+ ],
423
+ "description": "Actions offered on each row; give an item `roles` to show it only to those viewer roles.",
424
+ "items": {
425
+ "properties": {
426
+ "event": {
427
+ "name": "event",
428
+ "required": false,
429
+ "type": "event"
430
+ },
431
+ "label": {
432
+ "name": "label",
433
+ "required": true,
434
+ "type": "string"
435
+ },
436
+ "roles": {
437
+ "items": {
438
+ "type": "string"
439
+ },
440
+ "name": "roles",
441
+ "required": false,
442
+ "type": "array"
443
+ },
444
+ "variant": {
445
+ "name": "variant",
446
+ "required": false,
447
+ "type": "string"
448
+ },
449
+ "when": {
450
+ "name": "when",
451
+ "required": false,
452
+ "type": "object"
453
+ }
454
+ },
455
+ "type": "object"
456
+ },
457
+ "label": "Row actions",
458
+ "tier": "presentation",
459
+ "type": "[ItemAction]"
460
+ },
461
+ "viewerRole": {
462
+ "default": "",
463
+ "description": "The signed-in viewer's role that each action's `roles` is checked against. Bind it explicitly at the call site (e.g. `viewerRole: @user.role`) in an app whose identity carries a role; left empty, only actions with no `roles` show.",
464
+ "label": "Viewer's role",
465
+ "tier": "policy",
466
+ "type": "string"
467
+ }
468
+ },
404
469
  "effectRow": [
405
470
  {
406
471
  "kind": "fetch",
@@ -1193,21 +1258,38 @@
1193
1258
  }
1194
1259
  ],
1195
1260
  "itemActions": [
1196
- {
1197
- "event": "RESEND_REQUEST",
1198
- "label": "Resend",
1199
- "variant": "primary"
1200
- },
1201
- {
1202
- "event": "REQUEST_DELETE",
1203
- "label": "Cancel",
1204
- "variant": "danger"
1205
- },
1206
- {
1207
- "event": "CHECK_ENVELOPE_STATUS",
1208
- "label": "Refresh status",
1209
- "variant": "secondary"
1210
- }
1261
+ "array/filter",
1262
+ "@config.itemActions",
1263
+ [
1264
+ "fn",
1265
+ "action",
1266
+ [
1267
+ "or",
1268
+ [
1269
+ "=",
1270
+ [
1271
+ "array/len",
1272
+ [
1273
+ "object/get",
1274
+ "@action",
1275
+ "roles",
1276
+ []
1277
+ ]
1278
+ ],
1279
+ 0.0
1280
+ ],
1281
+ [
1282
+ "array/includes",
1283
+ [
1284
+ "object/get",
1285
+ "@action",
1286
+ "roles",
1287
+ []
1288
+ ],
1289
+ "@config.viewerRole"
1290
+ ]
1291
+ ]
1292
+ ]
1211
1293
  ],
1212
1294
  "type": "data-grid"
1213
1295
  }
@@ -2423,6 +2505,31 @@
2423
2505
  }
2424
2506
  }
2425
2507
  ],
2508
+ "types": {
2509
+ "ItemAction": [
2510
+ {
2511
+ "name": "label",
2512
+ "required": true,
2513
+ "type": "string"
2514
+ },
2515
+ {
2516
+ "name": "event",
2517
+ "type": "event"
2518
+ },
2519
+ {
2520
+ "name": "variant",
2521
+ "type": "string"
2522
+ },
2523
+ {
2524
+ "name": "roles",
2525
+ "type": "[string]"
2526
+ },
2527
+ {
2528
+ "name": "when",
2529
+ "type": "SExpr"
2530
+ }
2531
+ ]
2532
+ },
2426
2533
  "uses": [
2427
2534
  {
2428
2535
  "as": "StoredFile",
@@ -273,6 +273,10 @@
273
273
  "look": {
274
274
  "default": "@config.tableLook",
275
275
  "type": "unknown"
276
+ },
277
+ "viewerRole": {
278
+ "default": "@config.viewerRole",
279
+ "type": "unknown"
276
280
  }
277
281
  },
278
282
  "id": "trt_01KXZ44YADY8TSA72HC2HVFCWN",
@@ -325,6 +329,13 @@
325
329
  "label": "Section title",
326
330
  "tier": "presentation",
327
331
  "type": "string"
332
+ },
333
+ "viewerRole": {
334
+ "default": "",
335
+ "description": "The signed-in viewer's role that each action's `roles` is checked against. Bind it explicitly at the call site (e.g. `viewerRole: @user.role`) in an app whose identity carries a role; left empty, only actions with no `roles` show.",
336
+ "label": "Viewer's role",
337
+ "tier": "policy",
338
+ "type": "string"
328
339
  }
329
340
  },
330
341
  "effectRow": [
@@ -412,14 +412,6 @@
412
412
  "tile-image-first"
413
413
  ]
414
414
  },
415
- "displayPageSize": {
416
- "default": 20.0,
417
- "description": "Page size a consumer-composed std-pagination control should use to compute total pages (e.g. from totalCount). This atom's own timeline pattern has no built-in pager UI, so this knob is informational for the composed control, not consumed by the timeline itself.",
418
- "label": "How many entries per page should a pager show?",
419
- "synonyms": "visible rows, items per page, display limit",
420
- "tier": "presentation",
421
- "type": "number"
422
- },
423
415
  "filterBarLook": {
424
416
  "default": "toolbar",
425
417
  "description": "Visual treatment for the embedded filter bar, mirroring std-filter's own enum. Only applies when `filters` is non-empty.",
@@ -182,14 +182,6 @@
182
182
  "tier": "presentation",
183
183
  "type": "string"
184
184
  },
185
- "event": {
186
- "default": "EXPORT_REQUESTED",
187
- "description": "Event emitted when the user picks a format. Each entry in formats[] carries its own literal event field (no per-item templating in .lolo) — overriding this alone does not retarget the click; also set formats[].event to match.",
188
- "label": "Export event",
189
- "synonyms": "bus event name. internal wiring; users rarely target directly",
190
- "tier": "internal",
191
- "type": "string"
192
- },
193
185
  "formats": {
194
186
  "default": [
195
187
  {
@@ -246,14 +238,6 @@
246
238
  "synonyms": "list of export format entries (csv / xlsx / pdf / png / json). user phrases: 'only CSV' -> keep only csv entry; 'add JSON' -> append json entry; 'no PNG' -> remove png; 'allow X and Y' -> set the array to those two",
247
239
  "tier": "presentation",
248
240
  "type": "[FormatOption]"
249
- },
250
- "tileId": {
251
- "default": "",
252
- "description": "Identifier of the dashboard tile being exported",
253
- "label": "Tile id",
254
- "synonyms": "internal identifier — host orbital wires this; users rarely set it directly",
255
- "tier": "internal",
256
- "type": "string"
257
241
  }
258
242
  },
259
243
  "effectRow": [
@@ -237,6 +237,14 @@
237
237
  "required": true,
238
238
  "type": "string"
239
239
  },
240
+ "roles": {
241
+ "items": {
242
+ "type": "string"
243
+ },
244
+ "name": "roles",
245
+ "required": false,
246
+ "type": "array"
247
+ },
240
248
  "variant": {
241
249
  "name": "variant",
242
250
  "required": false,
@@ -247,6 +255,11 @@
247
255
  "ghost",
248
256
  "danger"
249
257
  ]
258
+ },
259
+ "when": {
260
+ "name": "when",
261
+ "required": false,
262
+ "type": "object"
250
263
  }
251
264
  },
252
265
  "type": "object"
@@ -383,6 +396,14 @@
383
396
  "required": true,
384
397
  "type": "string"
385
398
  },
399
+ "roles": {
400
+ "items": {
401
+ "type": "string"
402
+ },
403
+ "name": "roles",
404
+ "required": false,
405
+ "type": "array"
406
+ },
386
407
  "variant": {
387
408
  "name": "variant",
388
409
  "required": false,
@@ -393,6 +414,11 @@
393
414
  "ghost",
394
415
  "danger"
395
416
  ]
417
+ },
418
+ "when": {
419
+ "name": "when",
420
+ "required": false,
421
+ "type": "object"
396
422
  }
397
423
  },
398
424
  "type": "object"
@@ -522,6 +548,13 @@
522
548
  "label": "Folder tree",
523
549
  "tier": "presentation",
524
550
  "type": "[TreeNode]"
551
+ },
552
+ "viewerRole": {
553
+ "default": "",
554
+ "description": "The signed-in viewer's role that each action's `roles` is checked against. Bind it explicitly at the call site (e.g. `viewerRole: @user.role`) in an app whose identity carries a role; left empty, only actions with no `roles` show.",
555
+ "label": "Viewer's role",
556
+ "tier": "policy",
557
+ "type": "string"
525
558
  }
526
559
  },
527
560
  "effectRow": [
@@ -1157,7 +1190,40 @@
1157
1190
  "entity": "@payload.data",
1158
1191
  "fields": "@config.fields",
1159
1192
  "gap": "sm",
1160
- "itemActions": "@config.itemActions",
1193
+ "itemActions": [
1194
+ "array/filter",
1195
+ "@config.itemActions",
1196
+ [
1197
+ "fn",
1198
+ "action",
1199
+ [
1200
+ "or",
1201
+ [
1202
+ "=",
1203
+ [
1204
+ "array/len",
1205
+ [
1206
+ "object/get",
1207
+ "@action",
1208
+ "roles",
1209
+ []
1210
+ ]
1211
+ ],
1212
+ 0.0
1213
+ ],
1214
+ [
1215
+ "array/includes",
1216
+ [
1217
+ "object/get",
1218
+ "@action",
1219
+ "roles",
1220
+ []
1221
+ ],
1222
+ "@config.viewerRole"
1223
+ ]
1224
+ ]
1225
+ ]
1226
+ ],
1161
1227
  "look": "@config.tableLook",
1162
1228
  "reorderEvent": "REORDER",
1163
1229
  "reorderable": "@config.reorderable",
@@ -1333,7 +1399,40 @@
1333
1399
  "type": "divider"
1334
1400
  },
1335
1401
  {
1336
- "entity": "@config.detailActions",
1402
+ "entity": [
1403
+ "array/filter",
1404
+ "@config.detailActions",
1405
+ [
1406
+ "fn",
1407
+ "action",
1408
+ [
1409
+ "or",
1410
+ [
1411
+ "=",
1412
+ [
1413
+ "array/len",
1414
+ [
1415
+ "object/get",
1416
+ "@action",
1417
+ "roles",
1418
+ []
1419
+ ]
1420
+ ],
1421
+ 0.0
1422
+ ],
1423
+ [
1424
+ "array/includes",
1425
+ [
1426
+ "object/get",
1427
+ "@action",
1428
+ "roles",
1429
+ []
1430
+ ],
1431
+ "@config.viewerRole"
1432
+ ]
1433
+ ]
1434
+ ]
1435
+ ],
1337
1436
  "fields": [],
1338
1437
  "gap": "sm",
1339
1438
  "renderItem": [
@@ -1664,6 +1763,14 @@
1664
1763
  {
1665
1764
  "name": "icon",
1666
1765
  "type": "string"
1766
+ },
1767
+ {
1768
+ "name": "roles",
1769
+ "type": "[string]"
1770
+ },
1771
+ {
1772
+ "name": "when",
1773
+ "type": "SExpr"
1667
1774
  }
1668
1775
  ],
1669
1776
  "TreeNode": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "description": "std-form-advanced — full-typed form-section primitive. Hosts the `editing` state with a configurable `fields` array (each entry mirrors @almadar/ui's `form-section` field schema: `{ name, label, type?, values?, relation?, required? }`). Field-level constraints live in `config.fieldValidation` as `[{ field, format?: 'email'|'url'|'phone', regex?, minLength?, maxLength?, message? }]` — form-section surfaces inline errors when a submit violates a declared constraint. Agents drive shape by overriding `config.fields` + `config.fieldValidation` per-call-site.",
2
+ "description": "std-form-advanced — full-typed form-section primitive. Hosts the `editing` state with a configurable `fields` array (each entry mirrors @almadar/ui's `form-section` field schema: `{ name, label, type?, values?, relation?, required? }`). Agents drive shape by overriding `config.fields` per-call-site.",
3
3
  "ledger": {
4
4
  "entries": {
5
5
  "ent_01KXG04GFTP0NF21516P0PVWE1": {
@@ -224,33 +224,6 @@
224
224
  "tier": "presentation",
225
225
  "type": "string"
226
226
  },
227
- "fieldValidation": {
228
- "default": [],
229
- "description": "Per-field rules (format, regex, length) shown inline on submit",
230
- "items": {
231
- "properties": {
232
- "field": {
233
- "name": "field",
234
- "required": true,
235
- "type": "string"
236
- },
237
- "message": {
238
- "name": "message",
239
- "required": false,
240
- "type": "string"
241
- },
242
- "rule": {
243
- "name": "rule",
244
- "required": false,
245
- "type": "string"
246
- }
247
- },
248
- "type": "object"
249
- },
250
- "label": "Field validation",
251
- "tier": "domain",
252
- "type": "[ValidationSpec]"
253
- },
254
227
  "fields": {
255
228
  "default": [
256
229
  {
@@ -1036,21 +1009,6 @@
1036
1009
  "name": "header",
1037
1010
  "type": "string"
1038
1011
  }
1039
- ],
1040
- "ValidationSpec": [
1041
- {
1042
- "name": "field",
1043
- "required": true,
1044
- "type": "string"
1045
- },
1046
- {
1047
- "name": "rule",
1048
- "type": "string"
1049
- },
1050
- {
1051
- "name": "message",
1052
- "type": "string"
1053
- }
1054
1012
  ]
1055
1013
  }
1056
1014
  }
@@ -277,6 +277,11 @@
277
277
  "transitions": [
278
278
  {
279
279
  "effects": [
280
+ [
281
+ "set",
282
+ "@entity.radiusKm",
283
+ "@config.defaultRadiusKm"
284
+ ],
280
285
  [
281
286
  "render-ui",
282
287
  "main",