@red-hat-developer-hub/backstage-plugin-lightspeed 2.5.1 → 2.6.1

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 (133) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +1 -1
  3. package/dist/alpha/LightspeedFAB.esm.js.map +1 -1
  4. package/dist/alpha/LightspeedProvider.esm.js.map +1 -1
  5. package/dist/alpha.esm.js +1 -1
  6. package/dist/alpha.esm.js.map +1 -1
  7. package/dist/api/LightspeedApiClient.esm.js +1 -1
  8. package/dist/api/LightspeedApiClient.esm.js.map +1 -1
  9. package/dist/api/NotebooksApiClient.esm.js.map +1 -1
  10. package/dist/api/api.esm.js.map +1 -1
  11. package/dist/api/notebooksApi.esm.js.map +1 -1
  12. package/dist/components/Attachment.esm.js +2 -2
  13. package/dist/components/Attachment.esm.js.map +1 -1
  14. package/dist/components/AttachmentContext.esm.js +1 -1
  15. package/dist/components/AttachmentContext.esm.js.map +1 -1
  16. package/dist/components/DeleteModal.esm.js.map +1 -1
  17. package/dist/components/FilePreview.esm.js.map +1 -1
  18. package/dist/components/LightSpeedChat.esm.js +25 -19
  19. package/dist/components/LightSpeedChat.esm.js.map +1 -1
  20. package/dist/components/LightspeedChatBox.esm.js +5 -5
  21. package/dist/components/LightspeedChatBox.esm.js.map +1 -1
  22. package/dist/components/LightspeedChatBoxHeader.esm.js +1 -1
  23. package/dist/components/LightspeedChatBoxHeader.esm.js.map +1 -1
  24. package/dist/components/LightspeedChatContainer.esm.js.map +1 -1
  25. package/dist/components/LightspeedChatModelsState.esm.js.map +1 -1
  26. package/dist/components/LightspeedDrawerContext.esm.js +1 -1
  27. package/dist/components/LightspeedDrawerContext.esm.js.map +1 -1
  28. package/dist/components/LightspeedDrawerProvider.esm.js.map +1 -1
  29. package/dist/components/LightspeedDrawerStateExposer.esm.js.map +1 -1
  30. package/dist/components/LightspeedFAB.esm.js.map +1 -1
  31. package/dist/components/LightspeedIcon.esm.js.map +1 -1
  32. package/dist/components/LightspeedPage.esm.js.map +1 -1
  33. package/dist/components/McpServersSettings.esm.js +3 -3
  34. package/dist/components/McpServersSettings.esm.js.map +1 -1
  35. package/dist/components/McpSettingsIcon.esm.js.map +1 -1
  36. package/dist/components/PermissionRequiredIcon.esm.js.map +1 -1
  37. package/dist/components/PermissionRequiredState.esm.js.map +1 -1
  38. package/dist/components/RenameConversationModal.esm.js.map +1 -1
  39. package/dist/components/Router.esm.js.map +1 -1
  40. package/dist/components/ToolCallContent.esm.js +3 -3
  41. package/dist/components/ToolCallContent.esm.js.map +1 -1
  42. package/dist/components/Trans.esm.js.map +1 -1
  43. package/dist/components/notebooks/AddDocumentModal.esm.js.map +1 -1
  44. package/dist/components/notebooks/DeleteNotebookModal.esm.js.map +1 -1
  45. package/dist/components/notebooks/DocumentSidebar.esm.js +2 -2
  46. package/dist/components/notebooks/DocumentSidebar.esm.js.map +1 -1
  47. package/dist/components/notebooks/FileListItem.esm.js.map +1 -1
  48. package/dist/components/notebooks/FileTypeIcon.esm.js.map +1 -1
  49. package/dist/components/notebooks/NotebookCard.esm.js +1 -1
  50. package/dist/components/notebooks/NotebookCard.esm.js.map +1 -1
  51. package/dist/components/notebooks/NotebookView.esm.js +3 -3
  52. package/dist/components/notebooks/NotebookView.esm.js.map +1 -1
  53. package/dist/components/notebooks/NotebooksTab.esm.js.map +1 -1
  54. package/dist/components/notebooks/OverwriteConfirmModal.esm.js.map +1 -1
  55. package/dist/components/notebooks/RenameNotebookModal.esm.js.map +1 -1
  56. package/dist/components/notebooks/SidebarCollapseIcon.esm.js.map +1 -1
  57. package/dist/components/notebooks/UploadResourceScreen.esm.js +1 -1
  58. package/dist/components/notebooks/UploadResourceScreen.esm.js.map +1 -1
  59. package/dist/const.esm.js.map +1 -1
  60. package/dist/dev.esm.js.map +1 -1
  61. package/dist/hooks/notebooks/useCreateNotebook.esm.js.map +1 -1
  62. package/dist/hooks/notebooks/useCreateNotebookMessage.esm.js.map +1 -1
  63. package/dist/hooks/notebooks/useDeleteNotebook.esm.js.map +1 -1
  64. package/dist/hooks/notebooks/useDocumentStatusPolling.esm.js.map +1 -1
  65. package/dist/hooks/notebooks/useLightspeedNotebooksPermission.esm.js.map +1 -1
  66. package/dist/hooks/notebooks/useNotebookDocuments.esm.js.map +1 -1
  67. package/dist/hooks/notebooks/useNotebookSession.esm.js.map +1 -1
  68. package/dist/hooks/notebooks/useNotebookSessions.esm.js.map +1 -1
  69. package/dist/hooks/notebooks/useRenameNotebook.esm.js.map +1 -1
  70. package/dist/hooks/notebooks/useUploadDocument.esm.js.map +1 -1
  71. package/dist/hooks/toolCallsCacheStore.esm.js +1 -1
  72. package/dist/hooks/toolCallsCacheStore.esm.js.map +1 -1
  73. package/dist/hooks/useAllModels.esm.js.map +1 -1
  74. package/dist/hooks/useAutoScroll.esm.js +1 -1
  75. package/dist/hooks/useAutoScroll.esm.js.map +1 -1
  76. package/dist/hooks/useBackstageUserIdentity.esm.js.map +1 -1
  77. package/dist/hooks/useBufferedMessages.esm.js.map +1 -1
  78. package/dist/hooks/useCaptureFeedback.esm.js.map +1 -1
  79. package/dist/hooks/useConversationMessages.esm.js +353 -323
  80. package/dist/hooks/useConversationMessages.esm.js.map +1 -1
  81. package/dist/hooks/useConversations.esm.js.map +1 -1
  82. package/dist/hooks/useCreateCoversationMessage.esm.js.map +1 -1
  83. package/dist/hooks/useDeleteConversation.esm.js.map +1 -1
  84. package/dist/hooks/useDisplayModeSettings.esm.js +1 -1
  85. package/dist/hooks/useDisplayModeSettings.esm.js.map +1 -1
  86. package/dist/hooks/useFeedbackActions.esm.js +3 -3
  87. package/dist/hooks/useFeedbackActions.esm.js.map +1 -1
  88. package/dist/hooks/useFeedbackState.esm.js.map +1 -1
  89. package/dist/hooks/useFeedbackStatus.esm.js.map +1 -1
  90. package/dist/hooks/useIsMobile.esm.js.map +1 -1
  91. package/dist/hooks/useLastOpenedConversation.esm.js.map +1 -1
  92. package/dist/hooks/useLightspeedDeletePermission.esm.js.map +1 -1
  93. package/dist/hooks/useLightspeedDrawerContext.esm.js +1 -1
  94. package/dist/hooks/useLightspeedDrawerContext.esm.js.map +1 -1
  95. package/dist/hooks/useLightspeedProviderState.esm.js +2 -2
  96. package/dist/hooks/useLightspeedProviderState.esm.js.map +1 -1
  97. package/dist/hooks/useLightspeedUpdatePermission.esm.js.map +1 -1
  98. package/dist/hooks/useLightspeedViewPermission.esm.js.map +1 -1
  99. package/dist/hooks/usePinnedChatsSettings.esm.js +2 -2
  100. package/dist/hooks/usePinnedChatsSettings.esm.js.map +1 -1
  101. package/dist/hooks/useQuestionValidation.esm.js.map +1 -1
  102. package/dist/hooks/useRenameConversation.esm.js.map +1 -1
  103. package/dist/hooks/useSortSettings.esm.js +2 -2
  104. package/dist/hooks/useSortSettings.esm.js.map +1 -1
  105. package/dist/hooks/useStopConversation.esm.js.map +1 -1
  106. package/dist/hooks/useTranslation.esm.js.map +1 -1
  107. package/dist/hooks/useWelcomePrompts.esm.js.map +1 -1
  108. package/dist/plugin.esm.js +2 -2
  109. package/dist/plugin.esm.js.map +1 -1
  110. package/dist/routes.esm.js.map +1 -1
  111. package/dist/translations/de.esm.js.map +1 -1
  112. package/dist/translations/es.esm.js.map +1 -1
  113. package/dist/translations/fr.esm.js.map +1 -1
  114. package/dist/translations/index.esm.js.map +1 -1
  115. package/dist/translations/it.esm.js.map +1 -1
  116. package/dist/translations/ja.esm.js.map +1 -1
  117. package/dist/translations/ref.esm.js.map +1 -1
  118. package/dist/types.esm.js.map +1 -1
  119. package/dist/utils/attachment-utils.esm.js.map +1 -1
  120. package/dist/utils/formatToolResponseForMarkdown.esm.js.map +1 -1
  121. package/dist/utils/lightspeed-chatbox-utils.esm.js +4 -4
  122. package/dist/utils/lightspeed-chatbox-utils.esm.js.map +1 -1
  123. package/dist/utils/notebook-upload-utils.esm.js +1 -1
  124. package/dist/utils/notebook-upload-utils.esm.js.map +1 -1
  125. package/dist/utils/notebooks-utils.esm.js +1 -1
  126. package/dist/utils/notebooks-utils.esm.js.map +1 -1
  127. package/dist/utils/prompt-utils.esm.js.map +1 -1
  128. package/dist/utils/queryClient.esm.js.map +1 -1
  129. package/dist/utils/reasoningParser.esm.js.map +1 -1
  130. package/dist/utils/toolCallMapper.esm.js +2 -2
  131. package/dist/utils/toolCallMapper.esm.js.map +1 -1
  132. package/dist/utils/user-utils.esm.js.map +1 -1
  133. package/package.json +2 -2
