@almadar/std 16.204.0 → 16.206.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 (497) hide show
  1. package/behaviors/lolo/ml/organisms/std-escalating-decision.lolo +3 -3
  2. package/behaviors/lolo/ui/core/atoms/std-modal-editor.lolo +265 -13
  3. package/behaviors/lolo/ui/core/molecules/ui-code-block.lolo +5 -5
  4. package/behaviors/lolo/ui/core/molecules/ui-floating-toolbar.lolo +1 -1
  5. package/behaviors/lolo/ui/core/molecules/ui-menu.lolo +2 -1
  6. package/behaviors/lolo/ui/game/atoms/std-area-fill.lolo +8 -3
  7. package/behaviors/lolo/ui/game/atoms/std-choice-gate.lolo +7 -3
  8. package/behaviors/lolo/ui/game/atoms/std-coef-pad.lolo +8 -3
  9. package/behaviors/lolo/ui/game/atoms/std-gate-lock.lolo +8 -3
  10. package/behaviors/lolo/ui/game/atoms/std-loop-lock.lolo +7 -3
  11. package/behaviors/lolo/ui/game/atoms/std-pad-lock.lolo +10 -3
  12. package/behaviors/lolo/ui/game/atoms/std-patrol-hazard.lolo +9 -3
  13. package/behaviors/lolo/ui/game/atoms/std-pickup.lolo +29 -5
  14. package/behaviors/lolo/ui/game/atoms/std-platformer-body.lolo +36 -14
  15. package/behaviors/lolo/ui/game/atoms/std-velocity-gate.lolo +7 -3
  16. package/behaviors/lolo/ui/game/organisms/std-platformer-puzzle.lolo +302 -0
  17. package/behaviors/lolo/ui/learning/atoms/std-learn-slope-probe.lolo +12 -6
  18. package/behaviors/registry/agent/atoms/std-agent-completion.orb +27 -0
  19. package/behaviors/registry/agent/atoms/std-agent-context.orb +47 -0
  20. package/behaviors/registry/agent/atoms/std-agent-fix-loop.orb +57 -1
  21. package/behaviors/registry/agent/atoms/std-agent-memory.orb +88 -1
  22. package/behaviors/registry/agent/atoms/std-agent-planner.orb +58 -1
  23. package/behaviors/registry/agent/atoms/std-agent-session.orb +95 -1
  24. package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +66 -1
  25. package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +74 -1
  26. package/behaviors/registry/agent/atoms/std-agent-trace.orb +38 -0
  27. package/behaviors/registry/agent/organisms/std-agent-builder.orb +70 -1
  28. package/behaviors/registry/agent/organisms/std-agent-rabit.orb +239 -2
  29. package/behaviors/registry/infra/atoms/std-anim-tick.orb +24 -0
  30. package/behaviors/registry/infra/atoms/std-approval-gate.orb +73 -20
  31. package/behaviors/registry/infra/atoms/std-audit-capture.orb +38 -0
  32. package/behaviors/registry/infra/atoms/std-cache-aside.orb +45 -62
  33. package/behaviors/registry/infra/atoms/std-calendar-sync.orb +113 -1
  34. package/behaviors/registry/infra/atoms/std-cascade-on-delete.orb +32 -0
  35. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +38 -32
  36. package/behaviors/registry/infra/atoms/std-cooldown.orb +28 -0
  37. package/behaviors/registry/infra/atoms/std-cross-reference.orb +55 -1
  38. package/behaviors/registry/infra/atoms/std-data-erasure.orb +52 -16
  39. package/behaviors/registry/infra/atoms/std-game-clock.orb +20 -0
  40. package/behaviors/registry/infra/atoms/std-lifecycle.orb +34 -0
  41. package/behaviors/registry/infra/atoms/std-migration-job.orb +165 -1
  42. package/behaviors/registry/infra/atoms/std-mod-queue.orb +23 -16
  43. package/behaviors/registry/infra/atoms/std-notification-center.orb +119 -1
  44. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +162 -1
  45. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +32 -28
  46. package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +30 -0
  47. package/behaviors/registry/infra/atoms/std-row-access-control.orb +58 -1
  48. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +34 -1
  49. package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +33 -2
  50. package/behaviors/registry/ml/atoms/std-data-collector.orb +18 -0
  51. package/behaviors/registry/ml/atoms/std-graph-builder.orb +41 -1
  52. package/behaviors/registry/ml/atoms/std-ml-classify.orb +67 -1
  53. package/behaviors/registry/ml/atoms/std-ml-exact-check.orb +18 -0
  54. package/behaviors/registry/ml/atoms/std-ml-infer.orb +125 -1
  55. package/behaviors/registry/ml/atoms/std-ml-label-capture.orb +34 -0
  56. package/behaviors/registry/ml/atoms/std-ml-lookup.orb +18 -0
  57. package/behaviors/registry/ml/atoms/std-ml-posterior.orb +42 -0
  58. package/behaviors/registry/ml/atoms/std-ml-similarity.orb +82 -1
  59. package/behaviors/registry/ml/atoms/std-tokenizer.orb +30 -0
  60. package/behaviors/registry/ml/atoms/std-weight-validator.orb +60 -1
  61. package/behaviors/registry/ml/organisms/std-escalating-decision.orb +122 -13
  62. package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +51 -4
  63. package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +6 -0
  64. package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +6 -0
  65. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +10 -0
  66. package/behaviors/registry/ui/core/atoms/std-app-search.orb +110 -1
  67. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +119 -2
  68. package/behaviors/registry/ui/core/atoms/std-board.orb +180 -1
  69. package/behaviors/registry/ui/core/atoms/std-browse.orb +143 -6
  70. package/behaviors/registry/ui/core/atoms/std-calendar.orb +59 -1
  71. package/behaviors/registry/ui/core/atoms/std-confirmation.orb +18 -0
  72. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +13 -2
  73. package/behaviors/registry/ui/core/atoms/std-date-range.orb +14 -0
  74. package/behaviors/registry/ui/core/atoms/std-detail-layout.orb +13 -0
  75. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +39 -4
  76. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +20 -6
  77. package/behaviors/registry/ui/core/atoms/std-event-log.orb +146 -1
  78. package/behaviors/registry/ui/core/atoms/std-export.orb +35 -4
  79. package/behaviors/registry/ui/core/atoms/std-file-store.orb +26 -0
  80. package/behaviors/registry/ui/core/atoms/std-filter.orb +57 -1
  81. package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +66 -1
  82. package/behaviors/registry/ui/core/atoms/std-gallery.orb +44 -18
  83. package/behaviors/registry/ui/core/atoms/std-geosearch.orb +22 -0
  84. package/behaviors/registry/ui/core/atoms/std-graphs.orb +71 -1
  85. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +67 -1
  86. package/behaviors/registry/ui/core/atoms/std-import.orb +69 -4
  87. package/behaviors/registry/ui/core/atoms/std-list.orb +36 -6
  88. package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +1865 -169
  89. package/behaviors/registry/ui/core/atoms/std-modal.orb +44 -1
  90. package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +201 -1
  91. package/behaviors/registry/ui/core/atoms/std-notification-panel.orb +24 -1
  92. package/behaviors/registry/ui/core/atoms/std-pagination.orb +35 -1
  93. package/behaviors/registry/ui/core/atoms/std-rating-review.orb +159 -1
  94. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +144 -1
  95. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +103 -1
  96. package/behaviors/registry/ui/core/atoms/std-related.orb +14 -0
  97. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +30 -0
  98. package/behaviors/registry/ui/core/atoms/std-scatter.orb +51 -1
  99. package/behaviors/registry/ui/core/atoms/std-search.orb +10 -0
  100. package/behaviors/registry/ui/core/atoms/std-selection.orb +28 -1
  101. package/behaviors/registry/ui/core/atoms/std-signature-capture.orb +18 -0
  102. package/behaviors/registry/ui/core/atoms/std-stats.orb +153 -1
  103. package/behaviors/registry/ui/core/atoms/std-step-flow.orb +154 -1
  104. package/behaviors/registry/ui/core/atoms/std-tabs.orb +41 -1
  105. package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +34 -0
  106. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +48 -1
  107. package/behaviors/registry/ui/core/atoms/std-thread.orb +30 -0
  108. package/behaviors/registry/ui/core/atoms/std-tree.orb +36 -1
  109. package/behaviors/registry/ui/core/atoms/std-version-history.orb +54 -0
  110. package/behaviors/registry/ui/core/atoms/std-vote.orb +22 -0
  111. package/behaviors/registry/ui/core/atoms/std-wizard.orb +130 -1
  112. package/behaviors/registry/ui/core/atoms/ui-aside.orb +6 -0
  113. package/behaviors/registry/ui/core/atoms/ui-atlas-image.orb +6 -0
  114. package/behaviors/registry/ui/core/atoms/ui-atlas-panel.orb +6 -0
  115. package/behaviors/registry/ui/core/atoms/ui-avatar.orb +6 -0
  116. package/behaviors/registry/ui/core/atoms/ui-badge.orb +6 -0
  117. package/behaviors/registry/ui/core/atoms/ui-box.orb +6 -0
  118. package/behaviors/registry/ui/core/atoms/ui-button.orb +6 -0
  119. package/behaviors/registry/ui/core/atoms/ui-card.orb +6 -0
  120. package/behaviors/registry/ui/core/atoms/ui-center.orb +6 -0
  121. package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +6 -0
  122. package/behaviors/registry/ui/core/atoms/ui-conditional-wrapper.orb +6 -0
  123. package/behaviors/registry/ui/core/atoms/ui-confetti-effect.orb +6 -0
  124. package/behaviors/registry/ui/core/atoms/ui-day-cell.orb +6 -0
  125. package/behaviors/registry/ui/core/atoms/ui-dialog.orb +6 -0
  126. package/behaviors/registry/ui/core/atoms/ui-divider.orb +6 -0
  127. package/behaviors/registry/ui/core/atoms/ui-filter-pill.orb +10 -0
  128. package/behaviors/registry/ui/core/atoms/ui-flip-container.orb +6 -0
  129. package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +6 -0
  130. package/behaviors/registry/ui/core/atoms/ui-hstack.orb +6 -0
  131. package/behaviors/registry/ui/core/atoms/ui-icon.orb +6 -0
  132. package/behaviors/registry/ui/core/atoms/ui-infinite-scroll-sentinel.orb +6 -0
  133. package/behaviors/registry/ui/core/atoms/ui-input.orb +10 -0
  134. package/behaviors/registry/ui/core/atoms/ui-label.orb +6 -0
  135. package/behaviors/registry/ui/core/atoms/ui-law-reference-tooltip.orb +6 -0
  136. package/behaviors/registry/ui/core/atoms/ui-overlay.orb +6 -0
  137. package/behaviors/registry/ui/core/atoms/ui-presence.orb +6 -0
  138. package/behaviors/registry/ui/core/atoms/ui-progress-bar.orb +6 -0
  139. package/behaviors/registry/ui/core/atoms/ui-radio.orb +10 -0
  140. package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +10 -0
  141. package/behaviors/registry/ui/core/atoms/ui-section-header.orb +6 -0
  142. package/behaviors/registry/ui/core/atoms/ui-select.orb +6 -0
  143. package/behaviors/registry/ui/core/atoms/ui-spacer.orb +6 -0
  144. package/behaviors/registry/ui/core/atoms/ui-sparkline.orb +6 -0
  145. package/behaviors/registry/ui/core/atoms/ui-spinner.orb +6 -0
  146. package/behaviors/registry/ui/core/atoms/ui-stack.orb +6 -0
  147. package/behaviors/registry/ui/core/atoms/ui-status-dot.orb +6 -0
  148. package/behaviors/registry/ui/core/atoms/ui-svg-branch.orb +6 -0
  149. package/behaviors/registry/ui/core/atoms/ui-svg-connection.orb +6 -0
  150. package/behaviors/registry/ui/core/atoms/ui-svg-flow.orb +6 -0
  151. package/behaviors/registry/ui/core/atoms/ui-svg-grid.orb +6 -0
  152. package/behaviors/registry/ui/core/atoms/ui-svg-lobe.orb +6 -0
  153. package/behaviors/registry/ui/core/atoms/ui-svg-mesh.orb +6 -0
  154. package/behaviors/registry/ui/core/atoms/ui-svg-morph.orb +6 -0
  155. package/behaviors/registry/ui/core/atoms/ui-svg-node.orb +6 -0
  156. package/behaviors/registry/ui/core/atoms/ui-svg-pulse.orb +6 -0
  157. package/behaviors/registry/ui/core/atoms/ui-svg-ring.orb +6 -0
  158. package/behaviors/registry/ui/core/atoms/ui-svg-shield.orb +6 -0
  159. package/behaviors/registry/ui/core/atoms/ui-svg-stack.orb +6 -0
  160. package/behaviors/registry/ui/core/atoms/ui-switch.orb +10 -0
  161. package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +10 -0
  162. package/behaviors/registry/ui/core/atoms/ui-textarea.orb +6 -0
  163. package/behaviors/registry/ui/core/atoms/ui-theme-toggle.orb +6 -0
  164. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +10 -0
  165. package/behaviors/registry/ui/core/atoms/ui-trait-frame.orb +6 -0
  166. package/behaviors/registry/ui/core/atoms/ui-trend-indicator.orb +6 -0
  167. package/behaviors/registry/ui/core/atoms/ui-typewriter-text.orb +6 -0
  168. package/behaviors/registry/ui/core/atoms/ui-typography.orb +6 -0
  169. package/behaviors/registry/ui/core/atoms/ui-vstack.orb +6 -0
  170. package/behaviors/registry/ui/core/molecules/std-stat-rows.orb +24 -1
  171. package/behaviors/registry/ui/core/molecules/ui-accordion.orb +6 -0
  172. package/behaviors/registry/ui/core/molecules/ui-activation-block.orb +6 -0
  173. package/behaviors/registry/ui/core/molecules/ui-alert.orb +6 -0
  174. package/behaviors/registry/ui/core/molecules/ui-bloom-quiz-block.orb +6 -0
  175. package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +6 -0
  176. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +6 -0
  177. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +10 -0
  178. package/behaviors/registry/ui/core/molecules/ui-carousel.orb +6 -0
  179. package/behaviors/registry/ui/core/molecules/ui-chart-legend.orb +6 -0
  180. package/behaviors/registry/ui/core/molecules/ui-chart.orb +6 -0
  181. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +38 -4
  182. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +10 -0
  183. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +10 -0
  184. package/behaviors/registry/ui/core/molecules/ui-connection-block.orb +6 -0
  185. package/behaviors/registry/ui/core/molecules/ui-container.orb +6 -0
  186. package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +6 -0
  187. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +10 -0
  188. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +10 -0
  189. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +14 -0
  190. package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +6 -0
  191. package/behaviors/registry/ui/core/molecules/ui-doc-breadcrumb.orb +6 -0
  192. package/behaviors/registry/ui/core/molecules/ui-doc-pagination.orb +6 -0
  193. package/behaviors/registry/ui/core/molecules/ui-doc-search.orb +6 -0
  194. package/behaviors/registry/ui/core/molecules/ui-doc-sidebar.orb +6 -0
  195. package/behaviors/registry/ui/core/molecules/ui-doc-toc.orb +6 -0
  196. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +10 -0
  197. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +14 -0
  198. package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +6 -0
  199. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +10 -0
  200. package/behaviors/registry/ui/core/molecules/ui-edge-decoration.orb +6 -0
  201. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +6 -0
  202. package/behaviors/registry/ui/core/molecules/ui-empty-state.orb +6 -0
  203. package/behaviors/registry/ui/core/molecules/ui-error-boundary.orb +6 -0
  204. package/behaviors/registry/ui/core/molecules/ui-error-state.orb +6 -0
  205. package/behaviors/registry/ui/core/molecules/ui-feature-grid.orb +6 -0
  206. package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +6 -0
  207. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +14 -0
  208. package/behaviors/registry/ui/core/molecules/ui-flex.orb +6 -0
  209. package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +6 -0
  210. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +6 -0
  211. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +10 -1
  212. package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +10 -0
  213. package/behaviors/registry/ui/core/molecules/ui-form-field.orb +6 -0
  214. package/behaviors/registry/ui/core/molecules/ui-form-layout.orb +6 -0
  215. package/behaviors/registry/ui/core/molecules/ui-form-section-header.orb +6 -0
  216. package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +6 -0
  217. package/behaviors/registry/ui/core/molecules/ui-gradient-divider.orb +6 -0
  218. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +6 -0
  219. package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +6 -0
  220. package/behaviors/registry/ui/core/molecules/ui-grid.orb +6 -0
  221. package/behaviors/registry/ui/core/molecules/ui-header.orb +6 -0
  222. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +6 -0
  223. package/behaviors/registry/ui/core/molecules/ui-import-progress.orb +6 -0
  224. package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +6 -0
  225. package/behaviors/registry/ui/core/molecules/ui-input-group.orb +10 -0
  226. package/behaviors/registry/ui/core/molecules/ui-jazari-state-machine.orb +6 -0
  227. package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +10 -0
  228. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +6 -0
  229. package/behaviors/registry/ui/core/molecules/ui-line-chart.orb +6 -0
  230. package/behaviors/registry/ui/core/molecules/ui-loading-state.orb +6 -0
  231. package/behaviors/registry/ui/core/molecules/ui-map-view.orb +6 -0
  232. package/behaviors/registry/ui/core/molecules/ui-markdown-content.orb +6 -0
  233. package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +6 -0
  234. package/behaviors/registry/ui/core/molecules/ui-menu.orb +21 -0
  235. package/behaviors/registry/ui/core/molecules/ui-meter.orb +6 -0
  236. package/behaviors/registry/ui/core/molecules/ui-modal.orb +10 -0
  237. package/behaviors/registry/ui/core/molecules/ui-navigation.orb +6 -0
  238. package/behaviors/registry/ui/core/molecules/ui-notification.orb +6 -0
  239. package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +10 -0
  240. package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +6 -0
  241. package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +6 -0
  242. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +6 -0
  243. package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +6 -0
  244. package/behaviors/registry/ui/core/molecules/ui-pagination.orb +10 -0
  245. package/behaviors/registry/ui/core/molecules/ui-popover.orb +10 -0
  246. package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +10 -0
  247. package/behaviors/registry/ui/core/molecules/ui-progress-dots.orb +6 -0
  248. package/behaviors/registry/ui/core/molecules/ui-pull-to-refresh.orb +6 -0
  249. package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +6 -0
  250. package/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +6 -0
  251. package/behaviors/registry/ui/core/molecules/ui-reflection-block.orb +6 -0
  252. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +10 -0
  253. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +6 -0
  254. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +10 -0
  255. package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +10 -0
  256. package/behaviors/registry/ui/core/molecules/ui-scaled-diagram.orb +6 -0
  257. package/behaviors/registry/ui/core/molecules/ui-search-input.orb +14 -0
  258. package/behaviors/registry/ui/core/molecules/ui-section.orb +6 -0
  259. package/behaviors/registry/ui/core/molecules/ui-side-panel.orb +10 -0
  260. package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +10 -0
  261. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +6 -0
  262. package/behaviors/registry/ui/core/molecules/ui-simple-grid.orb +6 -0
  263. package/behaviors/registry/ui/core/molecules/ui-skeleton.orb +6 -0
  264. package/behaviors/registry/ui/core/molecules/ui-social-proof.orb +6 -0
  265. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +10 -0
  266. package/behaviors/registry/ui/core/molecules/ui-split.orb +6 -0
  267. package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +10 -0
  268. package/behaviors/registry/ui/core/molecules/ui-stat-display.orb +6 -0
  269. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +6 -0
  270. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +10 -0
  271. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +6 -0
  272. package/behaviors/registry/ui/core/molecules/ui-tag-input.orb +6 -0
  273. package/behaviors/registry/ui/core/molecules/ui-tooltip.orb +6 -0
  274. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +6 -0
  275. package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +6 -0
  276. package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +6 -0
  277. package/behaviors/registry/ui/core/molecules/ui-vote-stack.orb +6 -0
  278. package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +6 -0
  279. package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +14 -0
  280. package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +6 -0
  281. package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +6 -0
  282. package/behaviors/registry/ui/core/organisms/ui-code-runner-panel.orb +6 -0
  283. package/behaviors/registry/ui/core/organisms/ui-dashboard-grid.orb +6 -0
  284. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +10 -0
  285. package/behaviors/registry/ui/core/organisms/ui-dock-layout.orb +6 -0
  286. package/behaviors/registry/ui/core/organisms/ui-drawer-slot.orb +10 -0
  287. package/behaviors/registry/ui/core/organisms/ui-entity-cards.orb +10 -0
  288. package/behaviors/registry/ui/core/organisms/ui-entity-list.orb +10 -0
  289. package/behaviors/registry/ui/core/organisms/ui-entity-table.orb +10 -0
  290. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +10 -0
  291. package/behaviors/registry/ui/core/organisms/ui-form.orb +10 -0
  292. package/behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb +6 -0
  293. package/behaviors/registry/ui/core/organisms/ui-master-detail.orb +10 -0
  294. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +10 -0
  295. package/behaviors/registry/ui/core/organisms/ui-modal-slot.orb +10 -0
  296. package/behaviors/registry/ui/core/organisms/ui-runtime-debugger.orb +6 -0
  297. package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +6 -0
  298. package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +10 -0
  299. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +10 -0
  300. package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +6 -0
  301. package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +10 -0
  302. package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +6 -0
  303. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +10 -0
  304. package/behaviors/registry/ui/core/organisms/ui-toast-slot.orb +10 -0
  305. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +10 -0
  306. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +6 -0
  307. package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +10 -0
  308. package/behaviors/registry/ui/game/atoms/std-arcade-flow.orb +10 -0
  309. package/behaviors/registry/ui/game/atoms/std-arcade-play.orb +89 -1
  310. package/behaviors/registry/ui/game/atoms/std-area-fill.orb +219 -4
  311. package/behaviors/registry/ui/game/atoms/std-audio-cue.orb +30 -0
  312. package/behaviors/registry/ui/game/atoms/std-camera-rig.orb +63 -0
  313. package/behaviors/registry/ui/game/atoms/std-chase-ai.orb +133 -1
  314. package/behaviors/registry/ui/game/atoms/std-choice-gate.orb +122 -3
  315. package/behaviors/registry/ui/game/atoms/std-coef-pad.orb +159 -3
  316. package/behaviors/registry/ui/game/atoms/std-curve-fog.orb +26 -1
  317. package/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +150 -1
  318. package/behaviors/registry/ui/game/atoms/std-fx-narrative.orb +18 -0
  319. package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +15 -0
  320. package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +40 -1
  321. package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +120 -3
  322. package/behaviors/registry/ui/game/atoms/std-gather.orb +180 -1
  323. package/behaviors/registry/ui/game/atoms/std-gold.orb +10 -0
  324. package/behaviors/registry/ui/game/atoms/std-grid-tactics.orb +130 -1
  325. package/behaviors/registry/ui/game/atoms/std-hero-nav.orb +92 -1
  326. package/behaviors/registry/ui/game/atoms/std-lives.orb +38 -0
  327. package/behaviors/registry/ui/game/atoms/std-loop-lock.orb +117 -3
  328. package/behaviors/registry/ui/game/atoms/std-market-flow.orb +10 -0
  329. package/behaviors/registry/ui/game/atoms/std-mesh-asset-art.orb +10 -0
  330. package/behaviors/registry/ui/game/atoms/std-motion-body.orb +68 -1
  331. package/behaviors/registry/ui/game/atoms/std-objective-flow.orb +10 -0
  332. package/behaviors/registry/ui/game/atoms/std-objective-reach.orb +184 -1
  333. package/behaviors/registry/ui/game/atoms/std-pad-lock.orb +118 -3
  334. package/behaviors/registry/ui/game/atoms/std-patience.orb +215 -1
  335. package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +161 -3
  336. package/behaviors/registry/ui/game/atoms/std-pickup.orb +387 -24
  337. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +505 -17
  338. package/behaviors/registry/ui/game/atoms/std-production.orb +14 -0
  339. package/behaviors/registry/ui/game/atoms/std-round-flow.orb +10 -0
  340. package/behaviors/registry/ui/game/atoms/std-score.orb +10 -0
  341. package/behaviors/registry/ui/game/atoms/std-survival-flow.orb +10 -0
  342. package/behaviors/registry/ui/game/atoms/std-svg-asset-art.orb +10 -0
  343. package/behaviors/registry/ui/game/atoms/std-tutorial-autodemo.orb +117 -1
  344. package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +36 -0
  345. package/behaviors/registry/ui/game/atoms/std-velocity-gate.orb +140 -3
  346. package/behaviors/registry/ui/game/atoms/std-xp.orb +22 -0
  347. package/behaviors/registry/ui/game/atoms/std-zone-card.orb +70 -1
  348. package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +6 -0
  349. package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +6 -0
  350. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +6 -0
  351. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +6 -0
  352. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +6 -0
  353. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +6 -0
  354. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +6 -0
  355. package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +6 -0
  356. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +6 -0
  357. package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +6 -0
  358. package/behaviors/registry/ui/game/atoms/ui-draw-mesh.orb +6 -0
  359. package/behaviors/registry/ui/game/atoms/ui-draw-shape-layer.orb +6 -0
  360. package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +6 -0
  361. package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +6 -0
  362. package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +6 -0
  363. package/behaviors/registry/ui/game/atoms/ui-draw-text-layer.orb +6 -0
  364. package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +6 -0
  365. package/behaviors/registry/ui/game/atoms/ui-game-audio-cue.orb +6 -0
  366. package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +6 -0
  367. package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +6 -0
  368. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +6 -0
  369. package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +6 -0
  370. package/behaviors/registry/ui/game/atoms/ui-score-display.orb +6 -0
  371. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +6 -0
  372. package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +6 -0
  373. package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +6 -0
  374. package/behaviors/registry/ui/game/atoms/ui-state-json-view.orb +6 -0
  375. package/behaviors/registry/ui/game/atoms/ui-timer-display.orb +84 -1
  376. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +10 -0
  377. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +567 -8
  378. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +545 -6
  379. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +804 -10
  380. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +597 -8
  381. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +565 -8
  382. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +561 -6
  383. package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +2075 -0
  384. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +551 -8
  385. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +667 -12
  386. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +707 -8
  387. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +506 -6
  388. package/behaviors/registry/ui/game/templates/ui-game-shell.orb +115 -1
  389. package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +201 -1
  390. package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +325 -1
  391. package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +108 -1
  392. package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +147 -1
  393. package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +190 -1
  394. package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +111 -1
  395. package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +164 -1
  396. package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +105 -1
  397. package/behaviors/registry/ui/learning/atoms/std-learn-fx-cues.orb +169 -1
  398. package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +128 -1
  399. package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +123 -2
  400. package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +178 -1
  401. package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +105 -1
  402. package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +145 -1
  403. package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +100 -1
  404. package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +133 -1
  405. package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +247 -1
  406. package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +180 -1
  407. package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +135 -1
  408. package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +206 -1
  409. package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +129 -1
  410. package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +53 -0
  411. package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +168 -8
  412. package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +135 -1
  413. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +254 -1
  414. package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +315 -1
  415. package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +131 -1
  416. package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +57 -0
  417. package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +214 -1
  418. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +6 -0
  419. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +6 -0
  420. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +6 -0
  421. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +6 -0
  422. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +6 -0
  423. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +6 -0
  424. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +6 -0
  425. package/behaviors/registry/ui/marketing/atoms/std-marketing-article.orb +1 -2
  426. package/behaviors/registry/ui/marketing/atoms/std-marketing-cta.orb +14 -0
  427. package/behaviors/registry/ui/marketing/atoms/std-marketing-features.orb +37 -1
  428. package/behaviors/registry/ui/marketing/atoms/std-marketing-footer.orb +52 -2
  429. package/behaviors/registry/ui/marketing/atoms/std-marketing-hero.orb +14 -0
  430. package/behaviors/registry/ui/marketing/atoms/std-marketing-nav.orb +25 -1
  431. package/behaviors/registry/ui/marketing/atoms/std-marketing-pricing.orb +59 -1
  432. package/behaviors/registry/ui/marketing/atoms/std-marketing-showcase.orb +62 -1
  433. package/behaviors/registry/ui/marketing/atoms/std-marketing-split.orb +1 -2
  434. package/behaviors/registry/ui/marketing/atoms/std-marketing-stats.orb +15 -2
  435. package/behaviors/registry/ui/marketing/atoms/std-marketing-steps.orb +28 -2
  436. package/behaviors/registry/ui/marketing/atoms/std-marketing-team.orb +33 -2
  437. package/behaviors/registry/ui/marketing/atoms/ui-animated-counter.orb +6 -0
  438. package/behaviors/registry/ui/marketing/atoms/ui-animated-graphic.orb +6 -0
  439. package/behaviors/registry/ui/marketing/atoms/ui-animated-reveal.orb +6 -0
  440. package/behaviors/registry/ui/marketing/atoms/ui-article-section.orb +6 -0
  441. package/behaviors/registry/ui/marketing/atoms/ui-case-study-card.orb +6 -0
  442. package/behaviors/registry/ui/marketing/atoms/ui-community-links.orb +6 -0
  443. package/behaviors/registry/ui/marketing/atoms/ui-content-section.orb +6 -0
  444. package/behaviors/registry/ui/marketing/atoms/ui-cta-banner.orb +6 -0
  445. package/behaviors/registry/ui/marketing/atoms/ui-feature-card.orb +6 -0
  446. package/behaviors/registry/ui/marketing/atoms/ui-geometric-pattern.orb +6 -0
  447. package/behaviors/registry/ui/marketing/atoms/ui-hero-section.orb +6 -0
  448. package/behaviors/registry/ui/marketing/atoms/ui-install-box.orb +6 -0
  449. package/behaviors/registry/ui/marketing/atoms/ui-marketing-footer.orb +6 -0
  450. package/behaviors/registry/ui/marketing/atoms/ui-marketing-stat-card.orb +6 -0
  451. package/behaviors/registry/ui/marketing/atoms/ui-pattern-tile.orb +6 -0
  452. package/behaviors/registry/ui/marketing/atoms/ui-pricing-card.orb +6 -0
  453. package/behaviors/registry/ui/marketing/atoms/ui-pricing-grid.orb +6 -0
  454. package/behaviors/registry/ui/marketing/atoms/ui-pull-quote.orb +6 -0
  455. package/behaviors/registry/ui/marketing/atoms/ui-service-catalog.orb +6 -0
  456. package/behaviors/registry/ui/marketing/atoms/ui-showcase-card.orb +6 -0
  457. package/behaviors/registry/ui/marketing/atoms/ui-split-section.orb +6 -0
  458. package/behaviors/registry/ui/marketing/atoms/ui-stats-grid.orb +6 -0
  459. package/behaviors/registry/ui/marketing/atoms/ui-step-flow.orb +6 -0
  460. package/behaviors/registry/ui/marketing/atoms/ui-tag-cloud.orb +6 -0
  461. package/behaviors/registry/ui/marketing/atoms/ui-team-card.orb +6 -0
  462. package/behaviors/registry/ui/marketing/organisms/ui-book-chapter-view.orb +10 -0
  463. package/behaviors/registry/ui/marketing/organisms/ui-book-cover-page.orb +6 -0
  464. package/behaviors/registry/ui/marketing/organisms/ui-book-nav-bar.orb +6 -0
  465. package/behaviors/registry/ui/marketing/organisms/ui-book-table-of-contents.orb +10 -0
  466. package/behaviors/registry/ui/marketing/organisms/ui-book-viewer.orb +10 -0
  467. package/behaviors/registry/ui/marketing/organisms/ui-case-study-organism.orb +10 -0
  468. package/behaviors/registry/ui/marketing/organisms/ui-feature-grid-organism.orb +10 -0
  469. package/behaviors/registry/ui/marketing/organisms/ui-hero-organism.orb +10 -0
  470. package/behaviors/registry/ui/marketing/organisms/ui-pricing-organism.orb +10 -0
  471. package/behaviors/registry/ui/marketing/organisms/ui-showcase-organism.orb +10 -0
  472. package/behaviors/registry/ui/marketing/organisms/ui-stats-organism.orb +10 -0
  473. package/behaviors/registry/ui/marketing/organisms/ui-step-flow-organism.orb +10 -0
  474. package/behaviors/registry/ui/marketing/organisms/ui-team-organism.orb +10 -0
  475. package/behaviors/registry/ui/marketing/templates/ui-about-page-template.orb +10 -0
  476. package/behaviors/registry/ui/marketing/templates/ui-auth-layout.orb +6 -0
  477. package/behaviors/registry/ui/marketing/templates/ui-feature-detail-page-template.orb +10 -0
  478. package/behaviors/registry/ui/marketing/templates/ui-landing-page-template.orb +10 -0
  479. package/behaviors/registry/ui/marketing/templates/ui-pricing-page-template.orb +10 -0
  480. package/dist/behaviors/exports-reader.js +7542 -2555
  481. package/dist/behaviors/functions/index.d.ts +161 -106
  482. package/dist/behaviors/functions/index.js +7539 -2553
  483. package/dist/behaviors/index.d.ts +1 -1
  484. package/dist/behaviors/index.js +7543 -2556
  485. package/dist/behaviors/query.d.ts +6 -0
  486. package/dist/behaviors/query.js +7542 -2555
  487. package/dist/behaviors-embeddings.hash.json +3 -3
  488. package/dist/behaviors-embeddings.json +29 -29
  489. package/dist/behaviors-registry.json +11423 -827
  490. package/dist/index.d.ts +1 -1
  491. package/dist/index.js +7543 -2556
  492. package/dist/knob-embeddings.hash.json +3 -3
  493. package/dist/knob-embeddings.json +1 -1
  494. package/dist/registry/factory-signatures.json +1 -1
  495. package/package.json +2 -2
  496. package/behaviors/lolo/ui/game/atoms/std-game-design-sheet.lolo +0 -69
  497. package/behaviors/registry/ui/game/atoms/std-game-design-sheet.orb +0 -527
