@almadar/std 16.197.0 → 16.199.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 (356) hide show
  1. package/behaviors/lolo/agent/atoms/std-agent-tool-call.lolo +2 -2
  2. package/behaviors/lolo/agent/atoms/std-agent-tool-loop.lolo +2 -2
  3. package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +3 -3
  4. package/behaviors/lolo/infra/atoms/std-audit-capture.lolo +4 -4
  5. package/behaviors/lolo/infra/atoms/std-cascade-on-delete.lolo +5 -5
  6. package/behaviors/lolo/infra/atoms/std-cooldown.lolo +1 -1
  7. package/behaviors/lolo/infra/atoms/std-game-clock.lolo +1 -1
  8. package/behaviors/lolo/infra/atoms/std-lifecycle.lolo +3 -3
  9. package/behaviors/lolo/infra/atoms/std-migration-job.lolo +30 -25
  10. package/behaviors/lolo/infra/atoms/std-notify-on-event.lolo +2 -2
  11. package/behaviors/lolo/infra/atoms/std-reminder-scheduler.lolo +3 -3
  12. package/behaviors/lolo/ml/atoms/std-data-collector.lolo +3 -3
  13. package/behaviors/lolo/ml/atoms/std-graph-builder.lolo +6 -5
  14. package/behaviors/lolo/ml/atoms/std-ml-classify.lolo +11 -2
  15. package/behaviors/lolo/ml/atoms/std-ml-exact-check.lolo +8 -8
  16. package/behaviors/lolo/ml/atoms/std-ml-infer.lolo +12 -8
  17. package/behaviors/lolo/ml/atoms/std-ml-label-capture.lolo +6 -6
  18. package/behaviors/lolo/ml/atoms/std-ml-lookup.lolo +7 -7
  19. package/behaviors/lolo/ml/atoms/std-ml-similarity.lolo +12 -3
  20. package/behaviors/lolo/ml/atoms/std-tokenizer.lolo +2 -2
  21. package/behaviors/lolo/ml/atoms/std-weight-validator.lolo +5 -4
  22. package/behaviors/lolo/ml/organisms/std-escalating-decision.lolo +33 -17
  23. package/behaviors/lolo/ml/organisms/std-knowledge-tracing.lolo +9 -6
  24. package/behaviors/lolo/ui/avl/atoms/ui-behavior-view.lolo +61 -1
  25. package/behaviors/lolo/ui/avl/atoms/ui-module-card.lolo +61 -1
  26. package/behaviors/lolo/ui/core/atoms/std-board.lolo +6 -4
  27. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +5 -3
  28. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +2 -0
  29. package/behaviors/lolo/ui/core/atoms/std-esign-request.lolo +9 -0
  30. package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +4 -2
  31. package/behaviors/lolo/ui/core/atoms/std-filter.lolo +5 -0
  32. package/behaviors/lolo/ui/core/atoms/std-gallery.lolo +4 -2
  33. package/behaviors/lolo/ui/core/atoms/std-geosearch.lolo +2 -0
  34. package/behaviors/lolo/ui/core/atoms/std-import.lolo +6 -5
  35. package/behaviors/lolo/ui/core/atoms/std-list.lolo +2 -0
  36. package/behaviors/lolo/ui/core/atoms/std-multi-party-flow.lolo +4 -4
  37. package/behaviors/lolo/ui/core/atoms/std-rating-review.lolo +10 -10
  38. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +4 -4
  39. package/behaviors/lolo/ui/core/atoms/std-recurrence.lolo +4 -4
  40. package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +1 -1
  41. package/behaviors/lolo/ui/core/atoms/std-selection.lolo +2 -0
  42. package/behaviors/lolo/ui/core/atoms/std-tag-strip.lolo +4 -0
  43. package/behaviors/lolo/ui/core/atoms/std-thread.lolo +3 -3
  44. package/behaviors/lolo/ui/core/atoms/std-tree.lolo +2 -0
  45. package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +2 -2
  46. package/behaviors/lolo/ui/core/atoms/ui-avatar.lolo +3 -7
  47. package/behaviors/lolo/ui/core/atoms/ui-box.lolo +3 -5
  48. package/behaviors/lolo/ui/core/atoms/ui-button.lolo +2 -4
  49. package/behaviors/lolo/ui/core/atoms/ui-card.lolo +1 -3
  50. package/behaviors/lolo/ui/core/atoms/ui-checkbox.lolo +1 -3
  51. package/behaviors/lolo/ui/core/atoms/ui-conditional-wrapper.lolo +4 -4
  52. package/behaviors/lolo/ui/core/atoms/ui-flip-container.lolo +1 -3
  53. package/behaviors/lolo/ui/core/atoms/ui-hstack.lolo +2 -4
  54. package/behaviors/lolo/ui/core/atoms/ui-infinite-scroll-sentinel.lolo +2 -4
  55. package/behaviors/lolo/ui/core/atoms/ui-input.lolo +34 -8
  56. package/behaviors/lolo/ui/core/atoms/ui-overlay.lolo +1 -3
  57. package/behaviors/lolo/ui/core/atoms/ui-radio.lolo +23 -2
  58. package/behaviors/lolo/ui/core/atoms/ui-range-slider.lolo +23 -2
  59. package/behaviors/lolo/ui/core/atoms/ui-select.lolo +3 -9
  60. package/behaviors/lolo/ui/core/atoms/ui-stack.lolo +2 -4
  61. package/behaviors/lolo/ui/core/atoms/ui-text-highlight.lolo +51 -14
  62. package/behaviors/lolo/ui/core/atoms/ui-textarea.lolo +2 -6
  63. package/behaviors/lolo/ui/core/atoms/ui-typewriter-text.lolo +1 -3
  64. package/behaviors/lolo/ui/core/atoms/ui-vstack.lolo +2 -4
  65. package/behaviors/lolo/ui/core/molecules/ui-alert.lolo +2 -6
  66. package/behaviors/lolo/ui/core/molecules/ui-branching-logic-builder.lolo +8 -1
  67. package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +3 -1
  68. package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +4 -8
  69. package/behaviors/lolo/ui/core/molecules/ui-carousel.lolo +2 -2
  70. package/behaviors/lolo/ui/core/molecules/ui-confirm-dialog.lolo +2 -6
  71. package/behaviors/lolo/ui/core/molecules/ui-content-renderer.lolo +1 -1
  72. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +4 -5
  73. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +9 -17
  74. package/behaviors/lolo/ui/core/molecules/ui-doc-sidebar.lolo +1 -1
  75. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +1 -1
  76. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +1 -3
  77. package/behaviors/lolo/ui/core/molecules/ui-emoji-picker.lolo +1 -1
  78. package/behaviors/lolo/ui/core/molecules/ui-empty-state.lolo +1 -3
  79. package/behaviors/lolo/ui/core/molecules/ui-error-state.lolo +1 -3
  80. package/behaviors/lolo/ui/core/molecules/ui-file-tree.lolo +1 -1
  81. package/behaviors/lolo/ui/core/molecules/ui-filter-group.lolo +57 -6
  82. package/behaviors/lolo/ui/core/molecules/ui-flip-card.lolo +1 -3
  83. package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +3 -7
  84. package/behaviors/lolo/ui/core/molecules/ui-form-section-header.lolo +1 -3
  85. package/behaviors/lolo/ui/core/molecules/ui-fx-overlay.lolo +1 -1
  86. package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +5 -5
  87. package/behaviors/lolo/ui/core/molecules/ui-header.lolo +3 -9
  88. package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +3 -7
  89. package/behaviors/lolo/ui/core/molecules/ui-input-group.lolo +35 -8
  90. package/behaviors/lolo/ui/core/molecules/ui-lightbox.lolo +1 -3
  91. package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +1 -1
  92. package/behaviors/lolo/ui/core/molecules/ui-modal.lolo +2 -6
  93. package/behaviors/lolo/ui/core/molecules/ui-navigation.lolo +1 -1
  94. package/behaviors/lolo/ui/core/molecules/ui-notification.lolo +2 -6
  95. package/behaviors/lolo/ui/core/molecules/ui-number-stepper.lolo +21 -2
  96. package/behaviors/lolo/ui/core/molecules/ui-option-constraint-group.lolo +1 -1
  97. package/behaviors/lolo/ui/core/molecules/ui-orbital-visualization.lolo +4 -6
  98. package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +1 -3
  99. package/behaviors/lolo/ui/core/molecules/ui-pull-to-refresh.lolo +2 -4
  100. package/behaviors/lolo/ui/core/molecules/ui-repeatable-form-section.lolo +1 -3
  101. package/behaviors/lolo/ui/core/molecules/ui-search-input.lolo +2 -1
  102. package/behaviors/lolo/ui/core/molecules/ui-side-panel.lolo +1 -3
  103. package/behaviors/lolo/ui/core/molecules/ui-sidebar.lolo +3 -7
  104. package/behaviors/lolo/ui/core/molecules/ui-signature-pad.lolo +1 -3
  105. package/behaviors/lolo/ui/core/molecules/ui-sortable-list.lolo +4 -2
  106. package/behaviors/lolo/ui/core/molecules/ui-star-rating.lolo +20 -2
  107. package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +3 -3
  108. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +7 -5
  109. package/behaviors/lolo/ui/core/molecules/ui-tag-input.lolo +6 -3
  110. package/behaviors/lolo/ui/core/molecules/ui-upload-drop-zone.lolo +9 -2
  111. package/behaviors/lolo/ui/core/molecules/ui-violation-alert.lolo +1 -3
  112. package/behaviors/lolo/ui/core/molecules/ui-wizard-container.lolo +18 -20
  113. package/behaviors/lolo/ui/core/molecules/ui-wizard-navigation.lolo +3 -9
  114. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +2 -1
  115. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +11 -5
  116. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +2 -1
  117. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +16 -12
  118. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +16 -12
  119. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +1 -1
  120. package/behaviors/lolo/ui/core/organisms/ui-segment-renderer.lolo +5 -1
  121. package/behaviors/lolo/ui/core/organisms/ui-subagent-trace-panel.lolo +4 -6
  122. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +2 -1
  123. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +3 -9
  124. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +5 -8
  125. package/behaviors/lolo/ui/game/.hand-authored.json +1 -1
  126. package/behaviors/lolo/ui/game/atoms/std-fx-particles.lolo +1 -0
  127. package/behaviors/lolo/ui/game/atoms/std-mesh-asset-art.lolo +3 -3
  128. package/behaviors/lolo/ui/game/atoms/std-svg-asset-art.lolo +3 -3
  129. package/behaviors/lolo/ui/game/atoms/ui-action-palette.lolo +15 -2
  130. package/behaviors/lolo/ui/game/atoms/ui-action-tile.lolo +15 -2
  131. package/behaviors/lolo/ui/game/atoms/ui-canvas-2d.lolo +2 -4
  132. package/behaviors/lolo/ui/game/atoms/ui-canvas.lolo +79 -10
  133. package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +2 -6
  134. package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +2 -6
  135. package/behaviors/lolo/ui/game/atoms/ui-draw-fx-layer.lolo +4 -2
  136. package/behaviors/lolo/ui/game/atoms/ui-draw-group.lolo +1 -1
  137. package/behaviors/lolo/ui/game/atoms/ui-draw-shape-layer.lolo +13 -5
  138. package/behaviors/lolo/ui/game/atoms/ui-draw-shape.lolo +11 -3
  139. package/behaviors/lolo/ui/game/atoms/ui-draw-sprite-layer.lolo +4 -3
  140. package/behaviors/lolo/ui/game/atoms/ui-draw-sprite.lolo +6 -1
  141. package/behaviors/lolo/ui/game/atoms/ui-draw-text-layer.lolo +3 -3
  142. package/behaviors/lolo/ui/game/atoms/ui-draw-text.lolo +1 -1
  143. package/behaviors/lolo/ui/game/atoms/ui-sequence-bar.lolo +29 -3
  144. package/behaviors/lolo/ui/game/atoms/ui-state-graph.lolo +1 -1
  145. package/behaviors/lolo/ui/game/atoms/ui-trait-slot.lolo +42 -3
  146. package/behaviors/lolo/ui/game/organisms/std-tactics-board-2d.lolo +1 -1
  147. package/behaviors/lolo/ui/game/organisms/std-tactics-board-3d.lolo +1 -1
  148. package/behaviors/lolo/ui/game/templates/ui-game-shell.lolo +2 -2
  149. package/behaviors/lolo/ui/learning/atoms/std-learn-diagram.lolo +2 -2
  150. package/behaviors/lolo/ui/learning/atoms/std-learn-stepper.lolo +1 -1
  151. package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +65 -3
  152. package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +65 -3
  153. package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +20 -0
  154. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +7 -0
  155. package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +65 -3
  156. package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +4 -4
  157. package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +4 -4
  158. package/behaviors/registry/infra/atoms/std-approval-gate.orb +7 -7
  159. package/behaviors/registry/infra/atoms/std-audit-capture.orb +3 -3
  160. package/behaviors/registry/infra/atoms/std-cascade-on-delete.orb +3 -3
  161. package/behaviors/registry/infra/atoms/std-cooldown.orb +1 -2
  162. package/behaviors/registry/infra/atoms/std-game-clock.orb +1 -2
  163. package/behaviors/registry/infra/atoms/std-lifecycle.orb +2 -2
  164. package/behaviors/registry/infra/atoms/std-migration-job.orb +201 -29
  165. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +1 -1
  166. package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +2 -2
  167. package/behaviors/registry/ml/atoms/std-data-collector.orb +4 -4
  168. package/behaviors/registry/ml/atoms/std-graph-builder.orb +20 -5
  169. package/behaviors/registry/ml/atoms/std-ml-classify.orb +50 -0
  170. package/behaviors/registry/ml/atoms/std-ml-exact-check.orb +13 -13
  171. package/behaviors/registry/ml/atoms/std-ml-infer.orb +106 -11
  172. package/behaviors/registry/ml/atoms/std-ml-label-capture.orb +6 -6
  173. package/behaviors/registry/ml/atoms/std-ml-lookup.orb +11 -11
  174. package/behaviors/registry/ml/atoms/std-ml-similarity.orb +94 -0
  175. package/behaviors/registry/ml/atoms/std-tokenizer.orb +2 -2
  176. package/behaviors/registry/ml/atoms/std-weight-validator.orb +22 -5
  177. package/behaviors/registry/ml/organisms/std-escalating-decision.orb +263 -12
  178. package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +67 -9
  179. package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +337 -2
  180. package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +337 -2
  181. package/behaviors/registry/ui/core/atoms/std-board.orb +16 -4
  182. package/behaviors/registry/ui/core/atoms/std-browse.orb +15 -0
  183. package/behaviors/registry/ui/core/atoms/std-calendar.orb +10 -0
  184. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +15 -0
  185. package/behaviors/registry/ui/core/atoms/std-event-log.orb +13 -2
  186. package/behaviors/registry/ui/core/atoms/std-filter.orb +19 -0
  187. package/behaviors/registry/ui/core/atoms/std-gallery.orb +11 -0
  188. package/behaviors/registry/ui/core/atoms/std-geosearch.orb +8 -0
  189. package/behaviors/registry/ui/core/atoms/std-import.orb +90 -4
  190. package/behaviors/registry/ui/core/atoms/std-list.orb +9 -0
  191. package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +8 -4
  192. package/behaviors/registry/ui/core/atoms/std-rating-review.orb +14 -10
  193. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +19 -11
  194. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +6 -4
  195. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +5 -2
  196. package/behaviors/registry/ui/core/atoms/std-selection.orb +9 -0
  197. package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +16 -0
  198. package/behaviors/registry/ui/core/atoms/std-thread.orb +7 -4
  199. package/behaviors/registry/ui/core/atoms/std-tree.orb +9 -0
  200. package/behaviors/registry/ui/core/atoms/std-wizard.orb +4 -2
  201. package/behaviors/registry/ui/core/atoms/ui-avatar.orb +3 -26
  202. package/behaviors/registry/ui/core/atoms/ui-box.orb +9 -18
  203. package/behaviors/registry/ui/core/atoms/ui-button.orb +2 -14
  204. package/behaviors/registry/ui/core/atoms/ui-card.orb +1 -12
  205. package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +1 -12
  206. package/behaviors/registry/ui/core/atoms/ui-conditional-wrapper.orb +4 -4
  207. package/behaviors/registry/ui/core/atoms/ui-day-cell.orb +1 -0
  208. package/behaviors/registry/ui/core/atoms/ui-filter-pill.orb +1 -0
  209. package/behaviors/registry/ui/core/atoms/ui-flip-container.orb +1 -12
  210. package/behaviors/registry/ui/core/atoms/ui-hstack.orb +2 -14
  211. package/behaviors/registry/ui/core/atoms/ui-infinite-scroll-sentinel.orb +2 -14
  212. package/behaviors/registry/ui/core/atoms/ui-input.orb +78 -28
  213. package/behaviors/registry/ui/core/atoms/ui-overlay.orb +1 -12
  214. package/behaviors/registry/ui/core/atoms/ui-radio.orb +67 -4
  215. package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +63 -6
  216. package/behaviors/registry/ui/core/atoms/ui-select.orb +3 -36
  217. package/behaviors/registry/ui/core/atoms/ui-stack.orb +2 -14
  218. package/behaviors/registry/ui/core/atoms/ui-switch.orb +1 -0
  219. package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +140 -45
  220. package/behaviors/registry/ui/core/atoms/ui-textarea.orb +2 -24
  221. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +1 -0
  222. package/behaviors/registry/ui/core/atoms/ui-typewriter-text.orb +1 -12
  223. package/behaviors/registry/ui/core/atoms/ui-vstack.orb +2 -14
  224. package/behaviors/registry/ui/core/molecules/ui-accordion.orb +2 -0
  225. package/behaviors/registry/ui/core/molecules/ui-alert.orb +2 -24
  226. package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +3 -2
  227. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +23 -2
  228. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +9 -28
  229. package/behaviors/registry/ui/core/molecules/ui-carousel.orb +4 -4
  230. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +1 -0
  231. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +2 -24
  232. package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +1 -4
  233. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +20 -16
  234. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +30 -60
  235. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +2 -0
  236. package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +1 -0
  237. package/behaviors/registry/ui/core/molecules/ui-doc-sidebar.orb +46 -2
  238. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +4 -2
  239. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +4 -0
  240. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +1 -12
  241. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +5 -2
  242. package/behaviors/registry/ui/core/molecules/ui-empty-state.orb +1 -12
  243. package/behaviors/registry/ui/core/molecules/ui-error-state.orb +1 -12
  244. package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +87 -2
  245. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +185 -18
  246. package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -12
  247. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +3 -26
  248. package/behaviors/registry/ui/core/molecules/ui-form-section-header.orb +1 -12
  249. package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +2 -0
  250. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +16 -9
  251. package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +2 -0
  252. package/behaviors/registry/ui/core/molecules/ui-header.orb +4 -36
  253. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +3 -25
  254. package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +1 -0
  255. package/behaviors/registry/ui/core/molecules/ui-input-group.orb +79 -28
  256. package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +2 -12
  257. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +1 -0
  258. package/behaviors/registry/ui/core/molecules/ui-map-view.orb +2 -0
  259. package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +1 -0
  260. package/behaviors/registry/ui/core/molecules/ui-menu.orb +86 -2
  261. package/behaviors/registry/ui/core/molecules/ui-modal.orb +2 -24
  262. package/behaviors/registry/ui/core/molecules/ui-navigation.orb +99 -2
  263. package/behaviors/registry/ui/core/molecules/ui-notification.orb +2 -24
  264. package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +61 -6
  265. package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +3 -2
  266. package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +4 -15
  267. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +2 -12
  268. package/behaviors/registry/ui/core/molecules/ui-pagination.orb +2 -0
  269. package/behaviors/registry/ui/core/molecules/ui-popover.orb +1 -0
  270. package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +2 -0
  271. package/behaviors/registry/ui/core/molecules/ui-progress-dots.orb +1 -0
  272. package/behaviors/registry/ui/core/molecules/ui-pull-to-refresh.orb +2 -14
  273. package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +1 -0
  274. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +1 -0
  275. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +3 -12
  276. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +4 -0
  277. package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +1 -0
  278. package/behaviors/registry/ui/core/molecules/ui-search-input.orb +14 -2
  279. package/behaviors/registry/ui/core/molecules/ui-side-panel.orb +1 -12
  280. package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +102 -26
  281. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +3 -12
  282. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +28 -6
  283. package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +60 -6
  284. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +3 -4
  285. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +37 -9
  286. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +1 -0
  287. package/behaviors/registry/ui/core/molecules/ui-tag-input.orb +43 -6
  288. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +8 -6
  289. package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +3 -0
  290. package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +2 -12
  291. package/behaviors/registry/ui/core/molecules/ui-vote-stack.orb +1 -0
  292. package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +1173 -36
  293. package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +6 -36
  294. package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +1 -0
  295. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +12 -0
  296. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +56 -13
  297. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +12 -0
  298. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +107 -26
  299. package/behaviors/registry/ui/core/organisms/ui-form.orb +107 -26
  300. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +3 -2
  301. package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +26 -2
  302. package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +7 -18
  303. package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +1 -0
  304. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +12 -0
  305. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +3 -36
  306. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +132 -27
  307. package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +14 -0
  308. package/behaviors/registry/ui/game/atoms/std-mesh-asset-art.orb +15 -3
  309. package/behaviors/registry/ui/game/atoms/std-svg-asset-art.orb +15 -3
  310. package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +103 -2
  311. package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +79 -1
  312. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +6 -14
  313. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +336 -32
  314. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +2 -24
  315. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +2 -24
  316. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +2 -0
  317. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +14 -2
  318. package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +2 -2
  319. package/behaviors/registry/ui/game/atoms/ui-draw-shape-layer.orb +78 -8
  320. package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +31 -2
  321. package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +21 -4
  322. package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +14 -2
  323. package/behaviors/registry/ui/game/atoms/ui-draw-text-layer.orb +14 -4
  324. package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +7 -2
  325. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +1 -0
  326. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +199 -2
  327. package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +5 -2
  328. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +247 -0
  329. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +11 -1
  330. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +10 -1
  331. package/behaviors/registry/ui/game/templates/ui-game-shell.orb +2 -2
  332. package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +2 -2
  333. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +1 -1
  334. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +2 -0
  335. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +1 -0
  336. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +254 -6
  337. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +254 -6
  338. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +53 -0
  339. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +17 -0
  340. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +254 -6
  341. package/dist/behaviors/exports-reader.js +1450 -277
  342. package/dist/behaviors/factory-signatures.js +5 -1
  343. package/dist/behaviors/functions/index.d.ts +152 -642
  344. package/dist/behaviors/functions/index.js +1450 -277
  345. package/dist/behaviors/index.d.ts +1 -1
  346. package/dist/behaviors/index.js +1452 -280
  347. package/dist/behaviors/query.js +1450 -277
  348. package/dist/behaviors-embeddings.hash.json +3 -3
  349. package/dist/behaviors-embeddings.json +17 -17
  350. package/dist/behaviors-registry.json +76 -37
  351. package/dist/index.d.ts +1 -1
  352. package/dist/index.js +1452 -280
  353. package/dist/knob-embeddings.hash.json +3 -3
  354. package/dist/knob-embeddings.json +1 -1
  355. package/dist/registry/factory-signatures.json +1 -1
  356. package/package.json +2 -2
