@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: [retrieval](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/retrieval.md)
10
10
  - **Deprecated event** `lr-select` since `26.0.0`; use event `@lr-selection-change`; removal not before `28.0.0` — lr-selection-change is the library's one name for a changed selection (detail chunkIds is selectedChunkIds); the alias fires right after it for one major.
11
11
  - **Optional peers** none
12
- - **Themeable via** 29 parts, 1 custom property — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 35 parts, 1 custom property — 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
  ---
@@ -22,6 +22,98 @@ compact/expanded switch. Each row wraps exactly one chunk in an internal `lr-chu
22
22
  a single-element array), reusing its score bar, tier coloring, title+page rendering, and expandable
23
23
  text verbatim. Large sets window through an internal `lr-virtual-list`.
24
24
 
25
+ With `dataSource` unset, assignment retains the first 10,000 chunks in a bounded readonly outer snapshot. Admitted record
26
+ identities feed a descriptor-safe copy of the closed display schema, including source fields and
27
+ score breakdowns; `metadata` remains opaque and a locator receives its own bounded snapshot. This
28
+ avoids applying the shared 50,000-value deep-copy budget to arbitrary nested provider data. Replace
29
+ the collection to publish record changes. Canonical records, id/order indexes, and the sorted/grouped
30
+ projection are reused across selection and presentation changes. Replace a custom grouping callback
31
+ when its behavior changes, or issue a keyless `requestUpdate()` to refresh its projection.
32
+
33
+ A localized `[part="limit"]` note reports retained and assigned-source counts above the input
34
+ ceiling, using the effective locale. Initial truncation is silent; a later transition into input
35
+ truncation is announced politely. Virtualization continues to window the admitted result set.
36
+
37
+ **Full-source paging:** `dataSource: RetrievalResultsSource | undefined`
38
+ (attribute: false) supplies the complete logical collection while retaining only bounded pages.
39
+ A defined source takes display precedence over `chunks`; an invalid defined source fails visibly.
40
+ Setting `undefined` restores the current legacy chunks. `sourcePage: number = 0` (`source-page`)
41
+ is zero-based; `sourcePageSize: number = 100` (`source-page-size`) normalizes to 1–500.
42
+ Readonly `sourceTotal: number | null` reports the exact current-query total after success, or
43
+ `null` before success and without a source. Query/page-size changes reset page zero. A total shrink
44
+ receives at most one corrective request for the last valid page.
45
+
46
+ ```ts
47
+ import type { RetrievalResultsSource, RetrievalResultsSourceQuery } from
48
+ "@aceshooting/lyra-ui/components/retrieval/retrieval-results/retrieval-results.class.js";
49
+ import type { LyraPageSource, LyraPageResult, LyraSourceRecord } from
50
+ "@aceshooting/lyra-ui/data-sources.js";
51
+ ```
52
+
53
+ `RetrievalResultsSource` is `LyraPageSource<RetrievalChunk, RetrievalResultsSourceQuery>`.
54
+ The immutable provider `revision` is a nonempty string or finite number. `query({ revision,
55
+ locale, signal, page, pageSize, query })` returns `{ rows, total, groups? }`, where each row is
56
+ `{ key, order, value }`, `value` is a complete `RetrievalChunk`, and `order` is its stable canonical
57
+ source order. Counts/orders are safe nonnegative integers; page keys/orders are unique and the
58
+ returned row count must exactly fill the requested in-bounds page. `lookup(keys, context)` returns
59
+ canonical records for globally present requested IDs, omitting absent ones;
60
+ `locate(key, query, context)` returns an absolute current-query index or `null`.
61
+
62
+ The forwarded query is `{ sort, withoutDedupe, grouping, groupBy, groupLabel, groupOrder }`.
63
+ The provider applies sorting, deduplication and grouping to the complete collection before paging;
64
+ local callbacks never compute a global group from a partial page. Grouped responses require
65
+ `groups: [{ key, label, startIndex, itemCount }]` with globally positioned, nonoverlapping intervals
66
+ covering the page. At most 500 records and 500 intersecting groups are admitted. Each record's
67
+ required rendered strings share a 65,536 UTF-16-unit limit; locator paths have at most 500 segments.
68
+ Malformed or oversized pages fail without silently clipping full chunk text. Keys/group text are
69
+ bounded to 65,536 units each and share a 2,000,000-unit admission budget.
70
+
71
+ With `withoutDedupe: false`, page `key` must equal canonical `value.id`. With `withoutDedupe: true`,
72
+ distinct occurrence keys may show repeated canonical IDs, while selection still uses `value.id`.
73
+ Canonical `lookup` must always return `key === value.id`; page occurrence keys never become selected
74
+ IDs. Provider order is preserved in the visible page.
75
+
76
+ Up to 10,000 explicit `selectedChunkIds` resolve globally in sequential batches of at most 500;
77
+ blanks/duplicates normalize before lookup. Off-page IDs remain selected while unresolved, and only
78
+ a successful global absence proof removes an ID. Complete canonical records are ordered by
79
+ provider `order`, independently of page/query order. The selected-record cache and pending user
80
+ transaction survive paging, query changes and page retry. Selection failure exposes a separate
81
+ retry without emitting a partial selection. External assignment and reconnect/adoption
82
+ reconciliation are silent. A user toggle emits `lr-selection-change` and its guarded deprecated
83
+ `lr-select` alias only after the current complete selection resolves.
84
+
85
+ Source selection event arrays and closed projected record fields are frozen; each record's
86
+ `metadata` remains an opaque reference to the provider-owned value. The component neither deeply
87
+ clones nor freezes that metadata graph. Legacy selection events retain their whole-detail detached,
88
+ deeply frozen snapshot and its existing bounded failure behavior, including `null` on exhaustion.
89
+ This source identity policy applies to both selection event names. `lr-chunk-open` retains its
90
+ existing detail. Source mode suppresses `lr-load-more` and ignores legacy `hasMore`.
91
+
92
+ The source remains host-owned by identity. Reassign even the same provider, or call a keyless
93
+ `requestUpdate()`, to refresh its revision/cache. Named presentation changes reuse accepted data.
94
+ Source replacement, refresh, disconnect and adoption revoke obsolete effects. Each page, selection
95
+ and locate lane allows one physically unsettled provider call and only the latest queued intent;
96
+ ignored aborts retain their permit until settlement. Only the current page/groups, explicit
97
+ selected-record cache and bounded in-progress results are retained, with no full-source corpus.
98
+ `activeChunkId` uses global `locate` once per active/query binding; subsequent manual paging wins
99
+ until that binding changes. Expansion is bounded to the current page. Source-only parts are
100
+ `source-status`, `source-retry`, `source-pagination`, `source-selection-status` and
101
+ `source-selection-retry`, alongside existing row/chunk/metadata parts.
102
+
103
+ The following array processing and sort/group fallback rules describe the legacy route;
104
+ presentation properties also apply to provider rows.
105
+
106
+ **Exported source query declaration:**
107
+
108
+ `RetrievalResultsSourceQuery {
109
+ readonly sort: 'score' | 'none';
110
+ readonly withoutDedupe: boolean;
111
+ readonly grouping: RetrievalResultsGrouping;
112
+ readonly groupBy: LyraRetrievalResults['groupBy'];
113
+ readonly groupLabel: LyraRetrievalResults['groupLabel'];
114
+ readonly groupOrder: LyraRetrievalResults['groupOrder'];
115
+ }`
116
+
25
117
  **Properties:**
26
118
 
27
119
  - `chunks: RetrievalChunk[] = []` (attribute: false) — **`RetrievalChunk`, imported from
@@ -35,13 +127,14 @@ queryId?: string; stage?: string; traceId?: string; scores?: RetrievalScoreBreak
35
127
  Nothing is ever guessed from `metadata` — a chunk with no `locator` simply leaves `anchor`/`page`
36
128
  unset
37
129
  - `selectedChunkIds: string[] = []` (attribute: false) — controlled selection by chunk `id`. Blank
38
- ids, duplicates, and ids absent from the canonical chunk model are pruned. The component updates
130
+ ids, duplicates, and ids absent from the canonical chunk model are pruned in the legacy route;
131
+ source mode resolves presence globally as described above. The component updates
39
132
  its own copy on toggle _then_ emits `lr-selection-change`; reassign to control
40
133
  - `withoutSelection: boolean = false` (attribute `without-selection`, reflected) — omits the per-row
41
134
  `lr-checkbox`.
42
135
  - `withoutDedupe: boolean = false` (attribute `without-dedupe`, reflected) — retained for
43
- compatibility and has no effect; malformed, blank, and later duplicate chunk ids are always omitted
44
- first-wins so identity never becomes ambiguous.
136
+ compatibility in the legacy route, where malformed, blank, and later duplicate chunk ids are
137
+ always omitted first-wins. Source mode supports distinct occurrence keys as described above.
45
138
  - `sort: 'score' | 'none' = 'score'` — `'score'` sorts descending; `'none'` preserves given order
46
139
  - `grouping: 'source' | 'custom' | 'none' = 'none'` — `'source'` buckets rows under a header per
47
140
  `source.id` (the header text is that source's `name`, or a localized "untitled source" when it has
@@ -71,7 +164,8 @@ queryId?: string; stage?: string; traceId?: string; scores?: RetrievalScoreBreak
71
164
  to each row and to the virtual list (which scrolls the matching row into view)
72
165
  - `loading: boolean = false` (reflected)
73
166
  - `hasMore: boolean = false` (attribute `has-more`, reflected) — while virtualized, forwarded to the
74
- virtual list so scroll-near-bottom fires `lr-load-more`; otherwise shows the built-in footer button
167
+ virtual list so scroll-near-bottom fires `lr-load-more`; otherwise shows the built-in footer button.
168
+ Inactive with `dataSource` set
75
169
  - `errorText: string = ''` (attribute `error-text`; spelled plain `error` before 9.0.0) — non-empty
76
170
  replaces the whole result view with a neutral visible message. Caller-supplied text is not
77
171
  localized (app/network data, not library copy). A new non-empty value is announced through a
@@ -131,7 +225,11 @@ virtualized — `::part(row)` reaches it either way), `group-header` (exported f
131
225
  on a selected `row-body`), `metadata` (a `<dl>`; omitted when the chunk has none or while
132
226
  `presentation="compact"`; at most 32 entries, each value formatted within the same bounds as a
133
227
  `lr-retrieval-search` filter value), `metadata-entry`, `metadata-term` (the `<dt>` carrying a metadata key),
134
- `metadata-value` (the `<dd>` carrying its value), `load-more-row`, `load-more`.
228
+ `metadata-value` (the `<dd>` carrying its value), `load-more-row`, `load-more`, `limit` (the
229
+ input-retention notice).
230
+ Source-mode parts: `source-status` (page loading or failure text), `source-retry` (page retry),
231
+ `source-pagination` (provider page navigation), `source-selection-status` (canonical selected-record
232
+ lookup loading or failure), and `source-selection-retry` (retrying that lookup).
135
233
 
136
234
  The per-row `lr-chunk-inspector`'s own parts are forwarded onward under a `chunk-` prefix —
137
235
  `chunk`, `chunk-current`, `chunk-score`, `chunk-score-current`, `chunk-score-bar`,
@@ -9,6 +9,6 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** `chart.js`, `chartjs-plugin-annotation`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
12
- - **Themeable via** 17 parts, 39 custom properties — see `lr-line-chart.md`
12
+ - **Themeable via** 18 parts, 39 custom properties — see `lr-line-chart.md`
13
13
  - **Documented with** `lr-line-chart`: see [lr-line-chart.md](./lr-line-chart.md).
14
14
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
@@ -9,14 +9,14 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 34 parts, 36 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 35 parts, 36 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
  ---
16
16
 
17
17
  ## `lr-select`
18
18
 
19
- Floating form-control panels follow the [shared surface treatment](shared/styles-and-tokens.md).
19
+ Floating form-control panels follow the [shared surface treatment](../shared/styles-and-tokens.md).
20
20
  Editing fields and inline color editors retain opaque interiors.
21
21
 
22
22
  A plain closed-list dropdown — a direct `<lr-*>` counterpart to `<wa-select>`/`<wa-option>`.
@@ -33,7 +33,8 @@ value/form/validity path as a programmatic value write and does not emit `input`
33
33
  **Selecting options in browser tests.** The light-DOM `<lr-option>` children supply option data;
34
34
  the clickable rows are rendered inside `<lr-select>`'s shadow-root listbox as
35
35
  `[part="option"][role="option"]`, each with a `data-value` matching its represented value. Rows
36
- mount the first time the listbox opens, so a closed select has none. Opening makes the committed
36
+ mount when the listbox opens and are removed after it closes, so a settled closed select has none.
37
+ Opening makes the committed
37
38
  option (the first committed one in `multiple`) the active row and scrolls it into view; with
38
39
  nothing committed no row is active until an arrow key.
39
40
  Click the trigger to open the listbox, then target a rendered row. For example, in Playwright:
@@ -50,23 +51,25 @@ await select.locator('[part="option"][data-value="fr"]').click();
50
51
  For an in-page component test with a `LyraSelect` element, the public
51
52
  `@aceshooting/lyra-ui/testing` `chooseOption(selectElement, 'fr')` driver opens the listbox,
52
53
  clicks its first rendered row with that value, and awaits the component update. It also works in
53
- DOM test environments without Playwright; see [interaction drivers](shared/testing-and-utilities.md#driving-a-components-real-activation-path-interaction-drivers).
54
+ DOM test environments without Playwright; see [interaction drivers](../shared/testing-and-utilities.md#driving-a-components-real-activation-path-interaction-drivers).
54
55
 
55
56
  Playwright's locators enter the open shadow root. A light-DOM `lr-option[value="fr"]` has no
56
57
  clickable box in this picker. If multiple options share a value, `data-value` matches every
57
58
  occurrence; narrow by accessible name or assert their order before choosing an occurrence.
58
59
 
59
- Mounted `option.selected` assignments update the picker value and form submission immediately,
60
- including deselection and equal-value writes. Duplicate-valued options retain their individual
61
- occurrence identities. These programmatic writes emit no user input/change event.
60
+ Mounted `option.selected` assignments update the option immediately, including deselection and
61
+ equal-value writes. The owning select reconciles its value and form submission once in the next
62
+ microtask; await one microtask before reading settled parent state. Duplicate-valued options retain
63
+ their individual occurrence identities. These writes emit no user input/change event. Assign the
64
+ parent value array for a bulk replacement.
62
65
 
63
66
  Host `aria-describedby` resolves external guidance onto the trigger before internal value, error,
64
67
  and hint guidance. References track missing targets, replacement, removal/reinsertion, reconnect,
65
68
  and adoption. Removing `label`, `hint`, `help-text`, or `error-text` safely omits the content
66
69
  without changing native `null` property readback; explicit empty strings remain empty.
67
70
 
68
- There is no typing-to-filter and no `filter`/`source`/`empty-text`/`max-render` surface — reach for
69
- `<lr-combobox>` instead whenever any of those apply. Everything else a closed list needs is here:
71
+ There is no typing-to-filter and no `filter`/`source`/`empty-text` surface — reach for
72
+ `<lr-combobox>` whenever those apply. The popup has a bounded `max-render` surface. Other closed-list features include
70
73
  `multiple`, `max-options-visible`, `with-clear`, `getTag`, `placement`, `appearance`, and `pill`.
71
74
 
72
75
  The trigger and its overlaid multi-select tag row accept constrained allocation. Long selected
@@ -208,6 +211,12 @@ the normal combobox trigger continues to expose `aria-required`.
208
211
  `multiple` mode before the rest collapse behind a localized "+N" chip. `0` removes the cap
209
212
  entirely. Sanitized to a finite, non-negative integer: a fractional value truncates, a negative
210
213
  one clamps to `0` (i.e. uncapped), and a non-finite one falls back to `3`
214
+ - `maxRender: number = 200` (attribute `max-render`) — ordinary popup prefix size, retaining
215
+ selected and active options within an absolute 1,000-row ceiling. The active option has priority;
216
+ oversized selections remain committed even when every selected row cannot mount. Zero omits
217
+ the ordinary prefix while retaining selected/active rows; non-finite values use 200. Rows keep
218
+ source order. `option-overflow` reports omitted rows, which cannot be reached by scrolling;
219
+ use a filterable combobox or async source for larger searchable catalogs
211
220
  - `withClear: boolean = false` (attribute `with-clear`, reflected) — renders a clear button while
212
221
  anything is selected (and nothing at all while the selection is empty). It sits in the trigger's
213
222
  inline-end band as a **sibling** of the trigger rather than a child of it — same nesting reason as
@@ -360,7 +369,8 @@ following option rows; options with an empty `group` get no heading or group wra
360
369
  `lr-combobox`'s identical parts), `option-label`,
361
370
  `option-sub` (a row's secondary line, when `sub` is set),
362
371
  `option-badge` (the localized "not in catalog" badge on a synthetic unmatched-value row, rendered
363
- only while `with-unknown-option` is set), `expand-icon`, `error`, and
372
+ only while `with-unknown-option` is set), `option-overflow` (the localized count of omitted popup
373
+ rows), `expand-icon`, `error`, and
364
374
  `hint`/`form-control-help-text` (compatibility names on the same supporting-text node).
365
375
 
366
376
  **TypeScript:** `LyraSelect<Multiple extends boolean = boolean>` — `value`/`defaultValue` and the
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 12 parts, 7 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 15 parts, 7 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
  ---
@@ -42,7 +42,7 @@ refreshes do not move focus. A queued Arrow/Home/End focus is bound to the curre
42
42
  identity and connection generation, so a same-turn replacement or disconnect/reconnect cannot
43
43
  focus an unrelated cell that merely inherited the old numeric index.
44
44
 
45
- High-cardinality strips retain at most the first 10,000 assigned items and categories as detached,
45
+ With `source` unset, high-cardinality strips retain at most the first 10,000 assigned items and categories as detached,
46
46
  frozen canonical snapshots; reassign either collection after changing it. At most 200 cells are
47
47
  rendered. **At or below that cap each cell is one item. Past it the strip becomes a span-preserving
48
48
  overview rather than a window:** the retained items are distributed over exactly 200 contiguous
@@ -58,6 +58,93 @@ generated `aria-label` so assistive technology learns the cells are ranges. The
58
58
  likewise mounts at most 200 categories and exposes `[part="legend-limit"]` as a rendered/total
59
59
  numeric disclosure.
60
60
 
61
+ **Complete indexed source:** `source: LyraSequenceSource<SequenceStripItem> | null = null`
62
+ (attribute: false) takes precedence over `items`, preserving the provider's identity. `null` or
63
+ `undefined` restores the current legacy items; other invalid defined values fail visibly.
64
+ Reassign even the same source, or call a keyless `requestUpdate()`, after revision/state changes.
65
+ Named theme, strings and legend paints reuse accepted data; locale, disconnect/reconnect and
66
+ adoption revoke obsolete requests/effects. Providers should honor abort signals; ignored aborts
67
+ keep physical request permits occupied until settlement.
68
+
69
+ ```ts
70
+ import type { LyraSequenceSource, LyraSequenceRangeSummary, SequenceStripItem } from
71
+ "@aceshooting/lyra-ui/components/data/sequence-strip/sequence-strip.class.js";
72
+ import type { LyraSourceRequest, LyraSourceValue } from
73
+ "@aceshooting/lyra-ui/utilities/data-preparation.js";
74
+ ```
75
+
76
+ `LyraSequenceSource<T>` supplies immutable `revision` (a nonempty string or finite number), safe
77
+ nonnegative integer `length`, and
78
+ `getItem(index, { signal }): LyraSourceValue<T | null>`,
79
+ `findIndex(id, { signal }): LyraSourceValue<number | null>`, and
80
+ `summarize({ signal, startIndex, endIndex, maxRanges }): LyraSourceValue<readonly
81
+ LyraSequenceRangeSummary[]>`. The summary request spans `[0, length)` and asks for at most
82
+ `min(length, 200)` ranges; an empty source needs no provider read. Each summary has
83
+ `{ startIndex, endIndex, categoryCounts, markerCount, enabledCount }`: ascending, nonempty,
84
+ half-open ranges must partition the complete logical sequence without gaps or overlap.
85
+ `categoryCounts` is an own-data string-to-positive-safe-integer dictionary whose counts sum to
86
+ the range length; marker/enabled counts are safe integers from zero to that length. The provider
87
+ owns immutable snapshots, indexing and the truth of complete-source totals; admission verifies
88
+ bounded shape and arithmetic consistency.
89
+
90
+ At most 200 ranges, 200 distinct global category IDs and 40,000 category-count pairs are admitted.
91
+ Summary category IDs are nonblank and at most 1,024 UTF-16 units. Exact `SequenceStripItem` records
92
+ have own-data `id`, `categoryId`, optional `label`, optional boolean `marker`/`disabled`; the aggregate
93
+ length of `id`/`categoryId`/`label` is at most 65,536 UTF-16 units. Malformed, accessor-backed or
94
+ oversized records fail without clipped labels or compacted indices. The component retains bounded
95
+ current/pending summaries and one exact record, with one physical summary request and one physical
96
+ exact request; only the latest queued intent survives. String lookup and its subsequent exact read
97
+ are sequential. There is no raw-item scan or complete source array in the component.
98
+
99
+ Overview range widths are proportional to their actual lengths. Global category and marker counts
100
+ include every range, and `selectedIndex` highlights its containing range. Source dominant-category
101
+ ties use configured `categories` order, then lexical category ID; the legacy route retains its
102
+ earliest-occurrence rule. A source range is disabled only when `enabledCount === 0`; mixed ranges
103
+ report their enabled count. Overview activation still resolves the range's first exact item and
104
+ emits the unchanged `lr-item-activate` `{ index, id, item }` with its original zero-based index and
105
+ ID; a disabled or unavailable first item emits nothing. Hover and overview focus use the summary,
106
+ including bounds, dominant category, marker count and enabled/total counts, without exact reads.
107
+ `data-range-end` remains inclusive in rendered range attributes; provider bounds are half-open.
108
+
109
+ `revealSourceItem(target: number | string): Promise<boolean>` resolves an original index or stable
110
+ ID, updates the separate exact inspection cursor and focuses its control while focus ownership is
111
+ still current. ID lookup uses `findIndex` then verifies the returned `getItem` ID. It does not
112
+ change `selectedIndex` or emit activation. Disabled exact items remain inspectable and resolve
113
+ `true`; absent, invalid, unavailable or revoked targets resolve `false`. The `source-exact` native
114
+ button supports RTL-aware Left/Right and Home/End over the complete original index range, including
115
+ missing/disabled positions; it does not scan for enabled items. Enter/Space or click activates only
116
+ the current admitted enabled exact item. Pending/unavailable detail keeps a focusable localized
117
+ inspector fallback. Controlled `selectedIndex` changes resolve exact detail silently. Source-only
118
+ parts are `source-status`, `source-retry` and `source-exact`; `base`, `cell`, `marker`, `tooltip`,
119
+ `bucket-summary`, `empty` and existing legend parts remain applicable. Initial errors are quiet;
120
+ later status transitions use localized light-DOM announcements. No completion event is added.
121
+
122
+ The following item-array limits and per-item disabled/tie rules apply with `source` unset.
123
+
124
+ **Exported sequence-source declarations:**
125
+
126
+ These declarations use the request/value types and granular class import shown above.
127
+
128
+ `LyraSequenceSource<T> {
129
+ readonly revision: LyraSourceRevision;
130
+ readonly length: number;
131
+ getItem(index: number, request: LyraSourceRequest): LyraSourceValue<T | null>;
132
+ findIndex(id: string, request: LyraSourceRequest): LyraSourceValue<number | null>;
133
+ summarize(request: LyraSourceRequest & {
134
+ readonly startIndex: number;
135
+ readonly endIndex: number;
136
+ readonly maxRanges: number;
137
+ }): LyraSourceValue<readonly LyraSequenceRangeSummary[]>;
138
+ }`
139
+
140
+ `LyraSequenceRangeSummary {
141
+ readonly startIndex: number;
142
+ readonly endIndex: number;
143
+ readonly categoryCounts: Readonly<Record<string, number>>;
144
+ readonly markerCount: number;
145
+ readonly enabledCount: number;
146
+ }`
147
+
61
148
  **Properties:**
62
149
 
63
150
  - `items: readonly SequenceStripItem[] = []` (attribute: false) — `{ readonly id, readonly
@@ -141,6 +228,9 @@ only while the strip is past its 200-cell cap; it replaced 15.x's `window-range`
141
228
  projection window this component no longer has), and `legend-limit`
