@aceshooting/lyra-ui 29.0.2 → 29.1.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 (521) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +19 -26
  3. package/design-tokens.json +1 -1
  4. package/dist/cli/migrate-wa.mjs +2 -0
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +5 -3
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +4 -3
  7. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +1 -1
  8. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +21 -5
  9. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +14 -11
  10. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +1 -1
  11. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
  12. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +34 -7
  13. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +25 -11
  14. package/dist/components/agent-tools/eval-result/eval-result-source.js +1 -0
  15. package/dist/components/agent-tools/eval-result/eval-result.class.d.ts +31 -11
  16. package/dist/components/agent-tools/eval-result/eval-result.class.js +29 -15
  17. package/dist/components/agent-tools/eval-result/eval-result.styles.js +1 -1
  18. package/dist/components/agent-tools/eval-result/eval-run-result.d.ts +10 -0
  19. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +26 -5
  20. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +16 -6
  21. package/dist/components/agent-tools/span-waterfall/span-waterfall.d.ts +1 -1
  22. package/dist/components/agent-tools/span-waterfall/span-waterfall.js +1 -1
  23. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
  24. package/dist/components/agent-tools/task-list/task-list.class.d.ts +29 -6
  25. package/dist/components/agent-tools/task-list/task-list.class.js +13 -7
  26. package/dist/components/agent-tools/task-list/task-list.d.ts +1 -1
  27. package/dist/components/agent-tools/task-list/task-list.js +1 -1
  28. package/dist/components/agent-tools/task-list/task-list.styles.js +1 -1
  29. package/dist/components/agent-tools/terminal/terminal.class.d.ts +9 -5
  30. package/dist/components/agent-tools/terminal/terminal.class.js +8 -8
  31. package/dist/components/agent-tools/test-results/test-results.class.d.ts +16 -4
  32. package/dist/components/agent-tools/test-results/test-results.class.js +15 -6
  33. package/dist/components/agent-tools/test-results/test-results.d.ts +1 -0
  34. package/dist/components/agent-tools/test-results/test-results.js +1 -1
  35. package/dist/components/agent-tools/test-results/test-results.styles.js +1 -1
  36. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +7 -4
  37. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +2 -1
  38. package/dist/components/agent-tools/trace-tree/span-projection.js +1 -0
  39. package/dist/components/agent-tools/trace-tree/span-shared.d.ts +29 -0
  40. package/dist/components/agent-tools/trace-tree/span-shared.js +1 -0
  41. package/dist/components/agent-tools/trace-tree/span.d.ts +5 -35
  42. package/dist/components/agent-tools/trace-tree/span.js +1 -1
  43. package/dist/components/agent-tools/trace-tree/trace-tree.class.d.ts +27 -5
  44. package/dist/components/agent-tools/trace-tree/trace-tree.class.js +19 -9
  45. package/dist/components/agent-tools/trace-tree/trace-tree.d.ts +1 -1
  46. package/dist/components/agent-tools/trace-tree/trace-tree.js +1 -1
  47. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
  48. package/dist/components/charts/chart/bar-chart.class.d.ts +5 -1
  49. package/dist/components/charts/chart/box-plot.class.d.ts +2 -2
  50. package/dist/components/charts/chart/box-plot.class.js +3 -3
  51. package/dist/components/charts/chart/bubble-chart.class.d.ts +5 -1
  52. package/dist/components/charts/chart/chart-prepared-data.d.ts +9 -0
  53. package/dist/components/charts/chart/chart-prepared-data.js +1 -0
  54. package/dist/components/charts/chart/chart-spatial-data.js +2 -0
  55. package/dist/components/charts/chart/chart-sync.js +1 -1
  56. package/dist/components/charts/chart/chart-table-sampling.js +1 -1
  57. package/dist/components/charts/chart/chart.class.d.ts +56 -6
  58. package/dist/components/charts/chart/chart.class.js +18 -8
  59. package/dist/components/charts/chart/chart.styles.js +1 -1
  60. package/dist/components/charts/chart/doughnut-chart.class.d.ts +5 -1
  61. package/dist/components/charts/chart/histogram-buckets.d.ts +1 -1
  62. package/dist/components/charts/chart/histogram-buckets.js +1 -1
  63. package/dist/components/charts/chart/histogram.class.d.ts +19 -4
  64. package/dist/components/charts/chart/histogram.class.js +1 -1
  65. package/dist/components/charts/chart/line-chart.class.d.ts +5 -1
  66. package/dist/components/charts/chart/lite-chart.class.d.ts +51 -11
  67. package/dist/components/charts/chart/lite-chart.class.js +33 -27
  68. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  69. package/dist/components/charts/chart/pie-chart.class.d.ts +5 -1
  70. package/dist/components/charts/chart/polar-area-chart.class.d.ts +5 -1
  71. package/dist/components/charts/chart/radar-chart.class.d.ts +5 -1
  72. package/dist/components/charts/chart/scatter-chart.class.d.ts +5 -1
  73. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +6 -3
  74. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +6 -5
  75. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +1 -1
  76. package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +8 -0
  77. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  78. package/dist/components/conversation/code-block/code-block-base.class.d.ts +5 -3
  79. package/dist/components/conversation/code-block/code-block-base.class.js +1 -1
  80. package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -1
  81. package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
  82. package/dist/components/conversation/code-block/code-block-shared.d.ts +6 -4
  83. package/dist/components/conversation/code-block/code-block-shared.js +3 -2
  84. package/dist/components/conversation/code-block/code-block.class.d.ts +11 -4
  85. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  86. package/dist/components/conversation/code-block/code-block.d.ts +1 -1
  87. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  88. package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
  89. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  90. package/dist/components/conversation/markdown/markdown-base.class.d.ts +6 -4
  91. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  92. package/dist/components/conversation/markdown/markdown-code-header.d.ts +2 -2
  93. package/dist/components/conversation/markdown/markdown-code-header.js +1 -1
  94. package/dist/components/conversation/markdown/markdown-core.class.d.ts +8 -3
  95. package/dist/components/conversation/markdown/markdown-progressive.js +2 -2
  96. package/dist/components/conversation/markdown/markdown-shared.d.ts +5 -10
  97. package/dist/components/conversation/markdown/markdown-shared.js +5 -5
  98. package/dist/components/conversation/markdown/markdown-streaming-tail.js +1 -1
  99. package/dist/components/conversation/markdown/markdown.class.d.ts +17 -10
  100. package/dist/components/conversation/markdown/markdown.class.js +1 -1
  101. package/dist/components/conversation/markdown/markdown.styles.js +1 -1
  102. package/dist/components/conversation/model-select/model-select.class.d.ts +4 -3
  103. package/dist/components/conversation/model-select/model-select.class.js +3 -2
  104. package/dist/components/conversation/model-select/model-select.styles.js +1 -1
  105. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +2 -1
  106. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
  107. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +1 -1
  108. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -2
  109. package/dist/components/conversation/prompt-input/prompt-input.class.js +2 -1
  110. package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
  111. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +10 -2
  112. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +15 -6
  113. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
  114. package/dist/components/conversation/realtime-session/realtime-session.class.d.ts +3 -1
  115. package/dist/components/conversation/realtime-session/realtime-session.class.js +2 -1
  116. package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
  117. package/dist/components/conversation/streaming-text/markdown-detection.d.ts +2 -0
  118. package/dist/components/conversation/streaming-text/markdown-detection.js +4 -1
  119. package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +6 -2
  120. package/dist/components/conversation/streaming-text/streaming-text-base.class.js +3 -3
  121. package/dist/components/conversation/streaming-text/streaming-text-core.class.js +1 -1
  122. package/dist/components/conversation/streaming-text/streaming-text.class.js +1 -0
  123. package/dist/components/conversation/thread-list/thread-list.class.d.ts +34 -4
  124. package/dist/components/conversation/thread-list/thread-list.class.js +22 -15
  125. package/dist/components/conversation/thread-list/thread-list.d.ts +1 -1
  126. package/dist/components/conversation/thread-list/thread-list.js +1 -1
  127. package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
  128. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +6 -2
  129. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +3 -2
  130. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
  131. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +3 -2
  132. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -2
  133. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  134. package/dist/components/data/calendar/calendar.class.d.ts +5 -2
  135. package/dist/components/data/calendar/calendar.class.js +1 -1
  136. package/dist/components/data/data-grid/data-grid-processing.js +2 -2
  137. package/dist/components/data/data-grid/data-grid.class.d.ts +22 -8
  138. package/dist/components/data/data-grid/data-grid.class.js +20 -19
  139. package/dist/components/data/data-grid/data-grid.styles.js +1 -1
  140. package/dist/components/data/document-library/document-library.class.d.ts +31 -4
  141. package/dist/components/data/document-library/document-library.class.js +25 -12
  142. package/dist/components/data/document-library/document-library.styles.js +1 -1
  143. package/dist/components/data/file-tree/file-tree.class.d.ts +30 -6
  144. package/dist/components/data/file-tree/file-tree.class.js +4 -3
  145. package/dist/components/data/file-tree/file-tree.d.ts +1 -0
  146. package/dist/components/data/file-tree/file-tree.js +1 -1
  147. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +31 -6
  148. package/dist/components/data/flow-canvas/flow-canvas.class.js +40 -19
  149. package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
  150. package/dist/components/data/flow-canvas/flow-model.js +1 -1
  151. package/dist/components/data/flow-canvas/flow-source.js +1 -0
  152. package/dist/components/data/flow-canvas/flow-types.d.ts +4 -2
  153. package/dist/components/data/flow-canvas/flow-viewport-index.js +1 -0
  154. package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +9 -3
  155. package/dist/components/data/flow-minimap/flow-minimap.class.js +11 -2
  156. package/dist/components/data/flow-minimap/flow-minimap.styles.js +1 -1
  157. package/dist/components/data/funnel/funnel.class.d.ts +7 -3
  158. package/dist/components/data/funnel/funnel.class.js +2 -2
  159. package/dist/components/data/heatmap/calendar-grid.d.ts +1 -1
  160. package/dist/components/data/heatmap/calendar-grid.js +1 -1
  161. package/dist/components/data/heatmap/heatmap-grid-navigation.js +1 -1
  162. package/dist/components/data/heatmap/heatmap-limits.d.ts +1 -1
  163. package/dist/components/data/heatmap/heatmap-matrix-source-controller.js +1 -0
  164. package/dist/components/data/heatmap/heatmap-matrix-source.d.ts +5 -0
  165. package/dist/components/data/heatmap/heatmap-matrix-source.js +1 -0
  166. package/dist/components/data/heatmap/heatmap-scale.d.ts +0 -16
  167. package/dist/components/data/heatmap/heatmap-scale.js +1 -1
  168. package/dist/components/data/heatmap/heatmap.class.d.ts +40 -11
  169. package/dist/components/data/heatmap/heatmap.class.js +26 -6
  170. package/dist/components/data/heatmap/heatmap.styles.js +1 -1
  171. package/dist/components/data/pagination/pagination.class.js +1 -1
  172. package/dist/components/data/sequence-strip/sequence-strip-item.d.ts +17 -0
  173. package/dist/components/data/sequence-strip/sequence-strip-source-controller.js +1 -0
  174. package/dist/components/data/sequence-strip/sequence-strip-source.d.ts +5 -0
  175. package/dist/components/data/sequence-strip/sequence-strip-source.js +1 -0
  176. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +24 -19
  177. package/dist/components/data/sequence-strip/sequence-strip.class.js +23 -4
  178. package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
  179. package/dist/components/data/sparkline/sparkline.class.d.ts +17 -4
  180. package/dist/components/data/sparkline/sparkline.class.js +3 -3
  181. package/dist/components/data/sparkline/sparkline.styles.js +1 -1
  182. package/dist/components/data/table/table.class.d.ts +14 -10
  183. package/dist/components/data/table/table.class.js +17 -16
  184. package/dist/components/data/timeline/timeline.class.d.ts +5 -2
  185. package/dist/components/data/timeline/timeline.class.js +1 -1
  186. package/dist/components/data/tree/tree-item.class.js +1 -1
  187. package/dist/components/data/tree/tree-owner-controller.js +1 -1
  188. package/dist/components/data/tree/tree.class.d.ts +28 -6
  189. package/dist/components/data/tree/tree.class.js +3 -3
  190. package/dist/components/data/tree/tree.d.ts +1 -0
  191. package/dist/components/data/tree/tree.js +1 -1
  192. package/dist/components/data/word-cloud/word-cloud.class.d.ts +17 -7
  193. package/dist/components/data/word-cloud/word-cloud.class.js +6 -4
  194. package/dist/components/data/word-cloud/word-cloud.styles.js +1 -1
  195. package/dist/components/forms/catalog-picker-base.d.ts +1 -1
  196. package/dist/components/forms/catalog-picker-base.js +6 -6
  197. package/dist/components/forms/catalog-picker-base.styles.js +1 -1
  198. package/dist/components/forms/combobox/combobox.class.d.ts +7 -3
  199. package/dist/components/forms/combobox/combobox.class.js +1 -1
  200. package/dist/components/forms/combobox/option.class.d.ts +4 -2
  201. package/dist/components/forms/combobox/option.class.js +2 -2
  202. package/dist/components/forms/country-picker/country-picker.class.d.ts +3 -1
  203. package/dist/components/forms/country-picker/country-picker.class.js +1 -1
  204. package/dist/components/forms/currency-picker/currency-picker.class.d.ts +2 -0
  205. package/dist/components/forms/currency-picker/currency-picker.class.js +1 -1
  206. package/dist/components/forms/currency-picker/currency-presentation.js +1 -1
  207. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +6 -2
  208. package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -2
  209. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +1 -1
  210. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +8 -2
  211. package/dist/components/forms/locale-picker/locale-picker.class.js +5 -4
  212. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  213. package/dist/components/forms/select/select.class.d.ts +11 -3
  214. package/dist/components/forms/select/select.class.js +4 -4
  215. package/dist/components/forms/time-zone-picker/time-zone-picker.class.d.ts +2 -0
  216. package/dist/components/forms/time-zone-picker/time-zone-picker.class.js +1 -1
  217. package/dist/components/forms/token-input/token-input.class.d.ts +6 -1
  218. package/dist/components/forms/token-input/token-input.class.js +15 -13
  219. package/dist/components/forms/unit-picker/unit-picker.class.d.ts +2 -0
  220. package/dist/components/forms/unit-picker/unit-picker.class.js +1 -1
  221. package/dist/components/layout/app-rail/app-rail.class.d.ts +1 -1
  222. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  223. package/dist/components/layout/command-palette/command-palette.class.d.ts +5 -2
  224. package/dist/components/layout/command-palette/command-palette.class.js +2 -1
  225. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  226. package/dist/components/layout/menu/menu-item.class.d.ts +2 -2
  227. package/dist/components/layout/menu/menu-item.class.js +2 -2
  228. package/dist/components/layout/menu/menu.class.d.ts +1 -1
  229. package/dist/components/layout/menu/menu.class.js +1 -1
  230. package/dist/components/layout/menubar/menubar.class.d.ts +1 -1
  231. package/dist/components/layout/menubar/menubar.class.js +1 -1
  232. package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -2
  233. package/dist/components/layout/reorder-list/reorder-item.class.js +2 -2
  234. package/dist/components/layout/reorder-list/reorder-list.class.d.ts +1 -1
  235. package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
  236. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +13 -9
  237. package/dist/components/layout/virtual-list/virtual-list.class.js +21 -17
  238. package/dist/components/media/av-player/av-cue-index.js +1 -0
  239. package/dist/components/media/av-player/av-cue-source.d.ts +13 -0
  240. package/dist/components/media/av-player/av-cue-source.js +1 -0
  241. package/dist/components/media/av-player/av-metadata.d.ts +2 -2
  242. package/dist/components/media/av-player/av-metadata.js +1 -1
  243. package/dist/components/media/av-player/av-player-cue-source-controller.js +1 -0
  244. package/dist/components/media/av-player/av-player.class.d.ts +34 -12
  245. package/dist/components/media/av-player/av-player.class.js +15 -10
  246. package/dist/components/media/flag/flag.class.js +1 -1
  247. package/dist/components/media/flag/language-map.js +1 -1
  248. package/dist/components/media/lightbox/lightbox-source.js +1 -0
  249. package/dist/components/media/lightbox/lightbox-types.d.ts +15 -0
  250. package/dist/components/media/lightbox/lightbox.class.d.ts +22 -21
  251. package/dist/components/media/lightbox/lightbox.class.js +6 -4
  252. package/dist/components/media/lightbox/lightbox.styles.js +1 -1
  253. package/dist/components/media/map/map-geojson-diff.d.ts +6 -6
  254. package/dist/components/media/map/map-geojson-diff.js +1 -1
  255. package/dist/components/media/map/map-loader.d.ts +5 -1
  256. package/dist/components/media/map/map.class.d.ts +24 -6
  257. package/dist/components/media/map/map.class.js +2 -2
  258. package/dist/components/media/map/map.styles.js +1 -1
  259. package/dist/components/media/video-playlist/video-playlist.class.d.ts +2 -1
  260. package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
  261. package/dist/components/overlays/chip/chip.class.d.ts +1 -1
  262. package/dist/components/overlays/chip/chip.class.js +1 -1
  263. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +30 -8
  264. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +22 -8
  265. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -1
  266. package/dist/components/retrieval/graph/graph-canvas.js +1 -1
  267. package/dist/components/retrieval/graph/graph-source-composition.js +1 -0
  268. package/dist/components/retrieval/graph/graph-source-controller.js +1 -0
  269. package/dist/components/retrieval/graph/graph-spatial-controller.js +2 -2
  270. package/dist/components/retrieval/graph/graph-spatial-model.js +1 -0
  271. package/dist/components/retrieval/graph/graph-spatial.js +1 -1
  272. package/dist/components/retrieval/graph/graph.class.d.ts +31 -6
  273. package/dist/components/retrieval/graph/graph.class.js +26 -5
  274. package/dist/components/retrieval/graph/graph.d.ts +1 -1
  275. package/dist/components/retrieval/graph/graph.js +1 -1
  276. package/dist/components/retrieval/graph/graph.styles.js +1 -1
  277. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +33 -4
  278. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +27 -17
  279. package/dist/components/retrieval/ingestion-queue/ingestion-queue.d.ts +1 -1
  280. package/dist/components/retrieval/ingestion-queue/ingestion-queue.js +1 -1
  281. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +1 -1
  282. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +27 -4
  283. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +29 -14
  284. package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
  285. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +17 -3
  286. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +15 -10
  287. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +1 -1
  288. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +24 -5
  289. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +17 -10
  290. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.d.ts +1 -1
  291. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.js +1 -1
  292. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
  293. package/dist/components/retrieval/mind-map/mind-map-layout.js +1 -1
  294. package/dist/components/retrieval/mind-map/mind-map-model.js +1 -0
  295. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +27 -4
  296. package/dist/components/retrieval/mind-map/mind-map.class.js +11 -7
  297. package/dist/components/retrieval/mind-map/mind-map.d.ts +1 -0
  298. package/dist/components/retrieval/mind-map/mind-map.js +1 -1
  299. package/dist/components/retrieval/mind-map/mind-map.styles.js +1 -1
  300. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +24 -2
  301. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +17 -3
  302. package/dist/components/retrieval/neighbor-list/neighbor-list.d.ts +1 -1
  303. package/dist/components/retrieval/neighbor-list/neighbor-list.js +1 -1
  304. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
  305. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +8 -4
  306. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +11 -7
  307. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -1
  308. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts +12 -6
  309. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +30 -17
  310. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
  311. package/dist/components/retrieval/retrieval-results/retrieval-results-model.js +1 -0
  312. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +46 -5
  313. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +31 -9
  314. package/dist/components/retrieval/retrieval-results/retrieval-results.d.ts +1 -1
  315. package/dist/components/retrieval/retrieval-results/retrieval-results.js +1 -1
  316. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +1 -1
  317. package/dist/components/utility/diff-view/diff-view.class.d.ts +16 -8
  318. package/dist/components/utility/diff-view/diff-view.class.js +3 -2
  319. package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
  320. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +31 -3
  321. package/dist/components/utility/json-viewer/json-viewer.class.js +13 -4
  322. package/dist/components/utility/json-viewer/json-viewer.d.ts +1 -0
  323. package/dist/components/utility/json-viewer/json-viewer.js +1 -1
  324. package/dist/components/utility/json-viewer/json-viewer.styles.js +1 -1
  325. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +6 -4
  326. package/dist/components/utility/mention-popover/mention-popover.class.js +6 -5
  327. package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +34 -7
  328. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +9 -7
  329. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +28 -4
  330. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +12 -11
  331. package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +3 -1
  332. package/dist/components/viewers/geojson-view/geojson-viewer.class.js +17 -16
  333. package/dist/components/viewers/geojson-view/geojson-viewer.d.ts +1 -1
  334. package/dist/components/viewers/geojson-view/geojson-viewer.js +1 -1
  335. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +31 -5
  336. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +11 -8
  337. package/dist/components/viewers/table-viewer-shared.js +19 -3
  338. package/dist/components/viewers/viewer-search-limits.js +1 -1
  339. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +35 -3
  340. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +20 -5
  341. package/dist/components/viewers/xml-viewer/xml-viewer.d.ts +1 -1
  342. package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
  343. package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +1 -1
  344. package/dist/countries.js +1 -1
  345. package/dist/data-sources.d.ts +34 -0
  346. package/dist/data-sources.js +1 -0
  347. package/dist/events.d.ts +51 -7
  348. package/dist/framework-types.d.ts +1 -1
  349. package/dist/internal/accessibility-visibility.d.ts +4 -2
  350. package/dist/internal/accessibility-visibility.js +1 -1
  351. package/dist/internal/accessible-text-controller.js +1 -1
  352. package/dist/internal/anchor-target.js +2 -2
  353. package/dist/internal/catalog-picker.d.ts +1 -7
  354. package/dist/internal/catalog-picker.js +1 -1
  355. package/dist/internal/collection-snapshot.js +1 -1
  356. package/dist/internal/default-strings/agent-tools.generated.js +1 -1
  357. package/dist/internal/default-strings/charts.generated.js +1 -1
  358. package/dist/internal/default-strings/conversation.generated.js +1 -1
  359. package/dist/internal/default-strings/data.generated.js +1 -1
  360. package/dist/internal/default-strings/forms.generated.js +1 -1
  361. package/dist/internal/default-strings/layout.generated.js +1 -1
  362. package/dist/internal/default-strings/media.generated.js +1 -1
  363. package/dist/internal/default-strings/retrieval.generated.js +1 -1
  364. package/dist/internal/default-strings/shared.generated.js +1 -1
  365. package/dist/internal/default-strings/utility.generated.js +1 -1
  366. package/dist/internal/delimited-data.js +1 -1
  367. package/dist/internal/fixed-containing-block.js +1 -1
  368. package/dist/internal/flow-scene-envelope.js +1 -0
  369. package/dist/internal/graph-scene-controller.js +1 -0
  370. package/dist/internal/hierarchy-source-controller.js +1 -0
  371. package/dist/internal/hierarchy-source-view.js +29 -0
  372. package/dist/internal/hierarchy-source-view.styles.js +1 -0
  373. package/dist/internal/inherited-attribute-hub.d.ts +6 -0
  374. package/dist/internal/inherited-attribute-hub.js +1 -1
  375. package/dist/internal/intl-cache.js +1 -1
  376. package/dist/internal/keyed-index.js +1 -0
  377. package/dist/internal/localization-types.d.ts +1 -1
  378. package/dist/internal/localization.js +2 -2
  379. package/dist/internal/lyra-element.d.ts +2 -2
  380. package/dist/internal/lyra-element.js +3 -2
  381. package/dist/internal/native-modal-context.js +1 -1
  382. package/dist/internal/option-selection.js +1 -1
  383. package/dist/internal/package-metadata.js +1 -1
  384. package/dist/internal/positioner.js +1 -1
  385. package/dist/internal/resource-loader.d.ts +2 -0
  386. package/dist/internal/resource-loader.js +1 -1
  387. package/dist/internal/scoped-definitions.generated.js +1 -1
  388. package/dist/internal/search-haystack.js +1 -0
  389. package/dist/internal/selection-catalog.d.ts +5 -0
  390. package/dist/internal/selection-catalog.js +1 -1
  391. package/dist/internal/shiki-language-sources.js +1 -0
  392. package/dist/internal/source-page-controller.js +1 -0
  393. package/dist/internal/source-page-scope.js +1 -0
  394. package/dist/internal/source-request-controller.js +1 -0
  395. package/dist/internal/source-window-controller.js +1 -0
  396. package/dist/internal/spatial-source-controller.js +1 -0
  397. package/dist/internal/text-quote.d.ts +2 -6
  398. package/dist/internal/text-quote.js +1 -1
  399. package/dist/internal/theme-watcher.js +1 -1
  400. package/dist/internal/virtual-list-composition.js +1 -0
  401. package/dist/lyra.d.ts +1 -1
  402. package/dist/lyra.js +1 -1
  403. package/dist/testing/interaction-drivers.js +1 -1
  404. package/dist/testing/lyra-tag-event-map.js +1 -1
  405. package/dist/units.js +1 -1
  406. package/dist/utilities/data-preparation.d.ts +56 -0
  407. package/dist/utilities/data-preparation.js +1 -0
  408. package/dist/utilities/data-spatial.d.ts +26 -0
  409. package/dist/utilities/data-spatial.js +1 -0
  410. package/dist/utilities/index.d.ts +1 -1
  411. package/dist/utilities/index.js +1 -1
  412. package/llms/components/lr-activity-feed.md +7 -2
  413. package/llms/components/lr-agent-trace.md +49 -9
  414. package/llms/components/lr-agent-workspace.md +15 -8
  415. package/llms/components/lr-av-player.md +180 -10
  416. package/llms/components/lr-bar-chart.md +1 -1
  417. package/llms/components/lr-box-plot.md +8 -0
  418. package/llms/components/lr-bubble-chart.md +1 -1
  419. package/llms/components/lr-calendar.md +26 -3
  420. package/llms/components/lr-chart.md +310 -23
  421. package/llms/components/lr-chat-viewport.md +6 -0
  422. package/llms/components/lr-code-block-core.md +12 -7
  423. package/llms/components/lr-code-block.md +23 -9
  424. package/llms/components/lr-combobox.md +27 -15
  425. package/llms/components/lr-command-palette.md +16 -3
  426. package/llms/components/lr-country-picker.md +23 -6
  427. package/llms/components/lr-csv-viewer.md +95 -12
  428. package/llms/components/lr-currency-picker.md +23 -3
  429. package/llms/components/lr-data-grid.md +24 -6
  430. package/llms/components/lr-dataset-viewer.md +92 -11
  431. package/llms/components/lr-dialog.md +1 -1
  432. package/llms/components/lr-diff-view.md +19 -6
  433. package/llms/components/lr-document-library.md +60 -5
  434. package/llms/components/lr-doughnut-chart.md +1 -1
  435. package/llms/components/lr-embedding-explorer.md +89 -9
  436. package/llms/components/lr-emoji-picker.md +7 -2
  437. package/llms/components/lr-eval-dataset.md +56 -7
  438. package/llms/components/lr-eval-result.md +89 -4
  439. package/llms/components/lr-export-button.md +1 -1
  440. package/llms/components/lr-file-tree.md +60 -6
  441. package/llms/components/lr-flag.md +5 -2
  442. package/llms/components/lr-flow-canvas.md +152 -14
  443. package/llms/components/lr-flow-minimap.md +32 -4
  444. package/llms/components/lr-funnel.md +14 -0
  445. package/llms/components/lr-geojson-viewer.md +27 -10
  446. package/llms/components/lr-graph.md +43 -7
  447. package/llms/components/lr-heatmap.md +161 -5
  448. package/llms/components/lr-histogram.md +55 -9
  449. package/llms/components/lr-ingestion-queue.md +54 -3
  450. package/llms/components/lr-json-viewer.md +87 -7
  451. package/llms/components/lr-knowledge-base-admin.md +60 -4
  452. package/llms/components/lr-knowledge-base.md +121 -9
  453. package/llms/components/lr-knowledge-graph-explorer.md +106 -11
  454. package/llms/components/lr-lightbox.md +42 -6
  455. package/llms/components/lr-line-chart.md +28 -5
  456. package/llms/components/lr-lite-chart.md +96 -31
  457. package/llms/components/lr-locale-picker.md +6 -4
  458. package/llms/components/lr-map.md +67 -8
  459. package/llms/components/lr-markdown-core.md +10 -5
  460. package/llms/components/lr-markdown.md +23 -6
  461. package/llms/components/lr-mention-popover.md +11 -6
  462. package/llms/components/lr-mind-map.md +91 -10
  463. package/llms/components/lr-model-select.md +8 -4
  464. package/llms/components/lr-model-settings-panel.md +10 -2
  465. package/llms/components/lr-navigation-menu.md +1 -1
  466. package/llms/components/lr-neighbor-list.md +69 -2
  467. package/llms/components/lr-pie-chart.md +1 -1
  468. package/llms/components/lr-polar-area-chart.md +1 -1
  469. package/llms/components/lr-prompt-input.md +9 -2
  470. package/llms/components/lr-prompt-queue.md +11 -3
  471. package/llms/components/lr-radar-chart.md +1 -1
  472. package/llms/components/lr-rag-eval-dashboard.md +9 -2
  473. package/llms/components/lr-realtime-session.md +6 -2
  474. package/llms/components/lr-reorder-list.md +4 -0
  475. package/llms/components/lr-retrieval-compare.md +9 -4
  476. package/llms/components/lr-retrieval-results.md +104 -6
  477. package/llms/components/lr-scatter-chart.md +1 -1
  478. package/llms/components/lr-select.md +20 -10
  479. package/llms/components/lr-sequence-strip.md +92 -2
  480. package/llms/components/lr-span-waterfall.md +78 -8
  481. package/llms/components/lr-sparkline.md +42 -11
  482. package/llms/components/lr-spreadsheet-viewer.md +109 -14
  483. package/llms/components/lr-streaming-text-core.md +4 -2
  484. package/llms/components/lr-streaming-text.md +5 -1
  485. package/llms/components/lr-table.md +96 -115
  486. package/llms/components/lr-task-list.md +93 -9
  487. package/llms/components/lr-terminal.md +9 -0
  488. package/llms/components/lr-test-results.md +77 -3
  489. package/llms/components/lr-thread-list.md +86 -1
  490. package/llms/components/lr-time-zone-picker.md +8 -3
  491. package/llms/components/lr-timeline.md +5 -0
  492. package/llms/components/lr-token-input.md +7 -2
  493. package/llms/components/lr-tool-timeline.md +13 -4
  494. package/llms/components/lr-trace-tree.md +96 -10
  495. package/llms/components/lr-transcript-feed.md +9 -2
  496. package/llms/components/lr-tree.md +87 -15
  497. package/llms/components/lr-unit-picker.md +8 -3
  498. package/llms/components/lr-video-playlist.md +2 -0
  499. package/llms/components/lr-virtual-list.md +17 -8
  500. package/llms/components/lr-voice-picker.md +8 -3
  501. package/llms/components/lr-word-cloud.md +128 -12
  502. package/llms/components/lr-xml-viewer.md +106 -9
  503. package/llms/index.md +1 -1
  504. package/llms/peers.md +1 -1
  505. package/llms/shared/events-and-types.md +725 -264
  506. package/llms/shared/forms-and-accessibility.md +3 -17
  507. package/llms/shared/imports-and-registration.md +3 -17
  508. package/llms/shared/localization-and-rtl.md +0 -2
  509. package/llms/shared/styles-and-tokens.md +27 -36
  510. package/llms/shared/testing-and-utilities.md +4 -5
  511. package/llms/shared.md +770 -349
  512. package/llms.txt +1 -2
  513. package/locales.json +139 -139
  514. package/package.json +13 -4
  515. package/registrations.json +1 -1
  516. package/skills/compose-lyra-interfaces/SKILL.md +6 -8
  517. package/skills/lyra-ui/SKILL.md +20 -51
  518. package/skills/lyra-ui/commands/review.md +16 -33
  519. package/skills/lyra-ui/commands/update.md +6 -5
  520. package/skills/lyra-ui/online-api.md +15 -0
  521. package/skills/lyra-ui/reporting.md +2 -1
