@almadar/std 16.236.0 → 16.238.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 (583) hide show
  1. package/behaviors/behaviors-registry.json +57874 -1895
  2. package/behaviors/lolo/agent/atoms/std-agent-context.lolo +65 -134
  3. package/behaviors/lolo/agent/atoms/std-agent-memory.lolo +162 -112
  4. package/behaviors/lolo/agent/atoms/std-agent-session.lolo +239 -115
  5. package/behaviors/lolo/agent/atoms/std-agent-tool-loop.lolo +96 -90
  6. package/behaviors/lolo/agent/atoms/std-agent-trace.lolo +133 -40
  7. package/behaviors/lolo/agent/organisms/std-agent-assistant.lolo +137 -0
  8. package/behaviors/lolo/infra/atoms/std-approval-gate.lolo +7 -0
  9. package/behaviors/lolo/infra/atoms/std-cache-aside.lolo +4 -17
  10. package/behaviors/lolo/infra/atoms/std-migration-job.lolo +2 -2
  11. package/behaviors/lolo/infra/atoms/std-notification-preferences.lolo +26 -13
  12. package/behaviors/lolo/infra/atoms/std-permission-matrix.lolo +5 -0
  13. package/behaviors/lolo/ui/avl/atoms/ui-avl-glyph.lolo +90 -0
  14. package/behaviors/lolo/ui/avl/atoms/ui-avl-state-machine.lolo +90 -0
  15. package/behaviors/lolo/ui/avl/atoms/ui-behavior-view.lolo +80 -0
  16. package/behaviors/lolo/ui/avl/atoms/ui-module-card.lolo +80 -0
  17. package/behaviors/lolo/ui/core/atoms/std-billable-hour.lolo +12 -21
  18. package/behaviors/lolo/ui/core/atoms/std-board.lolo +5 -32
  19. package/behaviors/lolo/ui/core/atoms/std-book-reader.lolo +19 -11
  20. package/behaviors/lolo/ui/core/atoms/std-browse.lolo +42 -7
  21. package/behaviors/lolo/ui/core/atoms/std-calendar.lolo +4 -16
  22. package/behaviors/lolo/ui/core/atoms/std-detail-layout.lolo +3 -1
  23. package/behaviors/lolo/ui/core/atoms/std-esign-flow.lolo +21 -13
  24. package/behaviors/lolo/ui/core/atoms/std-esign-request.lolo +12 -2
  25. package/behaviors/lolo/ui/core/atoms/std-event-log.lolo +44 -10
  26. package/behaviors/lolo/ui/core/atoms/std-file-store.lolo +35 -72
  27. package/behaviors/lolo/ui/core/atoms/std-gantt-schedule.lolo +29 -14
  28. package/behaviors/lolo/ui/core/atoms/std-image-upload-multi.lolo +8 -22
  29. package/behaviors/lolo/ui/core/atoms/std-list.lolo +28 -13
  30. package/behaviors/lolo/ui/core/atoms/std-multi-party-flow.lolo +52 -14
  31. package/behaviors/lolo/ui/core/atoms/std-prose.lolo +7 -1
  32. package/behaviors/lolo/ui/core/atoms/std-rating-review.lolo +23 -8
  33. package/behaviors/lolo/ui/core/atoms/std-record-detail.lolo +139 -19
  34. package/behaviors/lolo/ui/core/atoms/std-recurrence.lolo +28 -20
  35. package/behaviors/lolo/ui/core/atoms/std-related.lolo +36 -25
  36. package/behaviors/lolo/ui/core/atoms/std-saved-search.lolo +20 -21
  37. package/behaviors/lolo/ui/core/atoms/std-scoped-list.lolo +143 -0
  38. package/behaviors/lolo/ui/core/atoms/std-selection.lolo +34 -14
  39. package/behaviors/lolo/ui/core/atoms/std-signature-capture.lolo +1 -13
  40. package/behaviors/lolo/ui/core/atoms/std-slide-deck.lolo +2 -2
  41. package/behaviors/lolo/ui/core/atoms/std-step-flow.lolo +4 -16
  42. package/behaviors/lolo/ui/core/atoms/std-tag-taxonomy.lolo +24 -80
  43. package/behaviors/lolo/ui/core/atoms/std-thread.lolo +92 -31
  44. package/behaviors/lolo/ui/core/atoms/std-tree.lolo +18 -22
  45. package/behaviors/lolo/ui/core/atoms/std-version-history.lolo +43 -83
  46. package/behaviors/lolo/ui/core/atoms/std-vote.lolo +2 -39
  47. package/behaviors/lolo/ui/core/atoms/std-wizard.lolo +20 -10
  48. package/behaviors/lolo/ui/core/atoms/ui-animated-graphic.lolo +90 -0
  49. package/behaviors/lolo/ui/core/atoms/ui-animated-reveal.lolo +90 -0
  50. package/behaviors/lolo/ui/core/atoms/ui-aside.lolo +90 -0
  51. package/behaviors/lolo/ui/core/atoms/ui-atlas-image.lolo +16 -0
  52. package/behaviors/lolo/ui/core/atoms/ui-atlas-panel.lolo +16 -0
  53. package/behaviors/lolo/ui/core/atoms/ui-avatar.lolo +91 -1
  54. package/behaviors/lolo/ui/core/atoms/ui-badge.lolo +90 -0
  55. package/behaviors/lolo/ui/core/atoms/ui-box.lolo +98 -13
  56. package/behaviors/lolo/ui/core/atoms/ui-button.lolo +90 -0
  57. package/behaviors/lolo/ui/core/atoms/ui-card.lolo +91 -1
  58. package/behaviors/lolo/ui/core/atoms/ui-center.lolo +90 -0
  59. package/behaviors/lolo/ui/core/atoms/ui-checkbox.lolo +112 -0
  60. package/behaviors/lolo/ui/core/atoms/ui-confetti-effect.lolo +90 -0
  61. package/behaviors/lolo/ui/core/atoms/ui-day-cell.lolo +90 -0
  62. package/behaviors/lolo/ui/core/atoms/ui-dialog.lolo +90 -0
  63. package/behaviors/lolo/ui/core/atoms/ui-divider.lolo +90 -0
  64. package/behaviors/lolo/ui/core/atoms/ui-filter-pill.lolo +90 -0
  65. package/behaviors/lolo/ui/core/atoms/ui-flip-container.lolo +90 -0
  66. package/behaviors/lolo/ui/core/atoms/ui-game-icon.lolo +90 -0
  67. package/behaviors/lolo/ui/core/atoms/ui-hstack.lolo +90 -10
  68. package/behaviors/lolo/ui/core/atoms/ui-icon.lolo +90 -0
  69. package/behaviors/lolo/ui/core/atoms/ui-image.lolo +90 -0
  70. package/behaviors/lolo/ui/core/atoms/ui-infinite-scroll-sentinel.lolo +90 -0
  71. package/behaviors/lolo/ui/core/atoms/ui-input.lolo +11 -1
  72. package/behaviors/lolo/ui/core/atoms/ui-label.lolo +91 -1
  73. package/behaviors/lolo/ui/core/atoms/ui-law-reference-tooltip.lolo +90 -0
  74. package/behaviors/lolo/ui/core/atoms/ui-overlay.lolo +90 -0
  75. package/behaviors/lolo/ui/core/atoms/ui-pattern-tile.lolo +90 -0
  76. package/behaviors/lolo/ui/core/atoms/ui-presence.lolo +90 -0
  77. package/behaviors/lolo/ui/core/atoms/ui-progress-bar.lolo +91 -1
  78. package/behaviors/lolo/ui/core/atoms/ui-radio.lolo +106 -0
  79. package/behaviors/lolo/ui/core/atoms/ui-range-slider.lolo +122 -0
  80. package/behaviors/lolo/ui/core/atoms/ui-section-header.lolo +90 -0
  81. package/behaviors/lolo/ui/core/atoms/ui-select.lolo +95 -0
  82. package/behaviors/lolo/ui/core/atoms/ui-spacer.lolo +90 -0
  83. package/behaviors/lolo/ui/core/atoms/ui-sparkline.lolo +90 -0
  84. package/behaviors/lolo/ui/core/atoms/ui-spinner.lolo +90 -0
  85. package/behaviors/lolo/ui/core/atoms/ui-stack.lolo +90 -10
  86. package/behaviors/lolo/ui/core/atoms/ui-status-dot.lolo +90 -0
  87. package/behaviors/lolo/ui/core/atoms/ui-svg-branch.lolo +90 -0
  88. package/behaviors/lolo/ui/core/atoms/ui-svg-connection.lolo +90 -0
  89. package/behaviors/lolo/ui/core/atoms/ui-svg-flow.lolo +90 -0
  90. package/behaviors/lolo/ui/core/atoms/ui-svg-grid.lolo +90 -0
  91. package/behaviors/lolo/ui/core/atoms/ui-svg-lobe.lolo +90 -0
  92. package/behaviors/lolo/ui/core/atoms/ui-svg-mesh.lolo +90 -0
  93. package/behaviors/lolo/ui/core/atoms/ui-svg-morph.lolo +90 -0
  94. package/behaviors/lolo/ui/core/atoms/ui-svg-node.lolo +90 -0
  95. package/behaviors/lolo/ui/core/atoms/ui-svg-pulse.lolo +90 -0
  96. package/behaviors/lolo/ui/core/atoms/ui-svg-ring.lolo +90 -0
  97. package/behaviors/lolo/ui/core/atoms/ui-svg-shield.lolo +90 -0
  98. package/behaviors/lolo/ui/core/atoms/ui-svg-stack.lolo +90 -0
  99. package/behaviors/lolo/ui/core/atoms/ui-switch.lolo +106 -0
  100. package/behaviors/lolo/ui/core/atoms/ui-text-highlight.lolo +122 -0
  101. package/behaviors/lolo/ui/core/atoms/ui-textarea.lolo +100 -0
  102. package/behaviors/lolo/ui/core/atoms/ui-theme-toggle.lolo +90 -0
  103. package/behaviors/lolo/ui/core/atoms/ui-time-slot-cell.lolo +142 -0
  104. package/behaviors/lolo/ui/core/atoms/ui-trend-indicator.lolo +91 -1
  105. package/behaviors/lolo/ui/core/atoms/ui-typewriter-text.lolo +90 -0
  106. package/behaviors/lolo/ui/core/atoms/ui-typography.lolo +96 -6
  107. package/behaviors/lolo/ui/core/atoms/ui-vstack.lolo +90 -10
  108. package/behaviors/lolo/ui/core/molecules/ui-accordion.lolo +90 -0
  109. package/behaviors/lolo/ui/core/molecules/ui-activation-block.lolo +90 -0
  110. package/behaviors/lolo/ui/core/molecules/ui-alert.lolo +95 -0
  111. package/behaviors/lolo/ui/core/molecules/ui-animated-counter.lolo +91 -1
  112. package/behaviors/lolo/ui/core/molecules/ui-bloom-quiz-block.lolo +90 -0
  113. package/behaviors/lolo/ui/core/molecules/ui-branching-logic-builder.lolo +90 -0
  114. package/behaviors/lolo/ui/core/molecules/ui-breadcrumb.lolo +90 -0
  115. package/behaviors/lolo/ui/core/molecules/ui-calendar-grid.lolo +122 -0
  116. package/behaviors/lolo/ui/core/molecules/ui-carousel.lolo +90 -0
  117. package/behaviors/lolo/ui/core/molecules/ui-change-list.lolo +90 -0
  118. package/behaviors/lolo/ui/core/molecules/ui-chart-legend.lolo +90 -0
  119. package/behaviors/lolo/ui/core/molecules/ui-chart.lolo +93 -3
  120. package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +202 -0
  121. package/behaviors/lolo/ui/core/molecules/ui-command-palette.lolo +110 -4
  122. package/behaviors/lolo/ui/core/molecules/ui-commit-row.lolo +123 -1
  123. package/behaviors/lolo/ui/core/molecules/ui-confirm-dialog.lolo +90 -0
  124. package/behaviors/lolo/ui/core/molecules/ui-connection-block.lolo +90 -0
  125. package/behaviors/lolo/ui/core/molecules/ui-container.lolo +92 -2
  126. package/behaviors/lolo/ui/core/molecules/ui-content-renderer.lolo +97 -7
  127. package/behaviors/lolo/ui/core/molecules/ui-data-grid.lolo +144 -4
  128. package/behaviors/lolo/ui/core/molecules/ui-data-list.lolo +132 -3
  129. package/behaviors/lolo/ui/core/molecules/ui-date-range-picker.lolo +109 -3
  130. package/behaviors/lolo/ui/core/molecules/ui-date-range-selector.lolo +90 -0
  131. package/behaviors/lolo/ui/core/molecules/ui-doc-breadcrumb.lolo +90 -0
  132. package/behaviors/lolo/ui/core/molecules/ui-doc-pagination.lolo +90 -0
  133. package/behaviors/lolo/ui/core/molecules/ui-doc-search.lolo +90 -0
  134. package/behaviors/lolo/ui/core/molecules/ui-doc-sidebar.lolo +90 -0
  135. package/behaviors/lolo/ui/core/molecules/ui-doc-toc.lolo +90 -0
  136. package/behaviors/lolo/ui/core/molecules/ui-document-details.lolo +139 -0
  137. package/behaviors/lolo/ui/core/molecules/ui-document-panel.lolo +122 -0
  138. package/behaviors/lolo/ui/core/molecules/ui-document-viewer.lolo +90 -0
  139. package/behaviors/lolo/ui/core/molecules/ui-drawer.lolo +90 -0
  140. package/behaviors/lolo/ui/core/molecules/ui-edge-decoration.lolo +10 -0
  141. package/behaviors/lolo/ui/core/molecules/ui-emoji-picker.lolo +91 -1
  142. package/behaviors/lolo/ui/core/molecules/ui-empty-state.lolo +91 -1
  143. package/behaviors/lolo/ui/core/molecules/ui-error-boundary.lolo +10 -0
  144. package/behaviors/lolo/ui/core/molecules/ui-error-state.lolo +90 -0
  145. package/behaviors/lolo/ui/core/molecules/ui-feature-card.lolo +91 -1
  146. package/behaviors/lolo/ui/core/molecules/ui-feature-grid.lolo +90 -0
  147. package/behaviors/lolo/ui/core/molecules/ui-file-tree.lolo +90 -0
  148. package/behaviors/lolo/ui/core/molecules/ui-filter-group.lolo +122 -0
  149. package/behaviors/lolo/ui/core/molecules/ui-flex.lolo +90 -0
  150. package/behaviors/lolo/ui/core/molecules/ui-flip-card.lolo +90 -0
  151. package/behaviors/lolo/ui/core/molecules/ui-floating-action-button.lolo +91 -1
  152. package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +90 -0
  153. package/behaviors/lolo/ui/core/molecules/ui-form-actions.lolo +90 -0
  154. package/behaviors/lolo/ui/core/molecules/ui-form-field.lolo +90 -0
  155. package/behaviors/lolo/ui/core/molecules/ui-form-layout.lolo +96 -6
  156. package/behaviors/lolo/ui/core/molecules/ui-form-section-header.lolo +90 -0
  157. package/behaviors/lolo/ui/core/molecules/ui-fx-overlay.lolo +90 -0
  158. package/behaviors/lolo/ui/core/molecules/ui-gantt.lolo +131 -1
  159. package/behaviors/lolo/ui/core/molecules/ui-geometric-pattern.lolo +10 -0
  160. package/behaviors/lolo/ui/core/molecules/ui-gradient-divider.lolo +90 -0
  161. package/behaviors/lolo/ui/core/molecules/ui-graph-canvas.lolo +95 -0
  162. package/behaviors/lolo/ui/core/molecules/ui-graph-view.lolo +90 -0
  163. package/behaviors/lolo/ui/core/molecules/ui-grid.lolo +95 -5
  164. package/behaviors/lolo/ui/core/molecules/ui-header.lolo +90 -0
  165. package/behaviors/lolo/ui/core/molecules/ui-icon-button.lolo +90 -0
  166. package/behaviors/lolo/ui/core/molecules/ui-import-preview-tree.lolo +93 -2
  167. package/behaviors/lolo/ui/core/molecules/ui-import-progress.lolo +90 -0
  168. package/behaviors/lolo/ui/core/molecules/ui-import-source-picker.lolo +90 -0
  169. package/behaviors/lolo/ui/core/molecules/ui-input-group.lolo +91 -1
  170. package/behaviors/lolo/ui/core/molecules/ui-jazari-state-machine.lolo +90 -0
  171. package/behaviors/lolo/ui/core/molecules/ui-lightbox.lolo +90 -0
  172. package/behaviors/lolo/ui/core/molecules/ui-likert-scale.lolo +91 -1
  173. package/behaviors/lolo/ui/core/molecules/ui-line-chart.lolo +90 -0
  174. package/behaviors/lolo/ui/core/molecules/ui-loading-state.lolo +90 -0
  175. package/behaviors/lolo/ui/core/molecules/ui-map-view.lolo +90 -0
  176. package/behaviors/lolo/ui/core/molecules/ui-markdown-content.lolo +90 -0
  177. package/behaviors/lolo/ui/core/molecules/ui-matrix-question.lolo +90 -0
  178. package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +91 -0
  179. package/behaviors/lolo/ui/core/molecules/ui-meter.lolo +90 -0
  180. package/behaviors/lolo/ui/core/molecules/ui-modal.lolo +90 -0
  181. package/behaviors/lolo/ui/core/molecules/ui-navigation.lolo +90 -0
  182. package/behaviors/lolo/ui/core/molecules/ui-notification.lolo +91 -1
  183. package/behaviors/lolo/ui/core/molecules/ui-number-stepper.lolo +122 -0
  184. package/behaviors/lolo/ui/core/molecules/ui-option-constraint-group.lolo +90 -0
  185. package/behaviors/lolo/ui/core/molecules/ui-orbital-visualization.lolo +90 -0
  186. package/behaviors/lolo/ui/core/molecules/ui-page-header.lolo +90 -0
  187. package/behaviors/lolo/ui/core/molecules/ui-page-transition.lolo +90 -0
  188. package/behaviors/lolo/ui/core/molecules/ui-pagination.lolo +106 -0
  189. package/behaviors/lolo/ui/core/molecules/ui-popover.lolo +106 -0
  190. package/behaviors/lolo/ui/core/molecules/ui-positioned-canvas.lolo +122 -0
  191. package/behaviors/lolo/ui/core/molecules/ui-progress-dots.lolo +90 -0
  192. package/behaviors/lolo/ui/core/molecules/ui-pull-to-refresh.lolo +90 -0
  193. package/behaviors/lolo/ui/core/molecules/ui-qr-scanner.lolo +90 -0
  194. package/behaviors/lolo/ui/core/molecules/ui-quiz-block.lolo +90 -0
  195. package/behaviors/lolo/ui/core/molecules/ui-reflection-block.lolo +90 -0
  196. package/behaviors/lolo/ui/core/molecules/ui-relation-select.lolo +106 -0
  197. package/behaviors/lolo/ui/core/molecules/ui-repeatable-form-section.lolo +90 -0
  198. package/behaviors/lolo/ui/core/molecules/ui-reply-tree.lolo +122 -0
  199. package/behaviors/lolo/ui/core/molecules/ui-rich-text-editor.lolo +106 -0
  200. package/behaviors/lolo/ui/core/molecules/ui-scaled-diagram.lolo +90 -0
  201. package/behaviors/lolo/ui/core/molecules/ui-search-input.lolo +106 -0
  202. package/behaviors/lolo/ui/core/molecules/ui-section.lolo +90 -0
  203. package/behaviors/lolo/ui/core/molecules/ui-side-panel.lolo +90 -0
  204. package/behaviors/lolo/ui/core/molecules/ui-sidebar.lolo +106 -0
  205. package/behaviors/lolo/ui/core/molecules/ui-signature-pad.lolo +90 -0
  206. package/behaviors/lolo/ui/core/molecules/ui-simple-grid.lolo +90 -0
  207. package/behaviors/lolo/ui/core/molecules/ui-skeleton.lolo +93 -3
  208. package/behaviors/lolo/ui/core/molecules/ui-social-proof.lolo +90 -0
  209. package/behaviors/lolo/ui/core/molecules/ui-sortable-list.lolo +122 -0
  210. package/behaviors/lolo/ui/core/molecules/ui-split.lolo +90 -0
  211. package/behaviors/lolo/ui/core/molecules/ui-star-rating.lolo +122 -0
  212. package/behaviors/lolo/ui/core/molecules/ui-stat-display.lolo +90 -0
  213. package/behaviors/lolo/ui/core/molecules/ui-swipeable-row.lolo +138 -0
  214. package/behaviors/lolo/ui/core/molecules/ui-table-view.lolo +140 -3
  215. package/behaviors/lolo/ui/core/molecules/ui-tabs.lolo +90 -0
  216. package/behaviors/lolo/ui/core/molecules/ui-tag-input.lolo +90 -0
  217. package/behaviors/lolo/ui/core/molecules/ui-tooltip.lolo +90 -0
  218. package/behaviors/lolo/ui/core/molecules/ui-top-nav-item.lolo +90 -0
  219. package/behaviors/lolo/ui/core/molecules/ui-upload-drop-zone.lolo +90 -0
  220. package/behaviors/lolo/ui/core/molecules/ui-version-diff.lolo +90 -0
  221. package/behaviors/lolo/ui/core/molecules/ui-violation-alert.lolo +91 -1
  222. package/behaviors/lolo/ui/core/molecules/ui-vote-stack.lolo +91 -1
  223. package/behaviors/lolo/ui/core/molecules/ui-wizard-container.lolo +90 -0
  224. package/behaviors/lolo/ui/core/molecules/ui-wizard-navigation.lolo +138 -0
  225. package/behaviors/lolo/ui/core/molecules/ui-wizard-progress.lolo +90 -0
  226. package/behaviors/lolo/ui/core/organisms/ui-chat-bar.lolo +91 -1
  227. package/behaviors/lolo/ui/core/organisms/ui-code-runner-panel.lolo +90 -0
  228. package/behaviors/lolo/ui/core/organisms/ui-dashboard-grid.lolo +91 -1
  229. package/behaviors/lolo/ui/core/organisms/ui-detail-panel.lolo +355 -6
  230. package/behaviors/lolo/ui/core/organisms/ui-dock-layout.lolo +90 -0
  231. package/behaviors/lolo/ui/core/organisms/ui-drawer-slot.lolo +10 -0
  232. package/behaviors/lolo/ui/core/organisms/ui-entity-cards.lolo +152 -8
  233. package/behaviors/lolo/ui/core/organisms/ui-entity-list.lolo +162 -7
  234. package/behaviors/lolo/ui/core/organisms/ui-entity-table.lolo +142 -1
  235. package/behaviors/lolo/ui/core/organisms/ui-form-section.lolo +141 -1
  236. package/behaviors/lolo/ui/core/organisms/ui-form.lolo +141 -1
  237. package/behaviors/lolo/ui/core/organisms/ui-master-detail-layout.lolo +90 -0
  238. package/behaviors/lolo/ui/core/organisms/ui-master-detail.lolo +123 -1
  239. package/behaviors/lolo/ui/core/organisms/ui-media-gallery.lolo +137 -1
  240. package/behaviors/lolo/ui/core/organisms/ui-modal-slot.lolo +10 -0
  241. package/behaviors/lolo/ui/core/organisms/ui-runtime-debugger.lolo +90 -0
  242. package/behaviors/lolo/ui/core/organisms/ui-segment-renderer.lolo +90 -0
  243. package/behaviors/lolo/ui/core/organisms/ui-split-pane.lolo +106 -0
  244. package/behaviors/lolo/ui/core/organisms/ui-stat-card.lolo +130 -2
  245. package/behaviors/lolo/ui/core/organisms/ui-state-machine-view.lolo +92 -2
  246. package/behaviors/lolo/ui/core/organisms/ui-subagent-trace-panel.lolo +91 -1
  247. package/behaviors/lolo/ui/core/organisms/ui-tabbed-container.lolo +90 -0
  248. package/behaviors/lolo/ui/core/organisms/ui-timeline.lolo +152 -2
  249. package/behaviors/lolo/ui/core/organisms/ui-toast-slot.lolo +91 -1
  250. package/behaviors/lolo/ui/core/templates/ui-auth-layout.lolo +81 -1
  251. package/behaviors/lolo/ui/core/templates/ui-counter-template.lolo +92 -2
  252. package/behaviors/lolo/ui/core/templates/ui-dashboard-layout.lolo +1 -1
  253. package/behaviors/lolo/ui/core/templates/ui-generic-app-template.lolo +90 -0
  254. package/behaviors/lolo/ui/game/.hand-authored.json +2 -2
  255. package/behaviors/lolo/ui/game/atoms/ui-action-palette.lolo +90 -0
  256. package/behaviors/lolo/ui/game/atoms/ui-action-tile.lolo +91 -1
  257. package/behaviors/lolo/ui/game/atoms/ui-canvas-2d.lolo +95 -0
  258. package/behaviors/lolo/ui/game/atoms/ui-canvas.lolo +91 -1
  259. package/behaviors/lolo/ui/game/atoms/ui-choice-button.lolo +91 -1
  260. package/behaviors/lolo/ui/game/atoms/ui-control-button.lolo +90 -0
  261. package/behaviors/lolo/ui/game/atoms/ui-control-grid.lolo +90 -0
  262. package/behaviors/lolo/ui/game/atoms/ui-dialogue-bubble.lolo +92 -2
  263. package/behaviors/lolo/ui/game/atoms/ui-draw-mesh.lolo +1 -1
  264. package/behaviors/lolo/ui/game/atoms/ui-draw-shape.lolo +2 -2
  265. package/behaviors/lolo/ui/game/atoms/ui-draw-sprite.lolo +1 -1
  266. package/behaviors/lolo/ui/game/atoms/ui-draw-text.lolo +3 -3
  267. package/behaviors/lolo/ui/game/atoms/ui-game-audio-toggle.lolo +90 -0
  268. package/behaviors/lolo/ui/game/atoms/ui-game-hud.lolo +90 -0
  269. package/behaviors/lolo/ui/game/atoms/ui-game-menu.lolo +91 -1
  270. package/behaviors/lolo/ui/game/atoms/ui-health-bar.lolo +90 -0
  271. package/behaviors/lolo/ui/game/atoms/ui-score-display.lolo +91 -1
  272. package/behaviors/lolo/ui/game/atoms/ui-sequence-bar.lolo +90 -0
  273. package/behaviors/lolo/ui/game/atoms/ui-stat-badge.lolo +90 -0
  274. package/behaviors/lolo/ui/game/atoms/ui-state-graph.lolo +90 -0
  275. package/behaviors/lolo/ui/game/atoms/ui-state-json-view.lolo +90 -0
  276. package/behaviors/lolo/ui/game/atoms/ui-trait-slot.lolo +123 -1
  277. package/behaviors/lolo/ui/learning/atoms/ui-algo-graph-canvas.lolo +90 -0
  278. package/behaviors/lolo/ui/learning/atoms/ui-algorithm-canvas.lolo +106 -0
  279. package/behaviors/lolo/ui/learning/atoms/ui-biology-canvas.lolo +106 -0
  280. package/behaviors/lolo/ui/learning/atoms/ui-chemistry-canvas.lolo +106 -0
  281. package/behaviors/lolo/ui/learning/atoms/ui-learning-canvas.lolo +112 -0
  282. package/behaviors/lolo/ui/learning/atoms/ui-math-canvas.lolo +106 -0
  283. package/behaviors/lolo/ui/learning/atoms/ui-physics-canvas.lolo +106 -0
  284. package/behaviors/lolo-behavior-contracts.json +1 -1
  285. package/behaviors/registry/agent/atoms/std-agent-context.orb +299 -826
  286. package/behaviors/registry/agent/atoms/std-agent-memory.orb +858 -643
  287. package/behaviors/registry/agent/atoms/std-agent-session.orb +833 -770
  288. package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +505 -707
  289. package/behaviors/registry/agent/atoms/std-agent-trace.orb +680 -195
  290. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +594 -0
  291. package/behaviors/registry/factory-signatures.json +1 -1
  292. package/behaviors/registry/infra/atoms/std-approval-gate.orb +70 -0
  293. package/behaviors/registry/infra/atoms/std-cache-aside.orb +172 -299
  294. package/behaviors/registry/infra/atoms/std-migration-job.orb +26 -1
  295. package/behaviors/registry/infra/atoms/std-notification-preferences.orb +57 -14
  296. package/behaviors/registry/infra/atoms/std-permission-matrix.orb +9 -0
  297. package/behaviors/registry/ui/avl/atoms/ui-avl-glyph.orb +236 -0
  298. package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +236 -0
  299. package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +215 -0
  300. package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +215 -0
  301. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +26 -18
  302. package/behaviors/registry/ui/core/atoms/std-board.orb +10 -34
  303. package/behaviors/registry/ui/core/atoms/std-book-reader.orb +32 -13
  304. package/behaviors/registry/ui/core/atoms/std-browse.orb +312 -20
  305. package/behaviors/registry/ui/core/atoms/std-calendar.orb +8 -19
  306. package/behaviors/registry/ui/core/atoms/std-detail-layout.orb +3 -1
  307. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +48 -11
  308. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +28 -4
  309. package/behaviors/registry/ui/core/atoms/std-event-log.orb +86 -14
  310. package/behaviors/registry/ui/core/atoms/std-file-store.orb +68 -59
  311. package/behaviors/registry/ui/core/atoms/std-gantt-schedule.orb +69 -12
  312. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +16 -16
  313. package/behaviors/registry/ui/core/atoms/std-list.orb +59 -11
  314. package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +115 -14
  315. package/behaviors/registry/ui/core/atoms/std-prose.orb +14 -1
  316. package/behaviors/registry/ui/core/atoms/std-rating-review.orb +79 -8
  317. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +693 -69
  318. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +112 -28
  319. package/behaviors/registry/ui/core/atoms/std-related.orb +82 -21
  320. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +82 -18
  321. package/behaviors/registry/ui/core/atoms/std-scoped-list.orb +993 -0
  322. package/behaviors/registry/ui/core/atoms/std-selection.orb +101 -12
  323. package/behaviors/registry/ui/core/atoms/std-signature-capture.orb +2 -16
  324. package/behaviors/registry/ui/core/atoms/std-slide-deck.orb +2 -0
  325. package/behaviors/registry/ui/core/atoms/std-step-flow.orb +8 -8
  326. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +48 -64
  327. package/behaviors/registry/ui/core/atoms/std-thread.orb +863 -141
  328. package/behaviors/registry/ui/core/atoms/std-tree.orb +40 -18
  329. package/behaviors/registry/ui/core/atoms/std-version-history.orb +87 -69
  330. package/behaviors/registry/ui/core/atoms/std-vote.orb +4 -54
  331. package/behaviors/registry/ui/core/atoms/std-wizard.orb +70 -10
  332. package/behaviors/registry/ui/core/atoms/ui-animated-graphic.orb +236 -0
  333. package/behaviors/registry/ui/core/atoms/ui-animated-reveal.orb +236 -0
  334. package/behaviors/registry/ui/core/atoms/ui-aside.orb +236 -0
  335. package/behaviors/registry/ui/core/atoms/ui-atlas-image.orb +29 -0
  336. package/behaviors/registry/ui/core/atoms/ui-atlas-panel.orb +29 -0
  337. package/behaviors/registry/ui/core/atoms/ui-avatar.orb +236 -1
  338. package/behaviors/registry/ui/core/atoms/ui-badge.orb +236 -0
  339. package/behaviors/registry/ui/core/atoms/ui-box.orb +231 -10
  340. package/behaviors/registry/ui/core/atoms/ui-button.orb +236 -0
  341. package/behaviors/registry/ui/core/atoms/ui-card.orb +236 -1
  342. package/behaviors/registry/ui/core/atoms/ui-center.orb +236 -0
  343. package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +260 -0
  344. package/behaviors/registry/ui/core/atoms/ui-confetti-effect.orb +236 -0
  345. package/behaviors/registry/ui/core/atoms/ui-day-cell.orb +236 -0
  346. package/behaviors/registry/ui/core/atoms/ui-dialog.orb +236 -0
  347. package/behaviors/registry/ui/core/atoms/ui-divider.orb +236 -0
  348. package/behaviors/registry/ui/core/atoms/ui-filter-pill.orb +236 -0
  349. package/behaviors/registry/ui/core/atoms/ui-flip-container.orb +236 -0
  350. package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +236 -0
  351. package/behaviors/registry/ui/core/atoms/ui-hstack.orb +225 -3
  352. package/behaviors/registry/ui/core/atoms/ui-icon.orb +236 -0
  353. package/behaviors/registry/ui/core/atoms/ui-image.orb +236 -0
  354. package/behaviors/registry/ui/core/atoms/ui-infinite-scroll-sentinel.orb +236 -0
  355. package/behaviors/registry/ui/core/atoms/ui-input.orb +21 -1
  356. package/behaviors/registry/ui/core/atoms/ui-label.orb +237 -1
  357. package/behaviors/registry/ui/core/atoms/ui-law-reference-tooltip.orb +236 -0
  358. package/behaviors/registry/ui/core/atoms/ui-overlay.orb +236 -0
  359. package/behaviors/registry/ui/core/atoms/ui-pattern-tile.orb +236 -0
  360. package/behaviors/registry/ui/core/atoms/ui-presence.orb +236 -0
  361. package/behaviors/registry/ui/core/atoms/ui-progress-bar.orb +236 -1
  362. package/behaviors/registry/ui/core/atoms/ui-radio.orb +252 -0
  363. package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +268 -0
  364. package/behaviors/registry/ui/core/atoms/ui-section-header.orb +236 -0
  365. package/behaviors/registry/ui/core/atoms/ui-select.orb +243 -0
  366. package/behaviors/registry/ui/core/atoms/ui-spacer.orb +236 -0
  367. package/behaviors/registry/ui/core/atoms/ui-sparkline.orb +236 -0
  368. package/behaviors/registry/ui/core/atoms/ui-spinner.orb +236 -0
  369. package/behaviors/registry/ui/core/atoms/ui-stack.orb +225 -3
  370. package/behaviors/registry/ui/core/atoms/ui-status-dot.orb +236 -0
  371. package/behaviors/registry/ui/core/atoms/ui-svg-branch.orb +236 -0
  372. package/behaviors/registry/ui/core/atoms/ui-svg-connection.orb +236 -0
  373. package/behaviors/registry/ui/core/atoms/ui-svg-flow.orb +236 -0
  374. package/behaviors/registry/ui/core/atoms/ui-svg-grid.orb +236 -0
  375. package/behaviors/registry/ui/core/atoms/ui-svg-lobe.orb +236 -0
  376. package/behaviors/registry/ui/core/atoms/ui-svg-mesh.orb +236 -0
  377. package/behaviors/registry/ui/core/atoms/ui-svg-morph.orb +236 -0
  378. package/behaviors/registry/ui/core/atoms/ui-svg-node.orb +236 -0
  379. package/behaviors/registry/ui/core/atoms/ui-svg-pulse.orb +236 -0
  380. package/behaviors/registry/ui/core/atoms/ui-svg-ring.orb +236 -0
  381. package/behaviors/registry/ui/core/atoms/ui-svg-shield.orb +236 -0
  382. package/behaviors/registry/ui/core/atoms/ui-svg-stack.orb +236 -0
  383. package/behaviors/registry/ui/core/atoms/ui-switch.orb +252 -0
  384. package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +268 -0
  385. package/behaviors/registry/ui/core/atoms/ui-textarea.orb +250 -0
  386. package/behaviors/registry/ui/core/atoms/ui-theme-toggle.orb +236 -0
  387. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +384 -0
  388. package/behaviors/registry/ui/core/atoms/ui-trend-indicator.orb +236 -1
  389. package/behaviors/registry/ui/core/atoms/ui-typewriter-text.orb +236 -0
  390. package/behaviors/registry/ui/core/atoms/ui-typography.orb +236 -6
  391. package/behaviors/registry/ui/core/atoms/ui-vstack.orb +225 -3
  392. package/behaviors/registry/ui/core/molecules/ui-accordion.orb +236 -0
  393. package/behaviors/registry/ui/core/molecules/ui-activation-block.orb +236 -0
  394. package/behaviors/registry/ui/core/molecules/ui-alert.orb +243 -0
  395. package/behaviors/registry/ui/core/molecules/ui-animated-counter.orb +237 -1
  396. package/behaviors/registry/ui/core/molecules/ui-bloom-quiz-block.orb +236 -0
  397. package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +236 -0
  398. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +236 -0
  399. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +268 -0
  400. package/behaviors/registry/ui/core/molecules/ui-carousel.orb +236 -0
  401. package/behaviors/registry/ui/core/molecules/ui-change-list.orb +236 -0
  402. package/behaviors/registry/ui/core/molecules/ui-chart-legend.orb +236 -0
  403. package/behaviors/registry/ui/core/molecules/ui-chart.orb +236 -3
  404. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +348 -0
  405. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +254 -4
  406. package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +268 -1
  407. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +236 -0
  408. package/behaviors/registry/ui/core/molecules/ui-connection-block.orb +236 -0
  409. package/behaviors/registry/ui/core/molecules/ui-container.orb +236 -2
  410. package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +241 -7
  411. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +387 -2
  412. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +351 -1
  413. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +253 -3
  414. package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +236 -0
  415. package/behaviors/registry/ui/core/molecules/ui-doc-breadcrumb.orb +236 -0
  416. package/behaviors/registry/ui/core/molecules/ui-doc-pagination.orb +236 -0
  417. package/behaviors/registry/ui/core/molecules/ui-doc-search.orb +236 -0
  418. package/behaviors/registry/ui/core/molecules/ui-doc-sidebar.orb +236 -0
  419. package/behaviors/registry/ui/core/molecules/ui-doc-toc.orb +236 -0
  420. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +296 -0
  421. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +268 -0
  422. package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +236 -0
  423. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +236 -0
  424. package/behaviors/registry/ui/core/molecules/ui-edge-decoration.orb +21 -0
  425. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +236 -1
  426. package/behaviors/registry/ui/core/molecules/ui-empty-state.orb +236 -1
  427. package/behaviors/registry/ui/core/molecules/ui-error-boundary.orb +21 -0
  428. package/behaviors/registry/ui/core/molecules/ui-error-state.orb +236 -0
  429. package/behaviors/registry/ui/core/molecules/ui-feature-card.orb +236 -1
  430. package/behaviors/registry/ui/core/molecules/ui-feature-grid.orb +236 -0
  431. package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +236 -0
  432. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +268 -0
  433. package/behaviors/registry/ui/core/molecules/ui-flex.orb +236 -0
  434. package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +236 -0
  435. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +236 -1
  436. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +236 -0
  437. package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +236 -0
  438. package/behaviors/registry/ui/core/molecules/ui-form-field.orb +236 -0
  439. package/behaviors/registry/ui/core/molecules/ui-form-layout.orb +241 -6
  440. package/behaviors/registry/ui/core/molecules/ui-form-section-header.orb +236 -0
  441. package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +236 -0
  442. package/behaviors/registry/ui/core/molecules/ui-gantt.orb +296 -1
  443. package/behaviors/registry/ui/core/molecules/ui-geometric-pattern.orb +21 -0
  444. package/behaviors/registry/ui/core/molecules/ui-gradient-divider.orb +236 -0
  445. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +243 -0
  446. package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +236 -0
  447. package/behaviors/registry/ui/core/molecules/ui-grid.orb +236 -5
  448. package/behaviors/registry/ui/core/molecules/ui-header.orb +236 -0
  449. package/behaviors/registry/ui/core/molecules/ui-icon-button.orb +236 -0
  450. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +245 -2
  451. package/behaviors/registry/ui/core/molecules/ui-import-progress.orb +236 -0
  452. package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +236 -0
  453. package/behaviors/registry/ui/core/molecules/ui-input-group.orb +236 -1
  454. package/behaviors/registry/ui/core/molecules/ui-jazari-state-machine.orb +236 -0
  455. package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +236 -0
  456. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +237 -1
  457. package/behaviors/registry/ui/core/molecules/ui-line-chart.orb +236 -0
  458. package/behaviors/registry/ui/core/molecules/ui-loading-state.orb +236 -0
  459. package/behaviors/registry/ui/core/molecules/ui-map-view.orb +236 -0
  460. package/behaviors/registry/ui/core/molecules/ui-markdown-content.orb +236 -0
  461. package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +236 -0
  462. package/behaviors/registry/ui/core/molecules/ui-menu.orb +253 -0
  463. package/behaviors/registry/ui/core/molecules/ui-meter.orb +236 -0
  464. package/behaviors/registry/ui/core/molecules/ui-modal.orb +236 -0
  465. package/behaviors/registry/ui/core/molecules/ui-navigation.orb +236 -0
  466. package/behaviors/registry/ui/core/molecules/ui-notification.orb +237 -1
  467. package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +268 -0
  468. package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +236 -0
  469. package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +236 -0
  470. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +236 -0
  471. package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +236 -0
  472. package/behaviors/registry/ui/core/molecules/ui-pagination.orb +252 -0
  473. package/behaviors/registry/ui/core/molecules/ui-popover.orb +252 -0
  474. package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +268 -0
  475. package/behaviors/registry/ui/core/molecules/ui-progress-dots.orb +236 -0
  476. package/behaviors/registry/ui/core/molecules/ui-pull-to-refresh.orb +236 -0
  477. package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +236 -0
  478. package/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +236 -0
  479. package/behaviors/registry/ui/core/molecules/ui-reflection-block.orb +236 -0
  480. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +252 -0
  481. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +236 -0
  482. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +268 -0
  483. package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +252 -0
  484. package/behaviors/registry/ui/core/molecules/ui-scaled-diagram.orb +236 -0
  485. package/behaviors/registry/ui/core/molecules/ui-search-input.orb +252 -0
  486. package/behaviors/registry/ui/core/molecules/ui-section.orb +236 -0
  487. package/behaviors/registry/ui/core/molecules/ui-side-panel.orb +236 -0
  488. package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +252 -0
  489. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +236 -0
  490. package/behaviors/registry/ui/core/molecules/ui-simple-grid.orb +236 -0
  491. package/behaviors/registry/ui/core/molecules/ui-skeleton.orb +242 -2
  492. package/behaviors/registry/ui/core/molecules/ui-social-proof.orb +236 -0
  493. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +268 -0
  494. package/behaviors/registry/ui/core/molecules/ui-split.orb +236 -0
  495. package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +268 -0
  496. package/behaviors/registry/ui/core/molecules/ui-stat-display.orb +236 -0
  497. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +284 -0
  498. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +425 -3
  499. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +236 -0
  500. package/behaviors/registry/ui/core/molecules/ui-tag-input.orb +236 -0
  501. package/behaviors/registry/ui/core/molecules/ui-tooltip.orb +236 -0
  502. package/behaviors/registry/ui/core/molecules/ui-top-nav-item.orb +236 -0
  503. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +236 -0
  504. package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +236 -0
  505. package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +236 -1
  506. package/behaviors/registry/ui/core/molecules/ui-vote-stack.orb +236 -1
  507. package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +236 -0
  508. package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +284 -0
  509. package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +236 -0
  510. package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +236 -1
  511. package/behaviors/registry/ui/core/organisms/ui-code-runner-panel.orb +236 -0
  512. package/behaviors/registry/ui/core/organisms/ui-dashboard-grid.orb +236 -1
  513. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +1281 -16
  514. package/behaviors/registry/ui/core/organisms/ui-dock-layout.orb +236 -0
  515. package/behaviors/registry/ui/core/organisms/ui-drawer-slot.orb +21 -0
  516. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +489 -27
  517. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +444 -19
  518. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +410 -0
  519. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +312 -1
  520. package/behaviors/registry/ui/core/organisms/ui-form.orb +312 -1
  521. package/behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb +236 -0
  522. package/behaviors/registry/ui/core/organisms/ui-master-detail.orb +268 -1
  523. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +288 -1
  524. package/behaviors/registry/ui/core/organisms/ui-modal-slot.orb +21 -0
  525. package/behaviors/registry/ui/core/organisms/ui-runtime-debugger.orb +236 -0
  526. package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +236 -0
  527. package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +252 -0
  528. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +326 -2
  529. package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +236 -2
  530. package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +236 -1
  531. package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +236 -0
  532. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +306 -5
  533. package/behaviors/registry/ui/core/organisms/ui-toast-slot.orb +236 -1
  534. package/behaviors/registry/ui/core/templates/ui-auth-layout.orb +215 -1
  535. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +236 -2
  536. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +0 -1
  537. package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +236 -0
  538. package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +236 -0
  539. package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +236 -1
  540. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +243 -0
  541. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +236 -1
  542. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +237 -1
  543. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +236 -0
  544. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +236 -0
  545. package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +237 -2
  546. package/behaviors/registry/ui/game/atoms/ui-draw-mesh.orb +0 -1
  547. package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +0 -2
  548. package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +0 -1
  549. package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +0 -3
  550. package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +236 -0
  551. package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +236 -0
  552. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +237 -1
  553. package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +236 -0
  554. package/behaviors/registry/ui/game/atoms/ui-score-display.orb +236 -1
  555. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +236 -0
  556. package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +236 -0
  557. package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +236 -0
  558. package/behaviors/registry/ui/game/atoms/ui-state-json-view.orb +236 -0
  559. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +268 -1
  560. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +236 -0
  561. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +252 -0
  562. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +252 -0
  563. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +252 -0
  564. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +260 -0
  565. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +252 -0
  566. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +252 -0
  567. package/dist/behaviors/exports-reader.js +15164 -7081
  568. package/dist/behaviors/functions/index.d.ts +4293 -362
  569. package/dist/behaviors/functions/index.js +15134 -7043
  570. package/dist/behaviors/index.d.ts +1 -1
  571. package/dist/behaviors/index.js +15165 -7082
  572. package/dist/behaviors/query.js +15164 -7081
  573. package/dist/behaviors-embeddings.hash.json +3 -3
  574. package/dist/behaviors-embeddings.json +37 -33
  575. package/dist/behaviors-registry.json +57874 -1895
  576. package/dist/index.d.ts +1 -1
  577. package/dist/index.js +15165 -7082
  578. package/dist/knob-embeddings.hash.json +3 -3
  579. package/dist/knob-embeddings.json +14971 -255
  580. package/dist/registry/factory-signatures.json +1 -1
  581. package/package.json +4 -4
  582. package/behaviors/lolo/agent/organisms/std-agent-rabit.lolo +0 -301
  583. package/behaviors/registry/agent/organisms/std-agent-rabit.orb +0 -2181
