@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)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 18 parts, 13 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 22 parts, 13 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
  ---
@@ -69,6 +69,150 @@ turning the overlay off moves a focused cell button to the canvas application co
69
69
  moves a focused canvas to the matching remembered cell, the first interactive cell, or the stable
70
70
  base when no cell exists. A newer external focus destination is never reclaimed.
71
71
 
72
+ Calendar mode can summarize a complete large event population through host-side daily aggregation.
73
+ Combine repeated events into one `{ date, value }` record per day before assigning
74
+ `data = { kind: 'calendar', days }`: duplicate day records use first-valid identity rather than
75
+ summation. A 365-day contribution view can therefore cover one million events while retaining
76
+ 365 daily totals. Keep the full event count and aggregation provenance beside the visualization;
77
+ the heatmap's day count describes day records. A million distinct dates exceed the limits on day
78
+ count and date span below. Query another bounded date window when needed.
79
+
80
+ **Complete matrix source:** `matrixSource: LyraHeatmapMatrixSource | null = null`
81
+ (attribute: false) opts into provider-owned indexed storage and aggregation. It takes precedence
82
+ over legacy matrix arrays and requires `data.kind === 'matrix'`; a source with calendar data shows
83
+ a localized error. Set `matrixSource = null` to restore the current legacy input. The provider is
84
+ retained by identity. Reassign even the same object, or call a keyless `requestUpdate()`, after
85
+ revision/state changes. Named presentation changes reuse accepted tiles; locale/lifecycle changes
86
+ revoke obsolete effects. Providers should honor abort signals; ignored aborts occupy their physical
87
+ request permits until settlement.
88
+
89
+ ```ts
90
+ import type {
91
+ LyraHeatmapMatrixSource, LyraHeatmapMatrixViewport, LyraHeatmapMatrixReducer,
92
+ LyraHeatmapTile, LyraHeatmapMatrixRangeSelectDetail,
93
+ } from "@aceshooting/lyra-ui/components/data/heatmap/heatmap.class.js";
94
+ import type { LyraSourceRequest, LyraSourceValue, LyraNumericDomain } from
95
+ "@aceshooting/lyra-ui/utilities/data-preparation.js";
96
+ ```
97
+
98
+ The source supplies immutable `revision` (a nonempty string or finite number), safe nonnegative integer `rowCount`/`columnCount`
99
+ (with a safe integer product), and `domain: LyraNumericDomain | null`. This domain describes all
100
+ finite source values; `null` means none. A valid explicit `domain` property still overrides the
101
+ paint scale while the summary reports the provider's complete domain. Signed finite values are
102
+ valid; only `null` represents a missing exact value. Methods may return a value or PromiseLike:
103
+
104
+ - `query(request)` receives `{ signal, rowStart, rowEnd, columnStart, columnEnd, maxCells }` and
105
+ returns readonly `LyraHeatmapTile[]`. The host must supply an aggregation index, pyramid or server;
106
+ the component does not scan raw source cells to create tiles.
107
+ - `getCell(row, column, { signal })` returns `{ value: number | null, rowLabel: string,
108
+ columnLabel: string }` for that exact absolute coordinate. Labels are each at most 1,024 UTF-16
109
+ units; malformed or oversized replies fail visibly without truncation.
110
+
111
+ `matrixViewport: LyraHeatmapMatrixViewport | null = null` (attribute: false) is the zero-based,
112
+ half-open rectangle `{ rowStart, rowEnd, columnStart, columnEnd }`; `null` covers the full matrix.
113
+ Explicit axes must be nonempty, ordered safe integers contained in the source. Invalid new
114
+ rectangles fail visibly without clamping or fallback. On source shrink, an unchanged previously
115
+ accepted viewport keeps its span up to the new dimensions and clamps its origin; a newly assigned
116
+ rectangle is validated afresh. Empty dimensions render an empty state without provider reads.
117
+ `matrixReducer: LyraHeatmapMatrixReducer = 'mean'` (`matrix-reducer`) chooses `'mean' | 'min' | 'max'`
118
+ for tile color; unsupported values fail visibly. Reducer changes repaint accepted tiles.
119
+
120
+ Each tile supplies the viewport fields plus `{ count, validCount, min, max, sum }`. Tiles must
121
+ partition the requested rectangle exactly once, without gaps or overlaps. `count` equals rectangle
122
+ area, `validCount` is a safe integer from zero to `count`, and all statistics are finite and
123
+ consistent with the complete domain. An empty-valid tile has `min: null`, `max: null`, `sum: 0`;
124
+ otherwise extrema are ordered and `sum / validCount` lies within them, allowing a normalized
125
+ `32 * Number.EPSILON` floating tolerance. Admission checks a bounded partition and arithmetic
126
+ consistency; the provider owns the truth of aggregation over unseen records.
127
+
128
+ The square overview allocates from available inline size, with tile budget
129
+ `T = min(normalized maxCells, max(1, floor(plotWidth) ** 2))`; zero-width layouts defer requests.
130
+ The existing `maxCells` default 10,000 and hard ceiling 100,000 apply to tiles here. The component
131
+ retains bounded current/replacement tiles and O(T) partition-validation storage, without geometry
132
+ or occupancy arrays proportional to logical cell count. One physical tile query and only the
133
+ latest queued replacement are allowed. Exact reads share two physical permits, with current and
134
+ pending windows of at most 400 records each plus at most one separately selected record (801 total,
135
+ at most 1,640,448 retained exact-label units). A pending window replaces the old pane atomically;
136
+ obsolete pending buffers are released. Canvas limits remain 16,384 per side and 16,777,216 pixels.
137
+
138
+ `revealSourceCell(row: number, col: number): Promise<boolean>` resolves and focuses an exact source
139
+ coordinate without changing controlled selection or emitting activation. Invalid/out-of-range
140
+ coordinates make no provider call; absent, failed, noninteractive or revoked targets resolve
141
+ `false`. Revealing outside an explicit viewport silently pans a same-size clamped rectangle by
142
+ updating `matrixViewport`; a null/full viewport stays full. Focus restoration respects intervening
143
+ user movement. Arrow keys move exact coordinates using physical left/right even under RTL;
144
+ Home/End reach row endpoints, Ctrl+Home/Ctrl+End source endpoints, and PageUp/PageDown move up to
145
+ 20 rows. Each action examines at most 32 excluded candidates. With `accessibleCells: true`,
146
+ `source-exact-window` is a separate at-most-20×20 exact grid below the overview, with full logical
147
+ ARIA counts and absolute one-based row/column indices; the overview canvas is hidden from assistive
148
+ technology. Without it, the named canvas owns the exact cursor.
149
+
150
+ **Events:** Exact Enter/Space and singleton-tile pointer activation resolve `getCell` and emit the existing
151
+ `lr-cell-activate` `{ row, col, value }` with absolute coordinates; missing `null` maps to `NaN`.
152
+ `cellText`, `cellInteractive` and `cellColor` receive exact values and absolute coordinates, never
153
+ aggregate means. Multi-cell tile pointer activation or Shift+Enter emits noncancelable
154
+ `lr-matrix-range-select` with frozen `LyraHeatmapMatrixRangeSelectDetail`:
155
+ `{ revision, rowStart, rowEnd, columnStart, columnEnd, count, validCount, min, max, sum }`.
156
+ It proposes an aggregate without expanding `selectedCells` or synthesizing exact activation.
157
+ `selectedCell`/bounded `selectedCells` stay controlled and programmatic assignments are silent;
158
+ row/column, drag and Shift-range expansion remain legacy-only. Source geometry is proportional:
159
+ `matrixGeometry` is `undefined` and source paints emit no `lr-matrix-geometry-change`.
160
+
161
+ Source `exportData('csv')` exports the complete current accepted viewport's aggregate tile snapshot,
162
+ with header `rowStart,rowEnd,columnStart,columnEnd,count,validCount,min,max,sum,reducer,value`.
163
+ Coordinates are half-open and zero-based; numbers are unlocalized and missing extrema/reducer
164
+ values are blank. It performs no provider reads and is not a raw-cell export. Loading, error or
165
+ obsolete snapshots export `''`. PNG follows the current bounded overview and existing canvas
166
+ readiness gates. Additional parts are `source-status`, `source-error`, `source-summary`, and
167
+ `source-exact-window`; existing `base`, `canvas`, `cell`, `tooltip` and legend parts apply where
168
+ rendered. The following dense matrix/calendar limits and geometry descriptions apply with
169
+ `matrixSource` unset.
170
+
171
+ **Exported matrix-source declarations:**
172
+
173
+ Inherited viewport/tile fields are repeated to show the complete effective contracts. `HeatmapSourceCell { readonly value: number | null; readonly rowLabel: string; readonly columnLabel: string }` is the exact-cell reply described above.
174
+
175
+ `LyraHeatmapMatrixViewport {
176
+ readonly rowStart: number;
177
+ readonly rowEnd: number;
178
+ readonly columnStart: number;
179
+ readonly columnEnd: number;
180
+ }`
181
+
182
+ `LyraHeatmapTile extends LyraHeatmapMatrixViewport {
183
+ readonly count: number;
184
+ readonly validCount: number;
185
+ readonly min: number | null;
186
+ readonly max: number | null;
187
+ readonly sum: number;
188
+ readonly rowStart: number;
189
+ readonly rowEnd: number;
190
+ readonly columnStart: number;
191
+ readonly columnEnd: number;
192
+ }`
193
+
194
+ `LyraHeatmapMatrixRangeSelectDetail extends LyraHeatmapTile {
195
+ readonly revision: LyraSourceRevision;
196
+ readonly count: number;
197
+ readonly validCount: number;
198
+ readonly min: number | null;
199
+ readonly max: number | null;
200
+ readonly sum: number;
201
+ readonly rowStart: number;
202
+ readonly rowEnd: number;
203
+ readonly columnStart: number;
204
+ readonly columnEnd: number;
205
+ }`
206
+
207
+ `LyraHeatmapMatrixSource {
208
+ readonly revision: LyraSourceRevision;
209
+ readonly rowCount: number;
210
+ readonly columnCount: number;
211
+ readonly domain: LyraNumericDomain | null;
212
+ query(request: LyraSourceRequest & LyraHeatmapMatrixViewport & { readonly maxCells: number }): LyraSourceValue<readonly LyraHeatmapTile[]>;
213
+ getCell(row: number, column: number, request: LyraSourceRequest): LyraSourceValue<HeatmapSourceCell>;
214
+ }`
215
+
72
216
  **Properties:**