142
229
  (bounded legend/total).
143
230
 
231
+ With `source` set, additional CSS parts are `source-status` (loading or failure text), `source-retry` (retry the current
232
+ source failure), and `source-exact` (the exact-item inspection and activation button).
233
+
144
234
  **Themeable custom properties:** `--lr-sequence-strip-height` (default `1.5rem` — the strip's
145
235
  block-size), `--lr-sequence-strip-marker-color` (default `var(--lr-color-text)` — the
146
236
  `[part="marker"]` fill, and of the marker legend row's bar), `--lr-sequence-strip-legend-swatch-size`
@@ -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** 13 parts, 10 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 19 parts, 10 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
  ---
@@ -22,12 +22,70 @@ an item and reassign the same source array to publish that change. Unrelated pro
22
22
  reuse the current projection where possible.
23
23
 
24
24
  The horizontal-timeline projection of the same `LyraSpan[]` `<lr-trace-tree>` consumes: a time
25
- axis, one row per span in start order, status-toned bars (Langfuse timeline / Temporal
25
+ axis, one row per legacy span in start order, status-toned bars (Langfuse timeline / Temporal
26
26
  event-history style).
27
27
 
28
- Span views omit whitespace-only IDs and preserve every nonblank business ID exactly, including
28
+ With `treeSource` unset, span views omit whitespace-only IDs and preserve every nonblank business ID exactly, including
29
29
  surrounding whitespace. The first valid admitted duplicate continues to win.
30
30
 
31
+ **Complete provider timeline:** `treeSource: TraceTreeSource | undefined`
32
+ (attribute: false) takes precedence over `spans`; invalid defined providers show a localized failure.
33
+ Setting `undefined` restores current legacy spans. The exact alias is shared with `lr-trace-tree`:
34
+ `LyraHierarchySource<LyraSpan, LyraHierarchyQuery, LyraTraceSourceSummary>`.
35
+
36
+ ```ts
37
+ import type { TraceTreeSource, LyraSpan } from
38
+ "@aceshooting/lyra-ui/components/agent-tools/span-waterfall/span-waterfall.class.js";
39
+ import type { LyraTraceSourceSummary } from "@aceshooting/lyra-ui/data-sources.js";
40
+ ```
41
+
42
+ The immutable provider revision is a nonempty string or finite number. Its `project` receives
43
+ revision/locale/abort signal, prior opaque state, provider reset/toggle/reveal/item-select actions,
44
+ and `{ search: '', hiddenKinds: [] }`. Return `{ state, total, rows, summary, focusIndex? }` as in
45
+ the trace-tree contract. `total` counts all logical nodes including collapsed ones; `rows.count`
46
+ is the complete visible preorder. Counts are safe nonnegative integers with `rows.count <= total`.
47
+ Rows use indexed `itemAt`/`keyAt`/`indexOfKey`, or ranged `read` with required direct `indexOfKey`.
48
+ Provider preorder is displayed as supplied, without local start-time sorting or a full topology
49
+ scan. Each row's `key === value.id`, parent/depth/sibling/child metadata, expanded, selected and
50
+ disabled states are authoritative; span `parentId` does not rebuild source topology.
51
+
52
+ Required `summary: LyraTraceSourceSummary { startMs, endMs }` describes the complete trace,
53
+ independently of the loaded window. Endpoints are finite nonnegative trace-relative milliseconds,
54
+ end is at least start and their difference is finite. Missing/invalid summaries fail visibly;
55
+ current rows and stale legacy extents never substitute. Equal global endpoints remain valid.
56
+ Default axis/bar extent uses that global start/end, so an offscreen tail does not stretch visible
57
+ bars. `viewStartMs`/`viewEndMs` override the display window without reloading the provider: null
58
+ uses the corresponding global endpoint, nonfinite input falls back, finite explicit start/end
59
+ clamp to `0..Number.MAX_SAFE_INTEGER - 1` / `0..Number.MAX_SAFE_INTEGER`, and an end at/before start
60
+ uses `start + 1` for drawing. Source summary values remain unchanged by display overrides.
61
+
62
+ Closed source display records retain id/name/kind/status/start/end; start is finite/nonnegative
63
+ and an explicit end finite and at least start. Existing kind/status normalization applies.
64
+ Oversized strings/rows fail without clipping: keys/state/display strings are at most 65,536 UTF-16
65
+ units each, row text including key/parent accounting at most 65,536, and cache/staging/focused-row
66
+ plus projection state share 2,000,000 payload units. Four 100-row pages (400 rows) plus one focused
67
+ ready row are retained; at most 301 rows mount. Range reads request at most 100 rows with two
68
+ physical reads pending; projection calls serialize with only the latest intent queued. Global
69
+ uniqueness, immutable consistency and full trace summary truth remain provider obligations.
70
+
71
+ `revealSourceKey(key: string): Promise<boolean>` directly resolves a full-source key, opens its
72
+ ancestors and focuses its row. It returns false for missing, disabled, invalid, failed, revoked or
73
+ unset-source targets. Home/End reaches full visible-preorder endpoints; branch navigation is
74
+ RTL-aware and disabled-row traversal is bounded to 32 candidates. Controlled `activeSpanId` paints
75
+ current state and reveals once per binding/ID without changing on activation. Accepted item
76
+ activation emits only existing `lr-span-select { spanId }`. Expansion uses provider actions;
77
+ there is no new public toggle event. `source-row` owns the single treeitem/focus/activation target,
78
+ while its duration bar is decorative, unlike the legacy interactive bar below.
79
+
80
+ Reassign even the same provider, or call a keyless `requestUpdate()`, after revision/state changes.
81
+ Named display/selection/view-window paints reuse accepted data. Locale/lifecycle/source changes
82
+ revoke obsolete requests, controls, reveal effects and announcements; ignored aborts keep physical
83
+ permits until settlement. Localized loading/error/empty/retry and source counts do not turn newly
84
+ loaded historical spans into status-change announcements. Source-only parts are `source-list`,
85
+ `source-row`, `source-label`, `source-toggle`, `source-status` and `source-error`; existing axis,
86
+ name/bar/meta/status/duration parts remain applicable. The following array admission/sorting and
87
+ interactive-bar descriptions apply with `treeSource` unset.
88
+
31
89
  **Properties:** `spans: LyraSpan[] = []` (attribute: false) — `LyraSpan { id: string; parentId?:
32
90
  string; name: string; kind: 'agent' | 'llm' | 'tool' | 'retriever' | 'embedding' | 'other';
33
91
  startMs: number; endMs?: number; status: 'pending' | 'running' | 'success' | 'error' | 'denied' | 'incomplete' | 'unknown';
@@ -38,12 +96,19 @@ by the host (e.g. `"$0.0012"`) and rendered verbatim, never parsed or summed. On
38
96
  both this component (timeline projection via `startMs`/`endMs`) and `lr-trace-tree` (hierarchy
39
97
  projection via `parentId`) — never two shapes. Foreign runtime `kind` values render as `'other'`;
40
98
  explicitly unrecognized `status` values render the localized neutral `'unknown'` state, while an
41
- absent status renders `'pending'`. Raw provider status text is never shown. At most 500 unique valid
99
+ absent status renders `'pending'`. Raw provider status text is never shown. Assignment retains the
100
+ first 10,000 source entries in a bounded readonly outer snapshot; admitted row identities feed a
101
+ descriptor-safe copy of the closed span display schema, so opaque provider fields do not consume
102
+ the shared deep-copy budget. Reassign the collection after record changes. At most 500 unique valid
42
103
  spans mount; when `activeSpanId` resolves beyond
43
104
  the ordinary input-order budget, that span and its ancestor path reserve positions so the
44
- controlled active state remains visible. A localized `[part="limit"]` note exposes truncation. The
45
- time axis always scales to the whole trace, measured before that 500-span cap is applied, so a
46
- truncated tail can never shrink the axis and stretch the surviving bars across the track.
105
+ controlled active state remains visible. A localized `[part="limit"]` note reports the actual
106
+ number shown and the assigned source count when either ceiling omits entries. Counts use the
107
+ effective locale; initial truncation stays silent and a later transition into truncation is
108
+ announced politely. The time axis scales to the full admitted trace, measured before the 500-span
109
+ cap is applied, so spans omitted only by that render cap cannot shrink the axis and stretch the
110
+ surviving bars across the track. Active changes within the ordinary window reuse the existing
111
+ projection and sort; reserving an outside active path can change the projection.
47
112
  `activeSpanId: string | null = null`
48
113
  (attribute `active-span-id`), `viewStartMs: number | null = null` (attribute `view-start-ms`) and
49
114
  `viewEndMs: number | null = null` (attribute `view-end-ms`) — override the auto-computed time
@@ -64,10 +129,15 @@ Space).
64
129
  **CSS parts:** `base`, `axis` (the time-ruler row, hidden when `without-axis` is set), `tick`, `tick-label`,
65
130
  `row`, `name` (the row's name gutter), `bar-track`, `bar` (the interactive, focusable status-toned
66
131
  bar), `meta` (secondary row info, shown inline under 480px), `status-text`, `duration`, `empty` (shown
67
- when `spans` is empty), `limit` (the 500-span projection notice), and `live-region`.
132
+ when `spans` is empty), `limit` (the actual shown/source count for projection or input truncation).
68
133
  The interactive `bar` keeps a 24px minimum target in both axes even when its duration-derived
69
134
  paint width would otherwise be only a few pixels.
70
135
 
136
+ With `treeSource` set, additional CSS parts are `source-list` (bounded provider virtual viewport), `source-row` (flat
137
+ logical tree item and focus owner), `source-label` (row content), `source-toggle` (expand/collapse
138
+ or retry button), `source-status` (loading, full-source count or empty text), and `source-error`
139
+ (localized projection or row failure).
140
+
71
141
  The terminal axis tick is end-aligned so its label remains inside the allocated chart width, and an
72
142
  interior tick label that would overprint a neighbour is hidden (the terminal label is kept). Roving
73
143
  keyboard focus is computed from the currently rendered/filtered span ids, so a hidden active span
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecated part** `base` since `8.0.0`; use part `::part(sparkline)`; removal not before `10.0.0` — The sparkline part names the rendered SVG wrapper unambiguously; base remains on that same node during the compatibility window. That version is a policy floor, not a plan: `wa-sparkline` still publishes its own deprecated `base` part, so this alias is removed only when upstream's is.
11
11
  - **Optional peers** none
12
- - **Themeable via** 5 parts, 3 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 6 parts, 3 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
  ---
@@ -23,6 +23,13 @@ both dimensions through the aspect ratio.
23
23
  An empty or removed `data` attribute uses the `values` collection. With no usable fallback samples,
24
24
  no trend path is rendered. Attribute removal preserves `null` property readback, and supplying later
25
25
  space-separated samples restores the attribute-driven path.
26
+ Derived values reuse the input array identity. Reassign after changes, or call `requestUpdate()`
27
+ after mutating the current array, to refresh the projection.
28
+ Large inputs retain at most 500 plotted samples, using the first and last finite samples plus
29
+ bucket minima and maxima in source order. The accessible summary reports the full finite count
30
+ and actual final value. Admission scans the current array or numeric string once without keeping
31
+ a second full numeric array; this existing input path still performs synchronous work proportional
32
+ to input length. Invalid samples are omitted, so plotted positions refer to finite-sample order.
26
33
 
27
34
  **Properties:**
28
35
 
@@ -51,13 +58,38 @@ space-separated samples restores the attribute-driven path.
51
58
  (including an intentional empty value), then nonempty `label`, then a nonempty programmatic
52
59
  `accessibleLabel`, then the localized generated summary
53
60
 
61
+ **Prepared whole-source input:**
62
+
63
+ - `preparedData: LyraPreparedSeriesData | null = null` (attribute: false) — accepts exactly one
64
+ ordered series with at most 500 semantic samples. While non-null it takes precedence over
65
+ `data` and `values`, without reading either legacy input. Clearing it restores the legacy route.
66
+ Invalid, accessor-backed, multiseries or oversized descriptors show localized unavailable text
67
+ through `status`; they are never resampled or replaced by the raw fallback.
68
+ - Geometry uses original numeric x positions against the full `xDomain`, mirrored for RTL, and
69
+ the full `yDomain`; explicit `min`/`max` still override the y scale. Source-index order is kept
70
+ even when x is nonmonotonic. `breakBefore` splits every curve mode and each fill, so gaps are
71
+ never joined. Valid empty/all-invalid input remains an empty graphic.
72
+ - The generated accessible summary reports full valid/invalid counts, displayed sample count,
73
+ full y domain and endpoint trend. The naming precedence above still applies.
74
+ - Assignment, including the same reference, or explicit keyless `requestUpdate()` recaptures
75
+ mutable descriptors. Named presentation updates reuse the bounded capture. Disconnect releases
76
+ captured geometry; reconnect captures it again. The property still retains the caller's input
77
+ and its closures until replaced or cleared.
78
+
79
+ Prepare data in host code with `prepareLyraSeriesData`, imported from
80
+ `@aceshooting/lyra-ui/utilities/data-preparation.js` (the same module exports
81
+ `LyraPreparedSeriesData`). Preparation scans all source positions in bounded yielding chunks and
82
+ accepts an `AbortSignal`; the host owns that work, cancellation and assignment of the current
83
+ result. Sparkline never calls `getPoint` or `queryRange` and starts no asynchronous source request.
84
+ It adds no table, CSV or source-selection event.
85
+
54
86
  **Events:** none.
55
87
 
56
88
  **Slots:** none.
57
89
 
58
90
  **CSS parts:** `sparkline` and deprecated `base` are aliases on the same outer SVG, `fill` is the
59
91
  area path for solid/gradient appearance, `line` is the stroke path, and the additive `bar` is each
60
- extension-mode rectangle.
92
+ extension-mode rectangle. `status` is the visible invalid-prepared-input message.
61
93
 
62
94
  **Themeable custom properties:** `--fill-color` (area/gradient stop color), `--line-color` (stroke
63
95
  color), and `--line-width` (stroke width). Each reads through the live CSS cascade; line/fill
@@ -86,15 +118,14 @@ No canvas bridge or manual refresh is needed.
86
118
  - flat data (every value equal, so the auto-computed range spans zero) now renders a centered
87
119
  midline/mid-height bars instead of collapsing every point to the bottom edge, and a single-value
88
120
  additive `values` series renders a visible flat line. Mirrored `data` deliberately requires two
89
- values. **Every** rendering mode
90
- (`mark="line"` with any appearance, or `mark="bar"`) decimates a `values` array past 500 points
91
- down to at most 500 plotted
92
- samples — evenly sampled by index, always keeping the first and last value exactly, not
93
- aggregated/averaged. `mark="bar"` caps at 500 rendered `<rect>`s directly; line marks cap the
94
- point count baked into the single `<path>`'s `d` string instead (an uncapped path string also
95
- grows unbounded, even though the element count stays at one `<path>`). Auto `min`/`max` is still
96
- scanned from the _full_ pre-decimation `values` array, so a real extreme value that decimation
97
- happens to drop can't silently narrow the rendered scale.
121
+ values. Every legacy rendering mode (`mark="line"` with any appearance, or `mark="bar"`)
122
+ retains at most 500 finite samples from `values` or numeric `data`: the first and last finite
123
+ samples plus each source bucket's minimum and maximum, deduplicated and kept in source order.
124
+ Buckets follow array positions or token offsets in the source string; plotted x positions follow
125
+ finite-sample order. Values are never averaged, and global extrema are retained, so the automatic
126
+ scale covers the full finite input range. `mark="bar"` renders at most 500 `<rect>`s; line marks
127
+ bound the sample count in their path geometry. Prepared input is already bounded and is not
128
+ reduced again.
98
129
  - Point order mirrors under RTL while the numeric sample order remains unchanged. There are no
99
130
  animations, so reduced-motion mode needs no alternate timing branch.
100
131
  - **9.0 migration:** rename additive `type="bar"`/`"line"` to `mark="bar"`/`"line"`. Replace