@@ -38,17 +38,10 @@ orbital TagTaxonomyOrbital {
38
38
  emit: { failure: TagLoadFailed, success: TagLoaded }
39
39
  })
40
40
  (render-ui main {
41
- align: center
42
- children: [{ type: spinner }, {
43
- color: muted
44
- content: "Loading…"
45
- type: typography
46
- variant: caption
47
- }]
48
- className: py-12
49
- direction: vertical
50
- gap: md
51
41
  type: stack
42
+ direction: vertical
43
+ gap: lg
44
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: grid, rows: 6 }]
52
45
  })
53
46
  TagLoaded -> browsing
54
47
  (render-ui main {
@@ -150,17 +143,10 @@ orbital TagTaxonomyOrbital {
150
143
  emit: { failure: TagLoadFailed, success: TagLoaded }
151
144
  })
152
145
  (render-ui main {
153
- align: center
154
- children: [{ type: spinner }, {
155
- color: muted
156
- content: "Loading…"
157
- type: typography
158
- variant: caption
159
- }]
160
- className: py-12
161
- direction: vertical
162
- gap: md
163
146
  type: stack
147
+ direction: vertical
148
+ gap: lg
149
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: grid, rows: 6 }]
164
150
  })
165
151
  SELECT_TAG -> editing