@@ -264,9 +264,9 @@ orbital EscalatingDecisionOrbital {
264
264
  listens {
265
265
  FROM_EXACT { key : scalar! }
266
266
  FROM_LOOKUP { entry : scalar! }
267
- FROM_SIMILARITY { index : int! score : float! }
268
- FROM_INFER { output : [float]! confidence : float! }
269
- FROM_CLASSIFY { category : string! confidence : float! reasoning : string! }
267
+ FROM_SIMILARITY { index : int! score : number! }
268
+ FROM_INFER { output : [float]! confidence : number! }
269
+ FROM_CLASSIFY { category : string! confidence : number! reasoning : string! }
270
270
  FROM_CLASSIFY_FAILURE { error : string! }
271
271
 
272
272
  ExactRung.EXACT_MATCHED -> FROM_EXACT
@@ -1,5 +1,5 @@
1
1
  app std-modal-editor "0.1.0"
2
- "UI substrate: modal keyboard editing over any editable CodeBlock. The topology is fixed (NORMAL / INSERT / VISUAL / OPERATOR_PENDING / COMMAND) and every binding is config: mode-entry keys, motions, operators, ex-commands, the digit table that accumulates a repeat count, and the per-mode captured-key table the host's keyboard router reads. Vim ships as the default flavor; a Kakoune/Helix binding is the same topology with different config, never a fork. Emits are the mechanical vocabulary an editable CodeBlock listens to (SET_MODE / MOTION / OPERATE / INSERT_TEXT) plus one neutral EX_COMMAND for a buffered ':' line — std names no host command; a realization maps EX_COMMAND.name onto its own host vocabulary."
2
+ "UI substrate: modal keyboard editing over any editable CodeBlock. The topology is fixed (NORMAL / INSERT / VISUAL / OPERATOR_PENDING / COMMAND) and every binding is config: mode-entry keys, motions, operators, ex-commands, the digit table that accumulates a repeat count, and the per-mode captured-key table the host's keyboard router reads. Vim ships as the default flavor; a Kakoune/Helix binding is the same topology with different config, never a fork. Emits are the mechanical vocabulary an editable CodeBlock listens to (SET_MODE / MOTION / OPERATE / INSERT_TEXT) plus one neutral EX_COMMAND for a buffered ':' line — std names no host command; a realization maps EX_COMMAND.name onto its own host vocabulary. A bare EDITOR_FOCUS listen lets every state re-announce its SET_MODE (block caret in NORMAL/VISUAL/OPERATOR_PENDING/COMMAND, bar in INSERT) when the host focuses a different editor surface."
3
3
  orbital ModalEditorOrbital {
4
4
  entity EditorMode [runtime] {
5
5
  id : string!
@@ -8,6 +8,9 @@ orbital ModalEditorOrbital {
8
8
  operator : string = ""
9
9
  operatorKey : string = ""
10
10
  cmdline : string = ""
11
+ lastOperator : string = ""
12
+ lastMotion : string = ""
13
+ lastCount : number = 0
11
14
  }
12
15
 
13
16
  trait Modes -> @rebindable EditorMode [lifecycle, instance] {
@@ -32,7 +35,29 @@ orbital ModalEditorOrbital {
32
35
  (set @entity.editorId ?editorId)
33
36
  (set @entity.count 0)
34
37
  (emit MOTION { editorId: ?editorId, motion: "line-end", count: 1 })
38
+ (emit MOTION { editorId: ?editorId, motion: "right", count: 1 })
39
+ (emit INSERT_TEXT { editorId: ?editorId, text: "\n" })
40
+ (emit SET_MODE { editorId: ?editorId, mode: "INSERT", caret: "bar" })
41
+
42
+ KEY -> INSERT when ["=", ?key, @config.openLineAboveKey]
43
+ (set @entity.editorId ?editorId)
44
+ (set @entity.count 0)
45
+ (emit MOTION { editorId: ?editorId, motion: "line-start", count: 1 })
35
46
  (emit INSERT_TEXT { editorId: ?editorId, text: "\n" })
47
+ (emit MOTION { editorId: ?editorId, motion: "up", count: 1 })
48
+ (emit SET_MODE { editorId: ?editorId, mode: "INSERT", caret: "bar" })
49
+
50
+ KEY -> INSERT when ["=", ?key, @config.appendLineKey]
51
+ (set @entity.editorId ?editorId)
52
+ (set @entity.count 0)
53
+ (emit MOTION { editorId: ?editorId, motion: "line-end", count: 1 })
54
+ (emit MOTION { editorId: ?editorId, motion: "right", count: 1 })
55
+ (emit SET_MODE { editorId: ?editorId, mode: "INSERT", caret: "bar" })
56
+
57
+ KEY -> INSERT when ["=", ?key, @config.insertLineKey]
58
+ (set @entity.editorId ?editorId)
59
+ (set @entity.count 0)
60
+ (emit MOTION { editorId: ?editorId, motion: "first-nonblank", count: 1 })
36
61
  (emit SET_MODE { editorId: ?editorId, mode: "INSERT", caret: "bar" })
37
62
 
38
63
  KEY -> VISUAL when ["=", ?key, @config.visualKey]
@@ -49,6 +74,60 @@ orbital ModalEditorOrbital {
49
74
  (set @entity.operator (object/get @config.operators ?key))
50
75
  (set @entity.operatorKey ?key)
51
76
 
77
+ KEY -> OPERATOR_PENDING when ["=", ?key, @config.gotoPrefixKey]
78
+ (set @entity.editorId ?editorId)
79
+ (set @entity.operator "goto")
80
+ (set @entity.operatorKey ?key)
81
+
82
+ KEY -> OPERATOR_PENDING when (and ["=", ?key, @config.replaceKey] (not ?ctrl))
83
+ (set @entity.editorId ?editorId)
84
+ (set @entity.operator "replace")
85
+ (set @entity.operatorKey ?key)
86
+
87
+ KEY -> NORMAL when (and ["=", ?key, @config.redoKey] ?ctrl)
88
+ (set @entity.editorId ?editorId)
89
+ (emit OPERATE { editorId: ?editorId, operator: "redo", motion: "right", count: (if [">", @entity.count, 0] @entity.count 1) })
90
+ (set @entity.count 0)
91
+
92
+ KEY -> NORMAL when ["=", ?key, @config.undoKey]
93
+ (set @entity.editorId ?editorId)
94
+ (emit OPERATE { editorId: ?editorId, operator: "undo", motion: "right", count: (if [">", @entity.count, 0] @entity.count 1) })
95
+ (set @entity.count 0)
96
+
97
+ KEY -> NORMAL when ["=", ?key, @config.deleteCharKey]
98
+ (set @entity.editorId ?editorId)
99
+ (emit OPERATE { editorId: ?editorId, operator: "delete", motion: "right", count: (if [">", @entity.count, 0] @entity.count 1) })
100
+ (set @entity.count 0)
101
+
102
+ KEY -> NORMAL when ["=", ?key, @config.deleteCharBackKey]
103
+ (set @entity.editorId ?editorId)
104
+ (emit OPERATE { editorId: ?editorId, operator: "delete", motion: "left", count: (if [">", @entity.count, 0] @entity.count 1) })
105
+ (set @entity.count 0)
106
+
107
+ KEY -> NORMAL when ["=", ?key, @config.putKey]
108
+ (set @entity.editorId ?editorId)
109
+ (emit OPERATE { editorId: ?editorId, operator: "put", motion: "right", count: (if [">", @entity.count, 0] @entity.count 1) })
110
+ (set @entity.count 0)
111
+
112
+ KEY -> NORMAL when ["=", ?key, @config.putBeforeKey]
113
+ (set @entity.editorId ?editorId)
114
+ (emit OPERATE { editorId: ?editorId, operator: "put-before", motion: "right", count: (if [">", @entity.count, 0] @entity.count 1) })
115
+ (set @entity.count 0)
116
+
117
+ KEY -> NORMAL when ["=", ?key, @config.toggleCaseKey]
118
+ (set @entity.editorId ?editorId)
119
+ (emit OPERATE { editorId: ?editorId, operator: "toggle-case", motion: "right", count: (if [">", @entity.count, 0] @entity.count 1) })
120
+ (set @entity.count 0)
121
+
122
+ KEY -> NORMAL when ["=", ?key, @config.joinKey]
123
+ (set @entity.editorId ?editorId)
124
+ (emit OPERATE { editorId: ?editorId, operator: "join", motion: "line", count: (if [">", @entity.count, 1] @entity.count 2) })
125
+ (set @entity.count 0)
126
+
127
+ KEY -> NORMAL when (and ["=", ?key, @config.repeatKey] ["!=", @entity.lastOperator, ""])
128
+ (emit OPERATE { editorId: ?editorId, operator: @entity.lastOperator, motion: @entity.lastMotion, count: @entity.lastCount })
129
+ (set @entity.count 0)
130
+
52
131
  KEY -> NORMAL when (and (object/has @config.digits ?key) (or ["!=", ?key, "0"] [">", @entity.count, 0]))
53
132
  (set @entity.count (+ (* @entity.count 10) (object/get @config.digits ?key)))
54
133
 
@@ -61,11 +140,20 @@ orbital ModalEditorOrbital {
61
140
  (set @entity.count 0)
62
141
  (set @entity.operator "")
63
142
  (set @entity.operatorKey "")
143
+
144
+ EDITOR_FOCUS -> NORMAL
145
+ (set @entity.editorId ?editorId)
146
+ (emit SET_MODE { editorId: ?editorId, mode: "NORMAL", caret: "block" })
64
147
  }
65
148
 
66
149
  state INSERT {
67
150
  KEY -> NORMAL when ["=", ?key, "Escape"]
151
+ (emit MOTION { editorId: ?editorId, motion: "left", count: 1 })
68
152
  (emit SET_MODE { editorId: ?editorId, mode: "NORMAL", caret: "block" })
153
+
154
+ EDITOR_FOCUS -> INSERT
155
+ (set @entity.editorId ?editorId)
156
+ (emit SET_MODE { editorId: ?editorId, mode: "INSERT", caret: "bar" })
69
157
  }
70
158
 
71
159
  state VISUAL {
@@ -73,25 +161,102 @@ orbital ModalEditorOrbital {
73
161
  (set @entity.count 0)
74
162
  (emit SET_MODE { editorId: ?editorId, mode: "NORMAL", caret: "block" })
75
163
 
76
- KEY -> NORMAL when (object/has @config.operators ?key)
164
+ KEY -> INSERT when (and (object/has @config.operators ?key) ["=", (object/get @config.operators ?key), "change"])
165
+ (set @entity.count 0)
166
+ (emit OPERATE { editorId: ?editorId, operator: (object/get @config.operators ?key), motion: "selection", count: 1 })
167
+ (set @entity.lastOperator (object/get @config.operators ?key))
168
+ (set @entity.lastMotion "selection")
169
+ (set @entity.lastCount 1)
170
+ (emit SET_MODE { editorId: ?editorId, mode: "INSERT", caret: "bar" })
171
+
172
+ KEY -> NORMAL when (and (object/has @config.operators ?key) ["!=", (object/get @config.operators ?key), "change"])
77
173
  (set @entity.count 0)
78
174
  (emit OPERATE { editorId: ?editorId, operator: (object/get @config.operators ?key), motion: "selection", count: 1 })
175
+ (set @entity.lastOperator (object/get @config.operators ?key))
176
+ (set @entity.lastMotion "selection")
177
+ (set @entity.lastCount 1)
178
+ (emit SET_MODE { editorId: ?editorId, mode: "NORMAL", caret: "block" })
179
+
180
+ KEY -> NORMAL when ["=", ?key, @config.toggleCaseKey]
181
+ (set @entity.count 0)
182
+ (emit OPERATE { editorId: ?editorId, operator: "toggle-case", motion: "selection", count: 1 })
183
+ (set @entity.lastOperator "toggle-case")
184
+ (set @entity.lastMotion "selection")
185
+ (set @entity.lastCount 1)
186
+ (emit SET_MODE { editorId: ?editorId, mode: "NORMAL", caret: "block" })
187
+
188
+ KEY -> NORMAL when ["=", ?key, @config.joinKey]
189
+ (set @entity.count 0)
190
+ (emit OPERATE { editorId: ?editorId, operator: "join", motion: "selection", count: 1 })
191
+ (set @entity.lastOperator "join")
192
+ (set @entity.lastMotion "selection")
193
+ (set @entity.lastCount 1)
79
194
  (emit SET_MODE { editorId: ?editorId, mode: "NORMAL", caret: "block" })
80
195
 
81
196
  KEY -> VISUAL when (object/has @config.motions ?key)
82
197
  (emit MOTION { editorId: ?editorId, motion: (object/get @config.motions ?key), count: (if [">", @entity.count, 0] @entity.count 1) })
83
198
  (set @entity.count 0)
199
+
200
+ EDITOR_FOCUS -> VISUAL
201
+ (set @entity.editorId ?editorId)
202
+ (emit SET_MODE { editorId: ?editorId, mode: "VISUAL", caret: "block" })
84
203
  }
85
204
 
86
205
  state OPERATOR_PENDING {
87
- KEY -> NORMAL when ["=", ?key, @entity.operatorKey]
206
+ KEY -> NORMAL when (and ["=", ?key, @entity.operatorKey] ["=", @entity.operator, "goto"])
207
+ (emit MOTION { editorId: ?editorId, motion: "doc-start", count: 1 })
208
+ (set @entity.operator "")
209
+ (set @entity.operatorKey "")
210
+ (set @entity.count 0)
211
+
212
+ KEY -> INSERT when (and ["=", ?key, @entity.operatorKey] ["=", @entity.operator, "change"])
88
213
  (emit OPERATE { editorId: ?editorId, operator: @entity.operator, motion: "line", count: (if [">", @entity.count, 0] @entity.count 1) })
214
+ (set @entity.lastOperator @entity.operator)
215
+ (set @entity.lastMotion "line")
216
+ (set @entity.lastCount (if [">", @entity.count, 0] @entity.count 1))
89
217
  (set @entity.operator "")
90
218
  (set @entity.operatorKey "")
91
219
  (set @entity.count 0)
220
+ (emit SET_MODE { editorId: ?editorId, mode: "INSERT", caret: "bar" })
92
221
 
93
- KEY -> NORMAL when (object/has @config.motions ?key)
222
+ KEY -> NORMAL when (and ["=", ?key, @entity.operatorKey] ["!=", @entity.operator, "change"] ["!=", @entity.operator, "goto"] ["!=", @entity.operator, "replace"])
223
+ (emit OPERATE { editorId: ?editorId, operator: @entity.operator, motion: "line", count: (if [">", @entity.count, 0] @entity.count 1) })
224
+ (set @entity.lastOperator @entity.operator)
225
+ (set @entity.lastMotion "line")
226
+ (set @entity.lastCount (if [">", @entity.count, 0] @entity.count 1))
227
+ (set @entity.operator "")
228
+ (set @entity.operatorKey "")
229
+ (set @entity.count 0)
230
+
231
+ KEY -> INSERT when (and (object/has @config.motions ?key) ["=", @entity.operator, "change"])
232
+ (emit OPERATE { editorId: ?editorId, operator: @entity.operator, motion: (object/get @config.motions ?key), count: (if [">", @entity.count, 0] @entity.count 1) })
233
+ (set @entity.lastOperator @entity.operator)
234
+ (set @entity.lastMotion (object/get @config.motions ?key))
235
+ (set @entity.lastCount (if [">", @entity.count, 0] @entity.count 1))
236
+ (set @entity.operator "")
237
+ (set @entity.operatorKey "")
238
+ (set @entity.count 0)
239
+ (emit SET_MODE { editorId: ?editorId, mode: "INSERT", caret: "bar" })
240
+
241
+ KEY -> NORMAL when (and (object/has @config.motions ?key) ["!=", @entity.operator, "change"] ["!=", @entity.operator, "goto"] ["!=", @entity.operator, "replace"])
94
242
  (emit OPERATE { editorId: ?editorId, operator: @entity.operator, motion: (object/get @config.motions ?key), count: (if [">", @entity.count, 0] @entity.count 1) })
243
+ (set @entity.lastOperator @entity.operator)
244
+ (set @entity.lastMotion (object/get @config.motions ?key))
245
+ (set @entity.lastCount (if [">", @entity.count, 0] @entity.count 1))
246
+ (set @entity.operator "")
247
+ (set @entity.operatorKey "")
248
+ (set @entity.count 0)
249
+
250
+ KEY -> OPERATOR_PENDING when (and (object/has @config.digits ?key) (or ["!=", ?key, "0"] [">", @entity.count, 0]) ["!=", @entity.operator, "goto"] ["!=", @entity.operator, "replace"])
251
+ (set @entity.count (+ (* @entity.count 10) (object/get @config.digits ?key)))
252
+
253
+ KEY -> NORMAL when (and ["=", @entity.operator, "replace"] ["!=", ?key, "Escape"])
254
+ (emit OPERATE { editorId: ?editorId, operator: "delete", motion: "right", count: 1 })
255
+ (emit INSERT_TEXT { editorId: ?editorId, text: ?key })
256
+ (emit MOTION { editorId: ?editorId, motion: "left", count: 1 })
257
+ (set @entity.lastOperator "delete")
258
+ (set @entity.lastMotion "right")
259
+ (set @entity.lastCount 1)
95
260
  (set @entity.operator "")
96
261
  (set @entity.operatorKey "")
97
262
  (set @entity.count 0)
@@ -100,6 +265,15 @@ orbital ModalEditorOrbital {
100
265
  (set @entity.operator "")
101
266
  (set @entity.operatorKey "")
102
267
  (set @entity.count 0)
268
+
269
+ KEY -> NORMAL when (and ["=", @entity.operator, "goto"] ["!=", ?key, "Escape"] ["!=", ?key, @entity.operatorKey])
270
+ (set @entity.operator "")
271
+ (set @entity.operatorKey "")
272
+ (set @entity.count 0)
273
+
274
+ EDITOR_FOCUS -> OPERATOR_PENDING
275
+ (set @entity.editorId ?editorId)
276
+ (emit SET_MODE { editorId: ?editorId, mode: "OPERATOR_PENDING", caret: "block" })
103
277
  }
104
278
 
105
279
  state COMMAND {
@@ -121,6 +295,10 @@ orbital ModalEditorOrbital {
121
295
 
122
296
  KEY -> COMMAND when (and ["!=", ?key, "Enter"] ["!=", ?key, "Escape"] ["!=", ?key, "Backspace"])
123
297
  (set @entity.cmdline (str/concat @entity.cmdline ?key))
298
+
299
+ EDITOR_FOCUS -> COMMAND
300
+ (set @entity.editorId ?editorId)
301
+ (emit SET_MODE { editorId: ?editorId, mode: "COMMAND", caret: "block" })
124
302
  }
125
303
 
126
304
  listens {
@@ -135,6 +313,10 @@ orbital ModalEditorOrbital {
135
313
  repeat : boolean
136
314
  }
137
315
  @description "One physical keydown, delivered by the host's keyboard router. The host decides preventDefault from config.keymap; this trait only reads key + editorId."
316
+ EDITOR_FOCUS {
317
+ editorId : string
318
+ }
319
+ @description "The host focused a different editor surface. Every state re-emits its own SET_MODE so the newly focused editor's mode indicator and caret style start correct."
138
320
  }
139
321
 
140
322
  emits {
@@ -158,13 +340,13 @@ orbital ModalEditorOrbital {
158
340
  motion : string
159
341
  count : number
160
342
  }
161
- @description "Apply a config-declared operator (delete | yank | change) over the range a motion describes; `line` for doubled operators, `selection` in VISUAL."
343
+ @description "Apply a config-declared operator (delete | yank | change | put | put-before | undo | redo | join | toggle-case | indent | dedent | replace) over the range a motion describes; `line` for doubled operators, `selection` in VISUAL, and a fixed `right` placeholder for the point operators (put | put-before | undo | redo) which the editor ignores."
162
344
  @tier "primary"
163
345
  INSERT_TEXT -> external {
164
346
  editorId : string
165
347
  text : string
166
348
  }
167
- @description "Insert literal text at the caret (e.g. the newline `o` opens before entering INSERT)."
349
+ @description "Insert literal text at the caret (e.g. the newline `o`/`O` insert before entering INSERT, or the replacement char `r` inserts)."
168
350
  @tier "secondary"
169
351
  EX_COMMAND -> external {
170
352
  editorId : string
@@ -187,9 +369,24 @@ orbital ModalEditorOrbital {
187
369
  @tier "presentation"
188
370
  openLineKey : string = "o"
189
371
  @label "Open a line below and insert"
190
- @description "Key that moves to line end, inserts a newline, then switches to INSERT."
372
+ @description "Key that moves to line end (past the last char), inserts a newline, then switches to INSERT — vim's `o`."
191
373
  @synonyms "open line, new line below"
192
374
  @tier "presentation"
375
+ openLineAboveKey : string = "O"
376
+ @label "Open a line above and insert"
377
+ @description "Key that moves to line start, inserts a newline, then moves up and switches to INSERT — vim's `O`."
378
+ @synonyms "open line above, new line above"
379
+ @tier "presentation"
380
+ appendLineKey : string = "A"
381
+ @label "Enter INSERT at end of line"
382
+ @description "Key that moves to line end and past it, then switches to INSERT — vim's `A`."
383
+ @synonyms "append at end of line"
384
+ @tier "presentation"
385
+ insertLineKey : string = "I"
386
+ @label "Enter INSERT at first non-blank"
387
+ @description "Key that moves to the line's first non-blank column, then switches to INSERT — vim's `I`."
388
+ @synonyms "insert at line start"
389
+ @tier "presentation"
193
390
  visualKey : string = "v"
194
391
  @label "Enter VISUAL"
195
392
  @description "Key that switches NORMAL to VISUAL; motions then extend the selection and an operator acts on it."
@@ -200,26 +397,81 @@ orbital ModalEditorOrbital {
200
397
  @description "Key that switches NORMAL to COMMAND and starts buffering an ex-command line."
201
398
  @synonyms "ex mode, command line, colon"
202
399
  @tier "presentation"
203
- operators : Map string string = { d: "delete", y: "yank", c: "change" }
400
+ deleteCharKey : string = "x"
401
+ @label "Delete char under caret"
402
+ @description "Key that deletes the character(s) to the right of the caret, count times."
403
+ @synonyms "delete char, x"
404
+ @tier "presentation"
405
+ deleteCharBackKey : string = "X"
406
+ @label "Delete char before caret"
407
+ @description "Key that deletes the character(s) to the left of the caret, count times."
408
+ @synonyms "delete char back"
409
+ @tier "presentation"
410
+ putKey : string = "p"
411
+ @label "Put after caret"
412
+ @description "Key that pastes the last yank/delete after the caret. `motion` on OPERATE is a fixed `right` placeholder — this is a point operator and the editor ignores it."
413
+ @synonyms "paste, put"
414
+ @tier "presentation"
415
+ putBeforeKey : string = "P"
416
+ @label "Put before caret"
417
+ @description "Key that pastes the last yank/delete before the caret. `motion` on OPERATE is a fixed `right` placeholder — this is a point operator and the editor ignores it."
418
+ @synonyms "paste before, put before"
419
+ @tier "presentation"
420
+ undoKey : string = "u"
421
+ @label "Undo"
422
+ @description "Key that undoes the last change. `motion` on OPERATE is a fixed `right` placeholder — this is a point operator and the editor ignores it."
423
+ @synonyms "undo"
424
+ @tier "presentation"
425
+ redoKey : string = "r"
426
+ @label "Redo (with Ctrl)"
427
+ @description "Held with Ctrl, redoes the last undone change. `motion` on OPERATE is a fixed `right` placeholder — this is a point operator and the editor ignores it. Shares its default key with replaceKey; the ctrl modifier disambiguates."
428
+ @synonyms "redo, ctrl-r"
429
+ @tier "presentation"
430
+ replaceKey : string = "r"
431
+ @label "Replace char"
432
+ @description "Without Ctrl, arms a one-key replace: the next non-Escape key overwrites the character under the caret. Shares its default key with redoKey; the ctrl modifier disambiguates."
433
+ @synonyms "replace char"
434
+ @tier "presentation"
435
+ toggleCaseKey : string = "~"
436
+ @label "Toggle case"
437
+ @description "Key that flips the case of the character under the caret, count times."
438
+ @synonyms "toggle case, tilde"
439
+ @tier "presentation"
440
+ joinKey : string = "J"
441
+ @label "Join lines"
442
+ @description "Key that joins the current line with the line(s) below; a count above 1 joins that many lines."
443
+ @synonyms "join lines"
444
+ @tier "presentation"
445
+ repeatKey : string = "."
446
+ @label "Repeat last change"
447
+ @description "Key that re-applies the last OPERATE (operator, motion, count) recorded from OPERATOR_PENDING or VISUAL. No-op until a change has been recorded."
448
+ @synonyms "repeat, dot repeat"
449
+ @tier "presentation"
450
+ gotoPrefixKey : string = "g"
451
+ @label "Goto prefix"
452
+ @description "Arms OPERATOR_PENDING with the `goto` pseudo-operator; pressed again (`gg`) moves to the document start. Any other key cancels back to NORMAL."
453
+ @synonyms "goto, gg, doc start"
454
+ @tier "presentation"
455
+ operators : Map string string = { d: "delete", y: "yank", c: "change", ">": "indent", "<": "dedent" }
204
456
  @label "Operator keys"
205
457
  @description "Keys that arm OPERATOR_PENDING, mapped to the operator name carried on OPERATE. Pressing the same key again operates on the whole line."
206
- @synonyms "operators, delete, yank, change"
458
+ @synonyms "operators, delete, yank, change, indent, dedent"
207
459
  @tier "domain"
208
- motions : Map string string = { h: "left", j: "down", k: "up", l: "right", w: "word-forward", b: "word-back", e: "word-end", "0": "line-start", "$": "line-end", "^": "first-nonblank", G: "doc-end", "{": "paragraph-back", "}": "paragraph-forward" }
460
+ motions : Map string string = { h: "left", j: "down", k: "up", l: "right", w: "word-forward", b: "word-back", e: "word-end", "0": "line-start", "$": "line-end", "^": "first-nonblank", G: "doc-end", "{": "paragraph-back", "}": "paragraph-forward", "%": "match-bracket" }
209
461
  @label "Motion keys"
210
462
  @description "Keys recognized in NORMAL, VISUAL and OPERATOR_PENDING, mapped to the closed motion vocabulary the editor surface understands."
211
463
  @synonyms "motions, movement, hjkl, word motion"
212
464
  @tier "domain"
213
465
  digits : Map string number = { "0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9 }
214
466
  @label "Count digits"
215
- @description "Digit keys accumulated into a repeat count before a motion or operator fires; each digit's integer value is a lookup because the language has no string-to-int operator."
467
+ @description "Digit keys accumulated into a repeat count before a motion or operator fires (also inside OPERATOR_PENDING, e.g. `d3w`); each digit's integer value is a lookup because the language has no string-to-int operator."
216
468
  @tier "internal"
217
- exCommands : Map string string = { w: "save", q: "close-tab", wq: "save-close-tab" }
469
+ exCommands : Map string string = { w: "save", q: "close-tab", wq: "save-close-tab", "q!": "close-tab-discard", x: "save-close-tab" }
218
470
  @label "Ex-commands"
219
471
  @description "Buffered COMMAND-mode lines (typed after ':') mapped to a neutral command name carried on EX_COMMAND."
220
472
  @synonyms "ex commands, colon commands"
221
473
  @tier "domain"
222
- keymap : Map string [string] = { NORMAL: ["i", "a", "o", "v", ":", "d", "y", "c", "h", "j", "k", "l", "w", "b", "e", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "$", "^", "G", "{", "}", "Escape"], INSERT: ["Escape"], VISUAL: ["Escape", "d", "y", "c", "h", "j", "k", "l", "w", "b", "e", "0", "$", "^", "G", "{", "}"], OPERATOR_PENDING: ["Escape", "d", "y", "c", "h", "j", "k", "l", "w", "b", "e", "0", "$", "^", "G", "{", "}"], COMMAND: ["Escape", "Enter", "Backspace", "w", "q"] }
474
+ keymap : Map string [string] = { NORMAL: ["i", "a", "o", "O", "A", "I", "v", ":", "d", "y", "c", "h", "j", "k", "l", "w", "b", "e", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "$", "^", "G", "{", "}", "%", ">", "<", "x", "X", "p", "P", "u", "r", "~", "J", ".", "g", "Escape"], INSERT: ["Escape"], VISUAL: ["Escape", "d", "y", "c", "h", "j", "k", "l", "w", "b", "e", "0", "$", "^", "G", "{", "}", "%", "~", ">", "<", "J"], OPERATOR_PENDING: ["Escape", "d", "y", "c", "h", "j", "k", "l", "w", "b", "e", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "$", "^", "G", "{", "}", "%", ">", "<", "g"], COMMAND: ["Escape", "Enter", "Backspace", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "!", "%", " "] }
223
475
  @label "Captured keys per mode"
224
476
  @description "The declared key set the host's keyboard router reads synchronously to decide preventDefault, keyed by this trait's current state name. A key not listed reaches the underlying textarea untouched. Keep in sync with the other knobs."
225
477
  @tier "internal"
@@ -339,13 +339,13 @@ orbital CodeBlockOrbital {
339
339
  listens {
340
340
  MOTION {
341
341
  editorId : string!
342
- motion : "left" | "right" | "up" | "down" | "word-forward" | "word-back" | "word-end" | "line-start" | "line-end" | "first-nonblank" | "doc-start" | "doc-end" | "paragraph-forward" | "paragraph-back" | "line" | "selection"!
342
+ motion : "left" | "right" | "up" | "down" | "word-forward" | "word-back" | "word-end" | "line-start" | "line-end" | "first-nonblank" | "doc-start" | "doc-end" | "paragraph-forward" | "paragraph-back" | "line" | "selection" | "match-bracket"!
343
343
  count : number!
344
344
  }
345
345
  OPERATE {
346
346
  editorId : string!
347
- operator : "delete" | "yank" | "change"!
348
- motion : "left" | "right" | "up" | "down" | "word-forward" | "word-back" | "word-end" | "line-start" | "line-end" | "first-nonblank" | "doc-start" | "doc-end" | "paragraph-forward" | "paragraph-back" | "line" | "selection"!
347
+ operator : "delete" | "yank" | "change" | "put" | "put-before" | "undo" | "redo" | "join" | "toggle-case" | "indent" | "dedent" | "replace"!
348
+ motion : "left" | "right" | "up" | "down" | "word-forward" | "word-back" | "word-end" | "line-start" | "line-end" | "first-nonblank" | "doc-start" | "doc-end" | "paragraph-forward" | "paragraph-back" | "line" | "selection" | "match-bracket"!
349
349
  count : number!
350
350
  }
351
351
  INSERT_TEXT {
@@ -481,11 +481,11 @@ orbital CodeBlockOrbital {
481
481
  @label "On Set Mode"
482
482
  @description "Declarative bus listen: switch editor mode and caret style."
483
483
  @tier "presentation"
484
- motions : ["left" | "right" | "up" | "down" | "word-forward" | "word-back" | "word-end" | "line-start" | "line-end" | "first-nonblank" | "doc-start" | "doc-end" | "paragraph-forward" | "paragraph-back" | "line" | "selection"] = ["left", "right", "up", "down", "word-forward", "word-back", "word-end", "line-start", "line-end", "first-nonblank", "doc-start", "doc-end", "paragraph-forward", "paragraph-back", "line", "selection"]
484
+ motions : ["left" | "right" | "up" | "down" | "word-forward" | "word-back" | "word-end" | "line-start" | "line-end" | "first-nonblank" | "doc-start" | "doc-end" | "paragraph-forward" | "paragraph-back" | "line" | "selection" | "match-bracket"] = ["left", "right", "up", "down", "word-forward", "word-back", "word-end", "line-start", "line-end", "first-nonblank", "doc-start", "doc-end", "paragraph-forward", "paragraph-back", "line", "selection", "match-bracket"]
485
485
  @label "Motions"
486
486
  @description "Motion vocabulary this editor accepts. Default: the full `EditorMotion` set."
487
487
  @tier "presentation"
488
- operators : ["delete" | "yank" | "change"] = ["delete", "yank", "change"]
488
+ operators : ["delete" | "yank" | "change" | "put" | "put-before" | "undo" | "redo" | "join" | "toggle-case" | "indent" | "dedent" | "replace"] = ["delete", "yank", "change", "put", "put-before", "undo", "redo", "join", "toggle-case", "indent", "dedent", "replace"]
489
489
  @label "Operators"
490
490
  @description "Operator vocabulary this editor accepts. Default: the full `EditorOperator` set."
491
491
  @tier "presentation"
@@ -36,7 +36,7 @@ orbital FloatingToolbarOrbital {
36
36
  @label "Items"
37
37
  @description "Tool items rendered as icon buttons"
38
38
  @tier "presentation"
39
- position : "bottom-center" | "bottom-left" | "bottom-right" = "bottom-center"
39
+ position : "bottom-center" | "bottom-left" | "bottom-right" | "top-center" | "top-left" | "top-right" = "bottom-center"
40
40
  @label "Position"
41
41
  @description "Strip position within the app frame."
42
42
  @tier "presentation"
@@ -7,6 +7,7 @@ orbital MenuOrbital {
7
7
  icon : icon
8
8
  badge : string
9
9
  disabled : boolean
10
+ title : string
10
11
  event : event
11
12
  url : string
12
13
  variant : "default" | "danger"
@@ -38,7 +39,7 @@ orbital MenuOrbital {
38
39
  @label "Trigger"
39
40
  @description "Menu trigger element"
40
41
  @tier "presentation"
41
- items : [MenuItemsItem] = [{ id: "Id", label: "Label", icon: "circle", badge: "Badge", disabled: false, url: "Url", variant: default, subMenu: [] }, { id: "Id 2", label: "Label 2", icon: "circle", badge: "Badge 2", disabled: true, url: "Url 2", variant: danger, subMenu: [] }]
42
+ items : [MenuItemsItem] = [{ id: "Id", label: "Label", icon: "circle", badge: "Badge", disabled: false, title: "Title", url: "Url", variant: default, subMenu: [] }, { id: "Id 2", label: "Label 2", icon: "circle", badge: "Badge 2", disabled: true, title: "Title 2", url: "Url 2", variant: danger, subMenu: [] }]
42
43
  @label "Items"
43
44
  @description "Menu items"
44
45
  @tier "presentation"
@@ -1,5 +1,5 @@
1
1
  app std-area-fill "1.0.0"
2
- "Headless area-fill mechanic: the player paints area under a curve by moving through a fill region. Listens BODY_MOVED and, per fill, accumulates height(x) × |dx| while the player is inside the fill's x-range (the per-tick step is clamped to 0.5 world units — the physical per-tick maximum — so teleports and respawns paint nothing) — height is linear interpolation of the config curve samples above the fill's baseline (the platformer body's leftSamp/rightSamp idiom). rateMode picks the rate: \"area\" (height × |dx|, default — fills fastest where the curve is tallest), \"speed\" (|dx| only, flat rate), or \"ride\" (|dx| only while the move reports skating — walking the same distance paints nothing). When a fill's filled reaches its target it flips reported and emits AREA_FILLED once (the shared entity carries the rest); each fill also stamps a frontier (x0 + span × min(1, filled/target)) so boards can shade the painted region left-to-right as the gauge grows. RESTART resets every fill. Renders nothing; boards shade the painted region and read filled/frontier from the shared entity (the render authority)."
2
+ "Headless area-fill mechanic: the player paints area under a curve by moving through a fill region. Listens BODY_MOVED and, per fill, accumulates height(x) × |dx| while the player is inside the fill's x-range (the per-tick step is clamped to 0.5 world units — the physical per-tick maximum — so teleports and respawns paint nothing) — height is linear interpolation of the config curve samples above the fill's baseline (the platformer body's leftSamp/rightSamp idiom). rateMode picks the rate: \"area\" (height × |dx|, default — fills fastest where the curve is tallest), \"speed\" (|dx| only, flat rate), or \"ride\" (|dx| only while the move reports skating — walking the same distance paints nothing). When a fill's filled reaches its target it flips reported and emits AREA_FILLED once (the shared entity carries the rest); each fill also stamps a frontier (x0 + span × min(1, filled/target)) so boards can shade the painted region left-to-right as the gauge grows. RESTART resets every live fill (re-arming the live entity set, so SET_FILLS-injected fills survive respawns). SET_FILLS replaces the fill set at runtime for boards that import their fills. Renders nothing; boards shade the painted region and read filled/frontier from the shared entity (the render authority)."
3
3
  orbital AreaFillOrbital {
4
4
  type AreaFillSample = {
5
5
  x : number!
@@ -57,8 +57,12 @@ orbital AreaFillOrbital {
57
57
  (emit AREA_FILLED { id: (object/get (array/first @newly) id), x: @payload.x, y: @payload.y }))
58
58
  null))
59
59
 
60
+ SET_FILLS -> active
61
+ (set @entity.fills (array/map @payload.fills (fn f (object/merge @f { filled: 0, frontier: (object/get @f x0), reported: false }))))
62
+ (set @entity.lastX 0)
63
+
60
64
  RESTART -> active
61
- (set @entity.fills (array/map @config.fills (fn f (object/merge @f { filled: 0, frontier: (object/get @f x0), reported: false }))))
65
+ (set @entity.fills (array/map @entity.fills (fn f (object/merge @f { filled: 0, frontier: (object/get @f x0), reported: false }))))
62
66
  (set @entity.lastX 0)
63
67
  }
64
68
 
@@ -74,6 +78,7 @@ orbital AreaFillOrbital {
74
78
 
75
79
  listens {
76
80
  BODY_MOVED { x : number!, y : number!, vx : number!, vy : number!, grounded : boolean!, skating : boolean!, speed : number! }
81
+ SET_FILLS { fills : [AreaFill]! }
77
82
  RESTART { id : string }
78
83
  }
79
84
 
@@ -84,7 +89,7 @@ orbital AreaFillOrbital {
84
89
  @tier "domain"
85
90
  fills : [AreaFill] = []
86
91
  @label "Fills"
87
- @description "One row per fill region: id, x-range (x0..x1 in world units), baseline the height is measured from, target area, rateMode (area | speed | ride — default area), optional hint, and the curve samples to interpolate. filled/frontier/reported are stamped at runtime."
92
+ @description "One row per fill region: id, x-range (x0..x1 in world units), baseline the height is measured from, target area, rateMode (area | speed | ride — default area), optional hint, and the curve samples to interpolate. filled/frontier/reported are stamped at runtime. Seeded onto the entity on INIT; the live set is entity.fills — SET_FILLS replaces it at runtime (boards that import fills), and RESTART re-arms the live set rather than re-reading config, so injected fills survive respawns."
88
93
  @tier "domain"
89
94
  }
90
95
  }
@@ -1,5 +1,5 @@
1
1
  app std-choice-gate "1.0.0"
2
- "Headless choice-gate mechanic for side-view boards: a gate of N labeled option platforms where progress stops until the player commits to an answer. Listens BODY_MOVED and judges a gate when the player stands grounded on one of its option platforms (|dx| <= reachX of the option center, |dy| <= reachY of the gate's option plane — the pad-lock touch pattern): the correct option stamps the gate solved + chosen on the shared entity and emits CHOICE_CORRECT once (a solved gate never judges again, so the path stays open); a wrong option emits CHOICE_WRONG carrying the gate id, the chosen optionId, and the option's world position, so the board can bounce the player back and float the gate's hint (the board owns the bounce — the atom only reports). RESTART unsolves every gate. Renders nothing; boards draw the option platforms and labels from the shared entity (the render authority). Corresponds to the design-sheet field(s): challenge, agency."
2
+ "Headless choice-gate mechanic for side-view boards: a gate of N labeled option platforms where progress stops until the player commits to an answer. Listens BODY_MOVED and judges a gate when the player stands grounded on one of its option platforms (|dx| <= reachX of the option center, |dy| <= reachY of the gate's option plane — the pad-lock touch pattern): the correct option stamps the gate solved + chosen on the shared entity and emits CHOICE_CORRECT once (a solved gate never judges again, so the path stays open); a wrong option emits CHOICE_WRONG carrying the gate id, the chosen optionId, and the option's world position, so the board can bounce the player back and float the gate's hint (the board owns the bounce — the atom only reports). RESTART unsolves every live gate (re-arming the live entity set, so SET_GATES-injected gates survive respawns). SET_GATES replaces the gate set at runtime for boards that import their gates. Renders nothing; boards draw the option platforms and labels from the shared entity (the render authority). Corresponds to the design-sheet field(s): challenge, agency."
3
3
  orbital ChoiceGateOrbital {
4
4
  type ChoiceOption = {
5
5
  id : string!
@@ -49,8 +49,11 @@ orbital ChoiceGateOrbital {
49
49
  (emit CHOICE_WRONG { id: (object/get @g id), optionId: (object/get @o id), x: (+ (object/get @g x) (object/get @o dx)), y: (object/get @g y) }))))
50
50
  null))
51
51
 
52
+ SET_GATES -> active
53
+ (set @entity.choices (array/map @payload.gates (fn g (object/merge @g { solved: false, chosen: "" }))))
54
+
52
55
  RESTART -> active
53
- (set @entity.choices (array/map @config.gates (fn g (object/merge @g { solved: false, chosen: "" }))))
56
+ (set @entity.choices (array/map @entity.choices (fn g (object/merge @g { solved: false, chosen: "" }))))
54
57
  }
55
58
 
56
59
  emits {
@@ -73,6 +76,7 @@ orbital ChoiceGateOrbital {
73
76
 
74
77
  listens {
75
78
  BODY_MOVED { x : number!, y : number!, vx : number!, vy : number!, grounded : boolean!, skating : boolean!, speed : number! }
79
+ SET_GATES { gates : [ChoiceGate]! }
76
80
  RESTART { id : string }
77
81
  }
78
82
 
@@ -83,7 +87,7 @@ orbital ChoiceGateOrbital {
83
87
  @tier "domain"
84
88
  gates : [ChoiceGate] = []
85
89
  @label "Choice Gates"
86
- @description "One row per gate: id, gate center (x, y — y is the option-platform surface the judge tests against), the hint floated on a wrong answer, and the options: id, dx offset from the gate center, the label drawn above the platform, and correct. solved/chosen are stamped at runtime."
90
+ @description "One row per gate: id, gate center (x, y — y is the option-platform surface the judge tests against), the hint floated on a wrong answer, and the options: id, dx offset from the gate center, the label drawn above the platform, and correct. solved/chosen are stamped at runtime. Seeded onto the entity on INIT; the live set is entity.choices — SET_GATES replaces it at runtime (boards that import gates), and RESTART re-arms the live set rather than re-reading config, so injected gates survive respawns."
87
91
  @tier "domain"
88
92
  reachX : number = 0.7
89
93
  @label "Reach X"
@@ -1,5 +1,5 @@
1
1
  app std-coef-pad "1.0.0"
2
- "Headless coefficient-pad mechanic for graph-riding boards: floor pads that reshape the road the player is riding (y = a·f(x−h) + k). Listens BODY_MOVED and, when the player stands grounded on an unapplied pad (|dx| <= reachX, |dy| <= reachY of the pad center — the pad-lock touch pattern), stamps the pad applied on the shared entity and emits COEF_PAD_APPLIED carrying the pad position AND its mod (x0, x1, a, h, k), so the board can append the mod to the body authority's curveMods (std-platformer-body with curveModsEnabled) and hop the player onto the reshaped surface. When every pad is applied it emits COEF_PAD_SET_COMPLETED once. RESTART un-applies every pad (the board clears curveMods alongside — the pad reports, the board owns the road). Renders nothing; boards draw the pads and read applied from the shared entity (the render authority)."
2
+ "Headless coefficient-pad mechanic for graph-riding boards: floor pads that reshape the road the player is riding (y = a·f(x−h) + k). Listens BODY_MOVED and, when the player stands grounded on an unapplied pad (|dx| <= reachX, |dy| <= reachY of the pad center — the pad-lock touch pattern), stamps the pad applied on the shared entity and emits COEF_PAD_APPLIED carrying the pad position AND its mod (x0, x1, a, h, k), so the board can append the mod to the body authority's curveMods (std-platformer-body with curveModsEnabled) and hop the player onto the reshaped surface. When every pad is applied it emits COEF_PAD_SET_COMPLETED once. RESTART un-applies every live pad (re-arming the live entity set, so SET_PADS-injected pads survive respawns; the board clears curveMods alongside — the pad reports, the board owns the road). SET_PADS replaces the pad set at runtime for boards that import their pads. Renders nothing; boards draw the pads and read applied from the shared entity (the render authority)."
3
3
  orbital CoefPadOrbital {
4
4
  type CoefMod = {
5
5
  x0 : number!
@@ -59,8 +59,12 @@ orbital CoefPadOrbital {
59
59
  null)))))
60
60
  null))
61
61
 
62
+ SET_PADS -> active
63
+ (set @entity.coefPads (array/map @payload.pads (fn p (object/merge @p { applied: false }))))
64
+ (set @entity.coefCompleted false)
65
+
62
66
  RESTART -> active
63
- (set @entity.coefPads (array/map @config.coefPads (fn p (object/merge @p { applied: false }))))
67
+ (set @entity.coefPads (array/map @entity.coefPads (fn p (object/merge @p { applied: false }))))
64
68
  (set @entity.coefCompleted false)
65
69
  }
66
70
 
@@ -89,6 +93,7 @@ orbital CoefPadOrbital {
89
93
 
90
94
  listens {
91
95
  BODY_MOVED { x : number!, y : number!, vx : number!, vy : number!, grounded : boolean!, skating : boolean!, speed : number! }
96
+ SET_PADS { pads : [CoefPad]! }
92
97
  RESTART { id : string }
93
98
  }
94
99
 
@@ -99,7 +104,7 @@ orbital CoefPadOrbital {
99
104
  @tier "domain"
100
105
  coefPads : [CoefPad] = []
101
106
  @label "Coefficient Pads"
102
- @description "One row per pad: id, center (x, y in world units), the mod applied to the road while inside x0..x1 (a scales slope+height, b compresses/stretch period, h shifts horizontally, k lifts), and the hint floated on apply, and hop (true = the board teleports the player onto the reshaped surface — use when the mod steps the road far from the pad; false = the skate snap carries the player, preserving speed). applied is stamped at runtime."
107
+ @description "One row per pad: id, center (x, y in world units), the mod applied to the road while inside x0..x1 (a scales slope+height, b compresses/stretch period, h shifts horizontally, k lifts), and the hint floated on apply, and hop (true = the board teleports the player onto the reshaped surface — use when the mod steps the road far from the pad; false = the skate snap carries the player, preserving speed). applied is stamped at runtime. Seeded onto the entity on INIT; the live set is entity.coefPads — SET_PADS replaces it at runtime (boards that import pads), and RESTART re-arms the live set rather than re-reading config, so injected pads survive respawns."
103
108
  @tier "domain"
104
109
  reachX : number = 0.7
105
110
  @label "Reach X"