@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
@@ -1,4 +1,4 @@
1
- import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{CancelEventDetail,DocumentRef,RetryEventDetail}from'../../../ai/types.js';
1
+ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraPageSource}from'../../../data-sources.js';import type{CancelEventDetail,DocumentRef,RetryEventDetail}from'../../../ai/types.js';
2
2
  /**
3
3
  * A document's position in the ingestion pipeline. `'queued'` through `'indexing'` are the
4
4
  * in-flight stages (in pipeline order); `'done'`, `'failed'`, and `'cancelled'` are terminal.
@@ -24,6 +24,8 @@ embeddedChunkCount?:number;
24
24
  attempts?:number;
25
25
  /** Failure detail, rendered only while `stage === 'failed'`. */
26
26
  error?:string;}
27
+ /** Provider query for the unfiltered, provider-ordered ingestion queue. */
28
+ export interface IngestionQueueSourceQuery{readonly[key:string]:never;}export type IngestionQueueSource=LyraPageSource<IngestionQueueItem,IngestionQueueSourceQuery>;
27
29
  /** `lr-retry`'s `detail` -- extends the shared `RetryEventDetail` (`src/ai/types.ts`) with the
28
30
  * `itemId` identifying *which* queue item the request is about; `attempt` is the attempt number
29
31
  * about to be made: the displayed nonnegative finite-integer attempt count plus one, matching
@@ -56,6 +58,23 @@ export interface IngestionCancelEventDetail extends CancelEventDetail{itemId:str
56
58
  * Nonstring failure details use the localized failed-stage label before rendering and fresh
57
59
  * failure announcements. Omitted details stay omitted; historical failures remain silent on mount.
58
60
  *
61
+ * Input retains the first 10,000 queue items; the limit note reports the assigned source count.
62
+ * Closed display fields are copied after identity admission, so nested records do not consume the
63
+ * shared 50,000-value deep-copy budget. Replace the collection to publish source-record changes.
64
+ *
65
+ * With dataSource, sourcePage (zero-based) and sourcePageSize (1..500, default 100) address the
66
+ * complete provider queue. sourceTotal is null while pending or failed, then the exact global
67
+ * record total. The source takes precedence over items; removing it restores legacy data.
68
+ * Source rows copy closed display fields, with at most 65,536 aggregate text UTF-16 units per row;
69
+ * malformed required records fail visibly rather than silently omit rows. Query callbacks own
70
+ * their execution cost. Same-source assignment or requestUpdate() refreshes; named paints reuse
71
+ * the current page. Source/revision/refresh/teardown revokes old work. Historical failed rows do
72
+ * not announce on source browsing, refresh or reconnect, even with announce. Row retry/cancel
73
+ * events still request host actions; provider-load retry only reloads the current page.
74
+ *
75
+ * @csspart source-status - Provider loading/error text.
76
+ * @csspart source-retry - Retry the current provider page.
77
+ * @csspart source-pagination - Provider page navigation.
59
78
  * @customElement lr-ingestion-queue
60
79
  * @event lr-retry - A row's retry affordance was activated (only rendered for `stage="failed"`
61
80
  * rows). `detail: { itemId, attempt }` -- `attempt` is the attempt number about to be made.
@@ -63,6 +82,7 @@ export interface IngestionCancelEventDetail extends CancelEventDetail{itemId:str
63
82
  * row). `detail: { itemId, reason }` -- `reason` is always `undefined` from this component.
64
83
  * @csspart base - The one stable root shell across empty, populated, and virtualized states. It is
65
84
  * the named region unless a non-empty host `aria-label` makes the host the sole overall owner.
85
+ * @csspart limit - Notice that only the first 10,000 queue items were retained.
66
86
  * @csspart list - The unnamed row container (`role="list"`), including the composed
67
87
  * `<lr-virtual-list>` host in virtualized mode. Its surrounding `base` region owns the queue name.
68
88
  * @csspart empty - The `<lr-empty>` zero-items state.
@@ -98,10 +118,19 @@ export interface IngestionCancelEventDetail extends CancelEventDetail{itemId:str
98
118
  * @status stable
99
119
  * @since 4.1.0
100
120
  */
101
- export declare class LyraIngestionQueue extends LyraElement<LyraIngestionQueueEventMap>{protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly ownedCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];
121
+ export declare class LyraIngestionQueue extends LyraElement<LyraIngestionQueueEventMap>{protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly identityCollectionProperties:readonly string[];protected static readonly ownedCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];
102
122
  /** The queue to render, in display order. Controlled and never mutated by this component --
103
123
  * pass a new array (e.g. as ingestion progresses) to update it. */
104
- items:readonly IngestionQueueItem[];
124
+ items:readonly IngestionQueueItem[];private _dataSource?;private sourceEpoch;private sourceSyncing;private sourceInputs?;private sourceSize?;private sourceResult?;private sourceRows;private readonly sourceItemIdentities;private sourceStateVersion;private readonly sourcePages;
125
+ /** Full queue provider. A present invalid source fails visibly; undefined restores items.
126
+ * Reassign even the same source or call requestUpdate() to publish a new provider snapshot. */
127
+ get dataSource():IngestionQueueSource|undefined;set dataSource(value:IngestionQueueSource|undefined);
128
+ /** Zero-based provider page; only used with dataSource. */
129
+ sourcePage:number;
130
+ /** Provider page size, normalized to 1..500. A size change resets the source page to 0. */
131
+ sourcePageSize:number;
132
+ /** Exact total of the current provider queue, or null before a valid response or without a source. */
133
+ get sourceTotal():number|null;private get sourceMode();private get sourceFailed();private get sourceBlocked();private projectSourceItem;private syncSource;private acceptSourcePage;requestUpdate(...args:Parameters<LyraElement['requestUpdate']>):void;private onSourcePage;private onSourceRetry;
105
134
  /** Accessible name for the stable region when the host has no `aria-label`; defaults to
106
135
  * localized `ingestionQueueLabel`. An explicitly empty host label stays empty, and so does an
107
136
  * explicitly empty `label`. */
@@ -121,4 +150,4 @@ virtualizeAt:number;
121
150
  * `role="status"`/`role="alert"` hand-added before this property existed once it is set --
122
151
  * otherwise the initial failures are announced twice, through the native role and again
123
152
  * through the shared sink. */