166
152
  (set @entity.id ?tagId)
@@ -171,17 +157,10 @@ orbital TagTaxonomyOrbital {
171
157
  emit: { failure: TagLoadFailed, success: TagLoaded }
172
158
  })
173
159
  (render-ui main {
174
- align: center
175
- children: [{ type: spinner }, {
176
- color: muted
177
- content: "Loading…"
178
- type: typography
179
- variant: caption
180
- }]
181
- className: py-12
182
- direction: vertical
183
- gap: md
184
160
  type: stack
161
+ direction: vertical
162
+ gap: lg
163
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: grid, rows: 6 }]
185
164
  })
186
165
  SHOW_ROOT -> loading
187
166
  (set @entity.id "")
@@ -191,17 +170,10 @@ orbital TagTaxonomyOrbital {
191
170
  emit: { failure: TagLoadFailed, success: TagLoaded }
192
171
  })
193
172
  (render-ui main {
194
- align: center
195
- children: [{ type: spinner }, {
196
- color: muted
197
- content: "Loading…"
198
- type: typography
199
- variant: caption
200
- }]
201
- className: py-12
202
- direction: vertical
203
- gap: md
204
173
  type: stack
174
+ direction: vertical
175
+ gap: lg
176
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: grid, rows: 6 }]
205
177
  })