73
217
 
74
218
  - `data: HeatmapData = { kind: 'matrix', rowLabels: [], colLabels: [], values: [] }` (attribute:
@@ -88,6 +232,11 @@ weekdayLabelWidth?: number|'auto'; weekdayLabelText?: (jsWeekday:number)=>string
88
232
  pins its width, while `'auto'` measures the widest rendered weekday label without shrinking
89
233
  below the built-in `28px` gutter or growing beyond 40% of the host. Unset preserves the original
90
234
  `28px` geometry; malformed values are ignored.
235
+ - `maxCells: number = 10000` (attribute `max-cells`) — projection budget, normalized to 1–100,000.
236
+ Matrix projection keeps a rectangular prefix within that budget. Calendar input retains at most
237
+ that many days and scales its sparse span proportionally from the default 530 weeks, up to 5,300
238
+ weeks, with a minimum one-week span. The accessible cell overlay remains windowed to 400 buttons,
239
+ and canvas backing-store limits still apply.
91
240
  - `cellSize: number = 22` (attribute `cell-size` — default `22` in matrix mode, `11` in calendar
92
241
  mode when left unset; explicitly setting it now governs both modes' per-cell size alike, and it's
93
242
  ignored in either mode when `fitToWidth` is set)
@@ -455,6 +604,10 @@ bar between them, while `legendStops` is supplied), `legend-stop` (one per `lege
455
604
  closes the legend row, present in both the gradient and the `legendStops` branch),
456
605
  `legend-annotation` (one per labeled `annotations` entry)
457
606
 
607
+ With `matrixSource` set, additional CSS parts are `source-summary` (complete matrix and displayed viewport summary),
608
+ `source-status` (loading text), `source-error` (localized failure), and `source-exact-window`
609
+ (the bounded exact grid rendered when `accessibleCells` is true).
610
+
458
611
  **Themeable custom properties:** `--lr-heatmap-scale-lo` (default `var(--lr-color-brand-quiet)`),
459
612
  `--lr-heatmap-scale-hi` (default `var(--lr-color-brand)`) — the sequential color-ramp endpoints
460
613
  (matrix mode) or quartile-bucket ramp endpoints (calendar mode), resolved via `getComputedStyle` each
@@ -540,10 +693,13 @@ is now literal.
540
693
 
541
694
  **Known gotchas:**
542
695
 
543
- - Matrix projection is capped at 10,000 renderable cells. Calendar input is capped at 10,000
544
- records and 530 weeks, and the color-step/legend-stop/annotation projections are each capped at
545
- 256 entries. `[part="projection-limit"]` and the generated accessible summary disclose every
546
- truncation. The semantic grid mounts at most 400 cell buttons while preserving full navigation.
696
+ - Matrix and calendar projections use `maxCells` (10,000 by default); calendar span scales from
697
+ the default 530 weeks with that budget. Color-step/legend-stop/annotation projections each display
698
+ at most 256 entries. Their owned snapshots and `selectedCells` retain at most 10,000 entries and
699
+ 50,000 cloned values; deeply nested records can reach the value budget first.
700
+ `[part="projection-limit"]` and the generated accessible summary disclose visual projection and
701
+ input loss; changed notices are announced politely. The semantic grid mounts at most 400 cell
702
+ buttons while preserving full navigation.
547
703
  - Calendar duplicates use a first-valid-wins ISO-date identity. Invalid dates are dropped. `data.columnX`
548
704
  and `data.rowY` results must be finite, nonnegative, monotonic and non-overlapping; an invalid,
549
705
  throwing or hostile result safely falls back to the normal coordinate for that position.
@@ -9,7 +9,7 @@
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 this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 18 parts, 39 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,7 +22,7 @@ Bins `values` into `bins` equal-width buckets and renders as a bar chart (extend
22
22
  **Properties:**
23
23
  - `bins: number = 10` — finite values are floored and clamped to 0–1,000 before allocation;
24
24
  non-finite values produce no buckets
25
- - `values: number[] = []` (attribute: false)
25
+ - `values: readonly number[] = []` (attribute: false)
26
26
  - `seriesLabel: string = ''` (attribute `series-label`) — dataset label used for the
27
27
  legend/tooltip/table; empty falls back to localized "Frequency". Inherited `label` keeps its
28
28
  chart-wide accessible-name meaning.
@@ -34,9 +34,10 @@ Bins `values` into `bins` equal-width buckets and renders as a bar chart (extend
34
34
  bucket range strings, so different bin boundaries do not match unless their labels are exactly
35
35
  equal. Horizontal or continuous-x raw configurations do not participate.
36
36
  - `labels`/`datasets`/`type` are **derived, read-only** (installed as getter/setter pairs on the
37
- prototype; direct writes are silently ignored) — `labels`/`datasets` are computed from
38
- `values`/`bins` (memoized per instance, keyed by reference equality on `values` plus the
39
- normalized `bins`), and `type` always reads back `'bar'` regardless of any assignment. This
37
+ prototype; direct writes are silently ignored) — on the legacy raw route, `labels`/`datasets`
38
+ are computed from `values`/`bins` (memoized per instance, keyed by reference equality on `values`
39
+ plus the normalized `bins`). A supplied `distribution` takes precedence and supplies the exact
40
+ bin categories/counts instead. `type` always reads back `'bar'` regardless of any assignment. This
40
41
  specialist owns its controller because a non-bar type would contradict the derived distribution.
41
42
  - All other `LyraChart` properties are inherited and usable: `description`, `grid`, `axes`, `size`, `indexAxis`
42
43
  (`index-axis`), `hiddenDatasets`, `hiddenDatums`, `legendPosition` (`legend-position`),
@@ -46,15 +47,54 @@ Bins `values` into `bins` equal-width buckets and renders as a bar chart (extend
46
47
  `tooltipFooterFormatter`, `area`, `zoomable`, `config`, `height`, `xLabel` (`x-label`),
47
48
  `yLabel` (`y-label`), `y2Label` (`y2-label`), `withoutZeroBaseline` (`without-zero-baseline`),
48
49
  `stacked`, `stackedAxes`, `dataLabels` (`data-labels`), `stackTotals` (`stack-totals`), `withDataTable`
49
- (`with-data-table`), `dataTableToggle` (`data-table-toggle`), `chartArea` (readonly).
50
+ (`with-data-table`), `dataTableToggle` (`data-table-toggle`), `maxRecords` (`max-records`, default
51
+ `1000`, range 2–1,000), `chartArea` (readonly).
50
52
 
51
53
  **Methods:** `resetZoom()`, `refreshTheme()`, and `renderChart()` are inherited; `appendSamples(values,
52
54
  maxSamples?)` appends finite raw samples and keeps a rolling window of the newest `maxSamples`
53
55
  (at most 10,000, also the default; an assigned `values` array longer than that keeps its newest
54
- 10,000 samples, with a development-mode warning).
56
+ 10,000 samples, with a localized `limit` notice). The bounded immutable window reuses existing
57
+ canonical samples without re-admission. Use `distribution` below to represent a larger whole-source distribution.
58
+ Appends inspect newest positions first and stop once the retained window is full. Invalid-heavy
59
+ batches yield after 10,000 inspected positions and may finish asynchronously. Concurrent appends
60
+ apply in call order; assigning `values` or disconnecting cancels unfinished batches. Pending input
61
+ arrays remain caller-owned and must stay unchanged until their batch is applied or canceled.
62
+ Unreadable positions are treated as invalid and do not block later queued appends.
55
63
  `appendData()` remains a working compatibility adapter (no longer deprecated); prefer
56
64
  `appendSamples()` for new code.
57
65
 
66
+ **Prepared whole-source distribution:**
67
+
68
+ - `distribution: LyraHistogramDistribution | null = null` (attribute: false) — exact bounded
69
+ bins, normally from `prepareLyraHistogram`, imported from
70
+ `@aceshooting/lyra-ui/utilities/data-preparation.js` with its `LyraHistogramDistribution` type.
71
+ A supplied distribution takes precedence over `values`, `bins` and inherited `preparedData`.
72
+ Inherited `preparedData` alone is incompatible with histogram bin semantics and fails visibly.
73
+ - Own data properties supply a revision, conserving safe nonnegative source/valid/invalid counts,
74
+ observed `domain` (null only without valid observations), strict finite increasing `edges`,
75
+ exact `binCounts`, `belowCount` and `aboveCount`. There are at most 1,000 bins and 1,001 edges;
76
+ valid empty input may have no edges. Every occupied interval and represented extremum must
77
+ agree with the observed domain and counts. Accessors, sparse arrays and malformed descriptors
78
+ are rejected without invoking getters. All bins must fit effective `maxRecords` (2–1,000) and
79
+ the inherited rectangular accessible-table and metadata budgets; no bins are sampled or merged.
80
+ - Plot, table, CSV and `binnedBuckets()` expose the exact in-range bins. Bins are half-open except
81
+ the final upper edge, which is inclusive. Below/above observations stay in the full summary,
82
+ together with whole-source valid/invalid counts and observed range; they are not invented bars.
83
+ Existing point/datum activation keeps the bin index and frequency.
84
+ - Assignment or explicit keyless `requestUpdate()` recaptures mutable descriptors, including
85
+ same-reference assignments and coalesced updates. Locale and series-label changes rebuild
86
+ bounded labels. Replacing a same-locale catalog requires explicit `requestUpdate()`.
87
+ Distribution assignment cancels unfinished raw appends; raw append methods are inactive while
88
+ it is supplied. Clearing it restores the previous raw values without stale queued commits.
89
+ Disconnect retains the existing cancellation and peer lifecycle.
90
+
91
+ The component retains bounded owned copies and the property retains the caller's descriptor until
92
+ replaced or cleared. It never reads raw samples to render this route. `prepareLyraHistogram` scans
93
+ all positions in bounded yielding chunks and accepts an `AbortSignal`; its source reader execution
94
+ and cancellation remain host-owned. Invalid or overbudget distributions use the inherited visible
95
+ localized error; valid empty/all-invalid distributions remain valid. No new events or parts are
96
+ added; `limit` and the accessible description carry the full distribution summary.
97
+
58
98
  **Events:** `lr-zoom`, `lr-datum-activate`, `lr-point-activate`, `lr-datum-visibility-change-request`
59
99
  (cancelable), `lr-datum-visibility-change`, `lr-legend-visibility-change-request` (cancelable), and
60
100
  `lr-legend-visibility-change` — inherited; `lr-point-activate`'s `index` is the bucket index and
@@ -65,12 +105,17 @@ the bin width, with no fraction digits once the width reaches 10 and no forced t
65
105
  The inherited datum-visibility events apply only to radial controllers; the histogram keeps its
66
106
  bar controller and dataset legend even with `legend-mode="datum"`.
67
107
 
108
+ **Events:** The inherited `lr-source-category-select` and `lr-source-point-select` events are not
109
+ emitted for histogram bins. Inherited `lr-spatial-bin-select` and `lr-spatial-point-select` are
110
+ also not emitted by this fixed-bar specialist: inherited spatial `preparedData` alone is rejected,
111
+ and `distribution` supplies bin categories rather than a spatial route.
112
+
68
113
  **Slots:** default JSON configuration script, `data-table`, `center`.
69
114
 
70
115
  **CSS parts:** `base`, `plot`, `canvas`, `legend`, `legend-item`, `legend-item-hidden`, `legend-swatch`,
71
116
  `sync-crosshair` (inherited decorative category line during synchronization; the native canvas
72
117
  tooltip has no CSS part),
73
- `reset-zoom-button`, `description`, `notices`, `data-table`, `data-table-toggle`, `data-truncation`, `feature-warning`, `center`, `error` (neutral visible message
118
+ `reset-zoom-button`, `description`, `notices`, `data-table`, `data-table-toggle`, `data-truncation`, `limit`, `feature-warning`, `center`, `error` (neutral visible message
74
119
  rendered in place of `canvas` when the optional `chart.js` peer dependency fails to load; the
75
120
  failure transition is announced through the shared document-level light-DOM assertive sink —
76
121
  inherited from `LyraChart`, unaffected by the binning logic).
@@ -113,7 +158,8 @@ their semantics, defaults, and gotchas.
113
158
  - non-finite samples in `values` are dropped before bucketing rather than corrupting bucket-index
114
159
  math; a constant domain produces one truthful single-value bucket, including at numeric extremes.
115
160
  - raw `config.options` and plugins remain available, but `config.type` and `config.data` are ignored:
116
- the histogram owns its bar controller and derives all categories from `values`/`bins`.
161
+ the histogram owns its bar controller and derives categories from `values`/`bins` on the legacy
162
+ raw route, or from `distribution` when provided, which takes precedence.
117
163
  - `values`/`bins`/`seriesLabel` changes join the inherited connected-and-visible redraw path. There is no
118
164
  second post-update refresh, so a same-tick disconnect cannot recreate Chart.js on a detached
119
165
  canvas and off-screen sample updates do not repaint it.
@@ -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
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 17 parts, 1 custom property — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 21 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
  ---
@@ -23,6 +23,18 @@ Nonstring failure details use the localized failed-stage label for row text and
23
23
  announcements. Omitted details stay omitted. Formatting uses the effective locale, and historical
24
24
  failures remain silent on mount.
25
25
 
26
+ Assignment retains the first 10,000 queue items in a bounded readonly outer snapshot. Admitted
27
+ record identities feed a descriptor-safe copy of the closed row/document display fields rather
28
+ than a deep copy of arbitrary provider data, so nested input does not consume the shared
29
+ 50,000-value deep-copy budget. Replace the collection to publish record changes. Normalized rows
30
+ are reused until the admitted items or the resolved localized failure label changes; replacing the
31
+ queue normalizes the new rows once and compares failures with the previous normalized rows.
32
+
33
+ A localized `[part="limit"]` note reports retained and assigned-source counts when the input
34
+ ceiling is exceeded on the legacy items route. Counts use the effective locale. Initial truncation is silent; a later
35
+ transition into input truncation is announced through the shared polite sink, separately from
36
+ failure announcements.
37
+
26
38
  **Properties:**
27
39
 
28
40
  - `items: IngestionQueueItem[] = []` (attribute: false) — `IngestionQueueItem { id: string;
@@ -47,7 +59,7 @@ embeddedChunkCount?: number; attempts?: number; error?: string }` (exported here
47
59
  exactly this many items still render as a plain list. Before 9.0.0 this was spelled
48
60
  `virtualizeThreshold`/`virtualize-threshold` _and_ compared inclusively (`>=`), so a migration
49
61
  that only renames the attribute shifts the switchover point by one item
50
- - `announce: boolean = false` (reflected) — opt-in: announce the failures the queue **already
62
+ - `announce: boolean = false` (reflected) — legacy items route opt-in: announce the failures the queue **already
51
63
  carries** the first time it mounts, instead of staying silent until a row fails later. The
52
64
  mount-time pass reuses the one announcement path a later failure takes — the same shared
53
65
  assertive light-DOM region, the same locale-aware conjunction list of the caller-supplied
@@ -66,6 +78,44 @@ embeddedChunkCount?: number; attempts?: number; error?: string }` (exported here
66
78
  Queue item ids must be nonblank and unique. Malformed rows and later duplicates are omitted
67
79
  first-wins before empty state, counts, virtualization, failure announcements, rendering, or actions.
68
80
 
81
+ **Provider pages:**
82
+
83
+ - `dataSource: IngestionQueueSource | undefined` (attribute: false) —
84
+ `IngestionQueueSource = LyraPageSource<IngestionQueueItem, IngestionQueueSourceQuery>`, exported
85
+ by `@aceshooting/lyra-ui/components/retrieval/ingestion-queue/ingestion-queue.class.js`.
86
+ `LyraPageSource` is exported by `@aceshooting/lyra-ui/data-sources.js`. The query is one frozen
87
+ empty object (`readonly [key: string]: never`); the provider owns queue order and exact total.
88
+ A present source takes precedence over `items`, including invalid sources, which fail visibly.
89
+ Setting `undefined` restores the existing items route and virtualization defaults.
90
+ - `sourcePage: number = 0` (attribute `source-page`) — zero-based provider page, normalized to a
91
+ finite nonnegative safe offset for the effective page size.
92
+ - `sourcePageSize: number = 100` (attribute `source-page-size`) — normalized to 1–500; an effective
93
+ size change resets page zero. Pages above `virtualizeAt` use the existing virtual list.
94
+ - `readonly sourceTotal: number | null` — null without a source, while pending or after failure;
95
+ otherwise the exact global queue total, including settled zero. The compact child pager uses
96
+ one-based pages and unknown total `-1`, disables navigation pending/error, and contains its
97
+ events. A valid stale page corrects once and synchronizes `sourcePage`.
98
+
99
+ Only the current bounded page is retained; source mode never normalizes the legacy inventory.
100
+ Closed row/document display fields are frozen copies with at most 65,536 aggregate UTF-16 text
101
+ units per row. Required malformed records reject the whole page, rather than silently dropping
102
+ rows; source getters are not invoked and arbitrary nested fields are not traversed. Existing stage,
103
+ fallback text and action semantics apply. Historical failures stay quiet on page changes, refresh
104
+ and reconnect even with `announce`; loading/errors use localized source status announcements.
105
+
106
+ Same-source assignment or keyless `requestUpdate()` refreshes source/revision. Named paints and
107
+ string overrides reuse the current page; reconnect replays the current bounded request. Changes to
108
+ source, revision, refresh intent or connection revoke obsolete work. Requests receive an abort
109
+ signal and stale results cannot publish; the provider owns callback execution cost and cooperation
110
+ with cancellation. Rapid changes retain bounded active work and latest intent, without page history
111
+ or a complete queue cache.
112
+
113
+ Only current settled source rows can emit the existing retry/cancel details below. Pending,
114
+ replaced, removed or disconnected source controls cannot act on stale rows. Provider-load failure
115
+ shows `source-status` with a `source-retry` button: it reloads only the current failed page, emits
116
+ no row `lr-retry`, and obsolete load-retry controls are inert. `source-pagination` styles navigation.
117
+ This route adds no public event, table or CSV export.
118
+
69
119
  **Events:**
70
120
 
71
121
  - `lr-retry` (`detail: IngestionRetryEventDetail` = `RetryEventDetail & { itemId: string }` =
@@ -86,7 +136,8 @@ per-item stage label), `item-progress`,
86
136
  `chunkCount` and `embeddedChunkCount` are set), `item-attempts` (only once `attempts > 0`),
87
137
  `item-error` (only for `stage="failed"` with `error` set), `failure-live` (the visually hidden,
88
138
  `aria-hidden` mirror of the last announced batch of fresh failures), `item-actions`,
89
- `retry-button`, `cancel-button`, `empty`.
139
+ `retry-button`, `cancel-button`, `empty`, `limit` (the input-retention notice),
140
+ `source-status`, `source-retry`, `source-pagination`.
90
141
 
91
142
  `failure-live` is a styling and inspection surface and carries no live-region role of its own. The
92
143
  announcement itself goes to the library's shared **light-DOM** assertive region, appended to 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** 10 parts, 9 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 17 parts, 9 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
  ---
@@ -33,22 +33,96 @@ Removing `query` clears matches while retaining null property readback. Before a
33
33
  `searchPrevious()` selects the final match; later next/previous navigation wraps. Navigation may
34
34
  reopen the selected match’s ancestors while unrelated manual collapse remains intact.
35
35
 
36
+ **Complete provider hierarchy:** `treeSource: JsonViewerTreeSource | undefined`
37
+ (attribute: false) supplies a complete logical hierarchy without flattening it or copying it into
38
+ `data`. A defined provider takes display precedence; invalid defined input shows a localized source
39
+ error. Setting `undefined` restores the current `data`. `maxNodes` and `expandDepth` govern only
40
+ the legacy `data` route; `maxHeight` also constrains the source scroller.
41
+
42
+ ```ts
43
+ import type { JsonViewerTreeSource } from
44
+ "@aceshooting/lyra-ui/components/utility/json-viewer/json-viewer.class.js";
45
+ import type {
46
+ LyraHierarchyProjection, LyraHierarchyRow, LyraInspectionNode,
47
+ LyraSourceSearchRequest, LyraSourceSearchResult,
48
+ } from "@aceshooting/lyra-ui/data-sources.js";
49
+ ```
50
+
51
+ `JsonViewerTreeSource` is `LyraHierarchySource<LyraInspectionNode, LyraHierarchyQuery>`.
52
+ Its immutable `revision` is a nonempty string or finite number identifying provider state. `project(request)` receives revision, locale,
53
+ abort signal, previous opaque `state` (initially `null`), `{ search: query, hiddenKinds: [] }`, and
54
+ an action such as `reset`, `toggle` or `reveal`. It returns `{ state, total, rows, focusIndex? }`:
55
+ `total` counts every logical node, including collapsed nodes; `rows.count` is the complete visible
56
+ preorder, with `rows.count <= total`. Counts are safe nonnegative integers. The nonempty opaque
57
+ state token is at most 65,536 UTF-16 units. `rows` supports indexed `itemAt`/`keyAt`/`indexOfKey`,
58
+ or asynchronous `read` with required `indexOfKey`; there is no full-tree lookup scan.
59
+
60
+ Each `LyraHierarchyRow<LyraInspectionNode>` supplies a globally unique nonblank `key`, `parentKey`,
61
+ one-based logical `level`/`position`, exact sibling `setSize`, `childCount`, `expanded`, `selected`,
62
+ and optional `disabled`/`selectionState`. Its closed own-data `value` supplies string `name`,
63
+ string `path` equal to the row key, optional string `value`, and a `kind` from
64
+ `'object' | 'array' | 'scalar' | 'element' | 'attribute' | 'text' | 'comment' | 'processing-instruction'`.
65
+ Keys and each inspection string are at most 65,536 UTF-16 units. The admitted row cache, staging,
66
+ one separately retained focused row and opaque state share a 2,000,000-unit payload budget;
67
+ oversized rows/pages fail visibly instead of clipping a result. The source view mounts at most
68
+ 301 rows and caches four 100-row pages, plus at most one focused row. Range reads request at most
69
+ 100 rows with at most two physical reads pending; projection calls serialize with only the latest
70
+ replacement queued. Global key uniqueness and immutable snapshot consistency remain provider-owned.
71
+
72
+ `revealSourceKey(key: string): Promise<boolean>` asks the provider to open ancestors and focus its
73
+ exact returned row. It resolves `false` for absent, failed, canceled or obsolete targets. Compact
74
+ keys support deeply nested sources without allocating a full ancestor path; logical ARIA depth
75
+ and sibling positions remain exact while visual indentation clamps at 32 levels. Provider
76
+ projections own expansion. Reassign even the same source object, or call a keyless
77
+ `requestUpdate()`, after changing its revision/state. Locale changes, reconnect and adoption refresh
78
+ the projection; named presentation updates reuse accepted data. Replacement, refresh, query changes
79
+ and lifecycle cancellation revoke older search, reveal and copy effects. Providers should honor
80
+ abort signals; ignored aborts retain their physical request permits until settlement.
81
+
82
+ Source `query`/`runSearch()` uses optional provider `search({ revision, locale, signal, query,
83
+ limit })`, which returns `{ hits: [{ key }], total, exhaustive }`. Search covers the complete
84
+ logical hierarchy, counts matching nodes rather than separate key/value occurrences, and retains
85
+ at most 10,000 hits regardless of `maxNodes`; query length is at most 4,096 UTF-16 units. Search-hit
86
+ keys share a separate 2,000,000-unit budget. `exhaustive` means every global hit was returned;
87
+ `total` is the known global total or `null`. `lr-search-change` retains
88
+ `{ query, matchCount, matchCountExact, activeIndex }`; unavailable, partial, invalid and over-budget
89
+ results never claim exactness. The initial cursor is `-1`. `searchNext()`/`searchPrevious()` reveal
90
+ retained hit keys without rerunning global search. `search-status` discloses unavailable/partial
91
+ search, and clearing the query clears its hits and cursor.
92
+
93
+ Source copy controls require both `copyable` and a callable provider `copy`. The request includes
94
+ revision, locale, abort signal, `key`, `scope` and `maxBytes`: scalar rows use `'node'`, containers
95
+ `'subtree'`, and the toolbar uses `'document'` with `key: null`. The provider must return complete
96
+ text within 25 MiB UTF-8; the component never serializes loaded rows as a substitute. Provider or
97
+ byte-budget failures show localized copy failure without clipboard events. A current platform
98
+ write retains the frozen `lr-copy`/`lr-copy-error` outcome and clipboard-only `lr-error` contract.
99
+ Source-only parts are `source-list`, `source-row`, `source-toggle`, `source-label`, `source-status`,
100
+ `source-error`, and `search-status`; `base`, `tree`, `toolbar`, `key`, `value`, and `copy-button`
101
+ also apply. The flat source rows own logical treeitem semantics.
102
+
36
103
  **Properties:**
37
104
 
38
105
  - `data: unknown` (attribute `false` — property-only, not settable via an HTML attribute)
106
+ - `maxNodes: number = 5000` (attribute `max-nodes`) — the shared admission, search and render
107
+ node budget for `data`; effective range 1–50,000. Finite fractions truncate and values clamp to that range;
108
+ non-finite inputs use 5,000. Changing it re-admits the retained original `data`, so raising the
109
+ budget does not require reassigning `data`. The depth ceiling remains 100, and the existing
110
+ localized `limit` part discloses traversal truncation.
39
111
  - `expandDepth?: number` (attribute `expand-depth`) — nodes at or beyond this nesting depth
40
112
  (root = `0`) start collapsed, so only the levels above it start expanded; omitted/`undefined`
41
113
  means nothing auto-collapses
42
114
  - `maxHeight: string = ''` (attribute `max-height`) — a CSS length (e.g. `"20rem"`); once set, the
43
- viewer scrolls internally past this height instead of growing the page. Values that do not parse
115
+ viewer scrolls internally past this height instead of growing the page. Source mode otherwise
116
+ uses a `var(--lr-size-20rem)` height ceiling. Values that do not parse
44
117
  as CSS `max-height`, contain declaration breaks, or contain `url()` are ignored, leaving
45
118
  `--lr-json-viewer-max-height` in control
46
119
  - `copyable: boolean = false` (reflected) — shows copy-to-clipboard affordances: one for the whole
47
120
  value, plus one per node
48
- - `query: string = ''` — case-insensitive substring match against keys/values; matches are
49
- highlighted and their ancestors auto-expanded
121
+ - `query: string = ''` — with `treeSource` unset, case-insensitive substring match against
122
+ keys/values; matches are highlighted and their ancestors auto-expanded. Source matching is
123
+ provider-owned as described above
50
124
 
51
- **Methods:** `runSearch(query)` sets the declarative `query` property and awaits the recompute,
125
+ **Search methods:** `runSearch(query)` sets the declarative `query` property and awaits the recompute,
52
126
  resolving the match count. `searchNext()`/`searchPrevious()`
53
127
  advance/step back a match cursor
54
128
  (wrapping), reveal that selected match even when one of its ancestors was explicitly collapsed,
@@ -56,7 +130,7 @@ mark it as the active `aria-current` result, announce its position, and scroll i
56
130
  they resolve `false` when there are no matches. `clearSearch()` resets `query` to `''`, clearing all
57
131
  matches and the cursor.
58
132
 
59
- **Events:** `lr-copy` (`detail: LyraClipboardWriteSuccess`, `{ ok: true; text: string }`) — fired by
133
+ **Events:** With `treeSource` unset, `lr-copy` (`detail: LyraClipboardWriteSuccess`, `{ ok: true; text: string }`) — fired by
60
134
  the top-level copy button or a per-node one only after the owning browsing context's clipboard write
61
135
  fulfills. `lr-error` (no detail) and `lr-copy-error` (`detail: LyraClipboardWriteFailure`) fire when
62
136
  serialization or clipboard writing fails; the detailed frozen outcome carries `ok: false`, the
@@ -71,7 +145,7 @@ fired whenever the search query, match count, or active-match cursor changes, fr
71
145
  property write. `matchCountExact` is `false` when the bounded traversal only proves a lower bound;
72
146
  the rendered count uses an “at least” prefix in the same case.
73
147
 
74
- **Slots:** none — the tree is rendered entirely from `data`.
148
+ **Slots:** none — the tree is rendered from `data` or `treeSource`.
75
149
 
76
150
  **CSS parts:** `base` (root scroll container, respects `max-height`), `toolbar` (wrapper around the
77
151
  top-level copy button, only rendered when `copyable`), `tree` (wrapper around the rendered node
@@ -88,6 +162,12 @@ clipboard") or a per-node one (aria-label `Copy ${key/type}`, e.g. "Copy age");
88
162
  `copyable`), `limit` (the localized notice rendered below the tree when the depth/node traversal
89
163
  budget truncates rendering or search — absent entirely for any document within budget)
90
164
 
165
+ With `treeSource` set, additional CSS parts are `source-list` (bounded provider virtual viewport), `source-row` (flat
166
+ logical tree item and focus owner), `source-label` (row content), `source-toggle` (expand/collapse
167
+ or retry button), `source-status` (loading, full-source count or empty text), and `source-error`
168
+ (localized projection or row failure).
169
+ `search-status` discloses unavailable or partial global provider search.
170
+
91
171
  Collapsed arrays retain their exact safe `.length`. A broad object whose key count itself exceeds
92
172
  the traversal budget uses an “at least” preview rather than presenting the retained prefix as a
93
173
  false total. Per-row copy actions remain visible by default on coarse-pointer/no-hover devices;
@@ -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
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 6 parts, 2 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 7 parts, 2 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
  ---
@@ -19,9 +19,65 @@
19
19
  Tabbed operations shell composing `lr-knowledge-base` and `lr-ingestion-queue`. It forwards source
20
20
  and ingestion actions under namespaced events; host-owned controls such as chunking, embedding,
21
21
  permissions, and connector settings go in the `settings` slot.
22
+ Only the active child view is mounted. With its corresponding provider unset, if the shell's own
23
+ admission truncates the source or ingestion array, an `input-limit` note for the active tab reports
24
+ the original assigned count; it does not infer that count from the already-truncated child input. Initial and reconnect notes
25
+ are quiet, and later changed omissions are politely announced.
22
26
 
23
- **Properties:** `sources: KnowledgeSource[] = []` (attribute: false); `ingestionItems:
24
- IngestionQueueItem[] = []` (attribute: false); `activeTab: 'sources' | 'ingestion' = 'sources'`;
27
+ **Provider forwarding:** `dataSource: KnowledgeBaseSource | undefined` and
28
+ `ingestionSource: IngestionQueueSource | undefined` are property-only inputs
29
+ (attribute: false). `dataSource` supplies the Sources tab's `lr-knowledge-base.dataSource`;
30
+ `ingestionSource` supplies the Ingestion tab's `lr-ingestion-queue.dataSource`. Each takes
31
+ precedence over its matching legacy `sources`/`ingestionItems` array. Set that provider to
32
+ `undefined` to restore the current retained legacy collection and its original admission-loss
33
+ notice. Defined invalid providers keep the child's source-authoritative failure behavior when
34
+ activated; the shell does not replace them with the legacy array.
35
+
36
+ ```ts
37
+ import "@aceshooting/lyra-ui/components/lr-knowledge-base-admin.js";
38
+ import type { KnowledgeBaseSource } from
39
+ "@aceshooting/lyra-ui/components/retrieval/knowledge-base/knowledge-base.class.js";
40
+ import type { IngestionQueueSource } from
41
+ "@aceshooting/lyra-ui/components/retrieval/ingestion-queue/ingestion-queue.class.js";
42
+
43
+ declare const inventoryProvider: KnowledgeBaseSource;
44
+ declare const queueProvider: IngestionQueueSource;
45
+ const admin = document.querySelector('lr-knowledge-base-admin')!;
46
+ admin.dataSource = inventoryProvider;
47
+ admin.ingestionSource = queueProvider;
48
+ ```
49
+
50
+ The shell stores provider references by identity without inspecting their revision, methods,
51
+ rows or totals, querying them or cloning them. An inactive assignment only stores the reference;
52
+ it neither reads that provider nor refreshes the active child. Only the mounted active child
53
+ receives its matching provider and owns validation, requests, bounded page data, loading, errors,
54
+ retry and global totals, as described by [knowledge-base](#lr-knowledge-base) and
55
+ [ingestion-queue](#lr-ingestion-queue). The shell adds no `sourcePage`, `sourcePageSize` or
56
+ `sourceTotal` API and keeps no page cache or inactive child instance.
57
+
58
+ An active provider assignment, including the same reference, synchronously forwards one refresh;
59
+ the following shell render does not repeat that assignment. A keyless `admin.requestUpdate()`
60
+ refreshes only the current child once. Named heading/label/slot paints and re-picking the active
61
+ tab do not refresh providers. To use a repeated `lr-activate` as a refresh intent, explicitly call
62
+ `requestUpdate()` in the host. Locale changes follow the active child's locale-dependent refresh
63
+ contract. Reassign or explicitly refresh after changing provider revision/state.
64
+
65
+ Switching tabs disconnects the old child and cancels its authority; returning mounts a new child
66
+ at its documented default page zero. Page navigation state does not persist across tab switches.
67
+ If a previous same-provider page call ignores abort, the remounted child's replacement page call
68
+ waits for it to settle instead of overlapping it. Providers should settle promptly after
69
+ cancellation. Different provider identities retain independent request capacity.
70
+
71
+ A defined provider suppresses only its active collection's legacy `input-limit` notice. The
72
+ inactive provider/collection is not inspected to compute that notice, and both parent-owned
73
+ legacy collections remain intact. Source/ingestion actions are forwarded only from the current
74
+ active child with their existing names, original IDs and bounded immutable detail. Provider
75
+ replacement, refresh, tab change, disconnect and adoption revoke old action callbacks, including
76
+ retained controls that reuse an ID. Ingestion retry/cancel keep their existing namespaced detail
77
+ and non-cancelable notification semantics; the shell never performs the operation itself.
78
+
79
+ **Properties:** `sources: readonly KnowledgeSource[] = []` (attribute: false); `ingestionItems:
80
+ readonly IngestionQueueItem[] = []` (attribute: false); `activeTab: 'sources' | 'ingestion' = 'sources'`;
25
81
  `label?: string` (the visible heading and the tablist's distinct accessible name; omission uses the
26
82
  localized admin label, while an explicit empty string empties the heading and the tablist keeps the
27
83
  localized name; authored host `aria-label` independently names the admin component and is not
@@ -51,7 +107,7 @@ that moves an invalid or newly-hidden tab back to Sources is not a user activati
51
107
 
52
108
  **Slots:** `settings` — host-owned KB configuration controls.
53
109
 
54
- **CSS parts:** `base`, `heading`, `tabs`, `tab`, `panel`, `settings`.
110
+ **CSS parts:** `base`, `heading`, `tabs`, `tab`, `panel`, `settings`, `input-limit`.
55
111
 
56
112
  **Themeable custom properties:** `--lr-knowledge-base-admin-tab-selected-border` (default
57
113
  `var(--lr-color-brand)`) and `--lr-knowledge-base-admin-tab-selected-color` (default