package/llms/shared.md CHANGED
@@ -60,7 +60,7 @@ while deliberately exercising a deprecated form can pre-seed Lit's development-m
60
60
  `globalThis.litIssuedWarnings` set, before the element renders, with the key
61
61
  `lyra-deprecated:<owner>:<kind>:<name>` — `<kind>` and `<name>` as in the deprecation record.
62
62
  `<owner>` is the element name or package-relative module specifier. Theme migration guidance is in
63
- [styles and tokens](styles-and-tokens.md).
63
+ [styles and tokens](./shared/styles-and-tokens.md).
64
64
 
65
65
  ### Release history and upgrade notes
66
66
 
@@ -70,23 +70,9 @@ Family-wide breaking-change summaries open each authored `llms/<family>.md`, and
70
70
  `llms/components/<tag>.md` header links its family summary. `llms/migration.md` covers only
71
71
  `wa-*`/`sl-*` renames, not Lyra release history.
72
72
 
73
- The major-version landmarks after 9.0.0 are:
74
-
75
- - **10.0.0:** removed eligible members deprecated during 9.x and made the public-contract
76
- corrections listed in its changelog entry; follow that entry's per-member migration guidance.
77
- - **11.0.0:** carried no known consumer-breaking change; consumers upgrading from 10.x were not
78
- expected to change code.
79
- - **12.0.0:** removed the inherited static `LyraElement.getPropertyDescriptor()` surface after Lit
80
- deprecated that finalization hook. Ordinary component consumers need no migration; only subclasses
81
- that themselves overrode the hook are affected. Collection snapshot enforcement moved to a
82
- decorator-agnostic accessor seam instead.
83
-
84
- - **24.0.0:** removed eligible v22 compatibility routes, including package-root component
85
- constructors, duplicate nested registration entries, the combined `ssr-loader.js` entry, and the
86
- retired theme/preset facade. Use stable tag-shaped registration entries, a component's
87
- registration-free `.class.js` subpath, the split SSR/hydration entries, and the current style API.
88
- The [v23-to-v24 migration guide](v23-to-v24-migration.md) gives the removed routes, ordered
89
- consumer cleanup and retained-profile instructions.
73
+ The [v23-to-v24 migration guide](./shared/v23-to-v24-migration.md) gives the removed routes, ordered consumer
74
+ cleanup and retained-profile instructions. Use stable tag-shaped registration entries, a component's
75
+ registration-free `.class.js` subpath, the split SSR/hydration entries, and the current style API.
90
76
 