206
178
  TagLoaded -> browsing
207
179
  (render-ui main {
@@ -331,33 +303,19 @@ orbital TagTaxonomyOrbital {
331
303
  CANCEL_TAG -> loading
332
304
  (render-ui modal null)
333
305
  (render-ui main {
334
- align: center
335
- children: [{ type: spinner }, {
336
- color: muted
337
- content: "Loading…"
338
- type: typography
339
- variant: caption
340
- }]
341
- className: py-12
342
- direction: vertical
343
- gap: md
344
306
  type: stack
307
+ direction: vertical
308
+ gap: lg
309
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: grid, rows: 6 }]
345
310
  })
346
311
  (emit LEVEL_RELOAD { tagId: @entity.id })
347
312
  CLOSE -> loading
348
313
  (render-ui modal null)
349
314
  (render-ui main {
350
- align: center
351
- children: [{ type: spinner }, {
352
- color: muted
353
- content: "Loading…"
354
- type: typography
355
- variant: caption
356
- }]
357
- className: py-12
358
- direction: vertical
359
- gap: md
360
315
  type: stack
316
+ direction: vertical
317
+ gap: lg
318
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: grid, rows: 6 }]
361
319
  })
362
320
  (emit LEVEL_RELOAD { tagId: @entity.id })
363
321
  ;; Refetch the level the new tag landed on — its own parentId names it.