@@ -1,11 +1,11 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { useState, useEffect, useRef, useCallback, useLayoutEffect, useMemo } from 'react';
3
3
  import { useNavigate, useMatch } from 'react-router-dom';
4
- import { makeStyles, Button } from '@material-ui/core';
4
+ import { Button, makeStyles } from '@material-ui/core';
5
5
  import { ChatbotDisplayMode, ChatbotContent, ChatbotFooter, MessageBar, ChatbotFootnote, Settings, Chatbot, ChatbotHeader, ChatbotHeaderMain, ChatbotHeaderMenu, ChatbotHeaderTitle, FileDropZone, ChatbotAlert } from '@patternfly/chatbot';
6
6
  import ChatbotConversationHistoryNav from '@patternfly/chatbot/dist/dynamic/ChatbotConversationHistoryNav';
7
7
  import { DropdownItem, Tooltip, MenuToggle, Select, SelectList, SelectOption, AlertGroup, Alert, AlertVariant, AlertActionCloseButton, Title, Tabs, Tab } from '@patternfly/react-core';
8
- import { SortAmountDownAltIcon, SortAmountDownIcon, PlusIcon, SearchIcon } from '@patternfly/react-icons';
8
+ import { SortAmountDownAltIcon, SortAmountDownIcon, SearchIcon, PlusIcon } from '@patternfly/react-icons';
9
9
  import { useQueryClient } from '@tanstack/react-query';