@@ -1,6 +1,69 @@
1
1
  app ui-canvas "1.0.0"
2
2
  "Canvas — UI factory (1:1 with the @almadar/ui canvas pattern)."
3
3
  orbital CanvasOrbital {
4
+ type CanvasCamera = {
5
+ pos : CanvasCameraPos
6
+ target : CanvasCameraTarget
7
+ zoom : number
8
+ fov : number
9
+ mode : "isometric" | "perspective" | "top-down" | "front" | "follow" | "chase"
10
+ azimuth : number
11
+ elevation : number
12
+ }
13
+ type CanvasCameraPos = {
14
+ x : number!
15
+ y : number!
16
+ z : number
17
+ }
18
+ type CanvasCameraTarget = {
19
+ x : number!
20
+ y : number!
21
+ z : number
22
+ }
23
+ type CanvasLighting = {
24
+ ambient : CanvasLightingAmbient
25
+ directional : CanvasLightingDirectional
26
+ hemisphere : CanvasLightingHemisphere
27
+ points : [CanvasLightingPointsItem]
28
+ environment : "room" | "none"
29
+ toneMapping : "aces" | "none"
30
+ }
31
+ type CanvasLightingAmbient = {
32
+ intensity : number
33
+ color : string
34
+ position : [number]
35
+ }
36
+ type CanvasLightingDirectional = {
37
+ intensity : number
38
+ color : string
39
+ position : [number]
40
+ }
41
+ type CanvasLightingHemisphere = {
42
+ intensity : number
43
+ color : string
44
+ groundColor : string
45
+ }
46
+ type CanvasLightingPointsItem = {
47
+ intensity : number
48
+ color : string
49
+ position : [number]!
50
+ distance : number
51
+ decay : number
52
+ }
53
+ type CanvasPost = {
54
+ bloom : CanvasPostBloom
55
+ vignette : CanvasPostVignette
56
+ }
57
+ type CanvasPostBloom = {
58
+ intensity : number
59
+ threshold : number
60
+ smoothing : number
61
+ }
62
+ type CanvasPostVignette = {
63
+ offset : number
64
+ darkness : number
65
+ }
66
+
4
67
  entity CanvasItem [runtime] {
5
68
  id : string!
6
69
  }
@@ -47,23 +110,29 @@ orbital CanvasOrbital {
47
110
 
48
111
  emits {
49
112
  @config.tileClickEvent -> external {
50
- _payload : object
113
+ x : number
114
+ y : number
115
+ tileId : string
116
+ z : number
51
117
  }
52
118
  @description "--- Shared interaction (LOLO-owned). The painter emitted at runtime depends on"
53
119
  @tier "essential"
54
120
  @config.unitClickEvent -> external {
55
- _payload : object
121
+ unitId : string
122
+ x : number
123
+ z : number
56
124
  }
57
125
  @description "unitClickEvent prop"
58
126
  @tier "essential"
59
127
  @config.tileHoverEvent -> external {
60
- _payload : object
128
+ x : number
129
+ y : number
130
+ tileId : string
131
+ z : number
61
132
  }
62
133
  @description "tileHoverEvent prop"
63
134
  @tier "essential"
64
- @config.tileLeaveEvent -> external {
65
- id : string
66
- }
135
+ @config.tileLeaveEvent -> external { }
67
136
  @description "tileLeaveEvent prop"
68
137
  @tier "essential"
69
138
  @config.featureClickEvent -> external {
@@ -81,11 +150,11 @@ orbital CanvasOrbital {
81
150
  @label "Mode"
82
151
  @description "Painter: 2D sprite/shape/text raster, or 3D mesh. Default '2d'."
83
152
  @tier "presentation"
84
- drawables : [object] = []
153
+ drawables : [node] = []
85
154
  @label "Drawables"
86
155
  @description "Neutral drawable descriptors — the `draw-*` children. Routed to the host's painter."
87
156
  @tier "presentation"
88
- camera : json = {}
157
+ camera : CanvasCamera
89
158
  @label "Camera"
90
159
  @description "Neutral camera pose. Mapped to the underlying host's framing + zoom."
91
160
  @tier "presentation"
@@ -157,11 +226,11 @@ orbital CanvasOrbital {
157
226
  @label "Fog Of War"
158
227
  @description "fogOfWar prop"
159
228
  @tier "presentation"
160
- lighting : object = {}
229
+ lighting : CanvasLighting
161
230
  @label "Lighting"
162
231
  @description "3D scene light rig as data — ambient/directional/hemisphere/point lights + optional 'room' environment for PBR reflections. Omitted → the standard fixed rig."
163
232
  @tier "presentation"
164
- post : object = {}
233
+ post : CanvasPost
165
234
  @label "Post"
166
235
  @description "3D post-processing stack — bloom (emissive glow / neon) and vignette. Omitted → no post pass."
167
236
  @tier "presentation"
@@ -41,14 +41,10 @@ orbital ChoiceButtonOrbital {
41
41
  }
42
42
 
43
43
  emits {
44
- @config.onClick -> external {
45
- id : string
46
- }
44
+ @config.onClick -> external { }
47
45
  @description "Click handler"
48
46
  @tier "essential"
49
- @config.action -> external {
50
- id : string
51
- }
47
+ @config.action -> external { }
52
48
  @description "Declarative event name — emits UI:{action} via eventBus on click"
53
49
  @tier "essential"
54
50
  }
@@ -44,14 +44,10 @@ orbital ControlButtonOrbital {
44
44
  }
45
45
 
46
46
  emits {
47
- @config.onPress -> external {
48
- id : string
49
- }
47
+ @config.onPress -> external { }
50
48
  @description "Called when button is pressed"
51
49
  @tier "essential"
52
- @config.onRelease -> external {
53
- id : string
54
- }
50
+ @config.onRelease -> external { }
55
51
  @description "Called when button is released"
56
52
  @tier "essential"
57
53
  }
@@ -20,6 +20,7 @@ orbital DrawFxLayerOrbital {
20
20
  vy : number
21
21
  vz : number
22
22
  particleCount : number
23
+ animation : string
23
24
  }
24
25
  type DrawFxLayerItemsItemPosition = {
25
26
  x : number!
@@ -41,6 +42,7 @@ orbital DrawFxLayerOrbital {
41
42
  space : "world" | "screen"
42
43
  effect : "confetti" | "flash" | "shake" | "sparkle" | "float-text" | "streak-glow"
43
44
  particleCount : number
45
+ animation : string
44
46
  }
45
47
  type DrawFxLayerSpritesValue = {
46
48
  url : asset!
@@ -78,7 +80,7 @@ orbital DrawFxLayerOrbital {
78
80
  }
79
81
 
80
82
  config {
81
- items : [DrawFxLayerItemsItem] = [{ id: "e1", x: 2, y: 2, type: "spawn", message: "Unit spawned" }, { id: "e2", x: 3, y: 1, type: "effect", message: "Attack landed" }]
83
+ items : [DrawFxLayerItemsItem] = [{ id: "e1", x: 2, y: 2, type: "spawn", message: "Unit spawned", ttl: 1 }, { id: "e2", x: 3, y: 1, type: "effect", message: "Attack landed", ttl: 2 }]
82
84
  @label "Items"
83
85
  @description "The live fx entries — the mechanic's `@entity.fx` list passed whole; `space: 'screen'` entries are skipped (the overlay owns those)."
84
86
  @tier "presentation"
@@ -86,7 +88,7 @@ orbital DrawFxLayerOrbital {
86
88
  @label "Presets"
87
89
  @description "Consumer-declared effect vocabulary — one row per fx `type` (look + recipe). Unknown types fall back to a neutral spark burst."
88
90
  @tier "presentation"
89
- art : Map string Map string [object] = { item: {} }
91
+ art : Map string Map string [node] = { item: {} }
90
92
  @label "Art"
91
93
  @description "Vector art per fx type (an asset-art map: type → anim-state → drawables); a type's `idle` state wins over sprites/procedural."
92
94
  @tier "presentation"
@@ -87,7 +87,7 @@ orbital DrawGroupOrbital {
87
87
  @label "Clip"
88
88
  @description "Clip the group's items to an SVG path (`d` syntax) in world units relative to the group origin — masked reveals, meters, portraits."
89
89
  @tier "presentation"
90
- items : [object] = []
90
+ items : [node] = []
91
91
  @label "Items"
92
92
  @description "The grouped drawables, painted through the normal dispatch."
93
93
  @tier "presentation"
@@ -2,10 +2,10 @@ app ui-draw-shape-layer "1.0.0"
2
2
  "DrawShapeLayer — UI factory (1:1 with the @almadar/ui draw-shape-layer pattern)."
3
3
  orbital DrawShapeLayerOrbital {
4
4
  type DrawShapeLayerItemsItem = {
5
- type : json!
5
+ type : "draw-shape"!
6
6
  shape : "cell" | "rect" | "ellipse" | "poly" | "path"!
7
7
  position : DrawShapeLayerItemsItemPosition!
8
- anchor : object
8
+ anchor : "top-left" | "ground" | "center"
9
9
  width : number
10
10
  height : number
11
11
  radiusX : number
@@ -46,7 +46,7 @@ orbital DrawShapeLayerOrbital {
46
46
  center : DrawShapeLayerItemsItemGradientCenter
47
47
  radius : number
48
48
  angle : number
49
- stops : [object]!
49
+ stops : [DrawShapeLayerItemsItemGradientStopsItem]!
50
50
  }
51
51
  type DrawShapeLayerItemsItemGradientFrom = {
52
52
  x : number!
@@ -60,6 +60,10 @@ orbital DrawShapeLayerOrbital {
60
60
  x : number!
61
61
  y : number!
62
62
  }
63
+ type DrawShapeLayerItemsItemGradientStopsItem = {
64
+ offset : number!
65
+ color : string!
66
+ }
63
67
  type DrawShapeLayerItemsItemFillPattern = {
64
68
  kind : "noise" | "image"!
65
69
  url : string
@@ -74,7 +78,7 @@ orbital DrawShapeLayerOrbital {
74
78
  center : DrawShapeLayerItemsItemStrokeGradientCenter
75
79
  radius : number
76
80
  angle : number
77
- stops : [object]!
81
+ stops : [DrawShapeLayerItemsItemStrokeGradientStopsItem]!
78
82
  }
79
83
  type DrawShapeLayerItemsItemStrokeGradientFrom = {
80
84
  x : number!
@@ -88,6 +92,10 @@ orbital DrawShapeLayerOrbital {
88
92
  x : number!
89
93
  y : number!
90
94
  }
95
+ type DrawShapeLayerItemsItemStrokeGradientStopsItem = {
96
+ offset : number!
97
+ color : string!
98
+ }
91
99
  type DrawShapeLayerItemsItemPivot = {
92
100
  x : number!
93
101
  y : number!
@@ -139,7 +147,7 @@ orbital DrawShapeLayerOrbital {
139
147
  }
140
148
 
141
149
  config {
142
- items : [DrawShapeLayerItemsItem] = [{ type: "Type", shape: cell, position: { x: 1, y: 1, z: 1 }, width: 1, height: 1, radiusX: 1, radiusY: 1, offsetX: 1, offsetY: 1, points: [{ x: 1, y: 1 }, { x: 2, y: 2 }], d: "D", fill: "Fill", gradient: { kind: linear, from: { x: 1, y: 1 }, to: { x: 1, y: 1 }, center: { x: 1, y: 1 }, radius: 1, angle: 1, stops: [] }, fillPattern: { kind: noise, url: "Url", scale: 1, alpha: 1, color: "Color" }, stroke: "Stroke", strokeWidth: 1, strokeGradient: { kind: linear, from: { x: 1, y: 1 }, to: { x: 1, y: 1 }, center: { x: 1, y: 1 }, radius: 1, angle: 1, stops: [] }, strokeDash: [1, 2], strokeDashOffset: 1, blendMode: "source-over", blur: 1, rotate: 1, pivot: { x: 1, y: 1 }, shadow: { color: "Color", blur: 1 }, animation: { durationMs: 1, loop: false, keyframes: [{ at: 1, offsetX: 1, offsetY: 1, rotate: 1, opacity: 1, radiusX: 1, radiusY: 1, width: 1, height: 1, strokeWidth: 1, strokeDashOffset: 1, blur: 1, fill: "Fill", stroke: "Stroke", shadow: { color: "Color", blur: 1 } }, { at: 2, offsetX: 2, offsetY: 2, rotate: 2, opacity: 2, radiusX: 2, radiusY: 2, width: 2, height: 2, strokeWidth: 2, strokeDashOffset: 2, blur: 2, fill: "Fill 2", stroke: "Stroke 2", shadow: { color: "Color 2", blur: 2 } }] }, opacity: 1 }, { type: "Type 2", shape: rect, position: { x: 2, y: 2, z: 2 }, width: 2, height: 2, radiusX: 2, radiusY: 2, offsetX: 2, offsetY: 2, points: [{ x: 1, y: 1 }, { x: 2, y: 2 }], d: "D 2", fill: "Fill 2", gradient: { kind: radial, from: { x: 2, y: 2 }, to: { x: 2, y: 2 }, center: { x: 2, y: 2 }, radius: 2, angle: 2, stops: [] }, fillPattern: { kind: image, url: "Url 2", scale: 2, alpha: 2, color: "Color 2" }, stroke: "Stroke 2", strokeWidth: 2, strokeGradient: { kind: radial, from: { x: 2, y: 2 }, to: { x: 2, y: 2 }, center: { x: 2, y: 2 }, radius: 2, angle: 2, stops: [] }, strokeDash: [1, 2], strokeDashOffset: 2, blendMode: lighter, blur: 2, rotate: 2, pivot: { x: 2, y: 2 }, shadow: { color: "Color 2", blur: 2 }, animation: { durationMs: 2, loop: true, keyframes: [{ at: 1, offsetX: 1, offsetY: 1, rotate: 1, opacity: 1, radiusX: 1, radiusY: 1, width: 1, height: 1, strokeWidth: 1, strokeDashOffset: 1, blur: 1, fill: "Fill", stroke: "Stroke", shadow: { color: "Color", blur: 1 } }, { at: 2, offsetX: 2, offsetY: 2, rotate: 2, opacity: 2, radiusX: 2, radiusY: 2, width: 2, height: 2, strokeWidth: 2, strokeDashOffset: 2, blur: 2, fill: "Fill 2", stroke: "Stroke 2", shadow: { color: "Color 2", blur: 2 } }] }, opacity: 2 }]
150
+ items : [DrawShapeLayerItemsItem] = [{ type: "draw-shape", shape: cell, position: { x: 1, y: 1, z: 1 }, anchor: "top-left", width: 1, height: 1, radiusX: 1, radiusY: 1, offsetX: 1, offsetY: 1, points: [{ x: 1, y: 1 }, { x: 2, y: 2 }], d: "D", fill: "Fill", gradient: { kind: linear, from: { x: 1, y: 1 }, to: { x: 1, y: 1 }, center: { x: 1, y: 1 }, radius: 1, angle: 1, stops: [{ offset: 1, color: "Color" }, { offset: 2, color: "Color 2" }] }, fillPattern: { kind: noise, url: "Url", scale: 1, alpha: 1, color: "Color" }, stroke: "Stroke", strokeWidth: 1, strokeGradient: { kind: linear, from: { x: 1, y: 1 }, to: { x: 1, y: 1 }, center: { x: 1, y: 1 }, radius: 1, angle: 1, stops: [{ offset: 1, color: "Color" }, { offset: 2, color: "Color 2" }] }, strokeDash: [1, 2], strokeDashOffset: 1, blendMode: "source-over", blur: 1, rotate: 1, pivot: { x: 1, y: 1 }, shadow: { color: "Color", blur: 1 }, animation: { durationMs: 1, loop: false, keyframes: [{ at: 1, offsetX: 1, offsetY: 1, rotate: 1, opacity: 1, radiusX: 1, radiusY: 1, width: 1, height: 1, strokeWidth: 1, strokeDashOffset: 1, blur: 1, fill: "Fill", stroke: "Stroke", shadow: { color: "Color", blur: 1 } }, { at: 2, offsetX: 2, offsetY: 2, rotate: 2, opacity: 2, radiusX: 2, radiusY: 2, width: 2, height: 2, strokeWidth: 2, strokeDashOffset: 2, blur: 2, fill: "Fill 2", stroke: "Stroke 2", shadow: { color: "Color 2", blur: 2 } }] }, opacity: 1 }, { type: "draw-shape", shape: rect, position: { x: 2, y: 2, z: 2 }, anchor: ground, width: 2, height: 2, radiusX: 2, radiusY: 2, offsetX: 2, offsetY: 2, points: [{ x: 1, y: 1 }, { x: 2, y: 2 }], d: "D 2", fill: "Fill 2", gradient: { kind: radial, from: { x: 2, y: 2 }, to: { x: 2, y: 2 }, center: { x: 2, y: 2 }, radius: 2, angle: 2, stops: [{ offset: 1, color: "Color" }, { offset: 2, color: "Color 2" }] }, fillPattern: { kind: image, url: "Url 2", scale: 2, alpha: 2, color: "Color 2" }, stroke: "Stroke 2", strokeWidth: 2, strokeGradient: { kind: radial, from: { x: 2, y: 2 }, to: { x: 2, y: 2 }, center: { x: 2, y: 2 }, radius: 2, angle: 2, stops: [{ offset: 1, color: "Color" }, { offset: 2, color: "Color 2" }] }, strokeDash: [1, 2], strokeDashOffset: 2, blendMode: lighter, blur: 2, rotate: 2, pivot: { x: 2, y: 2 }, shadow: { color: "Color 2", blur: 2 }, animation: { durationMs: 2, loop: true, keyframes: [{ at: 1, offsetX: 1, offsetY: 1, rotate: 1, opacity: 1, radiusX: 1, radiusY: 1, width: 1, height: 1, strokeWidth: 1, strokeDashOffset: 1, blur: 1, fill: "Fill", stroke: "Stroke", shadow: { color: "Color", blur: 1 } }, { at: 2, offsetX: 2, offsetY: 2, rotate: 2, opacity: 2, radiusX: 2, radiusY: 2, width: 2, height: 2, strokeWidth: 2, strokeDashOffset: 2, blur: 2, fill: "Fill 2", stroke: "Stroke 2", shadow: { color: "Color 2", blur: 2 } }] }, opacity: 2 }]
143
151
  @label "Items"
144
152
  @description "items prop"
145
153
  @tier "presentation"
@@ -17,7 +17,7 @@ orbital DrawShapeOrbital {
17
17
  center : DrawShapeGradientCenter
18
18
  radius : number
19
19
  angle : number
20
- stops : [object]!
20
+ stops : [DrawShapeGradientStopsItem]!
21
21
  }
22
22
  type DrawShapeGradientFrom = {
23
23
  x : number!
@@ -31,6 +31,10 @@ orbital DrawShapeOrbital {
31
31
  x : number!
32
32
  y : number!
33
33
  }
34
+ type DrawShapeGradientStopsItem = {
35
+ offset : number!
36
+ color : string!
37
+ }
34
38
  type DrawShapeFillPattern = {
35
39
  kind : "noise" | "image"!
36
40
  url : string
@@ -45,7 +49,7 @@ orbital DrawShapeOrbital {
45
49
  center : DrawShapeStrokeGradientCenter
46
50
  radius : number
47
51
  angle : number
48
- stops : [object]!
52
+ stops : [DrawShapeStrokeGradientStopsItem]!
49
53
  }
50
54
  type DrawShapeStrokeGradientFrom = {
51
55
  x : number!
@@ -59,6 +63,10 @@ orbital DrawShapeOrbital {
59
63
  x : number!
60
64
  y : number!
61
65
  }
66
+ type DrawShapeStrokeGradientStopsItem = {
67
+ offset : number!
68
+ color : string!
69
+ }
62
70
  type DrawShapePivot = {
63
71
  x : number!
64
72
  y : number!
@@ -143,7 +151,7 @@ orbital DrawShapeOrbital {
143
151
  @label "Position"
144
152
  @description "Logical scene position; the projector maps it to pixels / world."
145
153
  @tier "presentation"
146
- anchor : object = {}
154
+ anchor : "top-left" | "ground" | "center" = "top-left"
147
155
  @label "Anchor"
148
156
  @description "How the shape aligns to its projected position. Default varies by `shape`."
149
157
  @tier "presentation"
@@ -2,15 +2,16 @@ app ui-draw-sprite-layer "1.0.0"
2
2
  "DrawSpriteLayer — UI factory (1:1 with the @almadar/ui draw-sprite-layer pattern)."
3
3
  orbital DrawSpriteLayerOrbital {
4
4
  type DrawSpriteLayerItemsItem = {
5
- type : json!
5
+ type : "draw-sprite"!
6
6
  position : DrawSpriteLayerItemsItemPosition!
7
7
  asset : DrawSpriteLayerItemsItemAsset!
8
- anchor : object
8
+ anchor : "top-left" | "ground" | "center"
9
9
  width : number
10
10
  height : number
11
11
  frame : DrawSpriteLayerItemsItemFrame
12
12
  animation : string
13
13
  loop : boolean
14
+ clockMs : number
14
15
  flipX : boolean
15
16
  rotation : number
16
17
  opacity : number
@@ -62,7 +63,7 @@ orbital DrawSpriteLayerOrbital {
62
63
  }
63
64
 
64
65
  config {
65
- items : [DrawSpriteLayerItemsItem] = [{ type: "Type", position: { x: 1, y: 1, z: 1 }, asset: { url: "https://almadar-kflow-assets.web.app/shared/ui-roguelike-board/default/units/player.png", role: "npc", category: "asset", animations: ["idle", "walk", "attack", "hit", "death"], style: "pixel", dimension: "2d", aspect: "1:1", name: "asset", thumbnailUrl: "" }, width: 1, height: 1, frame: { x: 1, y: 1, w: 1, h: 1 }, animation: "Animation", loop: false, flipX: false, rotation: 1, opacity: 1, shadow: { color: "Color", blur: 1 } }, { type: "Type 2", position: { x: 2, y: 2, z: 2 }, asset: { url: "https://almadar-kflow-assets.web.app/shared/ui-roguelike-board/default/units/player.png", role: "npc", category: "asset", animations: ["idle", "walk", "attack", "hit", "death"], style: "pixel", dimension: "2d", aspect: "1:1", name: "asset", thumbnailUrl: "" }, width: 2, height: 2, frame: { x: 2, y: 2, w: 2, h: 2 }, animation: "Animation 2", loop: true, flipX: true, rotation: 2, opacity: 2, shadow: { color: "Color 2", blur: 2 } }]
66
+ items : [DrawSpriteLayerItemsItem] = [{ type: "draw-sprite", position: { x: 1, y: 1, z: 1 }, asset: { url: "https://almadar-kflow-assets.web.app/shared/ui-roguelike-board/default/units/player.png", role: "npc", category: "asset", animations: ["idle", "walk", "attack", "hit", "death"], style: "pixel", dimension: "2d", aspect: "1:1", name: "asset", thumbnailUrl: "" }, anchor: "top-left", width: 1, height: 1, frame: { x: 1, y: 1, w: 1, h: 1 }, animation: "Animation", loop: false, clockMs: 1, flipX: false, rotation: 1, opacity: 1, shadow: { color: "Color", blur: 1 } }, { type: "draw-sprite", position: { x: 2, y: 2, z: 2 }, asset: { url: "https://almadar-kflow-assets.web.app/shared/ui-roguelike-board/default/units/player.png", role: "npc", category: "asset", animations: ["idle", "walk", "attack", "hit", "death"], style: "pixel", dimension: "2d", aspect: "1:1", name: "asset", thumbnailUrl: "" }, anchor: ground, width: 2, height: 2, frame: { x: 2, y: 2, w: 2, h: 2 }, animation: "Animation 2", loop: true, clockMs: 2, flipX: true, rotation: 2, opacity: 2, shadow: { color: "Color 2", blur: 2 } }]
66
67
  @label "Items"
67
68
  @description "Sprites painted in array order; z-ordering is the caller's responsibility."
68
69
  @tier "presentation"
@@ -49,6 +49,7 @@ orbital DrawSpriteOrbital {
49
49
  frame: @config.frame
50
50
  animation: @config.animation
51
51
  loop: @config.loop
52
+ clockMs: @config.clockMs
52
53
  flipX: @config.flipX
53
54
  rotation: @config.rotation
54
55
  opacity: @config.opacity
@@ -66,7 +67,7 @@ orbital DrawSpriteOrbital {
66
67
  @label "Asset"
67
68
  @description "The image / atlas reference to blit."
68
69
  @tier "presentation"
69
- anchor : object = {}
70
+ anchor : "top-left" | "ground" | "center" = "top-left"
70
71
  @label "Anchor"
71
72
  @description "How the sprite aligns to its projected position. Default `'top-left'`."
72
73
  @tier "presentation"
@@ -90,6 +91,10 @@ orbital DrawSpriteOrbital {
90
91
  @label "Loop"
91
92
  @description "Override the sheet row's loop flag. The paint clock is wall-time, so one-shot rows hold their final frame — preview pages set `true` to cycle attack/hit/death continuously."
92
93
  @tier "presentation"
94
+ clockMs : number
95
+ @label "Clock Ms"
96
+ @description "Animation clock override in ms (e.g. an fx entry's age since spawn). Omitted → the host paint clock; one-shot rows anchored to wall-time would otherwise sit on their final frame."
97
+ @tier "presentation"
93
98
  flipX : boolean
94
99
  @label "Flip X"
95
100
  @description "Mirror horizontally (facing)."
@@ -2,10 +2,10 @@ app ui-draw-text-layer "1.0.0"
2
2
  "DrawTextLayer — UI factory (1:1 with the @almadar/ui draw-text-layer pattern)."
3
3
  orbital DrawTextLayerOrbital {
4
4
  type DrawTextLayerItemsItem = {
5
- type : json!
5
+ type : "draw-text"!
6
6
  text : string!
7
7
  position : DrawTextLayerItemsItemPosition!
8
- anchor : object
8
+ anchor : "top-left" | "ground" | "center"
9
9
  offsetX : number
10
10
  offsetY : number
11
11
  color : string!
@@ -36,7 +36,7 @@ orbital DrawTextLayerOrbital {
36
36
  }
37
37
 
38
38
  config {
39
- items : [DrawTextLayerItemsItem] = [{ type: "Type", text: "Text", position: { x: 1, y: 1, z: 1 }, offsetX: 1, offsetY: 1, color: "Color", font: "Font", align: center, baseline: alphabetic, opacity: 1 }, { type: "Type 2", text: "Text 2", position: { x: 2, y: 2, z: 2 }, offsetX: 2, offsetY: 2, color: "Color 2", font: "Font 2", align: end, baseline: bottom, opacity: 2 }]
39
+ items : [DrawTextLayerItemsItem] = [{ type: "draw-text", text: "Text", position: { x: 1, y: 1, z: 1 }, anchor: "top-left", offsetX: 1, offsetY: 1, color: "Color", font: "Font", align: center, baseline: alphabetic, opacity: 1 }, { type: "draw-text", text: "Text 2", position: { x: 2, y: 2, z: 2 }, anchor: ground, offsetX: 2, offsetY: 2, color: "Color 2", font: "Font 2", align: end, baseline: bottom, opacity: 2 }]
40
40
  @label "Items"
41
41
  @description "items prop"
42
42
  @tier "presentation"
@@ -40,7 +40,7 @@ orbital DrawTextOrbital {
40
40
  @label "Position"
41
41
  @description "Logical scene position; the projector maps it to pixels / world."
42
42
  @tier "presentation"
43
- anchor : object = {}
43
+ anchor : "top-left" | "ground" | "center" = "top-left"
44
44
  @label "Anchor"
45
45
  @description "anchor prop"
46
46
  @tier "presentation"
@@ -8,7 +8,7 @@ orbital SequenceBarOrbital {
8
8
  description : string
9
9
  iconEmoji : string
10
10
  iconUrl : SequenceBarSlotsItemIconUrl
11
- stateMachine : object
11
+ stateMachine : SequenceBarSlotsItemStateMachine
12
12
  }
13
13
  type SequenceBarSlotsItemIconUrl = {
14
14
  url : asset!
@@ -24,6 +24,19 @@ orbital SequenceBarOrbital {
24
24
  name : string
25
25
  thumbnailUrl : string
26
26
  }
27
+ type SequenceBarSlotsItemStateMachine = {
28
+ name : string!
29
+ states : [string]!
30
+ currentState : string!
31
+ transitions : [SequenceBarSlotsItemStateMachineTransitionsItem]!
32
+ description : string
33
+ }
34
+ type SequenceBarSlotsItemStateMachineTransitionsItem = {
35
+ from : string!
36
+ to : string!
37
+ event : string!
38
+ guardHint : string
39
+ }
27
40
  type SequenceBarCategoryColorsValue = {
28
41
  bg : string!
29
42
  border : string!
@@ -35,7 +48,7 @@ orbital SequenceBarOrbital {
35
48
  description : string
36
49
  iconEmoji : string
37
50
  iconUrl : SequenceBarSLOTDROPItemIconUrl
38
- stateMachine : object
51
+ stateMachine : SequenceBarSLOTDROPItemStateMachine
39
52
  }
40
53
  type SequenceBarSLOTDROPItemIconUrl = {
41
54
  url : asset!
@@ -51,6 +64,19 @@ orbital SequenceBarOrbital {
51
64
  name : string
52
65
  thumbnailUrl : string
53
66
  }
67
+ type SequenceBarSLOTDROPItemStateMachine = {
68
+ name : string!
69
+ states : [string]!
70
+ currentState : string!
71
+ transitions : [SequenceBarSLOTDROPItemStateMachineTransitionsItem]!
72
+ description : string
73
+ }
74
+ type SequenceBarSLOTDROPItemStateMachineTransitionsItem = {
75
+ from : string!
76
+ to : string!
77
+ event : string!
78
+ guardHint : string
79
+ }
54
80
 
55
81
  entity SequenceBarItem [runtime] {
56
82
  id : string!
@@ -96,7 +122,7 @@ orbital SequenceBarOrbital {
96
122
  }
97
123
 
98
124
  config {
99
- slots : [SequenceBarSlotsItem] = [{ id: "Id", name: "Name", category: "Category", description: "Description", iconEmoji: "Icon Emoji", iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-battle-board/default/ui/star.png", role: "ui", category: "iconUrl", animations: ["static"], style: "pixel", dimension: "2d", aspect: "1:1", name: "iconUrl", thumbnailUrl: "" } }, { id: "Id 2", name: "Name 2", category: "Category 2", description: "Description 2", iconEmoji: "Icon Emoji 2", iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-battle-board/default/ui/star.png", role: "ui", category: "iconUrl", animations: ["static"], style: "pixel", dimension: "2d", aspect: "1:1", name: "iconUrl", thumbnailUrl: "" } }]
125
+ slots : [SequenceBarSlotsItem] = [{ id: "Id", name: "Name", category: "Category", description: "Description", iconEmoji: "Icon Emoji", iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-battle-board/default/ui/star.png", role: "ui", category: "iconUrl", animations: ["static"], style: "pixel", dimension: "2d", aspect: "1:1", name: "iconUrl", thumbnailUrl: "" }, stateMachine: { name: "Name", states: ["Item", "Item 2"], currentState: "Current State", transitions: [{ from: "From", to: "To", event: "Event", guardHint: "Guard Hint" }, { from: "From 2", to: "To 2", event: "Event 2", guardHint: "Guard Hint 2" }], description: "Description" } }, { id: "Id 2", name: "Name 2", category: "Category 2", description: "Description 2", iconEmoji: "Icon Emoji 2", iconUrl: { url: "https://almadar-kflow-assets.web.app/shared/ui-battle-board/default/ui/star.png", role: "ui", category: "iconUrl", animations: ["static"], style: "pixel", dimension: "2d", aspect: "1:1", name: "iconUrl", thumbnailUrl: "" }, stateMachine: { name: "Name 2", states: ["Item", "Item 2"], currentState: "Current State 2", transitions: [{ from: "From", to: "To", event: "Event", guardHint: "Guard Hint" }, { from: "From 2", to: "To 2", event: "Event 2", guardHint: "Guard Hint 2" }], description: "Description 2" } }]
100
126
  @label "Slots"
101
127
  @description "The current sequence (sparse — undefined means empty slot)"
102
128
  @tier "presentation"
@@ -34,7 +34,7 @@ orbital StateGraphOrbital {
34
34
 
35
35
  emits {
36
36
  @config.nodeClickEvent -> external {
37
- id : string
37
+ stateId : string!
38
38
  }
39
39
  @description "Emits UI:{nodeClickEvent} with { stateId } when a node is clicked."
40
40
  @tier "essential"
@@ -8,7 +8,7 @@ orbital TraitSlotOrbital {
8
8
  description : string
9
9
  iconEmoji : string
10
10
  iconUrl : TraitSlotEquippedItemIconUrl
11
- stateMachine : object
11
+ stateMachine : TraitSlotEquippedItemStateMachine
12
12
  }
13
13
  type TraitSlotEquippedItemIconUrl = {
14
14
  url : asset!
@@ -24,6 +24,19 @@ orbital TraitSlotOrbital {
24
24
  name : string
25
25
  thumbnailUrl : string
26
26
  }
27
+ type TraitSlotEquippedItemStateMachine = {
28
+ name : string!
29
+ states : [string]!
30
+ currentState : string!
31
+ transitions : [TraitSlotEquippedItemStateMachineTransitionsItem]!
32
+ description : string
33
+ }
34
+ type TraitSlotEquippedItemStateMachineTransitionsItem = {
35
+ from : string!
36
+ to : string!
37
+ event : string!
38
+ guardHint : string
39
+ }
27
40
  type TraitSlotCategoryColorsValue = {
28
41
  bg : string!
29
42
  border : string!
@@ -55,7 +68,7 @@ orbital TraitSlotOrbital {
55
68
  description : string
56
69
  iconEmoji : string
57
70
  iconUrl : TraitSlotITEMDROPItemIconUrl
58
- stateMachine : object
71
+ stateMachine : TraitSlotITEMDROPItemStateMachine
59
72
  }
60
73
  type TraitSlotITEMDROPItemIconUrl = {
61
74
  url : asset!
@@ -71,6 +84,19 @@ orbital TraitSlotOrbital {
71
84
  name : string
72
85
  thumbnailUrl : string
73
86
  }
87
+ type TraitSlotITEMDROPItemStateMachine = {
88
+ name : string!
89
+ states : [string]!
90
+ currentState : string!
91
+ transitions : [TraitSlotITEMDROPItemStateMachineTransitionsItem]!
92
+ description : string
93
+ }
94
+ type TraitSlotITEMDROPItemStateMachineTransitionsItem = {
95
+ from : string!
96
+ to : string!
97
+ event : string!
98
+ guardHint : string
99
+ }
74
100
  type TraitSlotDRAGSTARTItem = {
75
101
  id : string!
76
102
  name : string!
@@ -78,7 +104,7 @@ orbital TraitSlotOrbital {
78
104
  description : string
79
105
  iconEmoji : string
80
106
  iconUrl : TraitSlotDRAGSTARTItemIconUrl
81
- stateMachine : object
107
+ stateMachine : TraitSlotDRAGSTARTItemStateMachine
82
108
  }
83
109
  type TraitSlotDRAGSTARTItemIconUrl = {
84
110
  url : asset!
@@ -94,6 +120,19 @@ orbital TraitSlotOrbital {
94
120
  name : string
95
121
  thumbnailUrl : string
96
122
  }
123
+ type TraitSlotDRAGSTARTItemStateMachine = {
124
+ name : string!
125
+ states : [string]!
126
+ currentState : string!
127
+ transitions : [TraitSlotDRAGSTARTItemStateMachineTransitionsItem]!
128
+ description : string
129
+ }
130
+ type TraitSlotDRAGSTARTItemStateMachineTransitionsItem = {
131
+ from : string!
132
+ to : string!
133
+ event : string!
134
+ guardHint : string
135
+ }
97
136
 
98
137
  entity TraitSlotItem [runtime] {
99
138
  id : string!
@@ -138,7 +138,7 @@ orbital TacticsBoard2DOrbital {
138
138
  animTicksLeft : number = 0
139
139
  animAttackerId : string = ""
140
140
  animAtkTicksLeft : number = 0
141
- svgAssetArt : json = {}
141
+ svgAssetArt : Map string Map string [node] = {}
142
142
  }
143
143
 
144
144
  trait TacticsAuthority = Tactics.traits.GridTactics -> GameState {
@@ -144,7 +144,7 @@ orbital TacticsBoard3DOrbital {
144
144
  attackTargets : [ValidMove] = []
145
145
  uiPhase : string = "observation"
146
146
  turn : number = 0
147
- meshAssetArt : json = {}
147
+ meshAssetArt : Map string Map string [node] = {}
148
148
  }
149
149
 
150
150
  trait TacticsAuthority = Tactics.traits.GridTactics -> GameState {
@@ -97,9 +97,9 @@ orbital GameShellOrbital {
97
97
  @label "Hud Background Asset"
98
98
  @description "Per-call-site 9-sliced panel override. Chrome normally comes from the active theme (see the theme config knob); most callers leave this unset."
99
99
  @tier "presentation"
100
- fontFamily : string = future
100
+ fontFamily : string = ""
101
101
  @label "Font Family"
102
- @description "Game display-font key (future | future-narrow | pixel | blocks | mini) or a CSS font-family. Scoped override of the theme contract's --font-family-display slot: titles and numerics take this face, body text follows the active theme."
102
+ @description "Game display-font key (pixel | fredoka | future | future-narrow | blocks | mini) or a CSS font-family. Scoped override of the theme contract's --font-family-display slot: titles and numerics take this face, body text follows the active theme. Empty = the active theme's font-family-display token decides."
103
103
  @tier "presentation"
104
104
  theme : string = ""
105
105
  @label "Theme"
@@ -28,8 +28,8 @@ orbital LearnDiagramOrbital {
28
28
  selectedIndex : number = -1
29
29
  captionText : string
30
30
  readoutText : string
31
- captionChildren : [json]
32
- partButtons : [json]
31
+ captionChildren : [node]
32
+ partButtons : [node]
33
33
  }
34
34
 
35
35
  trait LearnDiagramSim -> @rebindable LearnDiagramScene [interaction, instance] {
@@ -66,7 +66,7 @@ orbital LearnStepperOrbital {
66
66
  tallyItems : [LearnStepperTallyItem]
67
67
  visibleThreadNote : string
68
68
  shapes : [LearnStepperShape]
69
- filterButtons : [json]
69
+ filterButtons : [node]
70
70
  }
71
71
 
72
72
  trait LearnStepperSim -> @rebindable LearnStepperScene [interaction, instance] {