@@ -397,17 +355,10 @@ orbital TagTaxonomyOrbital {
397
355
  emit: { failure: TagLoadFailed, success: TagLoaded }
398
356
  })
399
357
  (render-ui main {
400
- align: center
401
- children: [{ type: spinner }, {
402
- color: muted
403
- content: "Loading…"
404
- type: typography
405
- variant: caption
406
- }]
407
- className: py-12
408
- direction: vertical
409
- gap: md
410
358
  type: stack
359
+ direction: vertical
360
+ gap: lg
361
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: grid, rows: 6 }]
411
362
  })
412
363
  SELECT_TAG -> editing
413
364
  (set @entity.id ?tagId)
@@ -516,17 +467,10 @@ orbital TagTaxonomyOrbital {
516
467
  emit: { failure: TagLoadFailed, success: TagLoaded }
517
468
  })
518
469
  (render-ui main {
519
- align: center
520
- children: [{ type: spinner }, {
521
- color: muted
522
- content: "Loading…"
523
- type: typography
524
- variant: caption
525
- }]
526
- className: py-12
527
- direction: vertical
528
- gap: md
529
470
  type: stack
471
+ direction: vertical
472
+ gap: lg
473
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: grid, rows: 6 }]
530
474
  })
531
475
  }
532
476
 