10
10
  import { UNTITLED_NOTEBOOK_NAME, TEMP_CONVERSATION_ID, supportedFileTypes } from '../const.esm.js';
11
11
  import '@backstage/core-plugin-api';
@@ -605,7 +605,7 @@ const LightspeedChat = ({
605
605
  clearLastOpenedId();
606
606
  setConversationId(TEMP_CONVERSATION_ID);
607
607
  setNewChatCreated(true);
608
- setCurrentConversationId(undefined);
608
+ setCurrentConversationId(void 0);
609
609
  }
610
610
  }, [
611
611
  isLoading,
@@ -623,7 +623,7 @@ const LightspeedChat = ({
623
623
  if (!conversationExists) {
624
624
  if (routeConversationId !== conversationId) {
625
625
  setConversationId(TEMP_CONVERSATION_ID);
626
- setCurrentConversationId(undefined);
626
+ setCurrentConversationId(void 0);
627
627
  setNewChatCreated(true);
628
628
  }
629
629
  } else if (conversationId !== routeConversationId) {
@@ -670,7 +670,12 @@ const LightspeedChat = ({
670
670
  });
671
671
  setNewChatCreated(false);
672
672
  };
673
- const { conversationMessages, handleInputPrompt, scrollToBottomRef } = useConversationMessages(
673
+ const {
674
+ conversationMessages,
675
+ handleInputPrompt,
676
+ scrollToBottomRef,
677
+ streamingConversationId
678
+ } = useConversationMessages(
674
679
  viewConversationId,
675
680
  userName,
676
681
  selectedModel,
@@ -678,9 +683,10 @@ const LightspeedChat = ({
678
683
  avatar,
679
684
  onComplete,
680
685
  onStart,
681
- undefined,
686
+ void 0,
682
687
  onRequestIdReady
683
688
  );
689
+ const streamingUiMatchesView = isSendButtonDisabled && streamingConversationId !== null && viewConversationId === streamingConversationId;
684
690
  const [messages, setMessages] = useState(conversationMessages);
685
691
  const sendMessage = (message) => {
686
692
  if (!message.toString().trim()) return;
@@ -708,7 +714,7 @@ const LightspeedChat = ({
708
714
  setDraftMessage("");
709
715
  setConversationId(TEMP_CONVERSATION_ID);
710
716
  setNewChatCreated(true);
711
- setCurrentConversationId(undefined);
717
+ setCurrentConversationId(void 0);
712
718
  if (!isFullscreenMode) {
713
719
  setIsChatHistoryDrawerOpen(false);
714
720
  }
@@ -926,10 +932,10 @@ const LightspeedChat = ({
926
932
  };
927
933
  }) : [];
928
934
  useLayoutEffect(() => {
929
- if (welcomePrompts.length === 0) return undefined;
935
+ if (welcomePrompts.length === 0) return void 0;
930
936
  const el = contentScrollRef.current;
931
937
  const sentinel = bottomSentinelRef.current;
932
- if (!el) return undefined;
938
+ if (!el) return void 0;
933
939
  const scrollToBottom = () => {
934
940
  if (sentinel && typeof sentinel.scrollIntoView === "function") {
935
941
  sentinel.scrollIntoView({ block: "end", behavior: "auto" });
@@ -939,7 +945,7 @@ const LightspeedChat = ({
939
945
  };
940
946
  const rafId = typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame(() => scrollToBottom()) : null;
941
947
  if (rafId === null) scrollToBottom();
942
- const resizeObserver = typeof ResizeObserver !== "undefined" ? new ResizeObserver(() => scrollToBottom()) : undefined;
948
+ const resizeObserver = typeof ResizeObserver !== "undefined" ? new ResizeObserver(() => scrollToBottom()) : void 0;
943
949
  resizeObserver?.observe(el);
944
950
  return () => {
945
951
  if (rafId !== null && typeof cancelAnimationFrame !== "undefined") {
@@ -952,7 +958,7 @@ const LightspeedChat = ({
952
958
  const scrollContainer = contentScrollRef.current;
953
959
  if (!scrollContainer) {
954
960
  setHasChatContentOverflow(false);
955
- return undefined;
961
+ return void 0;
956
962
  }
957
963
  const getMessageBox = () => scrollContainer.querySelector(
958
964
  ".pf-chatbot__messagebox"
@@ -997,7 +1003,7 @@ const LightspeedChat = ({
997
1003
  passive: true,
998
1004
  capture: true
999
1005
  });
1000
- const resizeObserver = typeof ResizeObserver !== "undefined" ? new ResizeObserver(() => scheduleOverflowUpdate()) : undefined;
1006
+ const resizeObserver = typeof ResizeObserver !== "undefined" ? new ResizeObserver(() => scheduleOverflowUpdate()) : void 0;
1001
1007
  resizeObserver?.observe(scrollContainer);
1002
1008
  if (observedScrollTarget !== scrollContainer) {
1003
1009
  resizeObserver?.observe(observedScrollTarget);
@@ -1018,7 +1024,7 @@ const LightspeedChat = ({
1018
1024
  const mutationObserver = typeof MutationObserver !== "undefined" ? new MutationObserver(() => {
1019
1025
  syncObservedScrollTarget();
1020
1026
  scheduleOverflowUpdate();
1021
- }) : undefined;
1027
+ }) : void 0;
1022
1028
  mutationObserver?.observe(scrollContainer, {
1023
1029
  childList: true,
1024
1030
  subtree: true,
@@ -1176,7 +1182,7 @@ const LightspeedChat = ({
1176
1182
  ref: scrollToBottomRef,
1177
1183
  welcomePrompts,
1178
1184
  conversationId,
1179
- isStreaming: isSendButtonDisabled,
1185
+ isStreaming: streamingUiMatchesView,
1180
1186
  topicRestrictionEnabled,
1181
1187
  displayMode
1182
1188
  }
@@ -1204,8 +1210,8 @@ const LightspeedChat = ({
1204
1210
  hasMicrophoneButton: true,
1205
1211
  value: draftMessage,
1206
1212
  onChange: handleDraftMessage,
1207
- hasStopButton: isSendButtonDisabled,
1208
- handleStopButton: isSendButtonDisabled ? handleStopButton : undefined,
1213
+ hasStopButton: streamingUiMatchesView,
1214
+ handleStopButton: streamingUiMatchesView ? handleStopButton : void 0,
1209
1215
  buttonProps: {
1210
1216
  attach: {
1211
1217
  inputTestId: "attachment-input",
@@ -1409,7 +1415,7 @@ const LightspeedChat = ({
1409
1415
  activeItemId: viewConversationId,
1410
1416
  onSelectActiveItem,
1411
1417
  conversations: filterConversations(filterValue),
1412
- onNewChat: newChatCreated ? undefined : onNewChat,
1418
+ onNewChat: newChatCreated ? void 0 : onNewChat,
1413
1419
  newChatButtonText: t("button.newChat"),
1414
1420
  newChatButtonProps: {
1415
1421
  icon: /* @__PURE__ */ jsx(PlusIcon, {})
@@ -1428,7 +1434,7 @@ const LightspeedChat = ({
1428
1434
  bodyText: t("chatbox.emptyState.noResults.body"),
1429
1435
  titleText: t("chatbox.emptyState.noResults.title"),
1430
1436
  icon: SearchIcon
1431
- } : undefined,
1437
+ } : void 0,
1432
1438
  drawerContent: /* @__PURE__ */ jsxs(
1433
1439
  FileDropZone,
1434
1440
  {
@@ -1465,7 +1471,7 @@ const LightspeedChat = ({
1465
1471
  metadata: activeNotebook.metadata,
1466
1472
  topicSummary: conversations.find(
1467
1473
  (c) => c.conversation_id === activeNotebook.metadata?.conversation_id
1468
- )?.topic_summary ?? undefined,
1474
+ )?.topic_summary ?? void 0,
1469
1475
  userName,
1470
1476
  avatar,
1471
1477
  profileLoading,