91
77
  ### The support window
92
78
 
@@ -404,7 +390,7 @@ through `@aceshooting/lyra-ui/events` for listeners on an ancestor, `document` o
404
390
  "TypeScript" below.
405
391
 
406
392
  For event-detail compatibility fields removed in the v23-to-v24 upgrade,
407
- use step 7 of the [migration checklist](v23-to-v24-migration.md#migrate-a-project-in-reviewable-steps).
393
+ use step 7 of the [migration checklist](./shared/v23-to-v24-migration.md#migrate-a-project-in-reviewable-steps).
408
394
  Those nested detail fields are separate from deprecated event names and are not automatic renames.
409
395
 
410
396
  ## TypeScript
@@ -486,6 +472,144 @@ transcript-feed is the current scroll-follow state; `map.legendOpen` is disclosu
486
472
  component's own steppers; its presence-based `true` default accepts the literal HTML value
487
473
  `"false"`. These true-default properties remain intentional and accept that literal value.
488
474
 
475
+ ### Large collection sources
476
+
477
+ Use `@aceshooting/lyra-ui/data-sources.js` for the type-only collection protocols, and
478
+ `@aceshooting/lyra-ui/utilities/data-preparation.js` for staged numeric preparation. Import the
479
+ specific component's registration separately and check its documented source property before
480
+ binding a provider. A protocol declaration does not imply that every component accepts it.
481
+ Legacy arrays, rolling windows, file previews and display caps retain their documented limits;
482
+ a capped prefix does not provide access to a million-record source.
483
+
484
+ The host owns each source and its indexes, storage and query work. Keep its revision, counts,
485
+ records and returned projections immutable for a request snapshot. Revisions are nonempty strings
486
+ or finite numbers; counts, offsets and record orders are nonnegative safe integers. Nonempty keys
487
+ identify logical records, and `order` is canonical source order independent of query sorting.
488
+ A provider can generate or fetch a requested window without allocating an array for the entire collection.
489
+ Arbitrary work inside a host callback remains the host's responsibility.
490
+
491
+ For components that document these protocols, replace the source, reassign the same source, or
492
+ call keyless `requestUpdate()` to refresh. A changed revision becomes observable at that explicit
493
+ update; it is not polled. Source replacement, rebind, refresh, disconnect and document adoption
494
+ invalidate pending work and source-derived caches. Providers should settle promptly on
495
+ `context.signal` cancellation. Cancellation is advisory: a late reply must still belong to the
496
+ current source identity, revision and request before it can update the view. Page/query changes
497
+ invalidate their dependent work; unrelated presentation updates do not imply a full-source read.
498
+
499
+ Choose the access shape that matches the host's data:
500
+
501
+ - `LyraRangeSource<T>` reads exactly the requested in-bounds range. `LyraIndexedView<T>` also
502
+ accepts the existing `LyraVirtualListIndexedSource<T>` for direct indexed access. Key lookup is
503
+ optional for a generic range; `LyraHierarchyView<T>` requires direct key lookup so navigation
504
+ does not scan the collection.
505
+ - `LyraPageSource<T, Q, Summary>` supplies globally queried pages, stable-key lookup and absolute
506
+ query positions. `page` is zero-based; `locate` returns a zero-based index or `null`.
507
+ `total` describes every query match, not loaded rows; group ranges describe the globally
508
+ ordered query and facets describe the full source catalogue. A declared `Summary` is required
509
+ in each result, while the default `undefined` summary can be omitted.
510
+ - `LyraTabularSource` has separate column metadata and zero-based body rows, using either
511
+ `cellAt` or bounded rectangular `readCells`. `LyraWorkbookSource` names sheets separately.
512
+ Search results use a bounded hit list, `total: null` when the global total is unknown, and
513
+ `exhaustive: true` only when every matching hit is included. A header hit has `row: -1`.
514
+ - `LyraHierarchySource<T, Q, Summary>` returns an immutable visible-preorder projection with
515
+ an opaque `state` token. `rows.count` is the visible logical count; `total` also includes
516
+ collapsed nodes. Row `level`/`position` are one-based and `setSize` is the exact sibling
517
+ count. Optional search and copy capabilities address the full requested source/scope, rather
518
+ than only mounted rows.
519
+ - `LyraGraphSource<N, E>` separates full record paging from bounded scenes and optional overview
520
+ bins. Global node/edge totals, scene coverage and displayed counts have distinct meanings;
521
+ a neighborhood or aggregate scene is not a complete graph layout.
522
+
523
+ Numeric helpers inspect all source positions in bounded chunks. Preparation has total O(n)
524
+ source-read work per pass, plus reducer work, even though each chunk and the retained result are
525
+ bounded. The default `batchSize` is 2,048 and its maximum is 8,192; it must be a positive safe
526
+ integer, with larger safe integers clamped. Helpers yield between chunks and check aborts around
527
+ asynchronous work and before publication. Each read must return an actual array of exactly the
528
+ requested size. Sparse holes are invalid positions; explicit own `undefined` may be classified by
529
+ a generic category selector. Observed count/revision changes, malformed replies, callback errors
530
+ and finite-sum overflow reject preparation. Payload immutability and replayability remain host
531
+ obligations. Results and nested result containers are frozen; source storage is not copied
532
+ wholesale or frozen. Scratch storage is bounded by a chunk and the output budgets. Series handles
533
+ retain their readers for exact lookup; other helper results contain no reader handles. Output
534
+ budget options require positive safe integers (series points require at least four), with larger
535
+ safe integers clamped to their documented maxima.
536
+
537
+ `counts.sourceCount` always counts original positions, `validCount` accepted observations, and
538
+ `invalidCount` the remainder. Displayed samples, categories, bins, words and waveform buckets
539
+ are separate summary sizes. An empty/all-invalid numeric domain is `null`. Preparation limits
540
+ do not change a component's own accepted input budget; check the component's documented route
541
+ before passing a prepared result.
542
+
543
+ - `prepareLyraSeriesData` scans each series once. Finite x/y pairs contribute full domains and
544
+ counts; null/nonfinite/missing coordinates are invalid and remain gaps. The overview retains
545
+ first/last valid points and index-partition y extrema in source order, preserving original x
546
+ and `sourceIndex`. `breakBefore` is true on the first sample and whenever invalid positions
547
+ occur between retained samples, including omitted segments. This overview can omit valid
548
+ segments and is not an exact reconstruction. `maxPointsPerSeries` defaults to 500, requires
549
+ at least 4 and clamps to 1,000. Requested capacity across all series must fit 9,000 samples;
550
+ excess series/capacity rejects. Inputs must share a revision and have unique IDs; the series
551
+ list must be nonempty, although a reader may have zero positions. IDs are nonblank and at
552
+ most 256 UTF-16 code units, labels at most 1,024, with 65,536 combined metadata units.
553
+ The result intentionally retains readers and their backing storage: `getPoint` reads exactly
554
+ one original position, returning a valid pair or `null`, and rejects unknown/out-of-range
555
+ references. The helper does not implement optional `queryRange`; hosts may provide indexed
556
+ refinement for `[startIndex, endIndex)` separately.
557
+ - `prepareLyraCategoryData` scans once into at most 1,000 declared unique categories and one
558
+ result series, using the same ID/label/metadata limits as series preparation. `count` ignores
559
+ `valueOf` entirely; `sum` and `mean` require an own synchronous numeric `valueOf` callback.
560
+ Null/non-string/empty/over-256-unit category IDs and nonfinite amounts are invalid.
561
+ Unknown remaining IDs map to `otherCategoryId` only when that ID names a declared category;
562
+ otherwise they are invalid.
563
+ Other is a real aggregate with its own `categoryCounts`, not a sampled remainder. Means divide
564
+ each category's accepted sum by its accepted count; empty categories have value zero. Selectors
565
+ return scalar values and their computation cost is host-owned. The helper does not build an
566
+ unbounded category-frequency map or accept `host-defined` as a reducer option.
567
+ - `prepareLyraHistogram` uses one pass for explicit finite strictly increasing edges, or two
568
+ replayable passes for automatic `binCount` edges. There are at most 1,000 bins. Bins are
569
+ half-open except the inclusive final upper edge, and `sum(binCounts) + belowCount + aboveCount`
570
+ equals `validCount`. Every finite observation contributes, including explicit-edge outliers;
571
+ the observed `domain` includes those outliers. Constant data gets a finite nonzero display
572
+ interval while its observed domain stays unchanged. Empty/all-invalid automatic results have
573
+ no edges or bins; explicit edges remain with zero bin counts. Unrepresentable distinct edges
574
+ reject.
575
+ - `prepareLyraWordCloud` selects exact global top-K from an already aggregated weighted catalog,
576
+ with `maxWords` default/maximum 150. Ties favor earlier source positions. IDs must be globally
577
+ unique by host contract; bounded duplicate detection covers only retained candidates. Blank
578
+ or over-256-unit IDs/text and negative/nonfinite weights are invalid. `totalWeight` includes
579
+ every valid observation; `retainedWeight` covers only selected words. Chosen text exceeding
580
+ 16,384 UTF-16 units rejects; lower `maxWords` to reduce the result. The bounded heap adds
581
+ O(n log K) reducer work; this helper does not tokenize or compute arbitrary word frequencies.
582
+ - `prepareLyraWaveform` scans once into positional interval maxima, with `maxBuckets`
583
+ default/maximum 65,536. Finite amplitudes clamp to [0, 1]; invalid positions keep their time
584
+ slots and contribute no peak. Each `[startIndex, endIndex)` interval covers original positions.
585
+ `sampleCount` equals `sourceCount`. `firstAmplitude`/`lastAmplitude` refer to original
586
+ endpoints, with `null` for invalid/absent endpoints. `duration` must be finite, nonnegative
587
+ and describe the summarized media interval.
588
+
589
+ For example, a replayable reader can generate a million logical values while allocating only
590
+ the requested chunk. The resulting histogram is a full-source distribution with 100 displayed
591
+ bins; it is not a million-element array.
592
+
593
+ ```ts
594
+ import { prepareLyraHistogram } from '@aceshooting/lyra-ui/utilities/data-preparation.js';
595
+ import type { LyraIndexedInput } from '@aceshooting/lyra-ui/utilities/data-preparation.js';
596
+
597
+ const input: LyraIndexedInput<number> = {
598
+ revision: 'measurements-1',
599
+ count: 1_000_000,
600
+ read(start, count, { signal }) {
601
+ signal.throwIfAborted();
602
+ return Array.from({ length: count }, (_, offset) => (start + offset) % 100);
603
+ },
604
+ };
605
+ const abort = new AbortController();
606
+ const distribution = await prepareLyraHistogram(input, {
607
+ binCount: 100,
608
+ signal: abort.signal,
609
+ });
610
+ console.log(distribution.counts.sourceCount, distribution.binCounts.length);
611
+ ```
612
+
489
613
  ## Form association
490
614
 
491
615
  `FormAssociated(Base)` (`@aceshooting/lyra-ui/utilities/form-associated.js`) makes a `LitElement`
@@ -956,7 +1080,7 @@ These are decorative application backgrounds, not an `accentBackground` value: t
956
1080
  accepts absolute colors used as contrast reference surfaces, not gradients or image URLs. Use
957
1081
  semantic surface/text pairings for content and keep the decorative layer behind it.
958
1082
 
959
- Use the existing [gemstoneAccentPicker composition](../components/lr-swatch-picker.md#gemstoneaccentpicker--the-signature-accent-selector),
1083
+ Use the existing [gemstoneAccentPicker composition](./components/lr-swatch-picker.md#gemstoneaccentpicker--the-signature-accent-selector),
960
1084
  with its single localized “Selected accent: {name}” heading, nine canonical gemstones, and shared
961
1085
  selected-glyph treatment. Update the name when selection changes. Use the same interpolated label
962
1086
  for the trigger's accessible name and hover title, dialog, radiogroup, and visible heading; do not
@@ -1092,9 +1216,9 @@ server-rendered pages and for application elements that paint before any Lyra el
1092
1216
  `tokens-root.css` is the same layer alone, as a static stylesheet, for pages that do not use
1093
1217
  `theme.css`:
1094
1218
 
1095
- - **Server-rendered pages.** Declarative shadow roots no longer carry the layer, so link
1096
- `theme.css` (or `tokens-root.css`) for a correct first paint before hydration (see
1097
- [Theme scopes](#theme-scopes) for application shadow roots).
1219
+ - **Server-rendered pages.** See
1220
+ [SSR and declarative shadow DOM](./shared/frameworks-and-ssr.md#ssr-and-declarative-shadow-dom) and
1221
+ [Theme scopes](#theme-scopes) for application shadow roots.
1098
1222
  - **Application elements that paint before the first Lyra element is registered**, for example
1099
1223
  ahead of a lazily loaded route; otherwise they change value when the layer is adopted.
1100
1224
  - **Large pages that load Lyra late.** Without a static copy, the layer is adopted when the first
@@ -1201,8 +1325,7 @@ and the mode it sees. The list is closed: `:root`; the mode scopes `.lr-light`,
1201
1325
  outer scope reaches a marked region exactly as it reaches an unmarked one, and adding a marker
1202
1326
  where nothing needs it changes nothing. With `theme.css`, mode scopes and the style-axis
1203
1327
  boundaries also re-resolve the inputs from the selected look, accent and mode, so an input set
1204
- above one of them stops there (set it on that boundary, or below it). A scope costs a little less
1205
- than one component did before 28.0.0, so put inputs on a common ancestor rather than marking every
1328
+ above one of them stops there (set it on that boundary, or below it). A scope is cheap, so put inputs on a common ancestor rather than marking every
1206
1329
  row of a list.
1207
1330
  - **`applyLyraStyleScope()`** writes the marker whenever it writes inline inputs.
1208
1331
  - **Brand regions in the default look.** The marker re-derives outputs but is not a style boundary,
@@ -1481,7 +1604,7 @@ for dialogs or panels (so it also renders without the component bundle) and uses
1481
1604
  on an `.lr-surface-chrome` element overrides the Glass fill; declare a low-priority layer before
1482
1605
  Lyra's names (`@layer app-base, lr-base, lr-theme, lr-theme-preset, lr-utilities, lr-overrides;`)
1483
1606
  for those fallbacks, or set `--lr-surface-background`. See
1484
- [Application fallback fills and cascade layers](native-styles-and-utilities.md#application-fallback-fills-and-cascade-layers).
1607
+ [Application fallback fills and cascade layers](./shared/native-styles-and-utilities.md#application-fallback-fills-and-cascade-layers).
1485
1608
 
1486
1609
  <a id="the-shadcn-look--themesshadcncss"></a>
1487
1610
 
@@ -1523,7 +1646,6 @@ Override the look through an unlayered application rule or the lr-overrides laye
1523
1646
  }
1524
1647
  ~~~
1525
1648
 
1526
- The former global themes/shadcn.css facade and its data-lr-theme-preset behavior have been removed.
1527
1649
  Use theme.css and the data-lr-look axis for new styling; looks/shadcn.css is needed only for the
1528
1650
  compatibility aliases above.
1529
1651
 
@@ -1619,8 +1741,7 @@ code. See each control's own reference page for its exact pair.
1619
1741
  takes precedence, and it has to: the shipped `design-tokens.css` declares
1620
1742
  `--lr-theme-icon-button-size` on `:root`, and a `var()` chain only falls through for a property
1621
1743
  that is unset *everywhere*, not merely shadowed nearer the element. Reading the theme tier first
1622
- therefore made this knob inert for anyone loading that stylesheet (a real 18.1.0 defect, fixed in
1623
- 18.2.0). `--lr-icon-button-size`
1744
+ therefore made this knob inert for anyone loading that stylesheet. `--lr-icon-button-size`
1624
1745
  is **element-scoped on purpose** and is not a wrapper knob: every component re-declares it on its
1625
1746
  own host so the touch-target floor can apply per element, so a value set on a wrapper is replaced
1626
1747
  at the first component in between and never reaches anything nested inside one. That behaviour is
@@ -1696,8 +1817,7 @@ sets `color-scheme`. **Every engine follows the nearest mode scope, with or with
1696
1817
  document layer carries mode to every scope through two inherited private switches, so a `.lr-light`
1697
1818
  island inside a `.lr-dark` region is light, a mode-neutral scope keeps its ancestor's mode, and the
1698
1819
  OS preference decides the root unless the root carries an explicit mode. A real `--lr-theme-*` value
1699
- still wins over the built-in light or dark default. (Before 28.0.0 an ancestor mode reached
1700
- components without `theme.css` only in Chromium, through `:host-context()`.)
1820
+ still wins over the built-in light or dark default.
1701
1821
 
1702
1822
  Each component host also keeps `:host([hidden]) { display: none !important; }` and an inherited
1703
1823
  `box-sizing: border-box` reset.
@@ -1808,7 +1928,7 @@ the whole profile in it. A page whose bootstrap uses `data-lr-theme-restore="mod
1808
1928
  application-owned storage key does not pair with it: the start would apply axes or a record the
1809
1929
  bootstrap deliberately ignored. Such pages call `setLyraStyle()` with the policy they want.
1810
1930
 
1811
- **Migrating the retired theme facade.** New code uses setLyraStyle() and getLyraStyle(). Map old auto mode to system, an old surface reference color to accentBackground, and an old token map to overrides; review custom CSS colors that share a gemstone name before choosing a named accent. Replace preset definitions with a LyraLook plus explicit style choices. Replace selectors for data-lr-theme-preset with the actual axis they need, such as data-lr-look="shadcn". Import theme.css in place of the removed fixed themes/shadcn.css facade and select the look with setLyraStyle({ look: "shadcn" }) or a scoped data-lr-look attribute. Listen for lr-style-change and read event.detail.style and event.detail.changed; the old theme and preset events are no longer emitted. For the complete project-by-project sequence, see [Upgrading from v23 to v24](v23-to-v24-migration.md).
1931
+ **Migrating the retired theme facade.** New code uses setLyraStyle() and getLyraStyle(). Map old auto mode to system, an old surface reference color to accentBackground, and an old token map to overrides; review custom CSS colors that share a gemstone name before choosing a named accent. Replace preset definitions with a LyraLook plus explicit style choices. Replace selectors for data-lr-theme-preset with the actual axis they need, such as data-lr-look="shadcn". Import theme.css in place of the removed fixed themes/shadcn.css facade and select the look with setLyraStyle({ look: "shadcn" }) or a scoped data-lr-look attribute. Listen for lr-style-change and read event.detail.style and event.detail.changed; the old theme and preset events are no longer emitted. For the complete project-by-project sequence, see [Upgrading from v23 to v24](./shared/v23-to-v24-migration.md).
1812
1932
 
1813
1933
  Historical v1 stored records remain readable by the runtime and bootstrap. The removed JavaScript functions, preset subpaths, preset event, root marker, and fixed stylesheet are not available in the current API.
1814
1934
 
@@ -2243,7 +2363,7 @@ application's fallback where it ranks below Lyra:
2243
2363
  An application layer declared after Lyra's (or unnamed until after `theme.css` loads) ranks above
2244
2364
  the surface layer and disables Glass in the same way as an unlayered rule. Keep unlayered
2245
2365
  `background` rules off `.lr-surface-chrome` elements, or exclude them with
2246
- `:not(.lr-surface-chrome)`. See [Cascade layers](styles-and-tokens.md#cascade-layers) for the full
2366
+ `:not(.lr-surface-chrome)`. See [Cascade layers](./shared/styles-and-tokens.md#cascade-layers) for the full
2247
2367
  order.
2248
2368
 
2249
2369
  ## Localization: `locale`, `strings`, and the locale runtime
@@ -2307,8 +2427,6 @@ The side-effect-free `@aceshooting/lyra-ui/localization.js` entry exports
2307
2427
  `LyraPluralMessage`, `LyraPluralCategory`, `LyraLocaleBridgeOptions` and `LyraLocaleBridgeCleanup`.
2308
2428
  The package root continues to re-export the runtime for compatibility and remains registration-free;
2309
2429
  use the dedicated entry when the application only needs locale setup and the narrower import graph.
2310
- The former utility-scoped entry point was removed in 23.0.0. Change that import specifier to
2311
- `@aceshooting/lyra-ui/localization.js`; the helper contracts are unchanged.
2312
2430
  **`LYRA_DEFAULT_STRINGS` is the authoritative key list** (matching the `LyraMessageKey` union) —
2313
2431
  read it to find the key to override rather than guessing one. Date, number, byte, relative-time and
2314
2432
  calendar output goes through `Intl`.
@@ -2797,7 +2915,7 @@ and adapters emit empty JavaScript and do not register elements.
2797
2915
  ## SSR and declarative shadow DOM
2798
2916
 
2799
2917
  When replacing the removed combined `ssr-loader.js` route, split browser hydration from component
2800
- registration and server rendering as shown below. The [v23-to-v24 migration guide](v23-to-v24-migration.md)
2918
+ registration and server rendering as shown below. The [v23-to-v24 migration guide](./shared/v23-to-v24-migration.md)
2801
2919
  has the ordered upgrade steps and environment-specific import mapping.
2802
2920
 
2803
2921
  Root, `all.js`, and granular component imports are server-safe under the supported Node 22+ runtime.
@@ -3219,8 +3337,8 @@ they carry no `tag`: `components/media/flag/flag-peer.js`,
3219
3337
  stand in for. They are a separate array rather than tag-less rows mixed into `entries`, so a reader
3220
3338
  that keys `entries` by `tag` keeps working; `integrations`, `distModule` and `localeKeys` are all
3221
3339
  additive, which is why the schema version is unchanged. `registrationModule` is the `src/` path used
3222
- internally; `distModule` is a retained published specifier and equals the stable `entry` for v24
3223
- per-tag registrations and integration bridges. `registers` is every `lr-*` tag
3340
+ internally; `distModule` is a retained published specifier and equals the stable `entry` for per-tag
3341
+ registrations and integration bridges. `registers` is every `lr-*` tag
3224
3342
  importing `entry` defines, direct or transitive, derived from the same transitive-import analysis
3225
3343
  `scripts/check-component-dependencies.mjs` already performs against the real registration graph
3226
3344
  (not a second hand-maintained list). `localeKeys` is every `LyraMessageKey` the registered tags can
@@ -3263,8 +3381,7 @@ same way `all.js` registers its root-included tags (the package root itself regi
3263
3381
  and want a single import; reach for the granular
3264
3382
  `@aceshooting/lyra-ui/components/<tag>.js` path when you do not, because a barrel cannot be
3265
3383
  tree-shaken down to the two elements you actually render. The tag-shaped path remains stable if a
3266
- component moves between Lyra's internal family folders. Duplicate nested registration paths were
3267
- removed in v24; family barrels remain supported.
3384
+ component moves between Lyra's internal family folders.
3268
3385
 
3269
3386
  ```js
3270
3387
  import "@aceshooting/lyra-ui/components/forms"; // every form control
@@ -3702,7 +3819,7 @@ number; clearTimeout(handle: number): void }`.
3702
3819
  - **`localization` → `subscribeLyraLocale(listener): () => void` and
3703
3820
  `bridgeLyraLocale(options?): () => void`** — the _active-locale_ half of the locale runtime.
3704
3821
  Import these helpers from the side-effect-free `@aceshooting/lyra-ui/localization.js` entry.
3705
- The former `utilities/localization.js` route was removed in 23.0.0. The extensionless `@aceshooting/lyra-ui/utilities`
3822
+ The extensionless `@aceshooting/lyra-ui/utilities`
3706
3823
  barrel keeps exporting them. `subscribeLyraLocale()` is distinct from
3707
3824
  `subscribeLyraLocaleRegistry()`, which answers a different question — see "Localization".
3708
3825
  `subscribeLyraLocale()` fires whenever the active selection changes, and when a newly registered
@@ -3826,92 +3943,423 @@ Keep the report short and concrete:
3826
3943
 
3827
3944
  These named interfaces and helper signatures are available to typed integrations. They are grouped by capability so the component sections above can stay focused.
3828
3945
 
3946
+ - **`data-sources-contracts`** — Public collection contracts from `data-sources.js`. These are type-only protocols; each component documents which source inputs it accepts. Inherited fields are repeated to show the complete effective request/row shape.
3947
+
3948
+ `LyraSourceRevision = string | number`
3949
+ `LyraSourceContext {
3950
+ readonly revision: LyraSourceRevision;
3951
+ readonly locale: string;
3952
+ readonly signal: AbortSignal;
3953
+ }`
3954
+ `LyraSourceRecord<T> {
3955
+ readonly key: string;
3956
+ readonly value: T;
3957
+ readonly order: number;
3958
+ }`
3959
+ `LyraSourceSearchRequest extends LyraSourceContext {
3960
+ readonly revision: LyraSourceRevision;
3961
+ readonly locale: string;
3962
+ readonly signal: AbortSignal;
3963
+ readonly query: string;
3964
+ readonly limit: number;
3965
+ }`
3966
+ `LyraSourceSearchResult<Hit> {
3967
+ readonly hits: readonly Hit[];
3968
+ readonly total: number | null;
3969
+ readonly exhaustive: boolean;
3970
+ }`
3971
+ `LyraSourceRangeRequest extends LyraSourceContext {
3972
+ readonly revision: LyraSourceRevision;
3973
+ readonly locale: string;
3974
+ readonly signal: AbortSignal;
3975
+ readonly offset: number;
3976
+ readonly limit: number;
3977
+ }`
3978
+ `LyraRangeSource<T> {
3979
+ readonly count: number;
3980
+ read(request: LyraSourceRangeRequest): Promise<readonly T[]>;
3981
+ indexOfKey?(key: string, context: LyraSourceContext): Promise<number | null>;
3982
+ }`
3983
+ `LyraIndexedView<T> = LyraVirtualListIndexedSource<T> | LyraRangeSource<T>`
3984
+ `LyraHierarchyView<T> =
3985
+ | (LyraVirtualListIndexedSource<T> & {
3986
+ keyAt(index: number): string;
3987
+ indexOfKey(key: string | number): number;
3988
+ })
3989
+ | (LyraRangeSource<T> & {
3990
+ indexOfKey(key: string, context: LyraSourceContext): Promise<number | null>;
3991
+ })`
3992
+ `LyraSourceSummary<S> = [S] extends [undefined]
3993
+ ? { readonly summary?: undefined }
3994
+ : { readonly summary: S }`
3995
+ `LyraSourceCell = string | number | boolean | null | undefined`
3996
+ `LyraTabularColumn { readonly key: string; readonly label: string; }`
3997
+ `LyraTabularHit {
3998
+ readonly row: number;
3999
+ readonly column: number;
4000
+ }`
4001
+ `LyraTabularReadRequest extends LyraSourceContext {
4002
+ readonly revision: LyraSourceRevision;
4003
+ readonly locale: string;
4004
+ readonly signal: AbortSignal;
4005
+ readonly row: number;
4006
+ readonly rowCount: number;
4007
+ readonly column: number;
4008
+ readonly columnCount: number;
4009
+ }`
4010
+ `LyraTabularSourceBase {
4011
+ readonly revision: LyraSourceRevision;
4012
+ readonly rowCount: number;
4013
+ readonly columnCount: number;
4014
+ columnAt(index: number): LyraTabularColumn;
4015
+ rowKeyAt?(index: number): string;
4016
+ indexOfRowKey?(key: string): number;
4017
+ search?(request: LyraSourceSearchRequest): Promise<LyraSourceSearchResult<LyraTabularHit>>;
4018
+ }`
4019
+ `LyraTabularSource = LyraTabularSourceBase & (
4020
+ | { cellAt(row: number, column: number): LyraSourceCell; readCells?: never }
4021
+ | { cellAt?: never; readCells(request: LyraTabularReadRequest): Promise<readonly (readonly LyraSourceCell[])[]> }
4022
+ )`
4023
+ `LyraWorkbookHit extends LyraTabularHit {
4024
+ readonly row: number;
4025
+ readonly column: number;
4026
+ readonly sheetKey: string;
4027
+ }`
4028
+ `LyraWorkbookSource {
4029
+ readonly revision: LyraSourceRevision;
4030
+ readonly sheets: readonly {
4031
+ readonly key: string;
4032
+ readonly name: string;
4033
+ readonly data: LyraTabularSource;
4034
+ }[];
4035
+ search?(request: LyraSourceSearchRequest): Promise<LyraSourceSearchResult<LyraWorkbookHit>>;
4036
+ }`
4037
+ `LyraSourceFacet {
4038
+ readonly values: readonly { readonly key: string; readonly label: string; readonly count?: number }[];
4039
+ readonly total: number;
4040
+ readonly unavailableSelected: readonly string[];
4041
+ }`
4042
+ `LyraSourceGroup {
4043
+ readonly key: string;
4044
+ readonly label: string;
4045
+ readonly startIndex: number;
4046
+ readonly itemCount: number;
4047
+ }`
4048
+ `LyraPageRequest<Q> extends LyraSourceContext {
4049
+ readonly revision: LyraSourceRevision;
4050
+ readonly locale: string;
4051
+ readonly signal: AbortSignal;
4052
+ readonly page: number;
4053
+ readonly pageSize: number;
4054
+ readonly query: Q;
4055
+ }`
4056
+ `LyraPageResult<T, Summary = undefined> = {
4057
+ readonly rows: readonly LyraSourceRecord<T>[];
4058
+ readonly total: number;
4059
+ readonly groups?: readonly LyraSourceGroup[];
4060
+ readonly tags?: LyraSourceFacet;
4061
+ } & LyraSourceSummary<Summary>`
4062
+ `LyraPageSource<T, Q, Summary = undefined> {
4063
+ readonly revision: LyraSourceRevision;
4064
+ query(request: LyraPageRequest<Q>): Promise<LyraPageResult<T, Summary>>;
4065
+ lookup(keys: readonly string[], context: LyraSourceContext): Promise<readonly LyraSourceRecord<T>[]>;
4066
+ locate(key: string, query: Q, context: LyraSourceContext): Promise<number | null>;
4067
+ }`
4068
+ `LyraHierarchyRow<T> {
4069
+ readonly key: string;
4070
+ readonly value: T;
4071
+ readonly parentKey: string | null;
4072
+ readonly level: number;
4073
+ readonly position: number;
4074
+ readonly setSize: number;
4075
+ readonly childCount: number;
4076
+ readonly expanded: boolean;
4077
+ readonly selected: boolean;
4078
+ readonly disabled?: boolean;
4079
+ readonly selectionState?: 'none' | 'partial' | 'all';
4080
+ }`
4081
+ `LyraHierarchyAction =
4082
+ | { readonly type: 'reset' }
4083
+ | { readonly type: 'toggle'; readonly key: string; readonly expanded: boolean }
4084
+ | { readonly type: 'reveal'; readonly key: string }
4085
+ | { readonly type: 'select'; readonly key: string; readonly selected: boolean; readonly scope: 'item' | 'subtree' }`
4086
+ `LyraHierarchyRequest<Q> extends LyraSourceContext {
4087
+ readonly revision: LyraSourceRevision;
4088
+ readonly locale: string;
4089
+ readonly signal: AbortSignal;
4090
+ readonly query: Q;
4091
+ readonly state: string | null;
4092
+ readonly action: LyraHierarchyAction;
4093
+ }`
4094
+ `LyraHierarchyProjection<T, Summary = undefined> = {
4095
+ readonly state: string;
4096
+ readonly total: number;
4097
+ readonly rows: LyraHierarchyView<LyraHierarchyRow<T>>;
4098
+ readonly focusIndex?: number;
4099
+ } & LyraSourceSummary<Summary>`
4100
+ `LyraHierarchySource<T, Q, Summary = undefined> {
4101
+ readonly revision: LyraSourceRevision;
4102
+ project(request: LyraHierarchyRequest<Q>): Promise<LyraHierarchyProjection<T, Summary>>;
4103
+ search?(request: LyraSourceSearchRequest): Promise<LyraSourceSearchResult<{ readonly key: string }>>;
4104
+ copy?(request: LyraSourceContext & {
4105
+ readonly key: string | null;
4106
+ readonly scope: 'node' | 'subtree' | 'document';
4107
+ readonly maxBytes: number;
4108
+ }): Promise<string>;
4109
+ }`
4110
+ `LyraInspectionNode {
4111
+ readonly name: string;
4112
+ readonly kind: 'object' | 'array' | 'scalar' | 'element' | 'attribute' | 'text' | 'comment' | 'processing-instruction';
4113
+ readonly value?: string;
4114
+ readonly path: string;
4115
+ }`
4116
+ `LyraHierarchyQuery {
4117
+ readonly search: string;
4118
+ readonly hiddenKinds: readonly string[];
4119
+ }`
4120
+ `LyraTraceSourceSummary { readonly startMs: number; readonly endMs: number; }`
4121
+ `LyraTaskSourceSummary { readonly total: number; readonly completed: number; }`
4122
+ `LyraSourceBounds { readonly x: number; readonly y: number; readonly width: number; readonly height: number; }`
4123
+ `LyraGraphSourceQuery {
4124
+ readonly kind: 'nodes' | 'edges';
4125
+ readonly search: string;
4126
+ readonly centerKey: string | null;
4127
+ readonly direction: 'in' | 'out' | 'both';
4128
+ readonly nodeTypes: readonly string[];
4129
+ }`
4130
+ `LyraGraphRecord<N, E> =
4131
+ | { readonly kind: 'node'; readonly value: N }
4132
+ | { readonly kind: 'edge'; readonly value: E }`
4133
+ `LyraGraphSourceSummary { readonly nodes: number; readonly edges: number; }`
4134
+ `LyraGraphSceneRequest extends LyraSourceContext {
4135
+ readonly revision: LyraSourceRevision;
4136
+ readonly locale: string;
4137
+ readonly signal: AbortSignal;
4138
+ readonly mode: 'neighborhood' | 'viewport';
4139
+ readonly centerKey: string | null;
4140
+ readonly bounds: LyraSourceBounds | null;
4141
+ readonly nodeLimit: number;
4142
+ readonly edgeLimit: number;
4143
+ readonly includeKeys: readonly string[];
4144
+ }`
4145
+ `LyraGraphScene<N, E> {
4146
+ readonly nodes: readonly { readonly key: string; readonly value: N; readonly position?: { readonly x: number; readonly y: number; readonly z?: number } }[];
4147
+ readonly edges: readonly { readonly key: string; readonly value: E; readonly source: string; readonly target: string }[];
4148
+ readonly total: LyraGraphSourceSummary;
4149
+ readonly coverage: 'complete' | 'neighborhood' | 'aggregate';
4150
+ readonly worldBounds: LyraSourceBounds | null;
4151
+ }`
4152
+ `LyraGraphOverview {
4153
+ readonly bounds: LyraSourceBounds;
4154
+ readonly bins: readonly { readonly bounds: LyraSourceBounds; readonly count: number }[];
4155
+ }`
4156
+ `LyraGraphSource<N, E> {
4157
+ readonly revision: LyraSourceRevision;
4158
+ readonly records: LyraPageSource<LyraGraphRecord<N, E>, LyraGraphSourceQuery, LyraGraphSourceSummary>;
4159
+ scene(request: LyraGraphSceneRequest): Promise<LyraGraphScene<N, E>>;
4160
+ overview?(request: LyraSourceContext & { readonly limit: number }): Promise<LyraGraphOverview>;
4161
+ }`
4162
+
4163
+ - **`utilities-data-preparation-contracts`** — Public staged numeric helpers and result contracts from `utilities/data-preparation.js`. Preparation reads the full immutable source in bounded chunks; retained summaries are distinct from source counts. Inherited fields are repeated for reference. Defaulted options may be omitted.
4164
+
4165
+ `LyraSourceValue<T> = T | PromiseLike<T>`
4166
+ `LyraSourceRequest { readonly signal: AbortSignal; }`
4167
+ `LyraIndexedInput<T> {
4168
+ readonly revision: LyraSourceRevision;
4169
+ readonly count: number;
4170
+ read(start: number, count: number, request: LyraSourceRequest): LyraSourceValue<readonly T[]>;
4171
+ }`
4172
+ `LyraPreparationOptions {
4173
+ readonly signal?: AbortSignal;
4174
+ readonly batchSize?: number;
4175
+ }`
4176
+ `LyraObservationCounts {
4177
+ readonly sourceCount: number;
4178
+ readonly validCount: number;
4179
+ readonly invalidCount: number;
4180
+ }`
4181
+ `LyraNumericDomain { readonly min: number; readonly max: number; }`
4182
+ `LyraSeriesObservation { readonly x: number; readonly y: number | null; }`
4183
+ `LyraSeriesSample extends LyraSeriesObservation {
4184
+ readonly x: number;
4185
+ readonly y: number | null;
4186
+ readonly sourceIndex: number;
4187
+ readonly breakBefore: boolean;
4188
+ }`
4189
+ `LyraPreparedSeries {
4190
+ readonly id: string;
4191
+ readonly label: string;
4192
+ readonly counts: LyraObservationCounts;
4193
+ readonly xDomain: LyraNumericDomain | null;
4194
+ readonly yDomain: LyraNumericDomain | null;
4195
+ readonly samples: readonly LyraSeriesSample[];
4196
+ }`
4197
+ `LyraSeriesRangeRequest extends LyraSourceRequest {
4198
+ readonly signal: AbortSignal;
4199
+ readonly seriesId: string;
4200
+ readonly startIndex: number;
4201
+ readonly endIndex: number;
4202
+ readonly maxPoints: number;
4203
+ }`
4204
+ `LyraSeriesPointRef { readonly seriesId: string; readonly sourceIndex: number; }`
4205
+ `LyraPreparedSeriesData {
4206
+ readonly kind: 'series';
4207
+ readonly revision: LyraSourceRevision;
4208
+ readonly series: readonly LyraPreparedSeries[];
4209
+ getPoint(ref: LyraSeriesPointRef, request: LyraSourceRequest): LyraSourceValue<LyraSeriesObservation | null>;
4210
+ queryRange?(request: LyraSeriesRangeRequest): LyraSourceValue<readonly LyraSeriesSample[]>;
4211
+ }`
4212
+ `LyraPreparedCategoryData {
4213
+ readonly kind: 'categories';
4214
+ readonly revision: LyraSourceRevision;
4215
+ readonly counts: LyraObservationCounts;
4216
+ readonly categories: readonly { readonly id: string; readonly label: string }[];
4217
+ readonly categoryCounts: readonly number[];
4218
+ readonly series: readonly { readonly id: string; readonly label: string; readonly values: readonly number[] }[];
4219
+ readonly aggregation: 'count' | 'sum' | 'mean' | 'host-defined';
4220
+ }`
4221
+ `LyraHistogramDistribution {
4222
+ readonly revision: LyraSourceRevision;
4223
+ readonly counts: LyraObservationCounts;
4224
+ readonly domain: LyraNumericDomain | null;
4225
+ readonly edges: readonly number[];
4226
+ readonly binCounts: readonly number[];
4227
+ readonly belowCount: number;
4228
+ readonly aboveCount: number;
4229
+ }`
4230
+ `LyraWeightedWord { readonly id: string; readonly text: string; readonly weight: number; }`
4231
+ `LyraPreparedWordCloud {
4232
+ readonly revision: LyraSourceRevision;
4233
+ readonly counts: LyraObservationCounts;
4234
+ readonly totalWeight: number;
4235
+ readonly retainedWeight: number;
4236
+ readonly words: readonly LyraWeightedWord[];
4237
+ }`
4238
+ `LyraPreparedWaveform {
4239
+ readonly revision: LyraSourceRevision;
4240
+ readonly counts: LyraObservationCounts;
4241
+ readonly sampleCount: number;
4242
+ readonly duration: number;
4243
+ readonly buckets: readonly { readonly startIndex: number; readonly endIndex: number; readonly maxAmplitude: number }[];
4244
+ readonly firstAmplitude: number | null;
4245
+ readonly lastAmplitude: number | null;
4246
+ }`
4247
+ `prepareLyraSeriesData(
4248
+ series: readonly { readonly id: string; readonly label: string; readonly input: LyraIndexedInput<LyraSeriesObservation> }[],
4249
+ options: LyraPreparationOptions & { readonly maxPointsPerSeries?: number } = {},
4250
+ ): Promise<LyraPreparedSeriesData>`
4251
+ `prepareLyraCategoryData<T>(
4252
+ input: LyraIndexedInput<T>,
4253
+ options: LyraPreparationOptions & {
4254
+ readonly categories: readonly { readonly id: string; readonly label: string }[];
4255
+ readonly seriesId: string;
4256
+ readonly seriesLabel: string;
4257
+ readonly categoryOf: (value: T, sourceIndex: number) => string | null;
4258
+ readonly otherCategoryId?: string;
4259
+ } & (
4260
+ | { readonly aggregation: 'count'; readonly valueOf?: (value: T, sourceIndex: number) => unknown }
4261
+ | { readonly aggregation: 'sum' | 'mean'; readonly valueOf: (value: T, sourceIndex: number) => number | null }
4262
+ ),
4263
+ ): Promise<LyraPreparedCategoryData>`
4264
+ `prepareLyraHistogram(
4265
+ input: LyraIndexedInput<number>,
4266
+ options: LyraPreparationOptions & ({ readonly edges: readonly number[] } | { readonly binCount: number }),
4267
+ ): Promise<LyraHistogramDistribution>`
4268
+ `prepareLyraWordCloud(
4269
+ input: LyraIndexedInput<LyraWeightedWord>,
4270
+ options: LyraPreparationOptions & { readonly maxWords?: number } = {},
4271
+ ): Promise<LyraPreparedWordCloud>`
4272
+ `prepareLyraWaveform(
4273
+ input: LyraIndexedInput<number>,
4274
+ options: LyraPreparationOptions & { readonly duration: number; readonly maxBuckets?: number },
4275
+ ): Promise<LyraPreparedWaveform>`
4276
+
3829
4277
  - **`ai-adapters-a2ui-contracts`** — AI adapter and runtime contracts.
3830
4278
  `A2UiAdapterLimits {
3831
- maxComponents: unknown;
3832
- maxDepth: unknown;
3833
- maxOutputNodes: unknown;
3834
- maxChildrenPerComponent: unknown;
3835
- maxNodes: unknown;
3836
- maxBytes: unknown;
3837
- maxStringCharacters: unknown;
4279
+ maxComponents: number;
4280
+ maxDepth: number;
4281
+ maxOutputNodes: number;
4282
+ maxChildrenPerComponent: number;
4283
+ maxNodes: number;
4284
+ maxBytes: number;
4285
+ maxStringCharacters: number;
3838
4286
  }`
3839
4287
  `A2UiLikeAction {
3840
- id: unknown;
3841
- payload: unknown;
4288
+ id: string;
4289
+ payload?: unknown;
3842
4290
  }`
3843
4291
  `A2UiLikeComponent {
3844
- id: unknown;
3845
- type: unknown;
3846
- props: unknown;
3847
- text: unknown;
3848
- children: unknown;
3849
- action: unknown;
4292
+ id: string;
4293
+ type: string;
4294
+ props?: Record<string, unknown>;
4295
+ text?: string;
4296
+ children?: string[];
4297
+ action?: A2UiLikeAction;
3850
4298
  }`
3851
4299
  `A2UiLikeSurface {
3852
- surfaceId: unknown;
3853
- rootId: unknown;
3854
- components: unknown;
3855
- data: unknown;
4300
+ surfaceId?: string;
4301
+ rootId: string;
4302
+ components: A2UiLikeComponent[];
4303
+ data?: unknown;
3856
4304
  }`
3857
- `adaptA2UiSurface(/* public names: surface, typeMap, limits */): unknown`
4305
+ `adaptA2UiSurface(surface: unknown, typeMap: unknown, limits: Partial<A2UiAdapterLimits> = {}): LyraWidgetDocument | null`
3858
4306
 
3859
4307
  - **`ai-adapters-ag-ui-contracts`** — AI adapter and runtime contracts.
3860
4308
  `AgUiAdapterLimits {
3861
- maxBufferedTools: unknown;
3862
- maxToolArgumentBytes: unknown;
3863
- maxTextDeltaCharacters: unknown;
3864
- maxDepth: unknown;
3865
- maxNodes: unknown;
3866
- maxBytes: unknown;
3867
- maxStringCharacters: unknown;
4309
+ maxBufferedTools: number;
4310
+ maxToolArgumentBytes: number;
4311
+ maxTextDeltaCharacters: number;
4312
+ maxDepth: number;
4313
+ maxNodes: number;
4314
+ maxBytes: number;
4315
+ maxStringCharacters: number;
3868
4316
  }`
3869
4317
  `AgUiLikeEvent {
3870
- type: unknown;
3871
- eventId: unknown;
3872
- runId: unknown;
3873
- messageId: unknown;
3874
- role: unknown;
3875
- delta: unknown;
3876
- toolCallId: unknown;
3877
- toolCallName: unknown;
3878
- result: unknown;
3879
- message: unknown;
3880
- code: unknown;
3881
- snapshot: unknown;
3882
- messages: unknown;
4318
+ type: string;
4319
+ eventId?: string;
4320
+ runId?: string;
4321
+ messageId?: string;
4322
+ role?: string;
4323
+ delta?: unknown;
4324
+ toolCallId?: string;
4325
+ toolCallName?: string;
4326
+ result?: unknown;
4327
+ message?: string;
4328
+ code?: string;
4329
+ snapshot?: unknown;
4330
+ messages?: unknown[];
3883
4331
  }`
3884
4332
 
3885
4333
  - **`ai-adapters-ai-sdk-contracts`** — AI adapter and runtime contracts.
3886
4334
  `adaptAiSdkMessage(message: unknown, limits?: Partial<AiSdkAdapterLimits>): ChatMessage | null`
3887
4335
  `AiSdkAdapterLimits {
3888
- maxParts: unknown;
3889
- maxDepth: unknown;
3890
- maxNodes: unknown;
3891
- maxBytes: unknown;
3892
- maxStringCharacters: unknown;
4336
+ maxParts: number;
4337
+ maxDepth: number;
4338
+ maxNodes: number;
4339
+ maxBytes: number;
4340
+ maxStringCharacters: number;
3893
4341
  }`
3894
4342
  `AiSdkLikeMessage {
3895
- id: unknown;
3896
- role: unknown;
3897
- parts: unknown;
3898
- metadata: unknown;
4343
+ id: string;
4344
+ role: string;
4345
+ parts?: unknown[];
4346
+ metadata?: Record<string, unknown>;
3899
4347
  }`
3900
4348
 
3901
4349
  - **`ai-runtime-contracts`** — AI adapter and runtime contracts.
3902
4350
  `AgentStreamLimits {
3903
- maxMessages: unknown;
3904
- maxPartsPerMessage: unknown;
3905
- maxTools: unknown;
3906
- maxDeltaCharacters: unknown;
3907
- maxTextCharactersPerPart: unknown;
3908
- maxIdentifierCharacters: unknown;
3909
- maxStatusMessageCharacters: unknown;
3910
- maxPatchOperations: unknown;
3911
- maxSnapshotDepth: unknown;
3912
- maxSnapshotNodes: unknown;
3913
- maxSnapshotBytes: unknown;
3914
- maxRetainedBytes: unknown;
4351
+ maxMessages: number;
4352
+ maxPartsPerMessage: number;
4353
+ maxTools: number;
4354
+ maxDeltaCharacters: number;
4355
+ maxTextCharactersPerPart: number;
4356
+ maxIdentifierCharacters: number;
4357
+ maxStatusMessageCharacters: number;
4358
+ maxPatchOperations: number;
4359
+ maxSnapshotDepth: number;
4360
+ maxSnapshotNodes: number;
4361
+ maxSnapshotBytes: number;
4362
+ maxRetainedBytes: number;
3915
4363
  }`
3916
4364
  `AgentStreamState {
3917
4365
  generation: number;
@@ -3923,51 +4371,51 @@ These named interfaces and helper signatures are available to typed integrations
3923
4371
  messages: ChatMessage[];
3924
4372
  tools: ToolInvocation[];
3925
4373
  sharedState: unknown;
3926
- error?: { message: string; code?: string; };
4374
+ error?: { message: string; code?: string };
3927
4375
  }`
3928
- `applySharedStatePatch(/* public names: value, patch */): unknown`
4376
+ `applySharedStatePatch(value: unknown, patch: readonly JsonPatchOperation[]): unknown`
3929
4377
  `createAgentStreamState(limits?: Partial<AgentStreamLimits>): AgentStreamState`
3930
- `parseJsonPatch(/* public names: value, limits */): unknown`
4378
+ `parseJsonPatch(value: unknown, limits: Partial<AgentStreamLimits> = {}): JsonPatchOperation[] | null`
3931
4379
  `reduceAgentStreamEvents(state: AgentStreamState, events: readonly AgentStreamEvent[]): AgentStreamState`
3932
4380
  `reduceAgentStream(state: AgentStreamState, event: AgentStreamEvent): AgentStreamState`
3933
4381
 
3934
4382
  - **`ai-snapshot-contracts`** — AI adapter and runtime contracts.
3935
- `createProviderSnapshotBudget(/* public names: limits */): unknown`
4383
+ `createProviderSnapshotBudget(limits: Partial<ProviderSnapshotLimits> | Readonly<ProviderSnapshotLimits> = {}): ProviderSnapshotBudget`
3936
4384
  `ProviderSnapshotBudget {
3937
- limits: unknown;
3938
- bytes: unknown;
3939
- nodes: unknown;
4385
+ readonly limits: Readonly<ProviderSnapshotLimits>;
4386
+ bytes: number;
4387
+ nodes: number;
3940
4388
  }`
3941
4389
  `ProviderSnapshotLimits {
3942
- maxDepth: unknown;
3943
- maxNodes: unknown;
3944
- maxBytes: unknown;
3945
- maxStringCharacters: unknown;
4390
+ maxDepth: number;
4391
+ maxNodes: number;
4392
+ maxBytes: number;
4393
+ maxStringCharacters: number;
3946
4394
  }`
3947
- `resolveProviderSnapshotLimits(/* public names: limits */): unknown`
3948
- `snapshotProviderValue(/* public names: value, budget */): unknown`
4395
+ `resolveProviderSnapshotLimits(limits: Partial<ProviderSnapshotLimits> = {}): Readonly<ProviderSnapshotLimits>`
4396
+ `snapshotProviderValue<T = unknown>(value: unknown, budget: ProviderSnapshotBudget = createProviderSnapshotBudget()): ProviderSnapshotResult<T>`
3949
4397
 
3950
4398
  - **`ai-types-contracts`** — AI adapter and runtime contracts.
3951
4399
  `AgentRun {
3952
- id: unknown;
3953
- status: unknown;
3954
- startedAt: unknown;
3955
- endedAt: unknown;
3956
- model: unknown;
3957
- costEstimate: unknown;
3958
- steps: unknown;
4400
+ id: string;
4401
+ status: AgentStatus;
4402
+ startedAt?: number;
4403
+ endedAt?: number;
4404
+ model?: string;
4405
+ costEstimate?: number;
4406
+ steps: readonly AgentStep[];
3959
4407
  }`
3960
4408
  `AgentStatus {
3961
- kind: unknown;
3962
- message: unknown;
4409
+ kind: AgentStatusKind;
4410
+ message?: string;
3963
4411
  }`
3964
4412
  `AgentStep {
3965
- id: unknown;
3966
- kind: unknown;
3967
- label: unknown;
3968
- status: unknown;
3969
- startedAt: unknown;
3970
- endedAt: unknown;
4413
+ id: string;
4414
+ kind: string;
4415
+ label: string;
4416
+ status: AgentStatus;
4417
+ startedAt?: number;
4418
+ endedAt?: number;
3971
4419
  }`
3972
4420
  `AttachmentMessagePart {
3973
4421
  type: 'attachment';
@@ -3988,7 +4436,7 @@ These named interfaces and helper signatures are available to typed integrations
3988
4436
  metadata?: Record<string, unknown>;
3989
4437
  }`
3990
4438
  `CancelEventDetail {
3991
- reason: unknown;
4439
+ reason?: string;
3992
4440
  }`
3993
4441
  `ChatMessage {
3994
4442
  id: string;
@@ -4001,17 +4449,15 @@ These named interfaces and helper signatures are available to typed integrations
4001
4449
  metadata?: Record<string, unknown>;
4002
4450
  }`
4003
4451
  `Citation {
4004
- id: unknown;
4005
- chunkId: unknown;
4006
- sourceId: unknown;
4007
- span: unknown;
4008
- start: unknown;
4009
- end: unknown;
4010
- label: unknown;
4011
- locator: unknown;
4012
- answerRange: unknown;
4013
- quote: unknown;
4014
- metadata: unknown;
4452
+ id: string;
4453
+ chunkId?: string;
4454
+ sourceId?: string;
4455
+ span?: { start: number; end: number };
4456
+ label?: string;
4457
+ locator?: DocumentLocator;
4458
+ answerRange?: { start: number; end: number };
4459
+ quote?: string;
4460
+ metadata?: Record<string, unknown>;
4015
4461
  }`
4016
4462
  `CitationMessagePart {
4017
4463
  type: 'citation';
@@ -4022,7 +4468,7 @@ These named interfaces and helper signatures are available to typed integrations
4022
4468
  metadata?: Record<string, unknown>;
4023
4469
  }`
4024
4470
  `CitationSelectEventDetail {
4025
- citation: unknown;
4471
+ citation: Citation;
4026
4472
  }`
4027
4473
  `DataMessagePart {
4028
4474
  type: 'data';
@@ -4035,11 +4481,11 @@ These named interfaces and helper signatures are available to typed integrations
4035
4481
  metadata?: Record<string, unknown>;
4036
4482
  }`
4037
4483
  `DocumentRef {
4038
- id: unknown;
4039
- name: unknown;
4040
- mimeType: unknown;
4041
- uri: unknown;
4042
- version: unknown;
4484
+ id: string;
4485
+ name: string;
4486
+ mimeType?: string;
4487
+ uri?: string;
4488
+ version?: string;
4043
4489
  }`
4044
4490
  `ErrorMessagePart {
4045
4491
  type: 'error';
@@ -4052,26 +4498,24 @@ These named interfaces and helper signatures are available to typed integrations
4052
4498
  metadata?: Record<string, unknown>;
4053
4499
  }`
4054
4500
  `ExportEventDetail {
4055
- format: unknown;
4501
+ format: string;
4056
4502
  }`
4057
4503
  `GroundedClaim {
4058
- id: unknown;
4059
- text: unknown;
4060
- status: unknown;
4061
- citationIds: unknown;
4062
- answerRange: unknown;
4063
- start: unknown;
4064
- end: unknown;
4065
- confidence: unknown;
4066
- explanation: unknown;
4504
+ id: string;
4505
+ text: string;
4506
+ status: GroundedClaimStatus;
4507
+ citationIds: readonly string[];
4508
+ answerRange?: { start: number; end: number };
4509
+ confidence?: number;
4510
+ explanation?: string;
4067
4511
  }`
4068
4512
  `GroundingAssessment {
4069
- supportedClaims: unknown;
4070
- unsupportedClaims: unknown;
4071
- coverage: unknown;
4072
- confidence: unknown;
4073
- warnings: unknown;
4074
- claims: unknown;
4513
+ supportedClaims: number;
4514
+ unsupportedClaims: number;
4515
+ coverage: number;
4516
+ confidence?: number;
4517
+ warnings?: readonly string[];
4518
+ claims?: readonly GroundedClaim[];
4075
4519
  }`
4076
4520
  `MessagePartBase {
4077
4521
  id: string;
@@ -4089,42 +4533,42 @@ These named interfaces and helper signatures are available to typed integrations
4089
4533
  metadata?: Record<string, unknown>;
4090
4534
  }`
4091
4535
  `RetrievalChunk {
4092
- id: unknown;
4093
- text: unknown;
4094
- score: unknown;
4095
- source: unknown;
4096
- metadata: unknown;
4097
- rank: unknown;
4098
- locator: unknown;
4099
- queryId: unknown;
4100
- stage: unknown;
4101
- traceId: unknown;
4102
- scores: unknown;
4536
+ id: string;
4537
+ text: string;
4538
+ score: number;
4539
+ source: DocumentRef;
4540
+ metadata?: Record<string, unknown>;
4541
+ rank?: number;
4542
+ locator?: DocumentLocator;
4543
+ queryId?: string;
4544
+ stage?: string;
4545
+ traceId?: string;
4546
+ scores?: RetrievalScoreBreakdown;
4103
4547
  }`
4104
4548
  `RetrievalProgressEventDetail {
4105
- queryId: unknown;
4106
- stage: unknown;
4107
- progress: unknown;
4549
+ queryId: string;
4550
+ stage: string;
4551
+ progress?: number;
4108
4552
  }`
4109
4553
  `RetrievalQuery {
4110
- text: unknown;
4111
- filters: unknown;
4112
- mode: unknown;
4113
- scope: unknown;
4554
+ text: string;
4555
+ filters?: Record<string, unknown>;
4556
+ mode: 'vector' | 'keyword' | 'hybrid';
4557
+ scope?: string[];
4114
4558
  }`
4115
4559
  `RetrievalScoreBreakdown {
4116
- dense: unknown;
4117
- sparse: unknown;
4118
- rerank: unknown;
4119
- final: unknown;
4560
+ dense?: number;
4561
+ sparse?: number;
4562
+ rerank?: number;
4563
+ final: number;
4120
4564
  }`
4121
4565
  `RetryEventDetail {
4122
- attempt: unknown;
4123
- messageId: unknown;
4566
+ attempt: number;
4567
+ messageId?: string;
4124
4568
  }`
4125
4569
  `RunLifecycleEventDetail {
4126
- runId: unknown;
4127
- status: unknown;
4570
+ runId: string;
4571
+ status: AgentStatus;
4128
4572
  }`
4129
4573
  `TextMessagePart {
4130
4574
  type: 'text';
@@ -4135,8 +4579,8 @@ These named interfaces and helper signatures are available to typed integrations
4135
4579
  metadata?: Record<string, unknown>;
4136
4580
  }`
4137
4581
  `ToolApprovalEventDetail {
4138
- invocationId: unknown;
4139
- approved: unknown;
4582
+ invocationId: string;
4583
+ approved: boolean;
4140
4584
  }`
4141
4585
  `ToolCallMessagePart {
4142
4586
  type: 'tool-call';
@@ -4147,16 +4591,16 @@ These named interfaces and helper signatures are available to typed integrations
4147
4591
  metadata?: Record<string, unknown>;
4148
4592
  }`
4149
4593
  `ToolInvocation {
4150
- id: unknown;
4151
- name: unknown;
4152
- displayName: unknown;
4153
- args: unknown;
4154
- status: unknown;
4155
- result: unknown;
4156
- error: unknown;
4157
- startedAt: unknown;
4158
- endedAt: unknown;
4159
- redactedFields: unknown;
4594
+ id: string;
4595
+ name: string;
4596
+ displayName?: string;
4597
+ args: Record<string, unknown>;
4598
+ status: ToolStatus;
4599
+ result?: unknown;
4600
+ error?: string;
4601
+ startedAt?: number;
4602
+ endedAt?: number;
4603
+ redactedFields?: readonly string[];
4160
4604
  }`
4161
4605
  `ToolResultErrorMessagePart {
4162
4606
  error: string;
@@ -4206,22 +4650,22 @@ These named interfaces and helper signatures are available to typed integrations
4206
4650
  readonly optionalPeers: readonly string[];
4207
4651
  }`
4208
4652
  `AutoloaderOptions {
4209
- optionalPeers: unknown;
4210
- events: unknown;
4211
- maxConcurrency: unknown;
4212
- maxElements: unknown;
4213
- maxRoots: unknown;
4214
- maxDepth: unknown;
4215
- maxWork: unknown;
4653
+ readonly optionalPeers?: AutoloaderOptionalPeers;
4654
+ readonly events?: boolean;
4655
+ readonly maxConcurrency?: number;
4656
+ readonly maxElements?: number;
4657
+ readonly maxRoots?: number;
4658
+ readonly maxDepth?: number;
4659
+ readonly maxWork?: number;
4216
4660
  }`
4217
4661
  `AutoloaderTraversalErrorEventDetail {
4218
- limit: unknown;
4219
- maximum: unknown;
4220
- error: unknown;
4662
+ readonly limit: RenderedTreeTraversalLimit;
4663
+ readonly maximum: number;
4664
+ readonly error: Error;
4221
4665
  }`
4222
4666
  `discover(root?: LyraDefinitionRoot | undefined, options?: AutoloaderOptions): Promise<readonly AutoloadableTagName[]>`
4223
4667
  `start(root?: LyraDefinitionRoot | undefined, options?: AutoloaderOptions): Promise<readonly AutoloadableTagName[]>`
4224
- `stop(): unknown`
4668
+ `stop(): void`
4225
4669
 
4226
4670
  - **`custom-elements-jsx-contracts`** — Framework integration type contracts, including the multi-split
4227
4671
  `for` launcher id and `trigger` element reference.
@@ -4538,18 +4982,18 @@ These named interfaces and helper signatures are available to typed integrations
4538
4982
 
4539
4983
  - **`internal-ansi-contracts`** — Shared utility contracts.
4540
4984
  `AnsiStyles {
4541
- bold: unknown;
4542
- dim: unknown;
4543
- italic: unknown;
4544
- underline: unknown;
4545
- inverse: unknown;
4546
- fg: unknown;
4547
- bg: unknown;
4985
+ bold: boolean;
4986
+ dim: boolean;
4987
+ italic: boolean;
4988
+ underline: boolean;
4989
+ inverse: boolean;
4990
+ fg?: string;
4991
+ bg?: string;
4548
4992
  }`
4549
4993
 
4550
4994
  - **`internal-canvas-color-contracts`** — Shared utility contracts.
4551
- `resolveCanvasColor(/* public names: scope, color, fallback */): unknown`
4552
- `resolveCanvasColors(/* public names: scope, colors, fallback */): unknown`
4995
+ `resolveCanvasColor(scope: Element, color: string, fallback: string): string`
4996
+ `resolveCanvasColors(scope: Element, colors: Iterable<string>, fallback: string): string[]`
4553
4997
 
4554
4998
  - **`internal-document-tokens-contracts`** — Shared utility contracts.
4555
4999
  `adoptLyraTokens(root: Document | ShadowRoot): void`
@@ -4562,21 +5006,21 @@ These named interfaces and helper signatures are available to typed integrations
4562
5006
  scope. Reads inline styles only and logs nothing.
4563
5007
 
4564
5008
  - **`internal-localization-runtime-contracts`** — Shared utility contracts.
4565
- `getLyraLocaleDirection(/* public names: locale */): unknown`
4566
- `getLyraLocale(): unknown`
4567
- `getRegisteredLyraLocaleKeys(/* public names: locale */): unknown`
4568
- `getRegisteredLyraLocales(): unknown`
5009
+ `getLyraLocaleDirection(locale: string): LyraLocaleDirection`
5010
+ `getLyraLocale(): string`
5011
+ `getRegisteredLyraLocaleKeys(locale: string): readonly string[]`
5012
+ `getRegisteredLyraLocales(): readonly string[]`
4569
5013
  `registerLyraLocale(locale: string, strings: LyraLocaleStrings, meta?: LyraLocaleMeta): void`
4570
- `resolveLyraDirection(/* public names: host */): unknown`
4571
- `resolveLyraLocale(/* public names: host */): unknown`
4572
- `setLyraLocale(/* public names: locale */): unknown`
4573
- `subscribeLyraLocaleRegistry(/* public names: listener */): unknown`
5014
+ `resolveLyraDirection(host: Element): 'ltr' | 'rtl'`
5015
+ `resolveLyraLocale(host: Element): string`
5016
+ `setLyraLocale(locale: string): void`
5017
+ `subscribeLyraLocaleRegistry(listener: () => void): () => void`
4574
5018
  `registerLyraLocaleDelta(locale: string, parent: string, strings: LyraLocaleStrings, meta?: LyraLocaleMeta): void`
4575
5019
 
4576
5020
  - **`internal-localization-types-contracts`** — Shared utility contracts.
4577
5021
  `LyraLocaleMeta {
4578
- dir: unknown;
4579
- name: unknown;
5022
+ dir?: LyraLocaleDirection;
5023
+ name?: string;
4580
5024
  }`
4581
5025
 
4582
5026
  - **`internal-localization-contracts`** — Shared utility contracts.
@@ -4584,87 +5028,83 @@ These named interfaces and helper signatures are available to typed integrations
4584
5028
 
4585
5029
  - **`internal-node-type-style-contracts`** — Shared utility contracts.
4586
5030
  `LyraNodeTypeStyle {
4587
- id: unknown;
4588
- label: unknown;
4589
- color: unknown;
4590
- shape: unknown;
5031
+ readonly id: string;
5032
+ readonly label: string;
5033
+ readonly color?: string;
5034
+ readonly shape?: 'circle' | 'square' | 'diamond';
4591
5035
  }`
4592
5036
 
4593
5037
  - **`internal-registered-animation-contracts`** — Shared utility contracts.
4594
5038
  `RegisteredAnimationSpec {
4595
- keyframes: unknown;
4596
- rtlKeyframes: unknown;
4597
- durationProperties: unknown;
4598
- easingProperties: unknown;
4599
- fallbackDuration: unknown;
4600
- fallbackEasing: unknown;
4601
- options: unknown;
5039
+ keyframes: Keyframe[];
5040
+ rtlKeyframes?: Keyframe[];
5041
+ durationProperties: readonly string[];
5042
+ easingProperties?: readonly string[];
5043
+ fallbackDuration?: number;
5044
+ fallbackEasing?: string;
5045
+ options?: KeyframeAnimationOptions;
4602
5046
  }`
4603
5047
 
4604
5048
  - **`internal-text-viewer-target-contracts`** — Shared utility contracts.
4605
5049
  `LyraSearchChangeDetail {
4606
- query: unknown;
4607
- matchCount: unknown;
4608
- matchCountExact: unknown;
4609
- activeIndex: unknown;
5050
+ query: string;
5051
+ matchCount: number;
5052
+ matchCountExact: boolean;
5053
+ activeIndex: number;
4610
5054
  }`
4611
5055
  `LyraTextViewerTarget {
4612
- search: unknown;
4613
- query: unknown;
4614
- searchNext: unknown;
4615
- searchPrevious: unknown;
4616
- clearSearch: unknown;
4617
- highlights: unknown;
4618
- activeHighlightId: unknown;
4619
- anchor: unknown;
4620
- anchorKinds: unknown;
4621
- scrollToAnchor: unknown;
4622
- target: unknown;
5056
+ search(query: string): Promise<number>;
5057
+ searchNext(): Promise<boolean>;
5058
+ searchPrevious(): Promise<boolean>;
5059
+ clearSearch(): void;
5060
+ highlights: readonly LyraHighlight[];
5061
+ activeHighlightId: string | null;
5062
+ anchor: LyraAnchor | string | null;
5063
+ readonly anchorKinds: readonly LyraAnchorKind[];
5064
+ scrollToAnchor(target: LyraAnchor | string): Promise<boolean>;
4623
5065
  }`
4624
5066
 
4625
5067
  - **`ssr-contracts`** — Shared utility contracts.
4626
- `buildLyraSsrStaticSafety(/* public names: tags, tagCapabilities, auditedStaticSafeTags */): unknown`
5068
+ `buildLyraSsrStaticSafety(tags: readonly string[], tagCapabilities: Readonly<Record<string, LyraSsrTagCapabilities>>, auditedStaticSafeTags: readonly string[]): LyraSsrStaticSafetyResult`
4627
5069
  Fail-closed classifier behind `LYRA_SSR_STATIC_SAFETY`/`getLyraSsrStaticSafety`: a tag present in
4628
5070
  neither a non-empty `tagCapabilities` entry nor `auditedStaticSafeTags` is reported in the result's
4629
5071
  `unaudited` list instead of silently defaulting to `'static-safe'`. Pure and fixture-friendly --
4630
5072
  `scripts/check-ssr.mjs` calls it with the real inventory, tests call it with small fixture lists.
4631
- `deriveLyraSsrStaticSafety(/* public names: capabilities */): unknown`
5073
+ `deriveLyraSsrStaticSafety(capabilities: LyraSsrTagCapabilities): LyraSsrStaticSafety`
4632
5074
  Derives static safety from one tag's capability record: any `'after-hydration'`/`'client-only'`
4633
5075
  entry makes it `'hydration-required'`; an empty record defaults to `'static-safe'`. That empty-
4634
5076
  record default is only valid for a record already known to reflect a completed review (as
4635
5077
  `LYRA_SSR_TAG_CAPABILITIES` entries do) -- `buildLyraSsrStaticSafety()` does not rely on it for a
4636
5078
  tag missing from that record entirely, which it instead routes through `auditedStaticSafeTags`.
4637
- `diagnoseLyraHydration(/* public names: root */): unknown`
4638
- `getLyraSsrMode(/* public names: tagName */): unknown`
4639
- `getLyraSsrStaticSafety(/* public names: tagName */): unknown`
5079
+ `diagnoseLyraHydration(root?: ParentNode): Promise<readonly LyraHydrationDiagnostic[]>`
5080
+ `getLyraSsrMode(tagName: string): LyraSsrMode | undefined`
5081
+ `getLyraSsrStaticSafety(tagName: string): LyraSsrStaticSafety | undefined`
4640
5082
  Returns the static-safety classification for a `render-and-hydrate` Lyra tag, or `undefined` for a
4641
5083
  tag outside that tier. See "SSR and declarative shadow DOM" above for the full write-up.
4642
5084
  `LyraHydrationDiagnostic {
4643
- element: unknown;
4644
- tag: unknown;
4645
- mode: unknown;
4646
- status: unknown;
4647
- error: unknown;
5085
+ element: Element;
5086
+ tag: string;
5087
+ mode: LyraSsrMode;
5088
+ status: LyraHydrationStatus;
5089
+ error?: unknown;
4648
5090
  }`
4649
5091
  `LyraLitElementRendererConstructor {
4650
- prototype: unknown;
4651
- matchesClass: unknown;
4652
- constructor: unknown;
4653
- tagName: unknown;
4654
- attributes: unknown;
5092
+ new (tagName: string): object;
5093
+ readonly prototype: object;
5094
+ matchesClass(constructor: CustomElementConstructor, tagName: string, attributes: Map<string, string>): boolean;
4655
5095
  }`
4656
5096
  `LyraSsrClientRenderReason {
4657
- code: unknown;
4658
- detail: unknown;
5097
+ code: LyraSsrClientRenderReasonCode;
5098
+ detail: string;
4659
5099
  }`
4660
5100
  `LyraSsrStaticSafetyResult {
4661
- classification: unknown;
4662
- unaudited: unknown;
5101
+ classification: Readonly<Record<string, LyraSsrStaticSafety>>;
5102
+ unaudited: readonly string[];
4663
5103
  }`
4664
5104
  Return shape of `buildLyraSsrStaticSafety()`: `classification` holds one entry per classified tag
4665
5105
  (a tag absent from it was neither capability-bearing nor audited), and a non-empty `unaudited`
4666
5106
  means the check must fail closed.
4667
- `lyraSsrElementRenderers(/* public names: litElementRenderer */): unknown`
5107
+ `lyraSsrElementRenderers<T extends LyraLitElementRendererConstructor>(litElementRenderer: T): readonly [typeof LyraSsrFallbackRenderer, T]`
4668
5108
 
4669
5109
  - **`svelte-contracts`** — Framework integration type contracts, including the multi-split
4670
5110
  `for` launcher id and `trigger` element reference.
@@ -5294,13 +5734,13 @@ These named interfaces and helper signatures are available to typed integrations
5294
5734
  See "Constructing a validated test event: `createLyraEvent()`" above for the full contract.
5295
5735
 
5296
5736
  - **`testing-happy-dom-shims-contracts`** — Shared utility contracts.
5297
- `installHappyDomFormAssociatedShims(): unknown`
5298
- `installHappyDomShadowFocusShim(): unknown`
5299
- `flattenCascadeLayers(/* public names: css */): unknown`
5300
- `installHappyDomAriaControlsShim(/* public names: proto */): unknown`
5301
- `installHappyDomCascadeLayerShim(/* public names: proto, misbehaves */): unknown`
5302
- `installHappyDomShims(): unknown`
5303
- `installStubInternalsForTest(/* public names: host */): unknown`
5737
+ `installHappyDomFormAssociatedShims(): void`
5738
+ `installHappyDomShadowFocusShim(): () => void`
5739
+ `flattenCascadeLayers(css: string): string`
5740
+ `installHappyDomAriaControlsShim(proto: object | undefined = globalThis.Element?.prototype): void`
5741
+ `installHappyDomCascadeLayerShim(proto: SheetTextMethods | undefined = globalThis.CSSStyleSheet?.prototype, misbehaves: () => boolean = cascadeLayerRulesDropped): () => void`
5742
+ `installHappyDomShims(): void`
5743
+ `installStubInternalsForTest(host: Element): StubElementInternals`
5304
5744
 
5305
5745
  - **`testing-jsdom-shims-contracts`** — Shared utility contracts.
5306
5746
  `JsdomAdoptedStyleSheetsTargets {
@@ -5320,43 +5760,43 @@ These named interfaces and helper signatures are available to typed integrations
5320
5760
  See "jsdom: `installJsdomShims()`" above for the full contract.
5321
5761
 
5322
5762
  - **`testing-interaction-drivers-contracts`** — Shared utility contracts.
5323
- `chooseOption(/* public names: owner, value */): unknown`
5324
- `submitConfirmDecision(/* public names: owner, decision */): unknown`
5325
- `toggleSwitch(/* public names: switchEl */): unknown`
5326
- `activateStep(/* public names: stepper, target */): unknown`
5327
- `chooseSwatch(/* public names: picker, value */): unknown`
5328
- `chooseCurrency(/* public names: picker, code */): unknown`
5763
+ `chooseOption(owner: LyraOptionListElement, value: string): Promise<void>`
5764
+ `submitConfirmDecision(owner: LyraConfirmBar | LyraToolApprovalDialog, decision: ApprovalDecision): Promise<void>`
5765
+ `toggleSwitch(switchEl: LyraSwitch): Promise<void>`
5766
+ `activateStep(stepper: LyraStepper, target: number | string): Promise<void>`
5767
+ `chooseSwatch(picker: LyraSwatchPicker, value: string): Promise<void>`
5768
+ `chooseCurrency(picker: LyraCurrencyPicker, code: string): Promise<void>`
5329
5769
  `PopoverDriverOptions {
5330
- timeoutMs: unknown;
5770
+ timeoutMs?: number;
5331
5771
  }`
5332
5772
  `ClosePopoverOptions {
5333
- via: unknown;
5334
- timeoutMs: unknown;
5773
+ via?: 'escape' | 'trigger';
5774
+ timeoutMs?: number;
5335
5775
  }`
5336
- `openPopover(/* public names: popover, options */): unknown`
5337
- `closePopover(/* public names: popover, options */): unknown`
5776
+ `openPopover(popover: LyraPopover, options: PopoverDriverOptions = {}): Promise<void>`
5777
+ `closePopover(popover: LyraPopover, options: ClosePopoverOptions = {}): Promise<void>`
5338
5778
  See "Driving a component's real activation path: interaction drivers" above for the full contract.
5339
5779
 
5340
5780
  - **`testing-wait-for-mount-contracts`** — Shared utility contracts.
5341
- `waitForLyraElement(/* public names: selector, options */): unknown`
5781
+ `waitForLyraElement<T extends Element = HTMLElement>(selector: string, options: WaitForLyraElementOptions<T> = {}): Promise<T>`
5342
5782
  `WaitForLyraElementOptions {
5343
- root: unknown;
5344
- match: (element: unknown) => unknown;
5345
- timeoutMs: unknown;
5783
+ root?: Node & ParentNode;
5784
+ match?: (element: T) => boolean;
5785
+ timeoutMs?: number;
5346
5786
  }`
5347
- `waitForToast(/* public names: match, options */): unknown`
5787
+ `waitForToast(match?: ToastMatch, options: Omit<WaitForLyraElementOptions<LyraToastItem>, 'match'> = {}): Promise<LyraToastItem>`
5348
5788
  See "Awaiting a lazily registered mount: `waitForLyraElement()` and `waitForToast()`" above for the
5349
5789
  full contract.
5350
5790
 
5351
5791
  - **`theme-gemstones-data-contracts`** — Shared utility contracts.
5352
5792
  `GemstoneAccent {
5353
- key: unknown;
5354
- fill: unknown;
5355
- deep: unknown;
5793
+ key: GemstoneKey;
5794
+ fill: string;
5795
+ deep: string;
5356
5796
  }`
5357
5797
 
5358
5798
  - **`theme-gemstones-contracts`** — Shared utility contracts.
5359
- `gemstoneGlyph(/* public names: color */): unknown`
5799
+ `gemstoneGlyph(color = 'currentColor'): TemplateResult`
5360
5800
  `gemstoneSelectedGlyphStyles: CSSResult` — the shared "selected" halo/shine presentation for a
5361
5801
  rendered `gemstoneGlyph()`, applied via the `data-lr-gemstone-selected` boolean attribute on the
5362
5802
  element wrapping the glyph. `lr-swatch-picker mode="gemstone"` includes this exact stylesheet in
@@ -5928,7 +6368,7 @@ These named interfaces and helper signatures are available to typed integrations
5928
6368
  }): Promise<LyraScopedRegistry>`
5929
6369
 
5930
6370
  - **`utilities-scoped-registry-contracts`** — Public contracts from `utilities/scoped-registry.js`.
5931
- Native, document-bound isolation with class-only definitions. Unsupported/SSR environments report false from feature detection and throw on creation; no polyfill or global fallback is installed. Same-constructor definitions are idempotent; conflicts, unknown template tags, and cross-document usage fail. See [native scoped registry composition](imports-and-registration.md#optional-native-scoped-registries) for parser, Lit creation-scope, and shadow-root usage.
6371
+ Native, document-bound isolation with class-only definitions. Unsupported/SSR environments report false from feature detection and throw on creation; no polyfill or global fallback is installed. Same-constructor definitions are idempotent; conflicts, unknown template tags, and cross-document usage fail. See [native scoped registry composition](./shared/imports-and-registration.md#optional-native-scoped-registries) for parser, Lit creation-scope, and shadow-root usage.
5932
6372
 
5933
6373
  `createScopedRegistry<Definitions extends LyraScopedDefinitions>(definitions: Definitions, options?: {
5934
6374
  document?: Document;
@@ -6171,32 +6611,27 @@ resolve again at each preference boundary, including a nested look or a local `s
6171
6611
 
6172
6612
  ### Compatibility and saved preferences
6173
6613
 
6174
- When upgrading from v21, these component rendering changes also apply without opting into a style
6175
- axis. `lr-button-group` sizes to its content in narrow allocations and no longer reserves an
6176
- artificial intrinsic width. An explicit host width remains respected; set
6177
- `lr-button-group::part(base) { inline-size: 100%; }` when the internal row should fill that width.
6178
- The attachment menu inside `lr-prompt-input` now follows its explicit surrounding light/dark mode;
6179
- WebKit previously could use operating-system colors when that scheme disagreed with the surrounding
6180
- mode. Remove any application workaround that depended on that mismatch.
6181
- Menus also clamp their minimum width to the containing allocation and viewport, and positioned
6182
- submenus respect the positioner's available width. This prevents the former minimum from forcing
6183
- overflow in narrow spaces or with enlarged text; it remains effective when sufficient space exists.
6184
- The default Lyra dark control boundary changes from `#6b6b74` to `#787881` so it clears 3:1 on the
6185
- dark overlay `#2b3038` (3.034:1); the previous value failed on raised and overlay surfaces. This
6186
- changes `--lr-theme-color-surface-border` and its shared fallback only, keeping light boundaries,
6187
- other looks and semantic palettes intact. Plain chromatic button text moves toward body text on
6188
- hover/press, and selected tree rows use on-quiet text in those states, retaining 4.5:1 as their fills
6189
- change. Resting plain-button/selected-row text and explicit component foreground overrides remain
6190
- unchanged. Step numbers and interactive context-meter legend rows use matching semantic fill/text
6191
- pairs; control-border colors no longer act as their text backgrounds. Material uses 8% hover and
6192
- 12% press state layers with its `currentColor` mix partner, keeping filled-action labels at 4.5:1.
6193
-
6194
- Runtime custom accents, including `setLyraStyle({ accent })` and legacy gemstone presets, now
6195
- floor the loud fill to 4.5:1 against its quiet fill and the built-in reference surfaces because the
6196
- same token paints accent text. Its on-loud foreground follows the corrected fill. For example,
6197
- light shadcn emerald changes from `#34d399` with black on-loud text to `#1a6a4d` with white text
6198
- (6.537:1). Checked controls, brand text and streaming accents follow that loud token; secondary
6199
- neutral controls stay unchanged. The requested and persisted accent color is retained.
6614
+ Component rendering contracts that apply without opting into a style axis: `lr-button-group` sizes to
6615
+ its content in narrow allocations and reserves no artificial intrinsic width. An explicit host width
6616
+ remains respected; set `lr-button-group::part(base) { inline-size: 100%; }` when the internal row
6617
+ should fill that width. The attachment menu inside `lr-prompt-input` follows its explicit
6618
+ surrounding light/dark mode. Menus clamp their minimum width to the containing allocation and
6619
+ viewport, and positioned submenus respect the positioner's available width, so the minimum never
6620
+ forces overflow in narrow spaces or with enlarged text; it remains effective when sufficient space
6621
+ exists. The default Lyra dark control boundary (`--lr-theme-color-surface-border` and its shared
6622
+ fallback) clears 3:1 on raised and overlay surfaces; light boundaries, other looks and semantic
6623
+ palettes are unaffected. Plain chromatic button text moves toward body text on hover/press, and
6624
+ selected tree rows use on-quiet text in those states, retaining 4.5:1 as their fills change.
6625
+ Resting plain-button/selected-row text and explicit component foreground overrides are unchanged.
6626
+ Step numbers and interactive context-meter legend rows use matching semantic fill/text pairs;
6627
+ control-border colors do not act as their text backgrounds. Material uses 8% hover and 12% press
6628
+ state layers with its `currentColor` mix partner, keeping filled-action labels at 4.5:1.
6629
+
6630
+ Runtime custom accents, including `setLyraStyle({ accent })` and legacy gemstone presets, floor the
6631
+ loud fill to 4.5:1 against its quiet fill and the built-in reference surfaces because the same token
6632
+ paints accent text. Its on-loud foreground follows the corrected fill. Checked controls, brand text
6633
+ and streaming accents follow that loud token; secondary neutral controls are unchanged. The
6634
+ requested and persisted accent color is retained.
6200
6635
 
6201
6636
  The runtime and no-flash bootstrap still read v1 records written by the retired theme API. On
6202
6637
  read, auto becomes system and the old accent reference surface becomes accentBackground. A saved
@@ -6290,22 +6725,8 @@ that stylesheet it retains an opaque scrim. Native audio/video controls stay bro
6290
6725
 
6291
6726
  Use the host `aria-label` attribute or native `ariaLabel` property to name a component. Where the
6292
6727
  component owns an internal role, it forwards that host name to the semantic element. An explicitly
6293
- present host name, including `aria-label=""`, wins over the retained `accessibleLabel` fallback.
6728
+ present host name, including `aria-label=""`, is honored as given.
6294
6729
  This applies to `lr-table`'s grid and `lr-sequence-strip`'s list as well.
6295
6730
 
6296
- On `lr-attachment-trigger`, `lr-callout`, `lr-carousel`, `lr-dialog`, `lr-drawer`, `lr-file-input`,
6297
- `lr-lite-chart`, `lr-progress-bar`, `lr-progress-ring` and `lr-reorder-item`, the older
6298
- `accessible-label` attribute was removed in 23.0.0 and no longer supplies an accessible name.
6299
- Their `accessibleLabel` properties remain supported as deprecated fallbacks, with removal no
6300
- earlier than 24.0.0. On `lr-table` and `lr-sequence-strip`, both `accessible-label` and
6301
- `accessibleLabel` remain supported with removal no earlier than 24.0.0. These retained
6302
- compatibility inputs can issue one-time development notices; use the native host name for new
6303
- code. The migration reference lists each attribute and property independently.
6304
-
6305
- `lr-message-parts` retains a deprecated nullable `accessibleLabel` property, with removal no earlier
6306
- than 24.0.0. It maps to the current `aria-label` attribute: authoring that attribute updates the
6307
- property, and removing it restores `null` and the localized default name. Normal host attribute
6308
- use and removal are supported without deprecation warnings. Assigning a non-null value directly to
6309
- `accessibleLabel` while no host `aria-label` is present remains a working fallback and warns once
6310
- in development. Use the host `aria-label` or native `ariaLabel` instead; an explicitly empty host
6311
- name still takes precedence.
6731
+ Name components with the host `aria-label` / `ariaLabel`. The former `accessible-label` attribute and
6732
+ `accessibleLabel` property no longer exist (see the generated migration reference).