@@ -1,5 +1,5 @@
1
1
  app std-thread "1.3.0"
2
- "std-thread — forum-style nested replies with collapse. Owns ThreadPost (persistent). INIT fetches, scoped by @config.threadRootId when set (blank = every root, the default). REPLY persists a child post under @payload.parentId, stamped with the real @user identity. A consumer that mounts this as page comments forwards its own document-opened signal to SET_THREAD_ROOT { rootId }, which stamps @entity.replyRootId (scratch — the persisted threadRootId column is written only by the reply persist create) and refetches filtered by the payload; a plain INIT re-entry now also falls back through @entity.replyRootId before @config.threadRootId, so it stays scoped to the last SET_THREAD_ROOT instead of re-widening — only the after-create/after-select refetches still scope directly off their own event payload. Layer 3 variants override `bodyContent` to deliver chat-bubble, email-threaded, or linear-comments UX while inheriting the same trait, state machine, emits, and listens. A non-empty sectionTitle switches the default bodyContent into titled-comments mode: header + post list + a standalone composer button (without it an empty thread has no REPLY emitter at all — the affordance only existed per-row)."
2
+ "std-thread — forum-style nested replies with collapse. Owns ThreadPost (persistent). INIT fetches, scoped by @config.threadRootId when set (blank = every root, the default). The list holds top-level posts, each with its replies nested (one level). REPLY persists a child post under @payload.parentId in the same thread root, stamped with the real @user identity, and adds it to the parent's replies and replyCount. A consumer that mounts this as page comments forwards its own document-opened signal to SET_THREAD_ROOT { rootId }, which stamps @entity.replyRootId (scratch — the persisted threadRootId column is written only by the reply persist create) and refetches filtered by the payload; a plain INIT re-entry now also falls back through @entity.replyRootId before @config.threadRootId, so it stays scoped to the last SET_THREAD_ROOT instead of re-widening — only the after-create/after-select refetches still scope directly off their own event payload. Layer 3 variants override `bodyContent` to deliver chat-bubble, email-threaded, or linear-comments UX while inheriting the same trait, state machine, emits, and listens. A non-empty sectionTitle switches the default bodyContent into titled-comments mode: header + post list + a standalone composer button (without it an empty thread has no REPLY emitter at all — the affordance only existed per-row)."
3
3
  type ItemAction = { label : string!, event : event, icon : string, roles : [string], when : SExpr }