124
- announce:boolean;private failureLiveText;private isMounting;private initialFailuresAnnounced;private sink?;private get effectiveVirtualizeAt();private normalizeItems;private normalizedItemsCache?;private get normalizedItems();private readonly ingestionItemKey;connectedCallback():void;disconnectedCallback():void;protected willUpdate(changed:PropertyValues):void;private announceFailures;private stageLabel;private chunkCountText;private normalizedAttempts;private readonly stopOwnedEvent;private onRetryClick;private onCancelClick;private itemTemplate;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-ingestion-queue':LyraIngestionQueue;}}
153
+ announce:boolean;private failureLiveText;private isMounting;private initialFailuresAnnounced;private sink?;private readonly limitAnnouncements;private limitInitialized;private previouslyInputTruncated;adoptedCallback():void;private inputLimitText;private sourceStatusInitialized;private previousSourceStatus;protected updated(changed:PropertyValues):void;private renderInputLimit;private get effectiveVirtualizeAt();private readonly fallbackFailureItems;private normalizeItems;private normalizedItemsCache?;private get normalizedItems();private readonly ingestionItemKey;connectedCallback():void;disconnectedCallback():void;protected willUpdate(changed:PropertyValues):void;private announceFailures;private stageLabel;private chunkCountText;private normalizedAttempts;private readonly stopOwnedEvent;private onRetryClick;private onCancelClick;private itemTemplate;private renderRows;private renderSource;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-ingestion-queue':LyraIngestionQueue;}}
@@ -1,4 +1,4 @@
1
- import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isNonBlankIdentity,isRecord}from"../retrieval-identity.js";import{srOnly}from"../../../internal/a11y.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{finiteCount}from"../../../internal/numbers.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{closeIcon}from"../../../internal/icons.js";import{styles}from"./ingestion-queue.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_ingestionAttemptCount,LYRA_DEFAULT_ingestionCancelWithContext,LYRA_DEFAULT_ingestionChunkCount,LYRA_DEFAULT_ingestionEmbeddedOfTotal,LYRA_DEFAULT_ingestionItemProgressLabel,LYRA_DEFAULT_ingestionQueueEmpty,LYRA_DEFAULT_ingestionQueueLabel,LYRA_DEFAULT_ingestionRetryWithContext,LYRA_DEFAULT_ingestionStageCancelled,LYRA_DEFAULT_ingestionStageChunking,LYRA_DEFAULT_ingestionStageDone,LYRA_DEFAULT_ingestionStageEmbedding,LYRA_DEFAULT_ingestionStageExtracting,LYRA_DEFAULT_ingestionStageFailed,LYRA_DEFAULT_ingestionStageIndexing,LYRA_DEFAULT_ingestionStageQueued,LYRA_DEFAULT_ingestionStageUnknown,LYRA_DEFAULT_ingestionStageUploading,LYRA_DEFAULT_untitledSource}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_cancel,LYRA_DEFAULT_retry}from"../../../internal/default-strings/shared.generated.js";const INGESTION_STAGES=new Set(["queued","uploading","extracting","chunking","embedding","indexing","done","failed","cancelled"]);function normalizedStage(stage){return INGESTION_STAGES.has(stage)?stage:"unknown"}const ACTIVE_STAGES=["uploading","extracting","chunking","embedding","indexing"],CANCELABLE_STAGES=["queued",...ACTIVE_STAGES];function badgeVariantForStage(stage){switch(stage){case"done":return"success";case"failed":return"danger";case"queued":case"cancelled":case"unknown":return"neutral";default:return"brand"}}const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function retryIcon(){return svg`
1
+ import{__decorate}from"tslib";import{collectionSupport,publicCollectionTruncation}from"../../../internal/collection-snapshot.js";import{html,nothing,svg}from"lit";import{property,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{firstByRetrievalIdentity,isNonBlankIdentity,isRecord}from"../retrieval-identity.js";import{readOwnDataValue}from"../../../internal/data-descriptors.js";import{srOnly}from"../../../internal/a11y.js";import{acquireAnnouncementSink,AnnouncementSinkController}from"../../../internal/announcer.js";import{SourcePageController}from"../../../internal/source-page-controller.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{finiteCount,finiteInteger}from"../../../internal/numbers.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{closeIcon}from"../../../internal/icons.js";import{styles}from"./ingestion-queue.styles.js";import{retrievalSemanticLabel,retrievalSemanticRole}from"../retrieval-semantic-owner.js";import{LYRA_DEFAULT_ingestionAttemptCount,LYRA_DEFAULT_ingestionCancelWithContext,LYRA_DEFAULT_ingestionChunkCount,LYRA_DEFAULT_ingestionEmbeddedOfTotal,LYRA_DEFAULT_ingestionItemProgressLabel,LYRA_DEFAULT_ingestionQueueEmpty,LYRA_DEFAULT_ingestionQueueInputLimit,LYRA_DEFAULT_ingestionQueueLabel,LYRA_DEFAULT_ingestionRetryWithContext,LYRA_DEFAULT_ingestionStageCancelled,LYRA_DEFAULT_ingestionStageChunking,LYRA_DEFAULT_ingestionStageDone,LYRA_DEFAULT_ingestionStageEmbedding,LYRA_DEFAULT_ingestionStageExtracting,LYRA_DEFAULT_ingestionStageFailed,LYRA_DEFAULT_ingestionStageIndexing,LYRA_DEFAULT_ingestionStageQueued,LYRA_DEFAULT_ingestionStageUnknown,LYRA_DEFAULT_ingestionStageUploading,LYRA_DEFAULT_untitledSource}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_cancel,LYRA_DEFAULT_loading,LYRA_DEFAULT_retry,LYRA_DEFAULT_tableLoadFailed}from"../../../internal/default-strings/shared.generated.js";const INGESTION_STAGES=new Set(["queued","uploading","extracting","chunking","embedding","indexing","done","failed","cancelled"]);function normalizedStage(stage){return INGESTION_STAGES.has(stage)?stage:"unknown"}const ACTIVE_STAGES=["uploading","extracting","chunking","embedding","indexing"],CANCELABLE_STAGES=["queued",...ACTIVE_STAGES];function badgeVariantForStage(stage){switch(stage){case"done":return"success";case"failed":return"danger";case"queued":case"cancelled":case"unknown":return"neutral";default:return"brand"}}const SOURCE_QUERY=Object.freeze({}),ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function retryIcon(){return svg`
2
2
  <svg
3
3
  width="1em"
4
4
  height="1em"
@@ -11,7 +11,7 @@ import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/co
11
11
  aria-hidden="true"
12
12
  focusable="false"
13
13
  ><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path></svg>
14
- `}const DEFAULT_VIRTUALIZE_AT=100;class LyraIngestionQueue extends LyraElement{constructor(){super(...arguments),this.items=[],this.virtualizeAt=DEFAULT_VIRTUALIZE_AT,this.announce=!1,this.failureLiveText="",this.isMounting=!0,this.initialFailuresAnnounced=!1,this.ingestionItemKey=item=>item.id,this.stopOwnedEvent=event=>{event.stopPropagation()},this.itemTemplate=(item,ownRole)=>{const stage=normalizedStage(item.stage),stageLabel=this.stageLabel(stage),name=item.document.name.trim()?item.document.name:this.localize("untitledSource"),showProgress=stage!=="unknown"&&ACTIVE_STAGES.includes(stage),canRetry=stage==="failed",canCancel=stage!=="unknown"&&CANCELABLE_STAGES.includes(stage),attempts=this.normalizedAttempts(item),hasMeta=item.chunkCount!==void 0||item.embeddedChunkCount!==void 0||attempts>0,indeterminate=item.progress===void 0||!Number.isFinite(item.progress);return html`
14
+ `}const DEFAULT_VIRTUALIZE_AT=100;class LyraIngestionQueue extends LyraElement{constructor(){super(...arguments),this.items=[],this.sourceEpoch=0,this.sourceSyncing=!1,this.sourceRows=[],this.sourceItemIdentities=new WeakSet,this.sourceStateVersion=0,this.sourcePages=new SourcePageController(this,{normalizeRecord:(record,isCurrent)=>this.projectSourceItem(record,isCurrent),validateMetadata:()=>{},onChange:()=>{this.sourceStateVersion++}}),this.sourcePage=0,this.sourcePageSize=100,this.onSourcePage=event=>{event.stopPropagation(),this.sourceBlocked||(this.sourcePage=event.detail.page-1)},this.virtualizeAt=DEFAULT_VIRTUALIZE_AT,this.announce=!1,this.failureLiveText="",this.isMounting=!0,this.initialFailuresAnnounced=!1,this.limitAnnouncements=new AnnouncementSinkController(this,{eager:["polite"]}),this.limitInitialized=!1,this.previouslyInputTruncated=!1,this.sourceStatusInitialized=!1,this.previousSourceStatus="",this.fallbackFailureItems=new WeakSet,this.ingestionItemKey=item=>item.id,this.stopOwnedEvent=event=>{event.stopPropagation()},this.itemTemplate=(item,ownRole)=>{const stage=normalizedStage(item.stage),stageLabel=this.stageLabel(stage),name=item.document.name.trim()?item.document.name:this.localize("untitledSource"),showProgress=stage!=="unknown"&&ACTIVE_STAGES.includes(stage),canRetry=stage==="failed",canCancel=stage!=="unknown"&&CANCELABLE_STAGES.includes(stage),attempts=this.normalizedAttempts(item),hasMeta=item.chunkCount!==void 0||item.embeddedChunkCount!==void 0||attempts>0,indeterminate=item.progress===void 0||!Number.isFinite(item.progress);return html`
15
15
  <div
16
16
  part="item"
17
17
  role=${ownRole?"listitem":nothing}
@@ -40,7 +40,7 @@ import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/co
40
40
  >${this.localize("ingestionAttemptCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(attempts)})}</span
41
41
  >`:nothing}
42
42
  </div>`:nothing}
43
- ${stage==="failed"&&item.error?html`<p part="item-error">${item.error}</p>`:nothing}
43
+ ${stage==="failed"&&item.error?html`<p part="item-error">${this.fallbackFailureItems.has(item)?this.localize("ingestionStageFailed"):item.error}</p>`:nothing}
44
44
  ${canRetry||canCancel?html`<div part="item-actions">
45
45
  ${canRetry?html`<button
46
46
  part="retry-button"
@@ -60,11 +60,30 @@ import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/co
60
60
  </button>`:nothing}
61
61
  </div>`:nothing}
62
62
  </div>
63
- `}}static{this.defaultStrings={...super.defaultStrings,cancel:LYRA_DEFAULT_cancel,ingestionAttemptCount:LYRA_DEFAULT_ingestionAttemptCount,ingestionCancelWithContext:LYRA_DEFAULT_ingestionCancelWithContext,ingestionChunkCount:LYRA_DEFAULT_ingestionChunkCount,ingestionEmbeddedOfTotal:LYRA_DEFAULT_ingestionEmbeddedOfTotal,ingestionItemProgressLabel:LYRA_DEFAULT_ingestionItemProgressLabel,ingestionQueueEmpty:LYRA_DEFAULT_ingestionQueueEmpty,ingestionQueueLabel:LYRA_DEFAULT_ingestionQueueLabel,ingestionRetryWithContext:LYRA_DEFAULT_ingestionRetryWithContext,ingestionStageCancelled:LYRA_DEFAULT_ingestionStageCancelled,ingestionStageChunking:LYRA_DEFAULT_ingestionStageChunking,ingestionStageDone:LYRA_DEFAULT_ingestionStageDone,ingestionStageEmbedding:LYRA_DEFAULT_ingestionStageEmbedding,ingestionStageExtracting:LYRA_DEFAULT_ingestionStageExtracting,ingestionStageFailed:LYRA_DEFAULT_ingestionStageFailed,ingestionStageIndexing:LYRA_DEFAULT_ingestionStageIndexing,ingestionStageQueued:LYRA_DEFAULT_ingestionStageQueued,ingestionStageUnknown:LYRA_DEFAULT_ingestionStageUnknown,ingestionStageUploading:LYRA_DEFAULT_ingestionStageUploading,retry:LYRA_DEFAULT_retry,untitledSource:LYRA_DEFAULT_untitledSource}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["items"])}static{this.styles=[LyraElement.styles,styles,srOnly]}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,DEFAULT_VIRTUALIZE_AT)}normalizeItems(value){return firstByRetrievalIdentity(Array.isArray(value)?value.filter(item=>{if(!isRecord(item)||!isNonBlankIdentity(item.id))return!1;const document=item.document;return isRecord(document)&&isNonBlankIdentity(document.id)&&typeof document.name=="string"}):[],item=>item.id).map(item=>item.error==null||typeof item.error=="string"?item:{...item,error:this.localize("ingestionStageFailed")})}get normalizedItems(){const cached=this.normalizedItemsCache;if(cached&&cached.source===this.items&&cached.locale===this.effectiveLocale)return cached.result;const result=this.normalizeItems(this.items);return this.normalizedItemsCache={source:this.items,locale:this.effectiveLocale,result},result}connectedCallback(){super.connectedCallback(),this.sink??=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})}disconnectedCallback(){super.disconnectedCallback(),this.failureLiveText="",this.isMounting=!0,this.sink?.release(),this.sink=void 0}willUpdate(changed){super.willUpdate(changed);const wasMounting=this.isMounting;if(this.isMounting=!1,wasMounting){this.announce&&!this.initialFailuresAnnounced&&(this.initialFailuresAnnounced=!0,this.announceFailures(this.normalizedItems.flatMap(item=>item.stage==="failed"&&item.error?[item.error]:[])));return}if(!changed.has("items"))return;const previousItems=this.normalizeItems(changed.get("items")),previousById=new Map(previousItems.map(item=>[item.id,item]));this.announceFailures(this.normalizedItems.flatMap(item=>{if(item.stage!=="failed"||!item.error)return[];const previous=previousById.get(item.id);return!previous||previous.stage!=="failed"||previous.error!==item.error?[item.error]:[]}))}announceFailures(freshErrors){this.failureLiveText=freshErrors.length?getListFormat(this.effectiveLocale,{type:"conjunction"}).format(freshErrors):"",this.failureLiveText!==""&&this.sink?.announce(this.failureLiveText)}stageLabel(stage){switch(stage){case"queued":return this.localize("ingestionStageQueued");case"uploading":return this.localize("ingestionStageUploading");case"extracting":return this.localize("ingestionStageExtracting");case"chunking":return this.localize("ingestionStageChunking");case"embedding":return this.localize("ingestionStageEmbedding");case"indexing":return this.localize("ingestionStageIndexing");case"done":return this.localize("ingestionStageDone");case"failed":return this.localize("ingestionStageFailed");case"cancelled":return this.localize("ingestionStageCancelled");case"unknown":return this.localize("ingestionStageUnknown")}}chunkCountText(count){const safeCount=finiteCount(count);return this.localize("ingestionChunkCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(safeCount),pluralCount:safeCount})}normalizedAttempts(item){return finiteCount(item.attempts??0,0,Number.MAX_SAFE_INTEGER-1)}onRetryClick(item){this.emit("lr-retry",{itemId:item.id,attempt:this.normalizedAttempts(item)+1})}onCancelClick(item){this.emit("lr-cancel",{itemId:item.id})}render(){const items=this.normalizedItems,ariaLabel=retrievalSemanticLabel(this,this.label==null?this.localize("ingestionQueueLabel"):this.label),regionRole=retrievalSemanticRole(this,"region");if(items.length===0)return html`<div
63
+ `}}static{this.defaultStrings={...super.defaultStrings,cancel:LYRA_DEFAULT_cancel,ingestionAttemptCount:LYRA_DEFAULT_ingestionAttemptCount,ingestionCancelWithContext:LYRA_DEFAULT_ingestionCancelWithContext,ingestionChunkCount:LYRA_DEFAULT_ingestionChunkCount,ingestionEmbeddedOfTotal:LYRA_DEFAULT_ingestionEmbeddedOfTotal,ingestionItemProgressLabel:LYRA_DEFAULT_ingestionItemProgressLabel,ingestionQueueEmpty:LYRA_DEFAULT_ingestionQueueEmpty,ingestionQueueInputLimit:LYRA_DEFAULT_ingestionQueueInputLimit,ingestionQueueLabel:LYRA_DEFAULT_ingestionQueueLabel,ingestionRetryWithContext:LYRA_DEFAULT_ingestionRetryWithContext,ingestionStageCancelled:LYRA_DEFAULT_ingestionStageCancelled,ingestionStageChunking:LYRA_DEFAULT_ingestionStageChunking,ingestionStageDone:LYRA_DEFAULT_ingestionStageDone,ingestionStageEmbedding:LYRA_DEFAULT_ingestionStageEmbedding,ingestionStageExtracting:LYRA_DEFAULT_ingestionStageExtracting,ingestionStageFailed:LYRA_DEFAULT_ingestionStageFailed,ingestionStageIndexing:LYRA_DEFAULT_ingestionStageIndexing,ingestionStageQueued:LYRA_DEFAULT_ingestionStageQueued,ingestionStageUnknown:LYRA_DEFAULT_ingestionStageUnknown,ingestionStageUploading:LYRA_DEFAULT_ingestionStageUploading,loading:LYRA_DEFAULT_loading,retry:LYRA_DEFAULT_retry,tableLoadFailed:LYRA_DEFAULT_tableLoadFailed,untitledSource:LYRA_DEFAULT_untitledSource}}static{this.collectionSupport=collectionSupport}static{this.identityCollectionProperties=Object.freeze(["items"])}static{this.ownedCollectionProperties=Object.freeze(["items"])}static{this.styles=[LyraElement.styles,styles,srOnly]}get dataSource(){return this._dataSource}set dataSource(value){const previous=this._dataSource;this._dataSource=value,this.sourceEpoch++,this.requestUpdate("dataSource",previous)}get sourceTotal(){return this.sourceMode?this.sourcePages.state.result?.total??null:null}get sourceMode(){return this.dataSource!==void 0}get sourceFailed(){return this.sourceMode&&!this.sourcePages.state.pending&&!this.sourcePages.state.result}get sourceBlocked(){return this.sourceMode&&(!this.isConnected||this.sourcePages.state.pending||this.sourceFailed)}projectSourceItem(record,isCurrent){const assertCurrent=()=>{if(!isCurrent())throw new TypeError("Obsolete source record")},descriptorOf=(target,key)=>{assertCurrent();const descriptor=getOwnDataDescriptor(target,key);return assertCurrent(),descriptor};assertCurrent();const field=(value2,key)=>{if(!isRecord(value2))throw new TypeError("Invalid source item");const descriptor=descriptorOf(value2,key);if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR)throw new TypeError("Invalid source field");return descriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:descriptor.value};let units=0;const text=(value2,required=!1)=>{if(!(value2===void 0&&!required)){if(typeof value2!="string"||value2.length>65536||(units+=value2.length)>65536)throw new TypeError("Invalid source text");return value2}},raw=record.value,id=text(field(raw,"id"),!0),rawDocument=field(raw,"document"),documentId=text(field(rawDocument,"id"),!0);if(id!==record.key||!isNonBlankIdentity(documentId))throw new TypeError("Invalid source identity");const document=Object.freeze({id:documentId,name:text(field(rawDocument,"name"),!0),mimeType:text(field(rawDocument,"mimeType")),uri:text(field(rawDocument,"uri")),version:text(field(rawDocument,"version"))}),stage=text(field(raw,"stage")),errorValue=field(raw,"error"),error=errorValue==null?void 0:text(typeof errorValue=="string"?errorValue:this.localize("ingestionStageFailed")),numbers={};for(const key of["progress","chunkCount","embeddedChunkCount","attempts"]){const value2=field(raw,key);if(value2!==void 0){if(typeof value2!="number")throw new TypeError("Invalid source number");numbers[key]=value2}}const value=Object.freeze({id,document,stage,error,...numbers});return assertCurrent(),this.sourceItemIdentities.add(value),errorValue!=null&&typeof errorValue!="string"&&this.fallbackFailureItems.add(value),assertCurrent(),{key:record.key,order:record.order,value}}syncSource(){if(!(!this.sourcePages||this.sourceSyncing)){this.sourceSyncing=!0;try{if(!this.sourceMode){this.sourceInputs&&this.sourcePages.bind(void 0),this.sourceInputs=void 0,this.sourceSize=void 0,this.sourceResult=void 0,this.sourceRows=[];return}const source=this.dataSource,size=finiteInteger(this.sourcePageSize,100,1,500);let page=finiteInteger(this.sourcePage,0,0,Math.floor(Number.MAX_SAFE_INTEGER/size));this.sourceSize!==void 0&&this.sourceSize!==size&&(page=0,this.sourcePage=0),this.sourceSize=size;const revision=source.revision,inputs=[source,revision,this.sourceEpoch,this.effectiveLocale,size,page];if(this.sourceInputs&&inputs.every((value,index)=>value===this.sourceInputs[index]))return;this.sourceInputs=inputs,this.sourceRows=[],this.sourceResult=void 0,this.sourcePages.bind({source,revision,epoch:this.sourceEpoch,locale:this.effectiveLocale}),this.sourcePages.request(SOURCE_QUERY,page,size)}catch{this.sourcePages.bind(void 0),this.sourceRows=[],this.sourceResult=void 0}finally{this.sourceSyncing=!1}}}acceptSourcePage(){const result=this.sourcePages.state.result;!result||result===this.sourceResult||(this.sourceResult=result,this.sourceRows=result.rows.map(record=>record.value),this.sourcePage!==this.sourcePages.state.page&&(this.sourceSyncing=!0,this.sourcePage=this.sourcePages.state.page,this.sourceSyncing=!1,this.sourceInputs=this.sourceInputs?[...this.sourceInputs.slice(0,-1),this.sourcePages.state.page]:void 0))}requestUpdate(...args){args[0]===void 0&&(this.sourceEpoch=(this.sourceEpoch??0)+1),(args[0]===void 0||["dataSource","sourcePage","sourcePageSize"].includes(String(args[0])))&&this.syncSource(),super.requestUpdate(...args)}onSourceRetry(source,state2){!this.isConnected||!this.sourceMode||!this.sourceFailed||this.dataSource!==source||this.sourcePages.state!==state2||(this.sourceInputs=void 0,this.syncSource(),this.sourceStateVersion++)}adoptedCallback(){super.adoptedCallback(),this.limitAnnouncements.adopted(),this.sourcePages.adopted(),this.sourceStatusInitialized=!1}inputLimitText(){const truncation=publicCollectionTruncation(this,"items"),number=getNumberFormat(this.effectiveLocale);return truncation?this.localize("ingestionQueueInputLimit",void 0,{count:number.format(truncation.retained),total:number.format(truncation.source)}):""}updated(changed){if(super.updated(changed),this.sourceMode){const status=this.sourceFailed?this.localize("tableLoadFailed"):this.sourcePages.state.pending?this.localize("loading"):"";this.sourceStatusInitialized&&status&&status!==this.previousSourceStatus&&this.limitAnnouncements.announcePolite(status),this.sourceStatusInitialized=!0,this.previousSourceStatus=status;return}this.sourceStatusInitialized=!1,this.previousSourceStatus="";const inputTruncated=publicCollectionTruncation(this,"items")!==void 0;this.limitInitialized&&inputTruncated&&!this.previouslyInputTruncated&&this.limitAnnouncements.announcePolite(this.inputLimitText()),this.limitInitialized=!0,this.previouslyInputTruncated=inputTruncated}renderInputLimit(){const text=this.inputLimitText();return text?html`<p part="limit" role="note">${text}</p>`:nothing}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,DEFAULT_VIRTUALIZE_AT)}normalizeItems(value){const rows=[];for(const valueItem of Array.isArray(value)?value:[])try{if(!isRecord(valueItem))continue;const id=readOwnDataValue(valueItem,"id"),source=readOwnDataValue(valueItem,"document");if(!isNonBlankIdentity(id)||!isRecord(source))continue;const documentId=readOwnDataValue(source,"id"),name=readOwnDataValue(source,"name");if(!isNonBlankIdentity(documentId)||typeof name!="string")continue;const document=Object.freeze(Object.fromEntries(["id","name","mimeType","uri","version"].map(key=>[key,readOwnDataValue(source,key)]).filter(([,field])=>field!==void 0))),fields=Object.fromEntries(["stage","progress","chunkCount","embeddedChunkCount","attempts"].map(key=>[key,readOwnDataValue(valueItem,key)]).filter(([,field])=>field!==void 0)),error=readOwnDataValue(valueItem,"error"),row=Object.freeze({...fields,id,document,...error===void 0?{}:{error:error===null||typeof error=="string"?error:this.localize("ingestionStageFailed")}});error!=null&&typeof error!="string"&&this.fallbackFailureItems.add(row),rows.push(row)}catch{continue}return firstByRetrievalIdentity(rows,item=>item.id)}get normalizedItems(){const cached=this.normalizedItemsCache;if(cached&&cached.source===this.items&&cached.locale===this.effectiveLocale&&cached.failureText===this.localize("ingestionStageFailed"))return cached.result;const result=this.normalizeItems(this.items);return this.normalizedItemsCache={source:this.items,locale:this.effectiveLocale,failureText:this.localize("ingestionStageFailed"),result},result}connectedCallback(){super.connectedCallback(),this.sink??=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})}disconnectedCallback(){super.disconnectedCallback(),this.failureLiveText="",this.sourceStatusInitialized=!1,this.previousSourceStatus="",this.isMounting=!0,this.sink?.release(),this.sink=void 0}willUpdate(changed){if(super.willUpdate(changed),this.syncSource(),this.sourceMode){this.acceptSourcePage(),this.failureLiveText="",this.isMounting=!0;return}const wasMounting=this.isMounting;if(this.isMounting=!1,wasMounting){this.announce&&!this.initialFailuresAnnounced&&(this.initialFailuresAnnounced=!0,this.announceFailures(this.normalizedItems.flatMap(item=>item.stage==="failed"&&item.error?[item.error]:[])));return}if(!changed.has("items"))return;const previousItems=this.normalizedItemsCache?.result??[],previousById=new Map(previousItems.map(item=>[item.id,item]));this.announceFailures(this.normalizedItems.flatMap(item=>{if(item.stage!=="failed"||!item.error)return[];const previous=previousById.get(item.id),previousError=previous&&this.fallbackFailureItems.has(previous)?this.localize("ingestionStageFailed"):previous?.error;return!previous||previous.stage!=="failed"||previousError!==item.error?[item.error]:[]}))}announceFailures(freshErrors){this.failureLiveText=freshErrors.length?getListFormat(this.effectiveLocale,{type:"conjunction"}).format(freshErrors):"",this.failureLiveText!==""&&this.sink?.announce(this.failureLiveText)}stageLabel(stage){switch(stage){case"queued":return this.localize("ingestionStageQueued");case"uploading":return this.localize("ingestionStageUploading");case"extracting":return this.localize("ingestionStageExtracting");case"chunking":return this.localize("ingestionStageChunking");case"embedding":return this.localize("ingestionStageEmbedding");case"indexing":return this.localize("ingestionStageIndexing");case"done":return this.localize("ingestionStageDone");case"failed":return this.localize("ingestionStageFailed");case"cancelled":return this.localize("ingestionStageCancelled");case"unknown":return this.localize("ingestionStageUnknown")}}chunkCountText(count){const safeCount=finiteCount(count);return this.localize("ingestionChunkCount",void 0,{count:getNumberFormat(this.effectiveLocale).format(safeCount),pluralCount:safeCount})}normalizedAttempts(item){return finiteCount(item.attempts??0,0,Number.MAX_SAFE_INTEGER-1)}onRetryClick(item){(this.sourceMode||this.sourceItemIdentities.has(item))&&(!this.sourceMode||this.sourceBlocked||!this.sourceRows.includes(item))||this.emit("lr-retry",{itemId:item.id,attempt:this.normalizedAttempts(item)+1})}onCancelClick(item){(this.sourceMode||this.sourceItemIdentities.has(item))&&(!this.sourceMode||this.sourceBlocked||!this.sourceRows.includes(item))||this.emit("lr-cancel",{itemId:item.id})}renderRows(items){return items.length>this.effectiveVirtualizeAt?html`<lr-virtual-list
64
+ part="list"
65
+ exportparts="item:item, item-header:item-header, item-name:item-name, item-stage:item-stage, item-progress:item-progress, item-meta:item-meta, item-chunk-count:item-chunk-count, item-embedding-status:item-embedding-status, item-attempts:item-attempts, item-error:item-error, item-actions:item-actions, retry-button:retry-button, cancel-button:cancel-button"
66
+ .items=${guard([items],()=>items)}
67
+ .renderItem=${item=>this.itemTemplate(item,!1)}
68
+ .keyFunction=${this.ingestionItemKey}
69
+ @lr-virtual-scroll=${this.stopOwnedEvent}
70
+ @lr-visible-range-change=${this.stopOwnedEvent}
71
+ ></lr-virtual-list>`:html`<div part="list" role="list">
72
+ ${repeat(items,item=>item.id,item=>this.itemTemplate(item,!0))}
73
+ </div>`}renderSource(){const failed=this.sourceFailed,retrySource=this.dataSource,retryState=this.sourcePages.state,pending=this.sourcePages.state.pending,label=retrievalSemanticLabel(this,this.label==null?this.localize("ingestionQueueLabel"):this.label);return html`<div part="base" role=${retrievalSemanticRole(this,"region")??nothing} aria-label=${label??nothing} aria-busy=${pending?"true":"false"}>
74
+ ${failed||pending?html`<p part="source-status">${this.localize(failed?"tableLoadFailed":"loading")}</p>`:nothing}
75
+ ${failed?html`<button type="button" part="source-retry" @click=${()=>this.onSourceRetry(retrySource,retryState)}>${this.localize("retry")}</button>`:nothing}
76
+ ${failed||pending?nothing:this.sourceRows.length?this.renderRows(this.sourceRows):html`<div part="list"><lr-empty part="empty" heading=${this.localize("ingestionQueueEmpty")}></lr-empty></div>`}
77
+ <lr-pagination part="source-pagination" format="compact" .page=${finiteInteger(this.sourcePage,0,0,Number.MAX_SAFE_INTEGER-1)+1}
78
+ .pageSize=${finiteInteger(this.sourcePageSize,100,1,500)} .total=${this.sourceTotal??-1} .disabled=${this.sourceBlocked||this.sourceTotal===null}
79
+ .strings=${this.strings} @lr-page-change=${this.onSourcePage} @lr-before-page-change=${this.stopOwnedEvent} @lr-activate=${this.stopOwnedEvent}
80
+ @focus=${this.stopOwnedEvent} @blur=${this.stopOwnedEvent}></lr-pagination>
81
+ </div>`}render(){if(this.sourceMode)return this.renderSource();const items=this.normalizedItems,ariaLabel=retrievalSemanticLabel(this,this.label==null?this.localize("ingestionQueueLabel"):this.label),regionRole=retrievalSemanticRole(this,"region");return items.length===0?html`<div
64
82
  part="base"
65
83
  role=${regionRole??nothing}
66
84
  aria-label=${ariaLabel??nothing}
67
85
  >
86
+ ${this.renderInputLimit()}
68
87
  <div part="failure-live" class="sr-only" aria-hidden="true">
69
88
  ${this.failureLiveText}
70
89
  </div>
@@ -74,25 +93,16 @@ import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/co
74
93
  heading=${this.localize("ingestionQueueEmpty")}
75
94
  ></lr-empty>
76
95
  </div>
77
- </div>`;const virtualized=items.length>this.effectiveVirtualizeAt;return html`
96
+ </div>`:html`
78
97
  <div
79
98
  part="base"
80
99
  role=${regionRole??nothing}
81
100
  aria-label=${ariaLabel??nothing}
82
101
  >
102
+ ${this.renderInputLimit()}
83
103
  <div part="failure-live" class="sr-only" aria-hidden="true">
84
104
  ${this.failureLiveText}
85
105
  </div>
86
- ${virtualized?html`<lr-virtual-list
87
- part="list"
88
- exportparts="item:item, item-header:item-header, item-name:item-name, item-stage:item-stage, item-progress:item-progress, item-meta:item-meta, item-chunk-count:item-chunk-count, item-embedding-status:item-embedding-status, item-attempts:item-attempts, item-error:item-error, item-actions:item-actions, retry-button:retry-button, cancel-button:cancel-button"
89
- .items=${guard([items],()=>items)}
90
- .renderItem=${item=>this.itemTemplate(item,!1)}
91
- .keyFunction=${this.ingestionItemKey}
92
- @lr-virtual-scroll=${this.stopOwnedEvent}
93
- @lr-visible-range-change=${this.stopOwnedEvent}
94
- ></lr-virtual-list>`:html`<div part="list" role="list">
95
- ${repeat(items,item=>item.id,item=>this.itemTemplate(item,!0))}
96
- </div>`}
106
+ ${this.renderRows(items)}
97
107
  </div>
98
- `}}__decorate([property({attribute:!1})],LyraIngestionQueue.prototype,"items",void 0),__decorate([property()],LyraIngestionQueue.prototype,"label",void 0),__decorate([property({type:Number,attribute:"virtualize-at"})],LyraIngestionQueue.prototype,"virtualizeAt",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraIngestionQueue.prototype,"announce",void 0),__decorate([state()],LyraIngestionQueue.prototype,"failureLiveText",void 0);export{LyraIngestionQueue};
108
+ `}}__decorate([property({attribute:!1})],LyraIngestionQueue.prototype,"items",void 0),__decorate([state()],LyraIngestionQueue.prototype,"sourceStateVersion",void 0),__decorate([property({attribute:!1})],LyraIngestionQueue.prototype,"dataSource",null),__decorate([property({type:Number,attribute:"source-page"})],LyraIngestionQueue.prototype,"sourcePage",void 0),__decorate([property({type:Number,attribute:"source-page-size"})],LyraIngestionQueue.prototype,"sourcePageSize",void 0),__decorate([property()],LyraIngestionQueue.prototype,"label",void 0),__decorate([property({type:Number,attribute:"virtualize-at"})],LyraIngestionQueue.prototype,"virtualizeAt",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraIngestionQueue.prototype,"announce",void 0),__decorate([state()],LyraIngestionQueue.prototype,"failureLiveText",void 0);export{LyraIngestionQueue};
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import @aceshooting/lyra-ui/components/lr-ingestion-queue.js to register this component. */
2
- export*from'./ingestion-queue.class.js';import'../../overlays/badge/badge.js';import'../../overlays/progress/progress-bar.js';import'../../overlays/empty/empty.js';import'../../layout/virtual-list/virtual-list.js';
2
+ export*from'./ingestion-queue.class.js';import'../../overlays/badge/badge.js';import'../../overlays/progress/progress-bar.js';import'../../overlays/empty/empty.js';import'../../layout/virtual-list/virtual-list.js';import'../../data/pagination/pagination.js';
@@ -1 +1 @@
1
- export*from"./ingestion-queue.class.js";import"../../overlays/badge/badge.js";import"../../overlays/progress/progress-bar.js";import"../../overlays/empty/empty.js";import"../../layout/virtual-list/virtual-list.js";import{LyraIngestionQueue}from"./ingestion-queue.class.js";import{defineElement}from"../../../internal/prefix.js";defineElement("ingestion-queue",LyraIngestionQueue);
1
+ export*from"./ingestion-queue.class.js";import"../../overlays/badge/badge.js";import"../../overlays/progress/progress-bar.js";import"../../overlays/empty/empty.js";import"../../layout/virtual-list/virtual-list.js";import"../../data/pagination/pagination.js";import{LyraIngestionQueue}from"./ingestion-queue.class.js";import{defineElement}from"../../../internal/prefix.js";defineElement("ingestion-queue",LyraIngestionQueue);
@@ -1 +1 @@
1
- import{iconHitTarget,focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";const styles=css` :host { display: block; --_lr-ingestion-queue-max-height: none; } [part="base"] { display: block; box-sizing: border-box; min-inline-size: 0; } [part="list"] { display: flex; flex-direction: column; box-sizing: border-box; max-block-size: var( --lr-ingestion-queue-max-height, var(--_lr-ingestion-queue-max-height) ); overflow-y: auto; overflow-x: clip; } lr-virtual-list { display: block; --lr-virtual-list-height: var(--lr-size-24rem); } [part="item"], lr-virtual-list::part(item) { display: flex; flex-direction: column; gap: var(--lr-space-xs); box-sizing: border-box; padding: var(--lr-space-s) var(--lr-space-m); border-block-end: var(--lr-border-width-thin) solid var(--lr-color-border-subtle); } [part="item-header"], lr-virtual-list::part(item-header) { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--lr-space-s); } [part="item-name"], lr-virtual-list::part(item-name) { min-inline-size: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: var(--lr-font-weight-medium); color: var(--lr-color-text); } [part="item-progress"], lr-virtual-list::part(item-progress) { display: block; } [part="item-meta"], lr-virtual-list::part(item-meta) { display: flex; flex-wrap: wrap; gap: var(--lr-space-s); font-size: var(--lr-font-size-xs); color: var(--lr-color-text-quiet); } [part="item-chunk-count"], lr-virtual-list::part(item-chunk-count), [part="item-embedding-status"], lr-virtual-list::part(item-embedding-status), [part="item-attempts"], lr-virtual-list::part(item-attempts) { unicode-bidi: plaintext; } [part="item-error"], lr-virtual-list::part(item-error) { margin: 0; color: var(--lr-color-danger); font-size: var(--lr-font-size-sm); overflow-wrap: anywhere; } [part="item-actions"], lr-virtual-list::part(item-actions) { display: flex; flex-wrap: wrap; gap: var(--lr-space-s); } [part="retry-button"], lr-virtual-list::part(retry-button), [part="cancel-button"], lr-virtual-list::part(cancel-button) { display: inline-flex; align-items: center; gap: var(--lr-size-0-35em); box-sizing: border-box; ${iconHitTarget} padding: var(--lr-size-0-25rem) var(--lr-space-s); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius-pill); background: var(--lr-color-surface); color: var(--lr-color-text); font: inherit; font-size: var(--lr-font-size-xs); cursor: pointer; transition: background-color var(--lr-transition-fast), border-color var(--lr-transition-fast), color var(--lr-transition-fast); } [part="retry-button"]:hover, lr-virtual-list::part(retry-button):hover { border-color: var(--lr-color-brand); color: var(--lr-color-brand); } [part="retry-button"]:active, lr-virtual-list::part(retry-button):active { border-color: var(--lr-color-brand); color: var(--lr-color-brand); background: color-mix( in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="cancel-button"]:hover, lr-virtual-list::part(cancel-button):hover { border-color: var(--lr-color-danger); color: var(--lr-color-danger); } [part="cancel-button"]:active, lr-virtual-list::part(cancel-button):active { border-color: var(--lr-color-danger); color: var(--lr-color-danger); background: color-mix( in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="retry-button"]:focus-visible, lr-virtual-list::part(retry-button):focus-visible, [part="cancel-button"]:focus-visible, lr-virtual-list::part(cancel-button):focus-visible { ${focusRing} } @media (prefers-reduced-motion: reduce) { [part="retry-button"], lr-virtual-list::part(retry-button), [part="cancel-button"], lr-virtual-list::part(cancel-button) { transition: none !important; } } `;export{styles};
1
+ import{iconHitTarget,focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";const styles=css` :host { display: block; --_lr-ingestion-queue-max-height: none; } [part="base"] { display: block; box-sizing: border-box; min-inline-size: 0; } [part="list"] { display: flex; flex-direction: column; box-sizing: border-box; max-block-size: var( --lr-ingestion-queue-max-height, var(--_lr-ingestion-queue-max-height) ); overflow-y: auto; overflow-x: clip; } lr-virtual-list { display: block; --lr-virtual-list-height: var(--lr-size-24rem); } [part="item"], lr-virtual-list::part(item) { display: flex; flex-direction: column; gap: var(--lr-space-xs); box-sizing: border-box; padding: var(--lr-space-s) var(--lr-space-m); border-block-end: var(--lr-border-width-thin) solid var(--lr-color-border-subtle); } [part="item-header"], lr-virtual-list::part(item-header) { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--lr-space-s); } [part="item-name"], lr-virtual-list::part(item-name) { min-inline-size: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: var(--lr-font-weight-medium); color: var(--lr-color-text); } [part="item-progress"], lr-virtual-list::part(item-progress) { display: block; } [part="item-meta"], lr-virtual-list::part(item-meta) { display: flex; flex-wrap: wrap; gap: var(--lr-space-s); font-size: var(--lr-font-size-xs); color: var(--lr-color-text-quiet); } [part="item-chunk-count"], lr-virtual-list::part(item-chunk-count), [part="item-embedding-status"], lr-virtual-list::part(item-embedding-status), [part="item-attempts"], lr-virtual-list::part(item-attempts) { unicode-bidi: plaintext; } [part="item-error"], lr-virtual-list::part(item-error) { margin: 0; color: var(--lr-color-danger); font-size: var(--lr-font-size-sm); overflow-wrap: anywhere; } [part="item-actions"], lr-virtual-list::part(item-actions) { display: flex; flex-wrap: wrap; gap: var(--lr-space-s); } [part="source-retry"], [part="retry-button"], lr-virtual-list::part(retry-button), [part="cancel-button"], lr-virtual-list::part(cancel-button) { display: inline-flex; align-items: center; gap: var(--lr-size-0-35em); box-sizing: border-box; ${iconHitTarget} padding: var(--lr-size-0-25rem) var(--lr-space-s); border: var(--lr-border-width-thin) solid var(--lr-color-border); border-radius: var(--lr-radius-pill); background: var(--lr-color-surface); color: var(--lr-color-text); font: inherit; font-size: var(--lr-font-size-xs); cursor: pointer; transition: background-color var(--lr-transition-fast), border-color var(--lr-transition-fast), color var(--lr-transition-fast); } [part="source-retry"]:hover, [part="retry-button"]:hover, lr-virtual-list::part(retry-button):hover { border-color: var(--lr-color-brand); color: var(--lr-color-brand); } [part="source-retry"]:active, [part="retry-button"]:active, lr-virtual-list::part(retry-button):active { border-color: var(--lr-color-brand); color: var(--lr-color-brand); background: color-mix( in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="cancel-button"]:hover, lr-virtual-list::part(cancel-button):hover { border-color: var(--lr-color-danger); color: var(--lr-color-danger); } [part="cancel-button"]:active, lr-virtual-list::part(cancel-button):active { border-color: var(--lr-color-danger); color: var(--lr-color-danger); background: color-mix( in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="source-retry"]:focus-visible, [part="retry-button"]:focus-visible, lr-virtual-list::part(retry-button):focus-visible, [part="cancel-button"]:focus-visible, lr-virtual-list::part(cancel-button):focus-visible { ${focusRing} } @media (prefers-reduced-motion: reduce) { [part="source-retry"], [part="retry-button"], lr-virtual-list::part(retry-button), [part="cancel-button"], lr-virtual-list::part(cancel-button) { transition: none !important; } } [part='source-pagination'] { display: block; margin-block-start: var(--lr-space-s); } [part='source-status'], [part='limit'] { margin: 0; padding: var(--lr-space-s); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-sm); overflow-wrap: anywhere; } `;export{styles};
@@ -1,4 +1,4 @@
1
- import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import{type LyraHeadingLevel}from'../../../internal/heading-level.js';
1
+ import type{LyraPageSource}from'../../../data-sources.js';import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import{type LyraHeadingLevel}from'../../../internal/heading-level.js';import type{LyraTableEventMap}from'../../data/table/table.class.js';
2
2
  /** Sync lifecycle state of one knowledge source, as last reported by the host. */
3
3
  export type KnowledgeSourceSyncStatus='idle'|'syncing'|'paused'|'synced'|'error';
4
4
  /** Health of the most recent indexing pass over a source's content, as last reported by the host. */
@@ -24,7 +24,11 @@ indexingHealth?:KnowledgeSourceIndexingHealth;permission?:KnowledgeSourcePermiss
24
24
  lastSyncedAt?:Date|string;
25
25
  /** Shown only while `syncStatus` is `'error'`. Caller-supplied data, not routed through
26
26
  * `localize()`. */
27
- errorMessage?:string;}export interface LyraKnowledgeBaseEventMap{
27
+ errorMessage?:string;}
28
+ /** Full-source server order for the source grid. */
29
+ export interface KnowledgeBaseSourceQuery{readonly sortKey:string|null;readonly sortDir:'asc'|'desc';}
30
+ /** Full-source counts; attention may overlap either lifecycle count. */
31
+ export interface KnowledgeBaseSourceSummary{readonly total:number;readonly synced:number;readonly syncing:number;readonly attention:number;}export type KnowledgeBaseSource=LyraPageSource<KnowledgeSource,KnowledgeBaseSourceQuery,KnowledgeBaseSourceSummary>;export interface LyraKnowledgeBaseEventMap{'lr-sort-request':LyraTableEventMap<KnowledgeSource>['lr-sort-request'];'lr-sort':LyraTableEventMap<KnowledgeSource>['lr-sort'];
28
32
  /** The toolbar's "Add source" affordance was activated. No `sourceId` -- there is nothing yet to
29
33
  * reference; the host owns the actual creation flow (naming, connector picking, ...). */
30
34
  'lr-source-create':CustomEvent<null>;
@@ -66,6 +70,13 @@ errorMessage?:string;}export interface LyraKnowledgeBaseEventMap{
66
70
  * Blank source ids and later duplicates are ignored before summary counts, rendering, or actions.
67
71
  * The first source for an id wins.
68
72
  *
73
+ * `dataSource` opts into provider-owned server pages of at most 500 rows. Source keys must
74
+ * equal record IDs. Each response supplies authoritative total/synced/syncing/attention counts;
75
+ * attention can overlap the lifecycle counts. Only the current page is retained, and the name,
76
+ * sync, health, and permission headers request server sorting. Undefined restores `sources`.
77
+ * Reassign the provider or call requestUpdate() to refresh; ordinary presentation updates do not
78
+ * refetch. Provider failures retain the toolbar and use the existing cancelable retry contract.
79
+ *
69
80
  * A separate `error` state reports a failed source-list load without discarding the toolbar and
70
81
  * summary context around it: while `error` is set, the nested `<lr-table>` shows its own built-in
71
82
  * failed-load state (the same `error`-prefixed exported parts and `[part='retry-button']` as
@@ -76,7 +87,10 @@ errorMessage?:string;}export interface LyraKnowledgeBaseEventMap{
76
87
  * (it intercepts the table's own `lr-retry-request`, re-proposes its own cancelable one, and only then
77
88
  * clears `error`) so the outer property never drifts out of sync with the table's internal state.
78
89
  *
90
+ * @csspart source-status - Localized provider loading or failed-summary status.
79
91
  * @customElement lr-knowledge-base
92
+ * @event lr-sort-request - Source mode only: cancelable original table sort proposal.
93
+ * @event lr-sort - Source mode only: original accepted table sort commit.
80
94
  * @event lr-source-create - The toolbar "Add source" affordance was activated. No detail.
81
95
  * @event lr-source-sync - A row's "Sync now" action was activated. `detail: { sourceId }`.
82
96
  * @event lr-source-pause - A row's "Pause sync" action was activated. `detail: { sourceId }`.
@@ -129,7 +143,16 @@ errorMessage?:string;}export interface LyraKnowledgeBaseEventMap{
129
143
  * @status stable
130
144
  * @since 4.1.0
131
145
  */
132
- export declare class LyraKnowledgeBase extends LyraElement<LyraKnowledgeBaseEventMap>{protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly ownedCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];
146
+ export declare class LyraKnowledgeBase extends LyraElement<LyraKnowledgeBaseEventMap>{protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly ownedCollectionProperties:readonly string[];protected static readonly identityCollectionObjectProperties:readonly string[];static styles:import("lit").CSSResultGroup[];private sourceStateVersion;private _dataSource?;private sourceEpoch;private sourceVersion;private sourceSyncing;private sourceResync;private sourceLocaleUpdate;private sourceInputs?;private sourceResult?;private sourceRows;private sourceFailure;private sourceTableShown;private sourceSortKey;private sourceSortDir;private sortRequest?;private readonly sourcePages;
147
+ /** Immutable full-source provider; takes precedence over sources. Keys equal source IDs.
148
+ * Reassigning the same provider or requestUpdate() refreshes. undefined restores sources. */
149
+ get dataSource():KnowledgeBaseSource|undefined;set dataSource(value:KnowledgeBaseSource|undefined);
150
+ /** Zero-based provider page. */
151
+ sourcePage:number;
152
+ /** Provider page size, normalized to 1–500. */
153
+ sourcePageSize:number;
154
+ /** Accepted full-source total; null while pending, failed, or using sources. */
155
+ get sourceTotal():number|null;private get sourceMode();private sourceCurrent;requestUpdate(...args:Parameters<LyraElement['requestUpdate']>):void;attributeChangedCallback(name:string,old:string|null,value:string|null):void;connectedCallback():void;adoptedCallback():void;protected willUpdate(changed:PropertyValues):void;private clearSourceLifecycle;private syncSource;private loadSourcePage;
133
156
  /** The sources to list, in display order. */
134
157
  sources:readonly KnowledgeSource[];
135
158
  /** Heading text and the nested table's accessible name. A host `aria-label` independently
@@ -151,4 +174,4 @@ error:boolean;
151
174
  * own `tableLoadFailed` default. */
152
175
  errorHeading?:string;
153
176
  /** Failed-load supporting copy, forwarded to the nested table. */
154
- errorDescription:string;private readonly slotPresence;private get hasErrorSlot();private onTableRetry;private sourcesCache?;private get normalizedSources();private readonly rowKey;private syncStatusLabel;private healthLabel;private permissionLabel;private sourceName;private renderNameCell;private renderSyncCell;private renderHealthCell;private renderPermissionCell;private onRowAction;private readonly openActionMenus;private updateActionMenu;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private renderActionsCell;private renderActionItems;private columnsCache?;private tableColumns;private renderSummary;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-knowledge-base':LyraKnowledgeBase;}}
177
+ errorDescription:string;private readonly slotPresence;private get hasErrorSlot();private legacyTableRetry;private sourceRetryCommit?;private readonly sourceTableRetry;private retrySource;private sourcesCache?;private get normalizedSources();private readonly rowKey;private syncStatusLabel;private healthLabel;private permissionLabel;private sourceName;private renderNameCell;private renderSyncCell;private renderHealthCell;private renderPermissionCell;private onRowAction;private readonly openActionMenus;private closeActionMenus;private updateActionMenu;protected updated(changed:PropertyValues):void;disconnectedCallback():void;private renderActionsCell;private renderActionItems;private columnsCache?;private tableColumns;private renderSummary;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-knowledge-base':LyraKnowledgeBase;}}
@@ -1,4 +1,4 @@
1
- import{__decorate}from"tslib";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing,render as renderLit,svg}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{tag}from"../../../internal/prefix.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{finiteCount}from"../../../internal/numbers.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{createRetryForwarder}from"../../../internal/retry-forwarder.js";import{getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{playIcon,pauseIcon}from"../../../internal/icons.js";import{styles}from"./knowledge-base.styles.js";import{LYRA_DEFAULT_knowledgeBaseActionsColumn,LYRA_DEFAULT_knowledgeBaseCreateSource,LYRA_DEFAULT_knowledgeBaseDeleteAction,LYRA_DEFAULT_knowledgeBaseDocumentCount,LYRA_DEFAULT_knowledgeBaseEmptyDescription,LYRA_DEFAULT_knowledgeBaseEmptyHeading,LYRA_DEFAULT_knowledgeBaseHeading,LYRA_DEFAULT_knowledgeBaseHealthColumn,LYRA_DEFAULT_knowledgeBaseHealthDegraded,LYRA_DEFAULT_knowledgeBaseHealthFailed,LYRA_DEFAULT_knowledgeBaseHealthHealthy,LYRA_DEFAULT_knowledgeBaseHealthUnknown,LYRA_DEFAULT_knowledgeBaseNameColumn,LYRA_DEFAULT_knowledgeBaseNeedsAttention,LYRA_DEFAULT_knowledgeBaseNeverSynced,LYRA_DEFAULT_knowledgeBasePauseAction,LYRA_DEFAULT_knowledgeBasePermissionColumn,LYRA_DEFAULT_knowledgeBasePermissionEditor,LYRA_DEFAULT_knowledgeBasePermissionOwner,LYRA_DEFAULT_knowledgeBasePermissionRestricted,LYRA_DEFAULT_knowledgeBasePermissionViewer,LYRA_DEFAULT_knowledgeBaseRowActionsLabel,LYRA_DEFAULT_knowledgeBaseSyncAction,LYRA_DEFAULT_knowledgeBaseSyncColumn,LYRA_DEFAULT_knowledgeBaseSyncError,LYRA_DEFAULT_knowledgeBaseSyncIdle,LYRA_DEFAULT_knowledgeBaseSyncPaused,LYRA_DEFAULT_knowledgeBaseSyncSynced,LYRA_DEFAULT_knowledgeBaseSyncSyncing,LYRA_DEFAULT_knowledgeBaseSyncedSources,LYRA_DEFAULT_knowledgeBaseSyncingSources,LYRA_DEFAULT_knowledgeBaseTotalSources,LYRA_DEFAULT_untitledSource}from"../../../internal/default-strings/retrieval.generated.js";const SYNC_STATUS_VARIANT={idle:"neutral",syncing:"brand",paused:"warning",synced:"success",error:"danger"},HEALTH_VARIANT={healthy:"success",degraded:"warning",failed:"danger",unknown:"neutral"},PERMISSION_VARIANT={owner:"brand",editor:"neutral",viewer:"neutral",restricted:"warning"},TABLE_EXPORT_PARTS=["name-cell:name-cell","source-name:source-name","source-type:source-type","sync-cell:sync-cell","sync-badge:sync-badge","sync-timestamp:sync-timestamp","sync-error:sync-error","health-cell:health-cell","health-badge:health-badge","document-count:document-count","permission-badge:permission-badge","actions-menu:actions-menu","actions-trigger:actions-trigger","error-row:error-row","error-cell:error-cell","error:error","error-base:error-base","error-icon:error-icon","error-heading:error-heading","error-description:error-description","error-actions:error-actions","retry-button:retry-button"].join(", "),ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function trashIcon(){return svg`
1
+ import{__decorate}from"tslib";import{SourcePageController}from"../../../internal/source-page-controller.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{SlotPresenceController}from"../../../internal/slot-presence-controller.js";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing,render as renderLit,svg}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{tag}from"../../../internal/prefix.js";import{firstByRetrievalIdentity}from"../retrieval-identity.js";import{finiteCount,finiteInteger}from"../../../internal/numbers.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{createRetryForwarder}from"../../../internal/retry-forwarder.js";import{getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{playIcon,pauseIcon}from"../../../internal/icons.js";import{styles}from"./knowledge-base.styles.js";import{LYRA_DEFAULT_knowledgeBaseActionsColumn,LYRA_DEFAULT_knowledgeBaseCreateSource,LYRA_DEFAULT_knowledgeBaseDeleteAction,LYRA_DEFAULT_knowledgeBaseDocumentCount,LYRA_DEFAULT_knowledgeBaseEmptyDescription,LYRA_DEFAULT_knowledgeBaseEmptyHeading,LYRA_DEFAULT_knowledgeBaseHeading,LYRA_DEFAULT_knowledgeBaseHealthColumn,LYRA_DEFAULT_knowledgeBaseHealthDegraded,LYRA_DEFAULT_knowledgeBaseHealthFailed,LYRA_DEFAULT_knowledgeBaseHealthHealthy,LYRA_DEFAULT_knowledgeBaseHealthUnknown,LYRA_DEFAULT_knowledgeBaseNameColumn,LYRA_DEFAULT_knowledgeBaseNeedsAttention,LYRA_DEFAULT_knowledgeBaseNeverSynced,LYRA_DEFAULT_knowledgeBasePauseAction,LYRA_DEFAULT_knowledgeBasePermissionColumn,LYRA_DEFAULT_knowledgeBasePermissionEditor,LYRA_DEFAULT_knowledgeBasePermissionOwner,LYRA_DEFAULT_knowledgeBasePermissionRestricted,LYRA_DEFAULT_knowledgeBasePermissionViewer,LYRA_DEFAULT_knowledgeBaseRowActionsLabel,LYRA_DEFAULT_knowledgeBaseSyncAction,LYRA_DEFAULT_knowledgeBaseSyncColumn,LYRA_DEFAULT_knowledgeBaseSyncError,LYRA_DEFAULT_knowledgeBaseSyncIdle,LYRA_DEFAULT_knowledgeBaseSyncPaused,LYRA_DEFAULT_knowledgeBaseSyncSynced,LYRA_DEFAULT_knowledgeBaseSyncSyncing,LYRA_DEFAULT_knowledgeBaseSyncedSources,LYRA_DEFAULT_knowledgeBaseSyncingSources,LYRA_DEFAULT_knowledgeBaseTotalSources,LYRA_DEFAULT_untitledSource}from"../../../internal/default-strings/retrieval.generated.js";import{LYRA_DEFAULT_loading,LYRA_DEFAULT_tableLoadFailed}from"../../../internal/default-strings/shared.generated.js";function sourceField(value,key,current,required=!1){if(!current())throw new Error("Source record revoked");if(!value||typeof value!="object")throw new TypeError("Invalid source value");const descriptor=getOwnDataDescriptor(value,key);if(!current())throw new Error("Source record revoked");if(descriptor===UNSAFE_OWN_DATA_DESCRIPTOR||required&&descriptor===MISSING_OWN_DATA_DESCRIPTOR)throw new TypeError("Invalid source field");return descriptor===MISSING_OWN_DATA_DESCRIPTOR?void 0:descriptor.value}function sourceCount(value){if(typeof value!="number"||!Number.isSafeInteger(value)||value<0)throw new TypeError("Invalid source count");return value}function projectKnowledgeSource(record,current){const read=(key,required=!1)=>sourceField(record.value,key,current,required),id=read("id",!0),name=read("name",!0),type=read("type"),syncStatus=read("syncStatus",!0),indexingHealth=read("indexingHealth"),permission=read("permission"),documentCount=read("documentCount"),timestamp=read("lastSyncedAt"),errorMessage=read("errorMessage");let units=0;for(const value of[id,name,type,syncStatus,indexingHealth,permission,errorMessage,typeof timestamp=="string"?timestamp:void 0]){if(value!==void 0&&typeof value!="string")throw new TypeError("Invalid source text");units+=typeof value=="string"?value.length:0}if(typeof id!="string"||!id.trim()||id!==record.key||typeof name!="string"||units>65536)throw new TypeError("Invalid source record");if(!["idle","syncing","paused","synced","error"].includes(syncStatus))throw new TypeError("Invalid source status");if(indexingHealth!==void 0&&!["healthy","degraded","failed","unknown"].includes(indexingHealth))throw new TypeError("Invalid source health");if(permission!==void 0&&!["owner","editor","viewer","restricted"].includes(permission))throw new TypeError("Invalid source permission");documentCount!==void 0&&sourceCount(documentCount);let lastSyncedAt;if(typeof timestamp=="string"||timestamp===void 0)lastSyncedAt=timestamp;else{const time=Date.prototype.getTime.call(timestamp);if(!Number.isFinite(time))throw new TypeError("Invalid source timestamp");lastSyncedAt=new Date(time)}if(!current())throw new Error("Source record revoked");return Object.freeze({id,name,type,syncStatus,indexingHealth,permission,documentCount,lastSyncedAt,errorMessage})}function projectKnowledgeSummary(value,current){const read=key=>sourceCount(sourceField(value,key,current,!0));return Object.freeze({total:read("total"),synced:read("synced"),syncing:read("syncing"),attention:read("attention")})}const SYNC_STATUS_VARIANT={idle:"neutral",syncing:"brand",paused:"warning",synced:"success",error:"danger"},HEALTH_VARIANT={healthy:"success",degraded:"warning",failed:"danger",unknown:"neutral"},PERMISSION_VARIANT={owner:"brand",editor:"neutral",viewer:"neutral",restricted:"warning"},TABLE_EXPORT_PARTS=["name-cell:name-cell","source-name:source-name","source-type:source-type","sync-cell:sync-cell","sync-badge:sync-badge","sync-timestamp:sync-timestamp","sync-error:sync-error","health-cell:health-cell","health-badge:health-badge","document-count:document-count","permission-badge:permission-badge","actions-menu:actions-menu","actions-trigger:actions-trigger","error-row:error-row","error-cell:error-cell","error:error","error-base:error-base","error-icon:error-icon","error-heading:error-heading","error-description:error-description","error-actions:error-actions","retry-button:retry-button"].join(", "),ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function trashIcon(){return svg`
2
2
  <svg width="1em" height="1em" viewBox=${ICON_VIEW_BOX} fill="none" stroke="currentColor" stroke-width=${ICON_STROKE_WIDTH} stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
3
3
  <path d="M4 7h16"></path>
4
4
  <path d="M10 11v6"></path>
@@ -12,7 +12,7 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
12
12
  <circle cx="12" cy="12" r="1.75"></circle>
13
13
  <circle cx="12" cy="19" r="1.75"></circle>
14
14
  </svg>
15
- `}function normalizeTimestamp(value){if(value===void 0)return;const date=value instanceof Date?value:new Date(value);return Number.isNaN(date.getTime())?void 0:date}class LyraKnowledgeBase extends LyraElement{constructor(){super(...arguments),this.sources=[],this.headingLevel="3",this.withoutSummary=!1,this.withoutCreate=!1,this.error=!1,this.errorDescription="",this.slotPresence=new SlotPresenceController(this,{observeLightDom:!0}),this.onTableRetry=createRetryForwarder(init=>this.emit("lr-retry-request",null,init),()=>{this.error=!1}),this.rowKey=row=>row.id,this.openActionMenus=new Map}static{this.defaultStrings={...super.defaultStrings,knowledgeBaseActionsColumn:LYRA_DEFAULT_knowledgeBaseActionsColumn,knowledgeBaseCreateSource:LYRA_DEFAULT_knowledgeBaseCreateSource,knowledgeBaseDeleteAction:LYRA_DEFAULT_knowledgeBaseDeleteAction,knowledgeBaseDocumentCount:LYRA_DEFAULT_knowledgeBaseDocumentCount,knowledgeBaseEmptyDescription:LYRA_DEFAULT_knowledgeBaseEmptyDescription,knowledgeBaseEmptyHeading:LYRA_DEFAULT_knowledgeBaseEmptyHeading,knowledgeBaseHeading:LYRA_DEFAULT_knowledgeBaseHeading,knowledgeBaseHealthColumn:LYRA_DEFAULT_knowledgeBaseHealthColumn,knowledgeBaseHealthDegraded:LYRA_DEFAULT_knowledgeBaseHealthDegraded,knowledgeBaseHealthFailed:LYRA_DEFAULT_knowledgeBaseHealthFailed,knowledgeBaseHealthHealthy:LYRA_DEFAULT_knowledgeBaseHealthHealthy,knowledgeBaseHealthUnknown:LYRA_DEFAULT_knowledgeBaseHealthUnknown,knowledgeBaseNameColumn:LYRA_DEFAULT_knowledgeBaseNameColumn,knowledgeBaseNeedsAttention:LYRA_DEFAULT_knowledgeBaseNeedsAttention,knowledgeBaseNeverSynced:LYRA_DEFAULT_knowledgeBaseNeverSynced,knowledgeBasePauseAction:LYRA_DEFAULT_knowledgeBasePauseAction,knowledgeBasePermissionColumn:LYRA_DEFAULT_knowledgeBasePermissionColumn,knowledgeBasePermissionEditor:LYRA_DEFAULT_knowledgeBasePermissionEditor,knowledgeBasePermissionOwner:LYRA_DEFAULT_knowledgeBasePermissionOwner,knowledgeBasePermissionRestricted:LYRA_DEFAULT_knowledgeBasePermissionRestricted,knowledgeBasePermissionViewer:LYRA_DEFAULT_knowledgeBasePermissionViewer,knowledgeBaseRowActionsLabel:LYRA_DEFAULT_knowledgeBaseRowActionsLabel,knowledgeBaseSyncAction:LYRA_DEFAULT_knowledgeBaseSyncAction,knowledgeBaseSyncColumn:LYRA_DEFAULT_knowledgeBaseSyncColumn,knowledgeBaseSyncError:LYRA_DEFAULT_knowledgeBaseSyncError,knowledgeBaseSyncIdle:LYRA_DEFAULT_knowledgeBaseSyncIdle,knowledgeBaseSyncPaused:LYRA_DEFAULT_knowledgeBaseSyncPaused,knowledgeBaseSyncSynced:LYRA_DEFAULT_knowledgeBaseSyncSynced,knowledgeBaseSyncSyncing:LYRA_DEFAULT_knowledgeBaseSyncSyncing,knowledgeBaseSyncedSources:LYRA_DEFAULT_knowledgeBaseSyncedSources,knowledgeBaseSyncingSources:LYRA_DEFAULT_knowledgeBaseSyncingSources,knowledgeBaseTotalSources:LYRA_DEFAULT_knowledgeBaseTotalSources,untitledSource:LYRA_DEFAULT_untitledSource}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["sources"])}static{this.styles=[LyraElement.styles,styles]}get hasErrorSlot(){return this.slotPresence.has("error")}get normalizedSources(){return this.sourcesCache?.source!==this.sources&&(this.sourcesCache={source:this.sources,value:firstByRetrievalIdentity(Array.isArray(this.sources)?this.sources:[],source=>source.id)}),this.sourcesCache.value}syncStatusLabel(status){switch(status){case"idle":return this.localize("knowledgeBaseSyncIdle");case"syncing":return this.localize("knowledgeBaseSyncSyncing");case"paused":return this.localize("knowledgeBaseSyncPaused");case"synced":return this.localize("knowledgeBaseSyncSynced");case"error":return this.localize("knowledgeBaseSyncError");default:return this.localize("knowledgeBaseHealthUnknown")}}healthLabel(health){switch(health){case"healthy":return this.localize("knowledgeBaseHealthHealthy");case"degraded":return this.localize("knowledgeBaseHealthDegraded");case"failed":return this.localize("knowledgeBaseHealthFailed");default:return this.localize("knowledgeBaseHealthUnknown")}}permissionLabel(permission){switch(permission){case"owner":return this.localize("knowledgeBasePermissionOwner");case"editor":return this.localize("knowledgeBasePermissionEditor");case"viewer":return this.localize("knowledgeBasePermissionViewer");case"restricted":return this.localize("knowledgeBasePermissionRestricted");default:return this.localize("knowledgeBaseHealthUnknown")}}sourceName(source){return typeof source.name=="string"&&source.name.trim()!==""?source.name:this.localize("untitledSource")}renderNameCell(source){const name=this.sourceName(source);return html`
15
+ `}function normalizeTimestamp(value){if(value===void 0)return;const date=value instanceof Date?value:new Date(value);return Number.isNaN(date.getTime())?void 0:date}class LyraKnowledgeBase extends LyraElement{constructor(){super(...arguments),this.sourceStateVersion=0,this.sourceEpoch=0,this.sourceVersion=0,this.sourceSyncing=!1,this.sourceResync=!1,this.sourceLocaleUpdate=!1,this.sourceRows=[],this.sourceTableShown=!1,this.sourceSortKey=null,this.sourceSortDir="asc",this.sourcePages=new SourcePageController(this,{normalizeRecord:(record,isCurrent)=>{const current=this.sourceCurrent();return Object.freeze({...record,value:projectKnowledgeSource(record,()=>isCurrent()&&current())})},normalizeSummary:value=>projectKnowledgeSummary(value,this.sourceCurrent()),validateMetadata:result=>{const summary=result.summary;if(summary.total!==result.total||summary.synced>summary.total||summary.syncing>summary.total||summary.attention>summary.total||summary.synced+summary.syncing>summary.total)throw new TypeError("Invalid source summary");const rows=result.rows.map(record=>record.value);if(rows.filter(row=>row.syncStatus==="synced").length>summary.synced||rows.filter(row=>row.syncStatus==="syncing").length>summary.syncing||rows.filter(row=>row.syncStatus==="error"||row.indexingHealth==="failed"||row.indexingHealth==="degraded").length>summary.attention)throw new TypeError("Inconsistent source summary")},onChange:()=>{this.sourceStateVersion++}}),this.sourcePage=0,this.sourcePageSize=100,this.sources=[],this.headingLevel="3",this.withoutSummary=!1,this.withoutCreate=!1,this.error=!1,this.errorDescription="",this.slotPresence=new SlotPresenceController(this,{observeLightDom:!0}),this.legacyTableRetry=createRetryForwarder(init=>this.emit("lr-retry-request",null,init),()=>{this.error=!1}),this.sourceTableRetry=createRetryForwarder(init=>this.emit("lr-retry-request",null,init),()=>this.sourceRetryCommit?.()),this.rowKey=row=>row.id,this.openActionMenus=new Map}static{this.defaultStrings={...super.defaultStrings,knowledgeBaseActionsColumn:LYRA_DEFAULT_knowledgeBaseActionsColumn,knowledgeBaseCreateSource:LYRA_DEFAULT_knowledgeBaseCreateSource,knowledgeBaseDeleteAction:LYRA_DEFAULT_knowledgeBaseDeleteAction,knowledgeBaseDocumentCount:LYRA_DEFAULT_knowledgeBaseDocumentCount,knowledgeBaseEmptyDescription:LYRA_DEFAULT_knowledgeBaseEmptyDescription,knowledgeBaseEmptyHeading:LYRA_DEFAULT_knowledgeBaseEmptyHeading,knowledgeBaseHeading:LYRA_DEFAULT_knowledgeBaseHeading,knowledgeBaseHealthColumn:LYRA_DEFAULT_knowledgeBaseHealthColumn,knowledgeBaseHealthDegraded:LYRA_DEFAULT_knowledgeBaseHealthDegraded,knowledgeBaseHealthFailed:LYRA_DEFAULT_knowledgeBaseHealthFailed,knowledgeBaseHealthHealthy:LYRA_DEFAULT_knowledgeBaseHealthHealthy,knowledgeBaseHealthUnknown:LYRA_DEFAULT_knowledgeBaseHealthUnknown,knowledgeBaseNameColumn:LYRA_DEFAULT_knowledgeBaseNameColumn,knowledgeBaseNeedsAttention:LYRA_DEFAULT_knowledgeBaseNeedsAttention,knowledgeBaseNeverSynced:LYRA_DEFAULT_knowledgeBaseNeverSynced,knowledgeBasePauseAction:LYRA_DEFAULT_knowledgeBasePauseAction,knowledgeBasePermissionColumn:LYRA_DEFAULT_knowledgeBasePermissionColumn,knowledgeBasePermissionEditor:LYRA_DEFAULT_knowledgeBasePermissionEditor,knowledgeBasePermissionOwner:LYRA_DEFAULT_knowledgeBasePermissionOwner,knowledgeBasePermissionRestricted:LYRA_DEFAULT_knowledgeBasePermissionRestricted,knowledgeBasePermissionViewer:LYRA_DEFAULT_knowledgeBasePermissionViewer,knowledgeBaseRowActionsLabel:LYRA_DEFAULT_knowledgeBaseRowActionsLabel,knowledgeBaseSyncAction:LYRA_DEFAULT_knowledgeBaseSyncAction,knowledgeBaseSyncColumn:LYRA_DEFAULT_knowledgeBaseSyncColumn,knowledgeBaseSyncError:LYRA_DEFAULT_knowledgeBaseSyncError,knowledgeBaseSyncIdle:LYRA_DEFAULT_knowledgeBaseSyncIdle,knowledgeBaseSyncPaused:LYRA_DEFAULT_knowledgeBaseSyncPaused,knowledgeBaseSyncSynced:LYRA_DEFAULT_knowledgeBaseSyncSynced,knowledgeBaseSyncSyncing:LYRA_DEFAULT_knowledgeBaseSyncSyncing,knowledgeBaseSyncedSources:LYRA_DEFAULT_knowledgeBaseSyncedSources,knowledgeBaseSyncingSources:LYRA_DEFAULT_knowledgeBaseSyncingSources,knowledgeBaseTotalSources:LYRA_DEFAULT_knowledgeBaseTotalSources,loading:LYRA_DEFAULT_loading,tableLoadFailed:LYRA_DEFAULT_tableLoadFailed,untitledSource:LYRA_DEFAULT_untitledSource}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["sources"])}static{this.identityCollectionObjectProperties=Object.freeze(["dataSource"])}static{this.styles=[LyraElement.styles,styles]}get dataSource(){return this._dataSource}set dataSource(value){const old=this._dataSource;this._dataSource=value,this.sourceEpoch=(this.sourceEpoch??0)+1,this.requestUpdate("dataSource",old)}get sourceTotal(){return this.sourceMode?this.sourceResult?.total??null:null}get sourceMode(){return this.dataSource!==void 0}sourceCurrent(){const version=this.sourceVersion,epoch=this.sourceEpoch,source=this.dataSource,owner=this.ownerDocument;return()=>this.isConnected&&this.ownerDocument===owner&&this.sourceVersion===version&&this.sourceEpoch===epoch&&this.dataSource===source}requestUpdate(...args){if(this.sourceLocaleUpdate){super.requestUpdate(...args),this.syncSource();return}args[0]===void 0&&(!this.sourceInputs||this.effectiveLocale===this.sourceInputs[3])&&(this.sourceEpoch=(this.sourceEpoch??0)+1),(args[0]===void 0||["dataSource","sourcePage","sourcePageSize"].includes(String(args[0])))&&this.syncSource(),super.requestUpdate(...args)}attributeChangedCallback(name,old,value){const previous=this.sourceLocaleUpdate;(name==="lang"||name==="locale")&&(this.sourceLocaleUpdate=!0);try{super.attributeChangedCallback(name,old,value)}finally{this.sourceLocaleUpdate=previous}}connectedCallback(){super.connectedCallback(),this.syncSource()}adoptedCallback(){this.clearSourceLifecycle(),this.sourcePages.adopted(),super.adoptedCallback(),this.syncSource()}willUpdate(changed){super.willUpdate(changed),this.syncSource()}clearSourceLifecycle(){this.sourceEpoch++,this.sourceVersion++,this.sourceInputs=void 0,this.sourceRows=[],this.sourceResult=void 0,this.sourceFailure=void 0,this.sourceTableShown=!1,this.closeActionMenus(),this.sourcePages.bind(void 0)}syncSource(){if(!this.sourcePages||!this.isConnected)return;if(this.sourceSyncing){this.sourceResync=!0;return}this.sourceSyncing=!0;const source=this.dataSource,epoch=this.sourceEpoch,owner=this.ownerDocument,current=()=>this.isConnected&&this.ownerDocument===owner&&this.dataSource===source&&this.sourceEpoch===epoch;try{if(source===void 0){(this.sourceInputs||this.sourceFailure)&&this.clearSourceLifecycle();return}const revision=source.revision;if(!current())return;const locale=this.effectiveLocale,size=finiteInteger(this.sourcePageSize,100,1,500);let page=finiteInteger(this.sourcePage,0,0,Math.floor(Number.MAX_SAFE_INTEGER/size));this.sourceInputs&&(size!==this.sourceInputs[6]||this.sourceSortKey!==this.sourceInputs[4]||this.sourceSortDir!==this.sourceInputs[5])&&(page=0);const inputs=[source,revision,epoch,locale,this.sourceSortKey,this.sourceSortDir,size,page];if(this.sourceInputs&&inputs.every((value,index)=>value===this.sourceInputs[index]))return;const version=++this.sourceVersion;if(this.sourceInputs=inputs,this.sourceRows=[],this.sourceResult=void 0,this.sourceFailure=void 0,this.closeActionMenus(),this.sourcePage=page,this.sourcePages.bind({source,revision,epoch,locale}),!current()||this.sourceVersion!==version)return;this.loadSourcePage(version,Object.freeze({sortKey:this.sourceSortKey,sortDir:this.sourceSortDir}),page,size)}catch(error){current()&&(this.sourceVersion++,this.sourceRows=[],this.sourceResult=void 0,this.sourceFailure=error,this.closeActionMenus(),this.sourcePages.bind(void 0))}finally{this.sourceSyncing=!1,this.sourceResync&&(this.sourceResync=!1,this.syncSource())}}async loadSourcePage(version,query,page,size){const owner=this.ownerDocument,accepted=await this.sourcePages.request(query,page,size);!this.isConnected||this.ownerDocument!==owner||this.sourceVersion!==version||!this.sourceMode||(accepted&&(this.sourceResult=this.sourcePages.state.result,this.sourceRows=this.sourceResult.rows.map(record=>record.value),this.sourceInputs&&(this.sourceInputs=[...this.sourceInputs.slice(0,-1),this.sourcePages.state.page]),this.sourcePage=this.sourcePages.state.page),this.sourceStateVersion++)}get hasErrorSlot(){return this.slotPresence.has("error")}retrySource(event,current,failed){if(!current()){event.stopPropagation(),event.preventDefault();return}const nested=this.sourceRetryCommit!==void 0;nested||(this.sourceRetryCommit=()=>{!current()||!this.sourceMode||(this.error=!1,failed&&current()&&this.requestUpdate())});try{this.sourceTableRetry(event)}finally{nested||(this.sourceRetryCommit=void 0)}}get normalizedSources(){return this.sourcesCache?.source!==this.sources&&(this.sourcesCache={source:this.sources,value:firstByRetrievalIdentity(Array.isArray(this.sources)?this.sources:[],source=>source.id)}),this.sourcesCache.value}syncStatusLabel(status){switch(status){case"idle":return this.localize("knowledgeBaseSyncIdle");case"syncing":return this.localize("knowledgeBaseSyncSyncing");case"paused":return this.localize("knowledgeBaseSyncPaused");case"synced":return this.localize("knowledgeBaseSyncSynced");case"error":return this.localize("knowledgeBaseSyncError");default:return this.localize("knowledgeBaseHealthUnknown")}}healthLabel(health){switch(health){case"healthy":return this.localize("knowledgeBaseHealthHealthy");case"degraded":return this.localize("knowledgeBaseHealthDegraded");case"failed":return this.localize("knowledgeBaseHealthFailed");default:return this.localize("knowledgeBaseHealthUnknown")}}permissionLabel(permission){switch(permission){case"owner":return this.localize("knowledgeBasePermissionOwner");case"editor":return this.localize("knowledgeBasePermissionEditor");case"viewer":return this.localize("knowledgeBasePermissionViewer");case"restricted":return this.localize("knowledgeBasePermissionRestricted");default:return this.localize("knowledgeBaseHealthUnknown")}}sourceName(source){return typeof source.name=="string"&&source.name.trim()!==""?source.name:this.localize("untitledSource")}renderNameCell(source){const name=this.sourceName(source);return html`
16
16
  <div part="name-cell">
17
17
  <span part="source-name">${name}</span>
18
18
  ${source.type?html`<span part="source-type">${source.type}</span>`:nothing}
@@ -42,10 +42,10 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
42
42
  part="permission-badge"
43
43
  variant=${PERMISSION_VARIANT[source.permission]??"neutral"}
44
44
  >${this.permissionLabel(source.permission)}</lr-badge
45
- >`:html``}onRowAction(source,action){action==="sync"?this.emit("lr-source-sync",{sourceId:source.id}):action==="pause"?this.emit("lr-source-pause",{sourceId:source.id}):action==="delete"&&this.emit("lr-source-delete",{sourceId:source.id})}updateActionMenu(dropdown,sourceId){const menu=dropdown.querySelector(tag("menu")),source=this.normalizedSources.find(row=>row.id===sourceId);if(!menu||!source)return;menu.label=this.localize("knowledgeBaseRowActionsLabel",void 0,{name:this.sourceName(source)});const canPause=source.syncStatus==="syncing",canSync=SYNC_STATUS_VARIANT[source.syncStatus]!==void 0&&!canPause;renderLit(this.renderActionItems(canSync,canPause),menu)}updated(changed){super.updated(changed);for(const[dropdown,sourceId]of this.openActionMenus){if(!dropdown.isConnected||!dropdown.open){this.openActionMenus.delete(dropdown);continue}this.updateActionMenu(dropdown,sourceId)}}disconnectedCallback(){this.openActionMenus.clear(),super.disconnectedCallback()}renderActionsCell(source){const label=this.localize("knowledgeBaseRowActionsLabel",void 0,{name:this.sourceName(source)});return html`
45
+ >`:html``}onRowAction(source,action){action==="sync"?this.emit("lr-source-sync",{sourceId:source.id}):action==="pause"?this.emit("lr-source-pause",{sourceId:source.id}):action==="delete"&&this.emit("lr-source-delete",{sourceId:source.id})}closeActionMenus(){for(const dropdown of this.openActionMenus.keys()){dropdown.open=!1;const menu=dropdown.querySelector(tag("menu"));menu&&renderLit(nothing,menu)}this.openActionMenus.clear()}updateActionMenu(dropdown,sourceId){const menu=dropdown.querySelector(tag("menu")),admitted=this.openActionMenus.get(dropdown),source=this.sourceMode?admitted?.current()?admitted.source:void 0:this.normalizedSources.find(row=>row.id===sourceId);if(!menu||!source)return;menu.label=this.localize("knowledgeBaseRowActionsLabel",void 0,{name:this.sourceName(source)});const canPause=source.syncStatus==="syncing",canSync=SYNC_STATUS_VARIANT[source.syncStatus]!==void 0&&!canPause;renderLit(this.renderActionItems(canSync,canPause),menu)}updated(changed){super.updated(changed);for(const[dropdown,admission]of this.openActionMenus){if(!dropdown.isConnected||!dropdown.open){this.openActionMenus.delete(dropdown);continue}this.updateActionMenu(dropdown,admission.source.id)}}disconnectedCallback(){this.clearSourceLifecycle(),super.disconnectedCallback()}renderActionsCell(source){const sourceMode=this.sourceMode,authority=this.sourceCurrent(),current=()=>sourceMode?authority()&&this.sourceMode&&this.sourceRows.includes(source):!this.sourceMode,label=this.localize("knowledgeBaseRowActionsLabel",void 0,{name:this.sourceName(source)});return html`
46
46
  <lr-dropdown without-arrow part="actions-menu" placement="bottom-end"
47
- @lr-show=${event=>{const dropdown=event.currentTarget;if(event.target!==dropdown)return;const menu=dropdown.querySelector(tag("menu"));menu&&(this.openActionMenus.set(dropdown,source.id),this.updateActionMenu(dropdown,source.id),queueMicrotask(()=>{dropdown.open||(this.openActionMenus.delete(dropdown),renderLit(nothing,menu))}))}}
48
- @lr-after-hide=${event=>{const dropdown=event.currentTarget;if(event.target!==dropdown)return;const menu=dropdown.querySelector(tag("menu"));!dropdown.open&&menu&&(this.openActionMenus.delete(dropdown),renderLit(nothing,menu))}}>
47
+ @lr-show=${event=>{const dropdown=event.currentTarget;if(event.target!==dropdown||!current())return;const menu=dropdown.querySelector(tag("menu"));menu&&(this.openActionMenus.set(dropdown,{source,current}),this.updateActionMenu(dropdown,source.id),queueMicrotask(()=>{current()&&!dropdown.open&&(this.openActionMenus.delete(dropdown),renderLit(nothing,menu))}))}}
48
+ @lr-after-hide=${event=>{const dropdown=event.currentTarget;if(event.target!==dropdown||!current())return;const menu=dropdown.querySelector(tag("menu"));!dropdown.open&&menu&&(this.openActionMenus.delete(dropdown),renderLit(nothing,menu))}}>
49
49
  <button
50
50
  slot="trigger"
51
51
  type="button"
@@ -56,7 +56,7 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
56
56
  </button>
57
57
  <lr-menu
58
58
  label=${label}
59
- @lr-select=${e=>{e.stopPropagation(),this.onRowAction(source,e.detail.item.value)}}
59
+ @lr-select=${e=>{if(e.stopPropagation(),!current())return;const action=e.detail.item.value;!current()||sourceMode&&(action==="sync"&&source.syncStatus==="syncing"||action==="pause"&&source.syncStatus!=="syncing")||this.onRowAction(source,action)}}
60
60
  ></lr-menu>
61
61
  </lr-dropdown>
62
62
  `}renderActionItems(canSync,canPause){return html`
@@ -72,7 +72,7 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
72
72
  <span slot="icon">${trashIcon()}</span>
73
73
  ${this.localize("knowledgeBaseDeleteAction")}
74
74
  </lr-menu-item>
75
- `}tableColumns(){const{effectiveLocale:locale,strings}=this,cached=this.columnsCache;if(cached?.locale===locale&&cached.strings===strings)return cached.value;const value=[{key:"name",label:this.localize("knowledgeBaseNameColumn"),cell:row=>this.renderNameCell(row)},{key:"sync",label:this.localize("knowledgeBaseSyncColumn"),cell:row=>this.renderSyncCell(row)},{key:"health",label:this.localize("knowledgeBaseHealthColumn"),cell:row=>this.renderHealthCell(row)},{key:"permission",label:this.localize("knowledgeBasePermissionColumn"),cell:row=>this.renderPermissionCell(row)},{key:"actions",label:this.localize("knowledgeBaseActionsColumn"),align:"end",cell:row=>this.renderActionsCell(row)}];return this.columnsCache={locale,strings,value},value}renderSummary(sources){const total=sources.length,synced=sources.filter(s=>s.syncStatus==="synced").length,syncing=sources.filter(s=>s.syncStatus==="syncing").length,attention=sources.filter(s=>s.syncStatus==="error"||s.indexingHealth==="failed"||s.indexingHealth==="degraded").length,numberFormat=getNumberFormat(this.effectiveLocale);return html`
75
+ `}tableColumns(){const{effectiveLocale:locale,strings}=this,cached=this.columnsCache;if(cached?.locale===locale&&cached.strings===strings&&cached.source===this.sourceMode)return cached.value;const value=[{key:"name",sortable:this.sourceMode,label:this.localize("knowledgeBaseNameColumn"),cell:row=>this.renderNameCell(row)},{key:"sync",sortable:this.sourceMode,label:this.localize("knowledgeBaseSyncColumn"),cell:row=>this.renderSyncCell(row)},{key:"health",sortable:this.sourceMode,label:this.localize("knowledgeBaseHealthColumn"),cell:row=>this.renderHealthCell(row)},{key:"permission",sortable:this.sourceMode,label:this.localize("knowledgeBasePermissionColumn"),cell:row=>this.renderPermissionCell(row)},{key:"actions",label:this.localize("knowledgeBaseActionsColumn"),align:"end",cell:row=>this.renderActionsCell(row)}];return this.columnsCache={locale,strings,source:this.sourceMode,value},value}renderSummary(sources){const summary=this.sourceMode?this.sourceResult?.summary:void 0,total=summary?.total??sources.length,synced=summary?.synced??sources.filter(s=>s.syncStatus==="synced").length,syncing=summary?.syncing??sources.filter(s=>s.syncStatus==="syncing").length,attention=summary?.attention??sources.filter(s=>s.syncStatus==="error"||s.indexingHealth==="failed"||s.indexingHealth==="degraded").length,numberFormat=getNumberFormat(this.effectiveLocale);return html`
76
76
  <div part="summary">
77
77
  <lr-stat
78
78
  part="summary-stat"
@@ -96,7 +96,7 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
96
96
  value=${numberFormat.format(attention)}
97
97
  ></lr-stat>
98
98
  </div>
99
- `}render(){const sources=this.normalizedSources,heading=this.label==null?this.localize("knowledgeBaseHeading"):this.label,tableLabel=heading.trim()===""?this.localize("knowledgeBaseHeading"):heading,level=resolveHeadingLevel(this.headingLevel);return html`
99
+ `}render(){const source=this.sourceMode,sources=source?this.sourceRows:this.normalizedSources,current=this.sourceCurrent(),version=this.sourceVersion,state2=this.sourcePages.state,failed=source&&!!(state2.error||this.sourceFailure);source&&!state2.pending&&(this.sourceResult||failed)&&(this.sourceTableShown=!0);const columns=this.tableColumns(),heading=this.label==null?this.localize("knowledgeBaseHeading"):this.label,tableLabel=heading.trim()===""?this.localize("knowledgeBaseHeading"):heading,level=resolveHeadingLevel(this.headingLevel);return html`
100
100
  <div part="base">
101
101
  <div part="toolbar">
102
102
  <div part="heading" role=${level?"heading":nothing} aria-level=${level??nothing}>${heading}</div>
@@ -109,22 +109,37 @@ import{__decorate}from"tslib";import{SlotPresenceController}from"../../../intern
109
109
  ${this.localize("knowledgeBaseCreateSource")}
110
110
  </lr-button>`}
111
111
  </div>
112
- ${!this.withoutSummary&&sources.length>0?this.renderSummary(sources):nothing}
112
+ ${source&&!this.sourceResult?html`<p part="source-status">${this.localize(failed?"tableLoadFailed":"loading")}</p>`:!this.withoutSummary&&sources.length>0?this.renderSummary(sources):nothing}
113
+ ${source&&!this.sourceTableShown&&!this.error?nothing:html`
113
114
  <lr-table
114
115
  part="table"
115
116
  exportparts=${TABLE_EXPORT_PARTS}
116
- .columns=${this.tableColumns()}
117
+ .columns=${columns}
118
+ .strings=${this.strings}
119
+ .paginationMode=${source?"server":"client"}
120
+ .sortMode=${source?"server":"client"}
121
+ .page=${source?finiteInteger(this.sourcePage,0,0,Number.MAX_SAFE_INTEGER-1)+1:1}
122
+ .pageSize=${source?finiteInteger(this.sourcePageSize,100,1,500):100}
123
+ .sortKey=${source?this.sourceSortKey??"":""}
124
+ .sortDir=${source?this.sourceSortDir:"asc"}
125
+ .totalItems=${source?this.sourceTotal??0:0}
126
+ .unknownTotal=${source&&this.sourceTotal===null}
127
+ .hasNext=${!1}
128
+ .loading=${source&&state2.pending&&!this.error}
129
+ @lr-page-change=${event=>{source&&(event.stopPropagation(),current()&&(this.sourcePage=event.detail.page-1))}}
130
+ @lr-sort-request=${event=>{if(source){if(!current()){event.preventDefault(),event.stopPropagation();return}this.sortRequest={target:event.currentTarget,version,columns,key:event.detail.sortKey,dir:event.detail.sortDir}}}}
131
+ @lr-sort=${event=>{if(!source)return;const request=this.sortRequest;if(this.sortRequest=void 0,!current()||!request||request.target!==event.currentTarget||request.version!==version||request.columns!==this.tableColumns()||request.key!==event.detail.sortKey||request.dir!==event.detail.sortDir){event.stopPropagation();return}this.sourceSortKey=event.detail.sortKey,this.sourceSortDir=event.detail.sortDir,this.syncSource(),this.sourceStateVersion++}}
117
132
  .rows=${sources}
118
133
  .rowKey=${this.rowKey}
119
134
  aria-label=${tableLabel}
120
135
  empty-heading=${this.localize("knowledgeBaseEmptyHeading")}
121
136
  empty-description=${this.localize("knowledgeBaseEmptyDescription",void 0)}
122
- ?error=${this.error}
137
+ ?error=${this.error||failed}
123
138
  error-heading=${this.errorHeading??nothing}
124
139
  error-description=${this.errorDescription}
125
140
  @lr-row-activate=${e=>e.stopPropagation()}
126
141
  @lr-row-click=${e=>e.stopPropagation()}
127
- @lr-retry-request=${this.onTableRetry}
128
- >${this.hasErrorSlot?html`<div slot="error"><slot name="error"></slot></div>`:nothing}</lr-table>
142
+ @lr-retry-request=${event=>{if(!source){this.legacyTableRetry(event);return}this.retrySource(event,current,failed)}}
143
+ >${this.hasErrorSlot?html`<div slot="error"><slot name="error"></slot></div>`:nothing}</lr-table>`}
129
144
  </div>
130
- `}}__decorate([property({attribute:!1})],LyraKnowledgeBase.prototype,"sources",void 0),__decorate([property()],LyraKnowledgeBase.prototype,"label",void 0),__decorate([property({attribute:"heading-level"})],LyraKnowledgeBase.prototype,"headingLevel",void 0),__decorate([property({type:Boolean,attribute:"without-summary",reflect:!0})],LyraKnowledgeBase.prototype,"withoutSummary",void 0),__decorate([property({type:Boolean,attribute:"without-create",reflect:!0})],LyraKnowledgeBase.prototype,"withoutCreate",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraKnowledgeBase.prototype,"error",void 0),__decorate([property({attribute:"error-heading"})],LyraKnowledgeBase.prototype,"errorHeading",void 0),__decorate([property({attribute:"error-description"})],LyraKnowledgeBase.prototype,"errorDescription",void 0);export{LyraKnowledgeBase};
145
+ `}}__decorate([state()],LyraKnowledgeBase.prototype,"sourceStateVersion",void 0),__decorate([property({attribute:!1})],LyraKnowledgeBase.prototype,"dataSource",null),__decorate([property({type:Number,attribute:"source-page"})],LyraKnowledgeBase.prototype,"sourcePage",void 0),__decorate([property({type:Number,attribute:"source-page-size"})],LyraKnowledgeBase.prototype,"sourcePageSize",void 0),__decorate([property({attribute:!1})],LyraKnowledgeBase.prototype,"sources",void 0),__decorate([property()],LyraKnowledgeBase.prototype,"label",void 0),__decorate([property({attribute:"heading-level"})],LyraKnowledgeBase.prototype,"headingLevel",void 0),__decorate([property({type:Boolean,attribute:"without-summary",reflect:!0})],LyraKnowledgeBase.prototype,"withoutSummary",void 0),__decorate([property({type:Boolean,attribute:"without-create",reflect:!0})],LyraKnowledgeBase.prototype,"withoutCreate",void 0),__decorate([property({type:Boolean,reflect:!0})],LyraKnowledgeBase.prototype,"error",void 0),__decorate([property({attribute:"error-heading"})],LyraKnowledgeBase.prototype,"errorHeading",void 0),__decorate([property({attribute:"error-description"})],LyraKnowledgeBase.prototype,"errorDescription",void 0);export{LyraKnowledgeBase};
@@ -1 +1 @@
1
- import{iconAction,iconActionHover,iconActionActive}from"../../../internal/icon-action.styles.js";import{iconHitTarget,focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";const styles=css` :host { display: block; } [part='base'] { display: flex; flex-direction: column; gap: var(--lr-space-m); } [part='toolbar'] { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--lr-space-s); } [part='heading'] { margin: 0; font-size: var(--lr-font-size-lg); font-weight: var(--lr-font-weight-semibold); color: var(--lr-color-text); } [part='create-button'] { flex: 0 0 auto; } [part='summary'] { display: flex; flex-wrap: wrap; gap: var(--lr-space-s); } [part='summary-stat'] { flex: 1 1 var(--lr-size-8rem); min-inline-size: 0; } [part='table'] { inline-size: 100%; font: inherit; } [part='table']::part(name-cell), [part='table']::part(sync-cell), [part='table']::part(health-cell) { display: flex; flex-direction: column; gap: var(--lr-size-0-125rem); } [part='table']::part(source-name) { font-weight: var(--lr-font-weight-medium); color: var(--lr-color-text); } [part='table']::part(source-type), [part='table']::part(sync-timestamp), [part='table']::part(document-count) { font-size: var(--lr-font-size-sm); color: var(--lr-color-text-quiet); } [part='table']::part(sync-error) { font-size: var(--lr-font-size-sm); color: var(--lr-color-danger); } [part='table']::part(sync-badge), [part='table']::part(health-badge) { align-self: flex-start; } [part='table']::part(actions-menu) { display: flex; justify-content: flex-end; font: inherit; } [part='table']::part(actions-trigger) { ${iconHitTarget} ${iconAction} --_lr-icon-button-color-default: var(--lr-color-text-quiet); --_lr-icon-button-color-hover-default: var(--lr-color-text); --_lr-icon-button-color-active-default: var(--lr-color-text); } [part='table']::part(actions-trigger):hover { ${iconActionHover} } [part='table']::part(actions-trigger):active { ${iconActionActive} } [part='table']::part(actions-trigger):focus-visible { ${focusRing} } `;export{styles};
1
+ import{iconAction,iconActionHover,iconActionActive}from"../../../internal/icon-action.styles.js";import{iconHitTarget,focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";const styles=css` :host { display: block; } [part='base'] { display: flex; flex-direction: column; gap: var(--lr-space-m); } [part='source-status'] { margin: 0; overflow-wrap: anywhere; color: var(--lr-color-text-quiet); } [part='toolbar'] { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--lr-space-s); } [part='heading'] { margin: 0; font-size: var(--lr-font-size-lg); font-weight: var(--lr-font-weight-semibold); color: var(--lr-color-text); } [part='create-button'] { flex: 0 0 auto; } [part='summary'] { display: flex; flex-wrap: wrap; gap: var(--lr-space-s); } [part='summary-stat'] { flex: 1 1 var(--lr-size-8rem); min-inline-size: 0; } [part='table'] { inline-size: 100%; font: inherit; } [part='table']::part(name-cell), [part='table']::part(sync-cell), [part='table']::part(health-cell) { display: flex; flex-direction: column; gap: var(--lr-size-0-125rem); } [part='table']::part(source-name) { font-weight: var(--lr-font-weight-medium); color: var(--lr-color-text); } [part='table']::part(source-type), [part='table']::part(sync-timestamp), [part='table']::part(document-count) { font-size: var(--lr-font-size-sm); color: var(--lr-color-text-quiet); } [part='table']::part(sync-error) { font-size: var(--lr-font-size-sm); color: var(--lr-color-danger); } [part='table']::part(sync-badge), [part='table']::part(health-badge) { align-self: flex-start; } [part='table']::part(actions-menu) { display: flex; justify-content: flex-end; font: inherit; } [part='table']::part(actions-trigger) { ${iconHitTarget} ${iconAction} --_lr-icon-button-color-default: var(--lr-color-text-quiet); --_lr-icon-button-color-hover-default: var(--lr-color-text); --_lr-icon-button-color-active-default: var(--lr-color-text); } [part='table']::part(actions-trigger):hover { ${iconActionHover} } [part='table']::part(actions-trigger):active { ${iconActionActive} } [part='table']::part(actions-trigger):focus-visible { ${focusRing} } `;export{styles};
@@ -1,4 +1,4 @@
1
- import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{CancelEventDetail,RetryEventDetail}from'../../../ai/types.js';import type{KnowledgeSource}from'../knowledge-base/knowledge-base.class.js';export type{KnowledgeSource}from'../knowledge-base/knowledge-base.class.js';import type{IngestionQueueItem}from'../ingestion-queue/ingestion-queue.class.js';export type{IngestionQueueItem}from'../ingestion-queue/ingestion-queue.class.js';import{type LyraHeadingLevel}from'../../../internal/heading-level.js';export type KnowledgeBaseAdminTab='sources'|'ingestion';export interface LyraKnowledgeBaseAdminEventMap{'lr-tab-change':CustomEvent<{activeTab:KnowledgeBaseAdminTab;}>;'lr-activate':CustomEvent<{value:KnowledgeBaseAdminTab;}>;'lr-source-create':CustomEvent<null>;'lr-source-sync':CustomEvent<{sourceId:string;}>;'lr-source-pause':CustomEvent<{sourceId:string;}>;'lr-source-delete':CustomEvent<{sourceId:string;}>;'lr-ingestion-retry':CustomEvent<RetryEventDetail&{itemId:string;}>;'lr-ingestion-cancel':CustomEvent<CancelEventDetail&{itemId:string;}>;}
1
+ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{CancelEventDetail,RetryEventDetail}from'../../../ai/types.js';import type{KnowledgeBaseSource,KnowledgeSource}from'../knowledge-base/knowledge-base.class.js';export type{KnowledgeSource}from'../knowledge-base/knowledge-base.class.js';import type{IngestionQueueSource,IngestionQueueItem}from'../ingestion-queue/ingestion-queue.class.js';export type{IngestionQueueItem}from'../ingestion-queue/ingestion-queue.class.js';import{type LyraHeadingLevel}from'../../../internal/heading-level.js';export type KnowledgeBaseAdminTab='sources'|'ingestion';export interface LyraKnowledgeBaseAdminEventMap{'lr-tab-change':CustomEvent<{activeTab:KnowledgeBaseAdminTab;}>;'lr-activate':CustomEvent<{value:KnowledgeBaseAdminTab;}>;'lr-source-create':CustomEvent<null>;'lr-source-sync':CustomEvent<{sourceId:string;}>;'lr-source-pause':CustomEvent<{sourceId:string;}>;'lr-source-delete':CustomEvent<{sourceId:string;}>;'lr-ingestion-retry':CustomEvent<RetryEventDetail&{itemId:string;}>;'lr-ingestion-cancel':CustomEvent<CancelEventDetail&{itemId:string;}>;}
2
2
  /**
3
3
  * `<lr-knowledge-base-admin>` — a responsive operations shell composing the existing controlled
4
4
  * source inventory and ingestion queue into one tabbed knowledge-base view. It forwards every
@@ -7,6 +7,13 @@ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from
7
7
  *
8
8
  * Public collection properties take bounded, clone-owned readonly snapshots. Create a new
9
9
  * collection and reassign it after changes; mutating the assigned array does not update the view.
10
+ * Original input omissions are disclosed in input-limit before forwarding the retained collection.
11
+ *
12
+ * Optional dataSource and ingestionSource are opaque provider identities. Only the active child
13
+ * receives its provider; changing tabs remounts that child at its default page. Same-reference
14
+ * provider assignment and requestUpdate() refresh only the active child. Undefined restores the
15
+ * corresponding legacy collection and its admission-loss notice. Provider rows and totals remain
16
+ * owned by the children; the shell neither queries nor caches them.
10
17
  *
11
18
  * @customElement lr-knowledge-base-admin
12
19
  * @slot settings - Optional host-owned ingestion, chunking, embedding, or permissions controls.
@@ -28,6 +35,7 @@ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from
28
35
  * @event lr-source-delete - Forwarded source deletion request. `detail: { sourceId }`.
29
36
  * @event lr-ingestion-retry - Forwarded ingestion retry request.
30
37
  * @event lr-ingestion-cancel - Forwarded ingestion cancel request.
38
+ * @csspart input-limit - Original collection admission-loss notice.
31
39
  * @csspart base - The root admin wrapper.
32
40
  * @csspart heading - The visible heading.
33
41
  * @csspart tabs - The tablist.
@@ -42,7 +50,13 @@ import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from
42
50
  * @status stable
43
51
  * @since 6.2.0
44
52
  */
45
- export declare class LyraKnowledgeBaseAdmin extends LyraElement<LyraKnowledgeBaseAdminEventMap>{protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly ownedCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];
53
+ export declare class LyraKnowledgeBaseAdmin extends LyraElement<LyraKnowledgeBaseAdminEventMap>{protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly ownedCollectionProperties:readonly string[];protected static readonly identityCollectionObjectProperties:readonly string[];static styles:import("lit").CSSResultGroup[];private _dataSource?;private _ingestionSource?;private forwardGeneration;private readonly bindSourcePageScope;
54
+ /** Opaque inventory provider, forwarded only while Sources is active. Undefined restores sources.
55
+ * Same-reference assignment refreshes the active child once. */
56
+ get dataSource():KnowledgeBaseSource|undefined;set dataSource(value:KnowledgeBaseSource|undefined);
57
+ /** Opaque queue provider, forwarded only while Ingestion is active. Undefined restores ingestionItems.
58
+ * Same-reference assignment refreshes the active child once. */
59
+ get ingestionSource():IngestionQueueSource|undefined;set ingestionSource(value:IngestionQueueSource|undefined);private get activeView();private activeChild;requestUpdate(...args:Parameters<LyraElement['requestUpdate']>):void;
46
60
  /** Knowledge-base source connectors. */
47
61
  sources:readonly KnowledgeSource[];
48
62
  /** Documents currently moving through ingestion. */
@@ -58,4 +72,4 @@ label?:string;
58
72
  * `none` removes heading semantics from both. */
59
73
  headingLevel:LyraHeadingLevel;
60
74
  /** Hides the ingestion tab and queue. An active/focused ingestion tab moves to Sources. */
61
- withoutIngestion:boolean;private readonly idPrefix;private focusSourcesAfterUpdate;private tabId;private panelId;private setTab;protected willUpdate(changed:PropertyValues<this>):void;protected updated(changed:PropertyValues<this>):void;private handleTabKeydown;private forward;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-knowledge-base-admin':LyraKnowledgeBaseAdmin;}}
75
+ withoutIngestion:boolean;private readonly idPrefix;private focusSourcesAfterUpdate;private tabId;private panelId;private setTab;protected willUpdate(changed:PropertyValues<this>):void;private lastInputNotice;private inputNoticeMounted;private readonly inputAnnouncements;connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;private inputLimitMessage;protected updated(changed:PropertyValues<this>):void;private handleTabKeydown;private forward;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-knowledge-base-admin':LyraKnowledgeBaseAdmin;}}