@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
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [agent-tools](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/agent-tools.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 17 parts, 11 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 23 parts, 11 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -20,15 +20,92 @@ A collapsible span hierarchy for one agent/LLM trace (Langfuse/LangSmith run-tre
20
20
  name, status, an inline duration bar on the shared trace time scale, and optional tokens/cost
21
21
  columns. Consumes the same `LyraSpan[]` as `<lr-span-waterfall>`.
22
22
 
23
- Span views omit whitespace-only IDs and preserve every nonblank business ID exactly, including
23
+ With `treeSource` unset, span views omit whitespace-only IDs and preserve every nonblank business ID exactly, including
24
24
  surrounding whitespace. The first valid admitted duplicate continues to win.
25
25
 
26
+ **Complete provider hierarchy:** `treeSource: TraceTreeSource | undefined`
27
+ (attribute: false) takes display precedence over `spans`, including when a defined provider is
28
+ invalid. Invalid input shows a localized source failure; setting `undefined` restores current
29
+ legacy spans. `maxNodes` limits only the legacy span projection, not complete provider counts.
30
+
31
+ ```ts
32
+ import type { TraceTreeSource } from
33
+ "@aceshooting/lyra-ui/components/agent-tools/trace-tree/trace-tree.class.js";
34
+ import type { LyraSpan } from
35
+ "@aceshooting/lyra-ui/components/agent-tools/trace-tree/span.js";
36
+ import type { LyraHierarchySource, LyraHierarchyQuery, LyraTraceSourceSummary } from
37
+ "@aceshooting/lyra-ui/data-sources.js";
38
+ ```
39
+
40
+ `TraceTreeSource` is exactly
41
+ `LyraHierarchySource<LyraSpan, LyraHierarchyQuery, LyraTraceSourceSummary>`. Its immutable `revision`
42
+ is a nonempty string or finite number. `project(request)` receives revision, locale, abort signal,
43
+ previous opaque `state` (initially `null`), an action (`reset`, `toggle`, `reveal` or item `select`),
44
+ and `{ search: '', hiddenKinds }`. The provider applies kind filtering to the complete hierarchy;
45
+ the component has no source search or copy controls. Return
46
+ `{ state, total, rows, summary: { startMs, endMs }, focusIndex? }`: `total` counts every logical
47
+ node including collapsed nodes, and `rows.count` is the complete currently visible preorder.
48
+ Counts are safe nonnegative integers with `rows.count <= total`; `state` is a nonempty immutable
49
+ snapshot token of at most 65,536 UTF-16 units.
50
+
51
+ The required `LyraTraceSourceSummary` describes the entire trace's timing extent, independent of
52
+ loaded rows, collapsed branches and kind filters. Both endpoints are finite nonnegative
53
+ trace-relative milliseconds, `endMs >= startMs`, with finite difference. Equal endpoints remain
54
+ valid and reported unchanged. Missing/invalid summaries fail visibly; the component never derives
55
+ the global extent from the current window or legacy spans. Bars subtract the global start before
56
+ scaling; running spans retain a visible minimum width without rewriting the supplied extent.
57
+
58
+ `rows` is an immutable `LyraHierarchyView<LyraHierarchyRow<LyraSpan>>`, either indexed
59
+ `itemAt`/`keyAt`/`indexOfKey` or asynchronous `read` plus required `indexOfKey`. Each row has globally
60
+ unique nonblank `key === value.id`, `parentKey`, one-based `level`/`position`, exact sibling
61
+ `setSize`, `childCount`, `expanded`, `selected`, and optional `disabled`/`selectionState`. These
62
+ fields own topology, expansion and provider selection; span `parentId` and nested children never
63
+ rebuild a local hierarchy. Global uniqueness and immutable consistency remain provider obligations
64
+ beyond the bounded admitted window.
65
+
66
+ Only closed span display fields are copied: `id`, `name`, `detail`, `costText`, normalized
67
+ `kind`/`status`, `startMs`, optional `endMs` and valid `tokensIn`/`tokensOut`. Nonblank IDs preserve
68
+ surrounding whitespace. Source start must be finite/nonnegative; an explicit end must be finite
69
+ and at least start. Unknown kinds become `other`, absent statuses `pending`, explicit unknown
70
+ statuses `unknown`; invalid token metrics are omitted. Oversized display strings/rows fail without
71
+ clipping. Keys/state/display strings are each at most 65,536 UTF-16 units; aggregate normalized
72
+ row text including key/parent accounting is bounded to 65,536 units. Admitted cache/staging,
73
+ focused-row and projection-state payloads share 2,000,000 units. Opaque metadata is not traversed.
74
+
75
+ Four 100-row pages are retained (400 rows), plus at most one focused ready row. At most 301 rows
76
+ mount, including the focused row; range reads request at most 100 rows with two physically pending
77
+ reads. One projection call runs at a time with only the latest replacement queued. Ignored aborts
78
+ retain physical permits until settlement. No complete source array, ancestor index or count-sized
79
+ key map is built. Flat rows expose exact logical ARIA depth/sibling positions while visual
80
+ indentation remains bounded; source rows own one treeitem/focus target each.
81
+
82
+ `revealSourceKey(key: string): Promise<boolean>` directly resolves a global provider key, opens its
83
+ ancestors and focuses the returned row. Absent, disabled, invalid, failed, canceled, obsolete and
84
+ unset-source targets resolve `false`; there is no source-wide scan fallback. Source Home/End uses
85
+ the full visible preorder, parent/reveal navigation uses direct lookup and branch arrows are
86
+ RTL-aware. Disabled-row traversal examines at most 32 candidates. `activeSpanId` remains
87
+ caller-controlled: source activation emits `lr-span-select { spanId }` only after the accepted
88
+ item-selection action, without changing it. The active ID paints `aria-current` and reveals once
89
+ per binding/ID; unrelated paints do not repeatedly undo user navigation. Accepted expansion emits
90
+ exactly `lr-span-toggle { spanId, expanded }`. No additional source-selection event is introduced.
91
+ `expandAll()`/`collapseAll()` are no-ops in source mode.
92
+
93
+ Reassign even the same source, or call a keyless `requestUpdate()`, after revision/state changes.
94
+ Changing `hiddenKinds` refreshes the provider query; named selection/presentation paints reuse
95
+ accepted data. Locale/lifecycle refresh and source replacement revoke obsolete controls, requests,
96
+ announcements and reveal effects. Loading/error/empty/retry are localized; window movement does
97
+ not announce historical loaded span statuses as fresh changes. Source-only parts are `source-list`,
98
+ `source-row`, `source-label`, `source-toggle`, `source-status` and `source-error`; existing span
99
+ icon/name/detail/status/duration/token/cost/bar parts remain on their content. The following array
100
+ admission and local hierarchy rules apply with `treeSource` unset.
101
+
26
102
  **Properties:** `spans: LyraSpan[] = []` (attribute: false) — the same `LyraSpan` shape documented
27
103
  under `lr-span-waterfall` above (exported from `trace-tree/span.ts`); hierarchy comes from
28
104
  `parentId`, and a span whose `parentId` is missing or doesn't resolve within the same array renders
29
105
  as a root rather than being dropped. Duration bars scale to the whole trace, measured before the
30
- shared 500-span cap is applied, so a truncated tail never stretches the surviving bars across their
31
- tracks. `activeSpanId: string | null = null`
106
+ configured span cap is applied, so a truncated tail never stretches the surviving bars across their
107
+ tracks. `maxNodes: number = 500` (attribute `max-nodes`) sets that cap, normalized to `1..5000`;
108
+ unset or non-finite values restore 500. `activeSpanId: string | null = null`
32
109
  (attribute `active-span-id`), `label?: string`, `withTokens: boolean = false` (attribute
33
110
  `with-tokens`, reflected) — surfaces `tokensIn`/`tokensOut`, `withCost: boolean = false` (attribute
34
111
  `with-cost`, reflected) — surfaces `costText`, and `withoutBars: boolean = false` (attribute
@@ -39,26 +116,35 @@ Token counts render only when finite and non-negative; invalid metrics are omitt
39
116
  reaching `Intl.NumberFormat`. A row's accessible name includes its optional `detail` text as well
40
117
  as its name/status/metrics, and updates when the supplied span data changes. Every trace view uses
41
118
  the same bounded runtime projection: provider records are normalized with deterministic first-wins
42
- identity, then at most 500 mount. The controlled `activeSpanId` and its resolvable ancestor path
43
- reserve positions before ordinary input-order spans. Non-object records, empty/blank ids, non-finite
119
+ identity, then at most `maxNodes` mount. The controlled `activeSpanId` and its nearest resolvable
120
+ ancestors reserve positions inside that budget before ordinary input-order spans. Non-object records, empty/blank ids, non-finite
44
121
  starts/ends, and later duplicate ids are omitted; negative starts clamp to zero, ends clamp to at
45
122
  least their start, unknown kinds become `other`, and explicit unknown statuses become `unknown`;
46
123
  an absent status defaults to `pending`. A localized
47
- `[part="limit"]` note exposes truncation.
124
+ `[part="limit"]` note exposes source or projection truncation. The first 10,000 outer input entries
125
+ are admitted by identity; canonical display fields are copied without traversing opaque provider
126
+ metadata. The active span cannot reserve an entry excluded by source admission. Initial limit
127
+ notices are silent; a later transition into truncation is announced politely.
48
128
 
49
- **Methods:** `expandAll()` and `collapseAll()` set every row's expanded state at once.
129
+ **Methods:** with `treeSource` unset, `expandAll()` and `collapseAll()` set every row's expanded
130
+ state at once; `revealSourceKey(key)` is the provider navigation method described above.
50
131
 
51
132
  **Events:** `lr-span-select` (`detail: { spanId: string }`, a row was activated) and `lr-span-toggle`
52
133
  (`detail: { spanId: string; expanded: boolean }`, a row was expanded or collapsed).
53
134
 
54
- **Hidden kinds and focus:** `hiddenKinds: readonly LyraSpan['kind'][] = []` (attribute: false) leaves those kinds out of the tree; a span whose parent is hidden becomes a root, and the duration bars and the 500-row limit notice keep following the whole trace (`lr-agent-trace` forwards its own `hiddenKinds` here). `spans` is kept by item identity, so a large trace with opaque provider metadata is never cut by a field budget. The browsed row stays the tab stop across `spans`/collapse changes, and the active row scrolls into view only when `active-span-id` changes.
135
+ **Hidden kinds and focus with `treeSource` unset:** `hiddenKinds: readonly LyraSpan['kind'][] = []` (attribute: false) leaves those kinds out of the tree; a span whose parent is hidden becomes a root, and the duration bars and configured limit notice keep following the whole admitted trace (`lr-agent-trace` forwards its own `hiddenKinds` here). Opaque provider metadata does not consume a deep-field budget. The browsed row stays the tab stop across `spans`/collapse changes, and the active row scrolls into view only when `active-span-id` changes.
55
136
 
56
137
  **CSS parts:** `base` (`role="tree"`), `header` (the column-header row, only when
57
138
  `with-tokens`/`with-cost`), `row` (`role="treeitem"`), `toggle`, `icon`, `name`, `detail`, `status-text`,
58
139
  `duration`, `tokens-in`, `tokens-out` (when `with-tokens`), `cost` (when `with-cost`), `bar-track`,
59
- `bar`, `empty` (shown when `spans` is empty), `limit` (the 500-span projection notice), and
140
+ `bar`, `empty` (shown when `spans` is empty), `limit` (source or projection truncation notice), and
60
141
  `live-region`.
61
142
 
143
+ With `treeSource` set, additional CSS parts are `source-list` (bounded provider virtual viewport), `source-row` (flat
144
+ logical tree item and focus owner), `source-label` (row content), `source-toggle` (expand/collapse
145
+ or retry button), `source-status` (loading, full-source count or empty text), and `source-error`
146
+ (localized projection or row failure).
147
+
62
148
  **Themeable custom properties:** `--lr-trace-tree-row-active-bg` (default
63
149
  `var(--lr-color-brand-quiet)`) — the background of the active (`activeSpanId`) row, and the base
64
150
  its hover/press mixes from — and
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [conversation](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/conversation.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 10 parts, 0 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 11 parts, 0 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -21,6 +21,12 @@ with in-place upgrades keyed by `id`, and a stick-to-bottom auto-scroll with rel
21
21
  `follow`/`lr-follow-change` contract `<lr-terminal>` uses. Live captions only — recorded-media
22
22
  transcript sync is a separate concern.
23
23
 
24
+ `entries` retains the newest 10,000 records within the shared 50,000-value deep snapshot budget.
25
+ The visible `limit` part discloses omitted input through `transcriptFeedInputLimit`, with `count`
26
+ and `total` placeholders. Final-caption replay suppression keeps up to 10,000 recent IDs, always
27
+ preserving currently retained captions. An ID evicted from that history may be announced if later
28
+ reintroduced.
29
+
24
30
  Activating the focused jump action resumes follow and transfers focus to the scroll base when the
25
31
  action disappears, unless a newer outside focus move takes precedence.
26
32
 
@@ -63,4 +69,5 @@ state or the built-in jump action re-engages it. Direct `follow` assignments and
63
69
  only), `entry`, `speaker` (omitted for a row repeating the previous row's speaker), `text`
64
70
  (`dir="auto"`), `timestamp` (only while `with-timestamps`), `interim` (present alongside `entry` on
65
71
  an interim row), `interim-area` (the wrapper holding interim rows, rendered only while at least one
66
- interim entry exists), `jump-button` (shown only while `follow` is `false`), and `empty`.
72
+ interim entry exists), `jump-button` (shown only while `follow` is `false`), `empty`, and `limit`
73
+ (input-loss notice).
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 4 parts, 5 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 10 parts, 5 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Documented with** `lr-tree-item` (same section below)
14
14
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
15
15
 
@@ -39,7 +39,55 @@ with `badges: [{ text: String(value) }]`. The former item-controller fields (`ac
39
39
  `depth`, `setSize`, `posInSet`) and context setters were never consumer state; they are now private
40
40
  owner context maintained by `<lr-tree>`.
41
41
 
42
- **Two child models are accepted, and they never interleave.**
42
+ **Provider hierarchy:** `treeSource: TreeSource | undefined` (attribute: false) is an
43
+ identity-owned full-source route. `TreeSource` is
44
+ `LyraHierarchySource<LyraTreeNodeData, LyraHierarchyQuery>` from
45
+ `@aceshooting/lyra-ui/data-sources.js`. A defined source takes precedence over `data` and authored
46
+ items; invalid defined input shows a localized source error instead of restoring legacy rows.
47
+ Setting `undefined` restores the current authored-over-data precedence below. Source descriptors
48
+ are never assigned to `data`, and author-written items are retained without being rendered in
49
+ source mode. Reassign the source, including the same object, or call a keyless `requestUpdate()`
50
+ after revision or provider-state changes. Locale changes and reconnect/adoption refresh the
51
+ projection; unrelated named display updates do not.
52
+
53
+ The provider's `project(request)` handles `reset`, `toggle`, `reveal` and `select` actions and returns
54
+ an immutable `{ state, total, rows, focusIndex? }` projection. Requests include revision, locale,
55
+ abort signal, previous opaque `state` (initially `null`), and the fixed query
56
+ `{ search: '', hiddenKinds: [] }`. `total` counts all logical nodes, including collapsed nodes;
57
+ `rows.count` counts the complete currently visible preorder. Both are nonnegative safe integers,
58
+ with `rows.count <= total`. The summary reports those logical counts, not mounted rows. A million
59
+ nodes can remain in host-owned storage without a library-wide flattening or ancestor index.
60
+
61
+ `rows` is a `LyraHierarchyView<LyraHierarchyRow<LyraTreeNodeData>>`: either indexed
62
+ `itemAt`/`keyAt`/`indexOfKey`, or asynchronous `read` plus required `indexOfKey`. There is no scan
63
+ fallback for key lookup. Each row supplies its global unique `key`, matching `value.id`, plus
64
+ `parentKey`, one-based `level`/`position`, exact sibling `setSize`, `childCount`, `expanded`,
65
+ `selected`, and optional
66
+ `disabled`/`selectionState`. Hierarchy metadata owns those states; nested `value.children` is never
67
+ read. Keys must be nonblank strings of at most 65,536 UTF-16 units and are preserved verbatim.
68
+ The opaque state token must be a nonempty string of at most 65,536 units. Display values use own
69
+ data properties, at most 100 badges and 65,536 aggregate display-text units per row; malformed or
70
+ oversized rows fail visibly without compacting logical indices. The provider owns global key
71
+ uniqueness and immutable snapshot consistency; validation covers the bounded admitted window.
72
+
73
+ The source view mounts at most 301 rows, retaining four 100-row pages plus at most one focused
74
+ ready row (401 total). Range requests contain at most 100 rows, with at most two physically pending
75
+ reads. One projection call runs at a time with only the latest replacement queued. Loading/error
76
+ rows are not selectable records; localized retry preserves their logical position. Empty is a
77
+ separate valid state. Providers should honor abort signals; revoked results cannot commit, but an
78
+ ignored abort does not release a physical request until it settles.
79
+
80
+ Source keyboard navigation uses the full visible count for Home/End, direct provider lookup for
81
+ parents/reveal, and RTL-aware branch arrows. Disabled-row navigation examines at most 32 candidates
82
+ and keeps current focus if none can be resolved. Logical ARIA depth/sibling positions remain exact
83
+ while visual indentation clamps at 32 levels. A bounded roving row or root entry stop remains
84
+ available as rows scroll; an off-window focused row is retained within the same mount bound.
85
+ The provider owns selection/cascade/partial state: `single` selects an item, `leaf` permits only
86
+ leaves, `multiple` toggles an item or a branch's `subtree`, and `leaf-multiple` toggles leaves only.
87
+ These adapters expose exploration and selection, with no component source search/copy controls.
88
+ `maxNodes` governs the legacy data model, not the source total or its fixed window bounds.
89
+
90
+ **With `treeSource` undefined, two legacy child models are accepted and never interleave.**
43
91
 
44
92
  - **Declarative** (mirrors the upstream markup, so a tag rename is the whole migration): write
45
93
  nested `<lr-tree-item>` elements as light-DOM children, each carrying its own
@@ -56,6 +104,7 @@ owner context maintained by `<lr-tree>`.
56
104
 
57
105
  A tree containing any author-written `<lr-tree-item>` child is read purely as the declarative model
58
106
  and `data` is ignored. The empty state renders only when neither model has any items.
107
+ Author-written light-DOM items have no total-node cap; traversal still stops at 64 descendant levels.
59
108
 
60
109
  Both child models use the same selection, roving-focus, checkbox-cascade, icon, and lazy-loading
61
110
  engine. The upstream lifecycle names are normalized to the library-wide `lr-` prefix;
@@ -80,10 +129,10 @@ deeply-nested node's own shadow root still reaches it).
80
129
  after changes (rebinding the same array is a no-op). A refresh is diffed by id: a node whose
81
130
  fields (including an icon template from the same literal with equal values) and children are
82
131
  unchanged keeps its previous object, so its row neither re-renders nor re-seeds element state.
83
- Normalization accepts at most 1,000 valid nodes and 64 descendant levels, and lazily
132
+ Normalization accepts at most `maxNodes` valid nodes (default 1,000) and 64 descendant levels, and lazily
84
133
  inspects at most 10,000 root/child array positions globally in depth-first order. It never
85
134
  invokes caller accessors and exposes `dataTruncated = true` when malformed or over-budget input
86
- was omitted or the inspected-position ceiling was reached. When more than 1,000 valid nodes are
135
+ was omitted or the inspected-position ceiling was reached. When more than `maxNodes` valid nodes are
87
136
  supplied, the localized `limit` part reports the retained-node cap; malformed input alone does
88
137
  not show that cap notice. Collapsed branches do not instantiate descendants; disclosure projects only normalized
89
138
  children while `aria-setsize` preserves the declared sibling count. `LyraTreeNodeData` is
@@ -100,6 +149,9 @@ LyraVariant; readonly label?: string }`. `badges` renders tone-mapped chips in o
100
149
  removed by later object refreshes; removing the author attribute restores the current data name.
101
150
  `id` is the event, roving-focus, reconciliation, and reorder identity and must be unique across
102
151
  the complete reachable hierarchy; malformed rows, blank IDs and later duplicates are omitted as described above
152
+ - `maxNodes: number = 1000` (attribute `max-nodes`) — the object-data node budget, normalized to
153
+ `1..10000`; unset or non-finite values restore 1,000. Set it before assigning `data`. Raising it
154
+ does not recover excluded input automatically: reassign the original source after raising the cap.
103
155
  - `selection: 'single'|'multiple'|'leaf'|'leaf-multiple' = 'single'` — self-managed selection for
104
156
  both child models. `single` selects one item; `leaf` selects one loaded leaf; `multiple` displays
105
157
  checkboxes and cascades through enabled descendants; `leaf-multiple` applies that cascade only
@@ -114,7 +166,9 @@ LyraVariant; readonly label?: string }`. `badges` renders tone-mapped chips in o
114
166
 
115
167
  **Read-only getters:** `selectedItems: readonly LyraTreeItem[]` returns a new frozen snapshot of
116
168
  selected item elements in document order, including derived fully-selected parents in either
117
- multiple mode. `dataTruncated: boolean` reports bounded/malformed normalization as described above.
169
+ multiple mode. It returns an empty frozen array in source mode; it never enumerates unmounted
170
+ provider selection. `dataTruncated: boolean` reports legacy bounded/malformed normalization as
171
+ described above.
118
172
 
119
173
  **Keyboard:** ArrowDown/ArrowUp move the roving focus to the next/previous _visible_ node.
120
174
  ArrowRight expands a collapsed node (focus stays put; a second ArrowRight then steps into the first
@@ -148,10 +202,22 @@ roving stop to the next reachable row instead of stranding it, and the state is
148
202
  `selectedItems` and the multiple-mode cascade are unchanged and a modal that inerts the page can
149
203
  never silently wipe a tree's selection.
150
204
 
151
- **Methods:** `expandAll(): Promise<void>`, `collapseAll(): Promise<void>` (both iterative, bounded,
152
- and resolved only after the affected rendered item cascade settles).
153
-
154
- **Events:** `lr-selection-change` (`detail: { selection }`, where both the detail and selection
205
+ **Methods:** `revealSourceKey(key: string): Promise<boolean>` asks the source to reveal a global
206
+ key and focuses its current visible row; it resolves `false` for absent, invalid, obsolete or
207
+ unset-source requests. Source `reveal` responses need a valid `focusIndex` to resolve successfully.
208
+ `expandAll(): Promise<void>`, `collapseAll(): Promise<void>` (both iterative, bounded
209
+ by hierarchy depth, and resolved only after the affected rendered item cascade settles). Items at
210
+ each depth expand together, preserving their individual lifecycle events, motion durations and lazy
211
+ loading behavior.
212
+
213
+ Both bulk methods are no-ops in source mode, and `reorderable` has no source-mode effect. Expansion
214
+ and selection use provider projection actions rather than legacy item/lazy lifecycle events.
215
+
216
+ **Events:** source mode emits `lr-source-selection-change` only after a current user selection
217
+ projection commits: frozen readonly `detail: { key: string; selected: boolean;
218
+ scope: 'item' | 'subtree'; state: string }`. It reports the accepted global-key intent and new
219
+ opaque state, without constructing a DOM selection array. The following events are legacy-only:
220
+ `lr-selection-change` (`detail: { selection }`, where both the detail and selection
155
221
  snapshot are frozen; fired for user selection and when a `data` refresh removes or re-seeds selected
156
222
  rows) and `lr-reorder` (`detail: { nodeId, parentNodeId, fromIndex, toIndex }`, only while `reorderable`).
157
223
  Like every other event here it is a **request**: `data` is host-owned and is never mutated by this
@@ -175,7 +241,11 @@ icons; an item-level slot with the same name takes precedence.
175
241
 
176
242
  **CSS parts:** `base` and `tree` are aliases on the same `role="tree"` root; `empty` is the
177
243
  empty-state message shown when neither child model has any items; `limit` is the localized
178
- retained-node cap notice when more than 1,000 valid nodes are supplied.
244
+ retained-node cap notice when valid object-data nodes exceed `maxNodes`.
245
+ Source mode adds `source-list`, `source-row`, `source-toggle` (branch and retry buttons),
246
+ `source-label`, `source-status`, and `source-error`, retaining the `base`/`tree` aliases. Its tree
247
+ root owns the accessible name, busy state and multiselectability; flat source rows own their
248
+ treeitem metadata. Source rows are not `<lr-tree-item>` instances and do not use its item slots.
179
249
 
180
250
  **Themeable custom properties:** shared tokens `--lr-space-xs`/`-s`, `--lr-color-brand-quiet`,
181
251
  `--lr-color-text-quiet`, `--lr-color-border`, `--lr-color-border-subtle`, `--lr-color-text`,
@@ -187,7 +257,8 @@ since the host itself is the focusable `role="treeitem"`), plus `--indent-size`,
187
257
 
188
258
  ### `lr-tree-item`
189
259
 
190
- One row of the tree, in either child model. `role="treeitem"` (plus
260
+ One row of the tree, in either legacy child model; provider source mode renders its own bounded
261
+ flat rows instead. `role="treeitem"` (plus
191
262
  `aria-expanded`/`aria-level`/`aria-setsize`/`aria-posinset`/`aria-selected` and the roving
192
263
  `tabindex`, driven by `<lr-tree>`) live on the _host_ element itself, not an internal row `<div>` —
193
264
  so this node's own nested children (whether rendered in its own shadow root or projected from the
@@ -364,13 +435,14 @@ The declarative model — the same shape a renamed `wa-tree`/`sl-tree` subtree l
364
435
  - `lr-tree`'s `getUpdateComplete()` cascades through owner-controlled descendants
365
436
  `<lr-tree-item>`'s own `updateComplete` (see `update-cascade.ts`) so that code awaiting the
366
437
  tree's `updateComplete` does not run before a reachable nested node has finished rendering its
367
- roving `tabIndex`. The same 64-level/1,000-node work bounds apply to context, focus, selection,
368
- and disclosure walks.
438
+ roving `tabIndex`. Context, selection and disclosure walks retain the 64-level depth guard;
439
+ object data also retains its configured node cap. Moving focus patches the previous and next
440
+ item without rebuilding the hierarchy.
369
441
  - row enrichment is intentionally structured rather than an unrestricted renderer: use `icon`,
370
442
  `label`, `description`, `badges`, and `accessibleLabel`. This keeps the host as the single
371
443
  `role="treeitem"` interaction target and preserves the APG keyboard model.
372
- - `lr-file-tree` does **not** forward `reorderable`, and deliberately so: its `LyraTreeNodeData[]` is derived
373
- from `nodes` on every render and keyed by filesystem path, an order it does not own.
444
+ - `lr-file-tree` does **not** forward `reorderable`, and deliberately so: its `LyraTreeNodeData[]` is
445
+ derived from `nodes` and keyed by filesystem path, an order it does not own.
374
446
  - in the declarative model, appending a child while the parent is collapsed still registers: a
375
447
  `childList` MutationObserver assigns the `children` slot and requests an update, because
376
448
  `slotchange` alone cannot see a child added to a slot that is not currently rendered. Editing a
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 11 parts, 0 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 13 parts, 0 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -30,6 +30,11 @@ symbols. Selection edits no amount and performs no unit conversion. Catalog type
30
30
  resolution are documented in the
31
31
  [catalog helper reference](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/forms.md#country-time-zone-and-unit-catalog-helpers).
32
32
 
33
+ The shared `part="limit"` notice uses `catalogPickerInputLimit` for original input omitted beyond
34
+ the 1,024-position catalog ceiling. It remains separate from popup row overflow. Snapshot rebinds,
35
+ fresh replacement/default clearing, quiet mounting/reconnection, and later polite announcements
36
+ follow the shared field contract.
37
+
33
38
  **Field API:** `label`, `hint`, `errorText` (`error-text`), `placeholder`, `accessibleLabel`
34
39
  (`aria-label`), `name`, `form`, `value`, `defaultValue`, `required`, `disabled`, `customError`
35
40
  (`custom-error`), `size`, `clearable`, `searchable`, `topLayer` (`top-layer`),
@@ -42,8 +47,8 @@ Defaults and form/editing methods follow the
42
47
 
43
48
  **Events:** `input`, `lr-input`, `change`, `lr-change`, `focus`, `blur`, `lr-invalid`.
44
49
  **Slots:** `label`, `hint`, `error`.
45
- **CSS parts:** `form-control`, `form-control-label`, `hint`, `error`, `select-trigger`,
46
- `select-display-input`, `select-listbox`, `select-option`, `select-option-sub`, `select-group-label`,
50
+ **CSS parts:** `form-control`, `form-control-label`, `hint`, `error`, `limit`, `select-trigger`,
51
+ `select-display-input`, `select-listbox`, `select-option`, `select-option-overflow`, `select-option-sub`, `select-group-label`,
47
52
  `select-clear-button`.
48
53
 
49
54
  ```html
@@ -34,6 +34,8 @@ visible but disabled while live children are unavailable; after hydration, each
34
34
  title/poster/duration and native `inert` state become authoritative in a corrective update that
35
35
  reuses the server-rendered row nodes. Once live children have been observed, later removal does not
36
36
  make stale seed rows reappear.
37
+ Live-child updates no longer scan the superseded seed metadata. Removing every adopted child
38
+ keeps live-child ownership; it does not reactivate the original seed rows.
37
39
 
38
40
  **Methods:** `goTo(index)` selects a finite integer direct-child index; invalid, fractional, and
39
41
  inert-child indexes are no-ops. Calling it for the current index still emits `lr-video-change`, matching
@@ -46,7 +46,9 @@ indexOfKey?(key): number }`. When set it takes precedence over `items`. The inde
46
46
  target an indexed source: the list never performs a count-sized fallback scan; invalid or
47
47
  out-of-range results mean no match. An array source receives the same clone-owned frozen sequence
48
48
  and row-identity contract as `items`; an indexed-source object passes through by identity and is
49
- not capped, so use one beyond 10,000 rows. `groups` keeps at most 10,000 entries and 50,000 nested values.
49
+ not capped, so use one beyond 10,000 rows. After changing an indexed count or callback closure,
50
+ call `requestUpdate()` to refresh the source and active-key lookup; this also works when a
51
+ named property update is pending. `groups` keeps at most 10,000 entries and 50,000 nested values.
50
52
  - `renderItem: (item: unknown, index: number) => unknown = () => nothing` (attribute: false) — renders
51
53
  one row's content, typically returning a `lit-html` `TemplateResult`. JS-only. The returned value
52
54
  is stamped inside `<lr-virtual-list>`'s own shadow root, not the caller's light DOM, so
@@ -189,18 +191,25 @@ In auto-height mode, estimate-based jumps are corrected as row and group-marker
189
191
  That correction is bound to the source, key function, and target identity and is canceled on a new
190
192
  target, data replacement, manual scroll intent, or disconnect, so late observations cannot pull a
191
193
  newer view back to stale content.
192
- `offsetForIndex(index)` returns the pixel top row `index` renders at, in the same coordinate space as
193
- the scroll container's `scrollTop`; under an external `scrollElement` that space is unchanged — it
194
+ `offsetForIndex(index)` returns the logical pixel top of row `index`; under an external
195
+ `scrollElement` that space is unchanged — it
194
196
  measures from the top of the list itself, not from the top of the external scroller's content, and
195
197
  the component converts between the two. It is clamped to `0…count`, so `offsetForIndex(count)`
196
- is the total content height and an empty list is always `0`. `indexAtOffset(px)` is its inverse — the
198
+ is the logical total content height and an empty list is always `0`. `indexAtOffset(px)` is its inverse — the
197
199
  row whose box contains that offset, clamped at both ends, `-1` for an empty list — so
198
- `indexAtOffset(offsetForIndex(i)) === i` and `indexAtOffset(scrollContainer.scrollTop)` is the row at
199
- the top of the viewport. In `row-height="auto"` mode both are estimate-based for any row that (or
200
+ `indexAtOffset(offsetForIndex(i)) === i`. Native `scrollTop` shares this logical space only while
201
+ scrollbar scaling is inactive. In `row-height="auto"` mode both are estimate-based for any row that (or
200
202
  above which) has not been measured yet, and converge as those `ResizeObserver` measurements land;
201
203
  fixed numeric `row-height` offsets are exact from the first render. Both read the most recent render,
202
204
  so `await el.updateComplete` after assigning `items` or `source` before querying.
203
205
 
206
+ Above 8,000,000 logical pixels, the list scales native scrollbar travel below browser layout limits.
207
+ Visible row heights and adjacent spacing remain unchanged. Position methods, `active-item-id` and
208
+ `lr-virtual-scroll` use logical pixels; native `scrollContainer.scrollTop` uses compressed scrollbar
209
+ space. Scaling emits a one-time development warning and also applies with an external
210
+ `scrollElement`. Use the component's position methods for large indexed sources instead of assigning
211
+ logical offsets to native `scrollTop`.
212
+
204
213
  **Getters:** `scrollContainer: HTMLElement | undefined` — the real scroll container (`[part="base"]`),
205
214
  `undefined` before the first render; for a host that needs the live scroll position or wants to scroll
206
215
  the list itself without reaching into the shadow root. While `scrollElement` is set this element
@@ -235,8 +244,8 @@ changes, this reports _sub-row_ movement, which is what scroll-linked layout nee
235
244
  **CSS parts:** `base` (the scrollable container, `role="list"` — or `role="rowgroup"` in
236
245
  `item-role="row"` mode — `tabindex="0"`; under an external `scrollElement` it stops scrolling, drops
237
246
  that `tabindex` and its hover outline, and sizes itself to the list's full virtual extent instead of
238
- `--lr-virtual-list-height`), `spacer` (the full-content-height inner element
239
- establishing true scroll extent; `role="presentation"` in `item-role="row"` mode), `row` (one
247
+ `--lr-virtual-list-height`), `spacer` (the inner element establishing the physical scroll extent,
248
+ compressed for very large sources; `role="presentation"` in `item-role="row"` mode), `row` (one
240
249
  rendered row's absolutely-positioned wrapper, `role="listitem"` — or `role="row"` with
241
250
  `aria-rowindex` in `item-role="row"` mode), `group` (a `groups` entry's positioned marker; not
242
251
  rendered for an entry whose `label` is the empty string), `sticky-group` (the pinned copy of the
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [conversation](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/conversation.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 18 parts, 34 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 19 parts, 34 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -18,7 +18,7 @@
18
18
 
19
19
  Override `--lr-voice-picker-trigger-padding`, `--lr-voice-picker-font-size`, and `--lr-voice-picker-expand-size` for trigger spacing, text size, and the expand control’s minimum target cap.
20
20
 
21
- The voice list follows the [shared surface treatment](shared/styles-and-tokens.md);
21
+ The voice list follows the [shared surface treatment](../shared/styles-and-tokens.md);
22
22
  its editing field retains an opaque fill.
23
23
 
24
24
  A TTS voice selector over a host-supplied `catalog`, mirroring `lr-model-select`'s
@@ -64,6 +64,11 @@ voice list; omit (or leave empty) to fall back to plain free-text entry; replaci
64
64
  internal preview before the rendered candidate changes. Ids use the shared unique, nonempty,
65
65
  first-wins catalog rule documented under `lr-model-select`, including preview lookup. Assignments
66
66
  become bounded clone-owned frozen snapshots; create and reassign a new array after row changes.
67
+ Admission retains the first 1,024 source rows within the shared 50,000-value deep snapshot budget;
68
+ normalization examines that admitted prefix. The localized `limit` part reports omitted input
69
+ through `catalogPickerInputLimit`. A synthetic row for a committed value outside the catalog can
70
+ still be appended. Closed listboxes contain no option rows after their exit transition; trigger
71
+ labels and free-text behavior remain available.
67
72
  `allowCustom: boolean = false` (attribute
68
73
  `allow-custom`, reflected) — let the user type/commit a value that isn't in `catalog`.
69
74
  `withoutPreview: boolean = false` (attribute `without-preview`, reflected) — renders no preview
@@ -141,7 +146,7 @@ constraint validation (own `disabled` or `readonly`, or an ancestor `<fieldset d
141
146
  reports no violation and publishes neither `:state(invalid)` nor
142
147
  `:state(user-invalid)`.
143
148
 
144
- **CSS parts:** `form-control` (the complete field frame), `form-control-label`, `trigger` (closed-dropdown mode), `combobox`/`combobox-input`
149
+ **CSS parts:** `limit` (input-loss notice), `form-control` (the complete field frame), `form-control-label`, `trigger` (closed-dropdown mode), `combobox`/`combobox-input`
145
150
  (free-text mode), `provider-badge`, `listbox`, `option`, `option-icon` (an object-shaped catalog
146
151
  row's optional decorative leading icon), `option-label`, `option-meta` (the quiet
147
152
  `language · description` second line), `option-badge` (the "not in catalog" badge on a synthetic