4
4
  orbital ThreadPostOrbital {
5
5
  uses RoleGate from "std/behaviors/std-role-gate"
@@ -20,18 +20,18 @@ orbital ThreadPostOrbital {
20
20
 
21
21
  type ThreadPostLoadFailed = Event { error : string, code : string } "Fired when the thread-post collection fails to load"
22
22
 
23
- ;; Bare entity alias, not { row: ThreadPost } — `persist create`'s success
24
- ;; emit is the created row itself (flat), matching @almadar/runtime's
25
- ;; EffectExecutor.ts (`successPayload = persisted ?? data`, emitted
26
- ;; directly) AND orbital-core's executor.rs (`executed_with_value(effect,
27
- ;; value)`), verified live 2026-08-30: a wrapped declaration validates and
28
- ;; compiles clean but silently returns undefined for every `?row.<field>`
29
- ;; access — no validator connects a persist-emit's declared shape to what
30
- ;; the effect that fires it actually produces.
31
- type ThreadPostCreated = Event ThreadPost "Fired after a new thread-post persists successfully"
23
+ ;; Flat, not { row: … }: `persist create`'s success emit is the stored row
24
+ ;; itself. Declared to the fields this atom reads back.
25
+ type ThreadPostCreated = Event { id : string!, threadRootId : string!, parentId : string } "Fired after a new thread-post persists successfully"
32
26
 
33
27
  type ThreadPostCreateFailed = Event { error : string, code : string } "Fired when a new thread-post fails to persist"
34
28
 
29
+ type ReplyParentLoaded = Event { data : ThreadPost! } "Fired when the post a new reply answers has loaded"
30
+
31
+ type ReplyParentLoadFailed = Event { error : string } "Fired when the post a new reply answers cannot be loaded"
32
+
33
+ type ReplyParentUpdated = Event ThreadPost "Fired after a new reply is added to its parent post's replies"
34
+
35
35
  type SetThreadRoot = Event { rootId : string! } "Fired to scope every ThreadPost fetch, and new-reply threadRootId stamping, to the descendants of one document root"
36
36
 
37
37
  entity ThreadPost [persistent: threadposts] {
@@ -49,6 +49,7 @@ orbital ThreadPostOrbital {
49
49
  replyDraft : string @intrinsic @description "Reply text being composed." = ""
50
50
  replyParentId : string @intrinsic @description "Post the reply being composed answers." = ""
51
51
  replyRootId : string @intrinsic @description "Thread root the reply being composed belongs to." = ""
52
+ lastReplyId : string @intrinsic @description "Reply just created, added to its parent post's replies." = ""
52
53
  }
53
54
 
54
55
  trait ThreadPostBrowse -> @rebindable ThreadPost [interaction, collection] {
@@ -58,10 +59,10 @@ orbital ThreadPostOrbital {
58
59
  INIT -> loading
59
60
  (fetch ThreadPost {
60
61
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
61
- filter: (or ["=", (str/default @entity.replyRootId @config.threadRootId), ""] ["=", (object/get @entity threadRootId), (str/default @entity.replyRootId @config.threadRootId)])
62
+ filter: (and (or ["=", (str/default @entity.replyRootId @config.threadRootId), ""] ["=", (object/get @entity threadRootId), (str/default @entity.replyRootId @config.threadRootId)]) ["=", (str/default (object/get @entity parentId) ""), ""])
62
63
  include: (replies)
63
64
  })
64
- (render-ui main { size: sm, type: spinner })
65
+ (render-ui main { type: skeleton, variant: list, rows: 6 })
65
66
  ThreadPostLoaded -> browsing
66
67
  (render-ui main @config.bodyContent)
67
68
  ThreadPostLoadFailed -> error
@@ -74,20 +75,20 @@ orbital ThreadPostOrbital {
74
75
  (set @entity.replyRootId ?rootId)
75
76
  (fetch ThreadPost {
76
77
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
77
- filter: (or ["=", ?rootId, ""] ["=", (object/get @entity threadRootId), ?rootId])
78
+ filter: (and (or ["=", ?rootId, ""] ["=", (object/get @entity threadRootId), ?rootId]) ["=", (str/default (object/get @entity parentId) ""), ""])
78
79
  include: (replies)
79
80
  })
80
- (render-ui main { size: sm, type: spinner })
81
+ (render-ui main { type: skeleton, variant: list, rows: 6 })
81
82
  }
82
83
 
83
84
  state browsing {
84
85
  INIT -> loading
85
86
  (fetch ThreadPost {
86
87
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
87
- filter: (or ["=", (str/default @entity.replyRootId @config.threadRootId), ""] ["=", (object/get @entity threadRootId), (str/default @entity.replyRootId @config.threadRootId)])
88
+ filter: (and (or ["=", (str/default @entity.replyRootId @config.threadRootId), ""] ["=", (object/get @entity threadRootId), (str/default @entity.replyRootId @config.threadRootId)]) ["=", (str/default (object/get @entity parentId) ""), ""])
88
89
  include: (replies)
89
90
  })
90
- (render-ui main { size: sm, type: spinner })
91
+ (render-ui main { type: skeleton, variant: list, rows: 6 })
91
92
  ThreadPostLoaded -> browsing
92
93
  (render-ui main @config.bodyContent)
93
94
  ;; Inline reply: when the event already carries the composed text (e.g.
@@ -97,22 +98,23 @@ orbital ThreadPostOrbital {
97
98
  (persist create ThreadPost {
98
99
  authorId: @user.id
99
100
  authorName: @user.name
101
+ createdAt: @now
100
102
  content: ?content
101
103
  parentId: (str/default ?parentNodeId ?parentId)
102
- threadRootId: (str/default ?parentNodeId (str/default @entity.replyRootId (str/default @config.threadRootId root)))
104
+ threadRootId: (str/default @entity.replyRootId (str/default @config.threadRootId root))
103
105
  } {
104
106
  emit: { failure: ThreadPostCreateFailed, success: ThreadPostCreated }
105
107
  })
106
108
  ;; Reply with no text yet (e.g. an email "Reply" button) opens the composer.
107
109
  REPLY -> replying when ["=", (str/default ?content ""), ""]
108
110
  (set @entity.replyParentId (str/default ?parentNodeId ?parentId))
109
- (set @entity.replyRootId (str/default ?parentNodeId (str/default @entity.replyRootId (str/default @config.threadRootId root))))
110
111
  (render-ui main {
111
112
  children: [{
112
113
  content: "Write a reply"
113
114
  type: typography
114
115
  variant: h4
115
116
  }, {
117
+ aria-label: "Your reply"
116
118
  onChange: EDIT_REPLY
117
119
  placeholder: "Your reply…"
118
120
  type: textarea
@@ -145,12 +147,41 @@ orbital ThreadPostOrbital {
145
147
  ;; row's own scope, per the create effect's fallback chain) — NOT
146
148
  ;; ?row.threadRootId; ThreadPostCreated's payload is the created row
147
149
  ;; itself (see the type alias above), no `row` wrapper exists.
148
- ThreadPostCreated -> browsing
150
+ ThreadPostCreated -> browsing when (not ["=", (str/default ?parentId ""), ""])
149
151
  (set @entity.replyDraft "")
150
152
  (set @entity.replyParentId "")
153
+ (set @entity.lastReplyId ?id)
154
+ (fetch ThreadPost {
155
+ id: ?parentId
156
+ emit: { failure: ReplyParentLoadFailed, success: ReplyParentLoaded }
157
+ })
158
+ ThreadPostCreated -> browsing when ["=", (str/default ?parentId ""), ""]
159
+ (set @entity.replyDraft "")
160
+ (set @entity.replyParentId "")
161
+ (fetch ThreadPost {
162
+ emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
163
+ filter: (and (or ["=", ?threadRootId, ""] ["=", (object/get @entity threadRootId), ?threadRootId]) ["=", (str/default (object/get @entity parentId) ""), ""])
164
+ include: (replies)
165
+ })
166
+ ReplyParentLoaded -> browsing
167
+ (persist update ThreadPost {
168
+ id: ?data.id
169
+ replies: (array/append (object/get ?data replies []) @entity.lastReplyId)
170
+ replyCount: (+ (object/get ?data replyCount 0) 1)
171
+ } {
172
+ emit: { failure: ThreadPostCreateFailed, success: ReplyParentUpdated }
173
+ })
174
+ ReplyParentLoadFailed -> browsing
175
+ (notify error (str/concat "Couldn't attach the reply to its post — " ?error))
176
+ (fetch ThreadPost {
177
+ emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
178
+ filter: (and (or ["=", (str/default @entity.replyRootId @config.threadRootId), ""] ["=", (object/get @entity threadRootId), (str/default @entity.replyRootId @config.threadRootId)]) ["=", (str/default (object/get @entity parentId) ""), ""])
179
+ include: (replies)
180
+ })
181
+ ReplyParentUpdated -> browsing
151
182
  (fetch ThreadPost {
152
183
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
153
- filter: (or ["=", ?threadRootId, ""] ["=", (object/get @entity threadRootId), ?threadRootId])
184
+ filter: (and (or ["=", ?threadRootId, ""] ["=", (object/get @entity threadRootId), ?threadRootId]) ["=", (str/default (object/get @entity parentId) ""), ""])
154
185
  include: (replies)
155
186
  })
156
187
  ;; SELECT's payload IS { id, row } (caller-constructed, unlike the
@@ -160,7 +191,7 @@ orbital ThreadPostOrbital {
160
191
  (set @entity.focusedRow ?row)
161
192
  (fetch ThreadPost {
162
193
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
163
- filter: (or ["=", ?row.threadRootId, ""] ["=", (object/get @entity threadRootId), ?row.threadRootId])
194
+ filter: (and (or ["=", ?row.threadRootId, ""] ["=", (object/get @entity threadRootId), ?row.threadRootId]) ["=", (str/default (object/get @entity parentId) ""), ""])
164
195
  include: (replies)
165
196
  })
166
197
  ;; Inline composers (bodyContent overrides with their own textarea +
@@ -172,6 +203,7 @@ orbital ThreadPostOrbital {
172
203
  (persist create ThreadPost {
173
204
  authorId: @user.id
174
205
  authorName: @user.name
206
+ createdAt: @now
175
207
  content: @entity.replyDraft
176
208
  parentId: (str/default @entity.replyParentId "")
177
209
  threadRootId: (str/default @entity.replyRootId (str/default @config.threadRootId root))
@@ -201,10 +233,10 @@ orbital ThreadPostOrbital {
201
233
  (set @entity.replyRootId ?rootId)
202
234
  (fetch ThreadPost {
203
235
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
204
- filter: (or ["=", ?rootId, ""] ["=", (object/get @entity threadRootId), ?rootId])
236
+ filter: (and (or ["=", ?rootId, ""] ["=", (object/get @entity threadRootId), ?rootId]) ["=", (str/default (object/get @entity parentId) ""), ""])
205
237
  include: (replies)
206
238
  })
207
- (render-ui main { size: sm, type: spinner })
239
+ (render-ui main { type: skeleton, variant: list, rows: 6 })
208
240
  }
209
241
 
210
242
  state replying {
@@ -214,6 +246,7 @@ orbital ThreadPostOrbital {
214
246
  (persist create ThreadPost {
215
247
  authorId: @user.id
216
248
  authorName: @user.name
249
+ createdAt: @now
217
250
  content: @entity.replyDraft
218
251
  parentId: (str/default @entity.replyParentId "")
219
252
  threadRootId: (str/default @entity.replyRootId (str/default @config.threadRootId root))
@@ -225,12 +258,20 @@ orbital ThreadPostOrbital {
225
258
  (set @entity.replyParentId "")
226
259
  ;; Scoped to the row just created (?threadRootId, flat) — see the twin
227
260
  ;; arm in `browsing` for why.
228
- ThreadPostCreated -> browsing
261
+ ThreadPostCreated -> browsing when (not ["=", (str/default ?parentId ""), ""])
262
+ (set @entity.replyDraft "")
263
+ (set @entity.replyParentId "")
264
+ (set @entity.lastReplyId ?id)
265
+ (fetch ThreadPost {
266
+ id: ?parentId
267
+ emit: { failure: ReplyParentLoadFailed, success: ReplyParentLoaded }
268
+ })
269
+ ThreadPostCreated -> browsing when ["=", (str/default ?parentId ""), ""]
229
270
  (set @entity.replyDraft "")
230
271
  (set @entity.replyParentId "")
231
272
  (fetch ThreadPost {
232
273
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
233
- filter: (or ["=", ?threadRootId, ""] ["=", (object/get @entity threadRootId), ?threadRootId])
274
+ filter: (and (or ["=", ?threadRootId, ""] ["=", (object/get @entity threadRootId), ?threadRootId]) ["=", (str/default (object/get @entity parentId) ""), ""])
234
275
  include: (replies)
235
276
  })
236
277
  ThreadPostCreateFailed -> replying
@@ -243,28 +284,28 @@ orbital ThreadPostOrbital {
243
284
  (set @entity.replyRootId ?rootId)
244
285
  (fetch ThreadPost {
245
286
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
246
- filter: (or ["=", ?rootId, ""] ["=", (object/get @entity threadRootId), ?rootId])
287
+ filter: (and (or ["=", ?rootId, ""] ["=", (object/get @entity threadRootId), ?rootId]) ["=", (str/default (object/get @entity parentId) ""), ""])
247
288
  include: (replies)
248
289
  })
249
- (render-ui main { size: sm, type: spinner })
290
+ (render-ui main { type: skeleton, variant: list, rows: 6 })
250
291
  }
251
292
 
252
293
  state error {
253
294
  INIT -> loading
254
295
  (fetch ThreadPost {
255
296
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
256
- filter: (or ["=", (str/default @entity.replyRootId @config.threadRootId), ""] ["=", (object/get @entity threadRootId), (str/default @entity.replyRootId @config.threadRootId)])
297
+ filter: (and (or ["=", (str/default @entity.replyRootId @config.threadRootId), ""] ["=", (object/get @entity threadRootId), (str/default @entity.replyRootId @config.threadRootId)]) ["=", (str/default (object/get @entity parentId) ""), ""])
257
298
  include: (replies)
258
299
  })
259
- (render-ui main { size: sm, type: spinner })
300
+ (render-ui main { type: skeleton, variant: list, rows: 6 })
260
301
  SET_THREAD_ROOT -> loading
261
302
  (set @entity.replyRootId ?rootId)
262
303
  (fetch ThreadPost {
263
304
  emit: { failure: ThreadPostLoadFailed, success: ThreadPostLoaded }
264
- filter: (or ["=", ?rootId, ""] ["=", (object/get @entity threadRootId), ?rootId])
305
+ filter: (and (or ["=", ?rootId, ""] ["=", (object/get @entity threadRootId), ?rootId]) ["=", (str/default (object/get @entity parentId) ""), ""])
265
306
  include: (replies)
266
307
  })
267
- (render-ui main { size: sm, type: spinner })
308
+ (render-ui main { type: skeleton, variant: list, rows: 6 })
268
309
  }
269
310
 
270
311
  emits {
@@ -314,6 +355,16 @@ orbital ThreadPostOrbital {
314
355
  @description "A new post has been added to the thread — payload is the created ThreadPost row itself (flat: ?id, ?threadRootId, ?authorId, ?content, …), not wrapped under a row field."
315
356
  @synonyms "new post, added, created"
316
357
  @tier "domain"
358
+ ReplyParentLoaded -> internal {
359
+ data : ThreadPost!
360
+ }
361
+ @tier "internal"
362
+ ReplyParentUpdated -> internal
363
+ @tier "internal"
364
+ ReplyParentLoadFailed -> internal {
365
+ error : string
366
+ }
367
+ @tier "internal"
317
368
  ThreadPostCreateFailed {
318
369
  error : string
319
370
  code : string
@@ -377,6 +428,16 @@ orbital ThreadPostOrbital {
377
428
  @description "Indicates a failure to create a new thread post."
378
429
  @synonyms "error, failure, rejected, invalid"
379
430
  @tier "internal"
431
+ ReplyParentLoaded {
432
+ data : ThreadPost!
433
+ }
434
+ @tier "internal"
435
+ ReplyParentUpdated
436
+ @tier "internal"
437
+ ReplyParentLoadFailed {
438
+ error : string
439
+ }
440
+ @tier "internal"
380
441
  SET_THREAD_ROOT {
381
442
  rootId : string!
382
443
  }
@@ -28,17 +28,10 @@ orbital TreeNodeOrbital {
28
28
  emit: { failure: TreeNodeLoadFailed, success: TreeNodeLoaded }
29
29
  })
30
30
  (render-ui main {
31
- align: center
32
- children: [{ type: spinner }, {
33
- color: muted
34
- content: "Loading tree…"
35
- type: typography
36
- variant: caption
37
- }]
38
- className: py-12
39
- direction: vertical
40
- gap: md
41
31
  type: stack
32
+ direction: vertical
33
+ gap: lg
34
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: list, rows: 6 }]
42
35
  })
43
36
  TreeNodeLoaded -> browsing
44
37
  (render-ui main {
@@ -152,17 +145,10 @@ orbital TreeNodeOrbital {
152
145
  emit: { failure: TreeNodeLoadFailed, success: TreeNodeLoaded }
153
146
  })
154
147
  (render-ui main {
155
- align: center
156
- children: [{ type: spinner }, {
157
- color: muted
158
- content: "Loading tree…"
159
- type: typography
160
- variant: caption
161
- }]
162
- className: py-12
163
- direction: vertical
164
- gap: md
165
148
  type: stack
149
+ direction: vertical
150
+ gap: lg
151
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: list, rows: 6 }]
166
152
  })
167
153
  ;; REFETCH_* stays in `browsing` and DOES NOT replace the tree with a
168
154
  ;; spinner — search-as-you-type would otherwise unmount file-tree every
@@ -303,14 +289,24 @@ orbital TreeNodeOrbital {
303
289
  (fetch TreeNode {
304
290
  emit: { failure: TreeNodeLoadFailed, success: TreeNodeLoaded }
305
291
  })
306
- (render-ui main { type: spinner })
292
+ (render-ui main {
293
+ type: stack
294
+ direction: vertical
295
+ gap: lg
296
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: list, rows: 6 }]
297
+ })
307
298
  ;; the error screen's Retry button: INIT is lifecycle-only and the bus never
308
299
  ;; delivers it, so the affordance must target a first-class user event
309
300
  RETRY -> loading
310
301
  (fetch TreeNode {
311
302
  emit: { failure: TreeNodeLoadFailed, success: TreeNodeLoaded }
312
303
  })
313
- (render-ui main { type: spinner })
304
+ (render-ui main {
305
+ type: stack
306
+ direction: vertical
307
+ gap: lg
308
+ children: [{ type: skeleton, variant: header }, { type: skeleton, variant: list, rows: 6 }]
309
+ })
314
310
  }
315
311
 
316
312
  emits {