@red-hat-developer-hub/backstage-plugin-lightspeed 1.2.2 → 1.3.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.
- package/CHANGELOG.md +19 -0
- package/dist/alpha.d.ts +3 -9
- package/dist/api/LightspeedApiClient.esm.js +20 -6
- package/dist/api/LightspeedApiClient.esm.js.map +1 -1
- package/dist/components/DeleteModal.esm.js +2 -3
- package/dist/components/DeleteModal.esm.js.map +1 -1
- package/dist/components/LightSpeedChat.esm.js +4 -12
- package/dist/components/LightSpeedChat.esm.js.map +1 -1
- package/dist/components/LightspeedChatBox.esm.js +48 -17
- package/dist/components/LightspeedChatBox.esm.js.map +1 -1
- package/dist/components/LightspeedDrawerProvider.esm.js +39 -26
- package/dist/components/LightspeedDrawerProvider.esm.js.map +1 -1
- package/dist/components/LightspeedDrawerStateExposer.esm.js +8 -2
- package/dist/components/LightspeedDrawerStateExposer.esm.js.map +1 -1
- package/dist/components/RenameConversationModal.esm.js +26 -8
- package/dist/components/RenameConversationModal.esm.js.map +1 -1
- package/dist/components/ToolCallContent.esm.js +25 -54
- package/dist/components/ToolCallContent.esm.js.map +1 -1
- package/dist/hooks/useAllModels.esm.js.map +1 -1
- package/dist/hooks/useCaptureFeedback.esm.js.map +1 -1
- package/dist/hooks/useConversationMessages.esm.js.map +1 -1
- package/dist/hooks/useConversations.esm.js.map +1 -1
- package/dist/hooks/useCreateCoversationMessage.esm.js.map +1 -1
- package/dist/hooks/useDeleteConversation.esm.js.map +1 -1
- package/dist/hooks/useDisplayModeSettings.esm.js +57 -0
- package/dist/hooks/useDisplayModeSettings.esm.js.map +1 -0
- package/dist/hooks/useFeedbackStatus.esm.js.map +1 -1
- package/dist/hooks/useQuestionValidation.esm.js.map +1 -1
- package/dist/hooks/useRenameConversation.esm.js.map +1 -1
- package/dist/translations/de.esm.js +1 -7
- package/dist/translations/de.esm.js.map +1 -1
- package/dist/translations/es.esm.js +1 -7
- package/dist/translations/es.esm.js.map +1 -1
- package/dist/translations/fr.esm.js +1 -7
- package/dist/translations/fr.esm.js.map +1 -1
- package/dist/translations/it.esm.js +1 -7
- package/dist/translations/it.esm.js.map +1 -1
- package/dist/translations/ja.esm.js +1 -7
- package/dist/translations/ja.esm.js.map +1 -1
- package/dist/translations/ref.esm.js +1 -7
- package/dist/translations/ref.esm.js.map +1 -1
- package/dist/utils/lightspeed-chatbox-utils.esm.js +13 -23
- package/dist/utils/lightspeed-chatbox-utils.esm.js.map +1 -1
- package/dist/utils/reasoningParser.esm.js +18 -31
- package/dist/utils/reasoningParser.esm.js.map +1 -1
- package/dist/utils/toolCallMapper.esm.js +2 -2
- package/dist/utils/toolCallMapper.esm.js.map +1 -1
- package/package.json +12 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.esm.js","sources":["../../src/translations/ref.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/**\n * Messages object containing all English translations.\n * This is our single source of truth for translations.\n * @alpha\n */\nexport const lightspeedMessages = {\n // Page titles and headers\n 'page.title': 'Lightspeed',\n 'page.subtitle': 'AI-powered development assistant',\n\n // Sample prompts - General Development\n 'prompts.codeReadability.title': 'Get Help On Code Readability',\n 'prompts.codeReadability.message':\n 'Can you suggest techniques I can use to make my code more readable and maintainable?',\n 'prompts.debugging.title': 'Get Help With Debugging',\n 'prompts.debugging.message':\n 'My application is throwing an error when trying to connect to the database. Can you help me identify the issue?',\n 'prompts.developmentConcept.title': 'Explain a Development Concept',\n 'prompts.developmentConcept.message':\n 'Can you explain how microservices architecture works and its advantages over a monolithic design?',\n 'prompts.codeOptimization.title': 'Suggest Code Optimizations',\n 'prompts.codeOptimization.message':\n 'Can you suggest common ways to optimize code to achieve better performance?',\n 'prompts.documentation.title': 'Documentation Summary',\n 'prompts.documentation.message':\n 'Can you summarize the documentation for implementing OAuth 2.0 authentication in a web app?',\n 'prompts.gitWorkflows.title': 'Workflows With Git',\n 'prompts.gitWorkflows.message':\n 'I want to make changes to code on another branch without losing my existing work. What is the procedure to do this using Git?',\n 'prompts.testingStrategies.title': 'Suggest Testing Strategies',\n 'prompts.testingStrategies.message':\n 'Can you recommend some common testing strategies that will make my application robust and error-free?',\n 'prompts.sortingAlgorithms.title': 'Demystify Sorting Algorithms',\n 'prompts.sortingAlgorithms.message':\n 'Can you explain the difference between a quicksort and a merge sort algorithm, and when to use each?',\n 'prompts.eventDriven.title': 'Understand Event-Driven Architecture',\n 'prompts.eventDriven.message':\n \"Can you explain what event-driven architecture is and when it's beneficial to use it in software development?\",\n\n // Sample prompts - RHDH Specific\n 'prompts.tekton.title': 'Deploy With Tekton',\n 'prompts.tekton.message':\n 'Can you help me automate the deployment of my application using Tekton pipelines?',\n 'prompts.openshift.title': 'Create An OpenShift Deployment',\n 'prompts.openshift.message':\n 'Can you guide me through creating a new deployment in OpenShift for a containerized application?',\n 'prompts.rhdh.title': 'Getting Started with Red Hat Developer Hub',\n 'prompts.rhdh.message':\n 'Can you guide me through the first steps to start using Developer Hub as a developer, like exploring the Software Catalog and adding my service?',\n\n // Conversation history\n 'conversation.delete.confirm.title': 'Delete chat?',\n 'conversation.delete.confirm.message':\n \"You'll no longer see this chat here. This will also delete related activity like prompts, responses, and feedback from your Lightspeed Activity.\",\n 'conversation.delete.confirm.action': 'Delete',\n 'conversation.rename.confirm.title': 'Rename chat?',\n 'conversation.rename.confirm.action': 'Rename',\n 'conversation.rename.placeholder': 'Chat name',\n 'conversation.action.error': 'Error occured: {{error}}',\n\n // Permissions\n 'permission.required.title': 'Missing permissions',\n 'permission.required.description':\n 'To view lightspeed plugin, contact your administrator to give the <b>lightspeed.chat.read</b> and <b>lightspeed.chat.create</b> permissions.',\n\n // Disclaimers\n 'disclaimer.withValidation':\n \"This feature uses AI technology. Do not include any personal information or any other sensitive information in your input. Interactions may be used to improve Red Hat's products or services.\",\n 'disclaimer.withoutValidation':\n \"This feature uses AI technology. Do not include any personal information or any other sensitive information in your input. Interactions may be used to improve Red Hat's products or services.\",\n\n // Footer and feedback\n 'footer.accuracy.label': 'Always review AI generated content prior to use.',\n 'footer.accuracy.popover.title': 'Verify accuracy',\n 'footer.accuracy.popover.description':\n \"While Developer Lightspeed strives for accuracy, there's always a possibility of errors. It's a good practice to verify critical information from reliable sources, especially if it's crucial for decision-making or actions.\",\n 'footer.accuracy.popover.image.alt': 'Example image for footnote popover',\n 'footer.accuracy.popover.cta.label': 'Got it',\n 'footer.accuracy.popover.link.label': 'Learn more',\n\n // Common actions\n 'common.cancel': 'Cancel',\n 'common.close': 'Close',\n 'common.readMore': 'Read more',\n 'common.noSearchResults': 'No result matches the search',\n\n // Menu items\n 'menu.newConversation': 'New Chat',\n\n // Chat-specific UI elements\n 'chatbox.header.title': 'Developer Lightspeed',\n 'chatbox.search.placeholder': 'Search',\n 'chatbox.provider.other': 'Other',\n 'chatbox.emptyState.noPinnedChats': 'No pinned chats',\n 'chatbox.emptyState.noRecentChats': 'No recent chats',\n 'chatbox.emptyState.noResults.title': 'No results found',\n 'chatbox.emptyState.noResults.body':\n 'Adjust your search query and try again. Check your spelling or try a more general term.',\n 'chatbox.welcome.greeting': 'Hello, {{userName}}',\n 'chatbox.welcome.description': 'How can I help you today?',\n 'chatbox.message.placeholder':\n 'Send a message and optionally upload a JSON, YAML, or TXT file...',\n 'chatbox.fileUpload.failed': 'File upload failed',\n 'chatbox.fileUpload.infoText':\n 'Supported file types are: .txt, .yaml, and .json. The maximum file size is 25 MB.',\n\n // Accessibility and ARIA labels\n 'aria.chatbotSelector': 'Chatbot selector',\n 'aria.important': 'Important',\n 'aria.chatHistoryMenu': 'Chat history menu',\n 'aria.closeDrawerPanel': 'Close drawer panel',\n 'aria.search.placeholder': 'Search',\n 'aria.searchPreviousConversations': 'Search previous conversations',\n 'aria.resize': 'Resize',\n 'aria.options.label': 'Options',\n 'aria.scroll.down': 'Back to bottom',\n 'aria.scroll.up': 'Back to top',\n 'aria.settings.label': 'Chatbot options',\n 'aria.close': 'Close chatbot',\n\n // Modal actions\n 'modal.edit': 'Edit',\n 'modal.save': 'Save',\n 'modal.close': 'Close',\n 'modal.cancel': 'Cancel',\n\n // Conversation actions\n 'conversation.delete': 'Delete',\n 'conversation.rename': 'Rename',\n 'conversation.addToPinnedChats': 'Pin',\n 'conversation.removeFromPinnedChats': 'Unpin',\n 'conversation.announcement.userMessage':\n 'Message from User: {{prompt}}. Message from Bot is loading.',\n\n // User states\n 'user.guest': 'Guest',\n 'user.loading': '...',\n\n // Button tooltips and labels\n 'tooltip.attach': 'Attach',\n 'tooltip.send': 'Send',\n 'tooltip.microphone.active': 'Stop listening',\n 'tooltip.microphone.inactive': 'Use microphone',\n 'button.newChat': 'New chat',\n 'tooltip.chatHistoryMenu': 'Chat history menu',\n 'tooltip.responseRecorded': 'Response recorded',\n 'tooltip.backToTop': 'Back to top',\n 'tooltip.backToBottom': 'Back to bottom',\n 'tooltip.settings': 'Chatbot options',\n 'tooltip.close': 'Close',\n\n // Modal titles\n 'modal.title.preview': 'Preview attachment',\n 'modal.title.edit': 'Edit attachment',\n\n // Alt texts for icons\n 'icon.lightspeed.alt': 'lightspeed icon',\n 'icon.permissionRequired.alt': 'permission required icon',\n\n // Message utilities\n 'message.options.label': 'Options',\n\n // File attachment errors\n 'file.upload.error.alreadyExists': 'File already exists.',\n 'file.upload.error.multipleFiles': 'Uploaded more than one file.',\n 'file.upload.error.unsupportedType':\n 'Unsupported file type. Supported types are: .txt, .yaml, and .json.',\n 'file.upload.error.fileTooLarge':\n 'Your file size is too large. Please ensure that your file is less than 25 MB.',\n 'file.upload.error.readFailed': 'Failed to read file: {{errorMessage}}',\n\n // Developer error messages\n 'error.context.fileAttachment':\n 'useFileAttachmentContext must be within a FileAttachmentContextProvider',\n\n // Feedback actions\n 'feedback.form.title': 'Why did you choose this rating?',\n 'feedback.form.textAreaPlaceholder': 'Provide optional additional feedback',\n 'feedback.form.submitWord': 'Submit',\n 'feedback.tooltips.goodResponse': 'Good Response',\n 'feedback.tooltips.badResponse': 'Bad Response',\n 'feedback.tooltips.copied': 'Copied',\n 'feedback.tooltips.copy': 'Copy',\n 'feedback.tooltips.listening': 'Listening',\n 'feedback.tooltips.listen': 'Listen',\n 'feedback.quickResponses.positive.helpful': 'Helpful information',\n 'feedback.quickResponses.positive.easyToUnderstand': 'Easy to understand',\n 'feedback.quickResponses.positive.resolvedIssue': 'Resolved my issue',\n 'feedback.quickResponses.negative.didntAnswer': \"Didn't answer my question\",\n 'feedback.quickResponses.negative.hardToUnderstand': 'Hard to understand',\n 'feedback.quickResponses.negative.notHelpful': 'Not Helpful',\n 'feedback.completion.title': 'Feedback submitted',\n 'feedback.completion.body':\n \"We've received your response. Thank you for sharing your feedback!\",\n\n // Conversation categorization\n 'conversation.category.pinnedChats': 'Pinned',\n 'conversation.category.recent': 'Recent',\n\n // lightspeed settings\n 'settings.pinned.enable': 'Enable pinned chats',\n 'settings.pinned.disable': 'Disable pinned chats',\n 'settings.pinned.enabled.description': 'Pinned chats are currently enabled',\n 'settings.pinned.disabled.description': 'Pinned chats are currently disabled',\n\n // Tool calling\n 'toolCall.header': 'Tool response: {{toolName}}',\n 'toolCall.thinking': 'Thought for {{seconds}} seconds',\n 'toolCall.executionTime': 'Execution time: ',\n 'toolCall.parameters': 'Parameters',\n 'toolCall.response': 'Response',\n 'toolCall.showMore': 'show more',\n 'toolCall.showLess': 'show less',\n 'toolCall.loading': 'Executing tool...',\n 'toolCall.executing': 'Executing tool...',\n 'toolCall.copyResponse': 'Copy response',\n 'toolCall.summary': \"Here's a summary of your response\",\n 'toolCall.mcpServer': 'MCP Server',\n // Display modes\n 'settings.displayMode.label': 'Display mode',\n 'settings.displayMode.overlay': 'Overlay',\n 'settings.displayMode.docked': 'Dock to window',\n 'settings.displayMode.fullscreen': 'Fullscreen',\n\n // Sort options\n 'sort.label': 'Sort conversations',\n 'sort.newest': 'Date (newest first)',\n 'sort.oldest': 'Date (oldest first)',\n 'sort.alphabeticalAsc': 'Name (A-Z)',\n 'sort.alphabeticalDesc': 'Name (Z-A)',\n // Deep thinking\n 'reasoning.thinking': 'Show thinking',\n};\n\n/**\n * Translation Reference for Developer Lightspeed\n * @alpha\n **/\nexport const lightspeedTranslationRef = createTranslationRef({\n id: 'plugin.lightspeed',\n messages: lightspeedMessages,\n});\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ref.esm.js","sources":["../../src/translations/ref.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/**\n * Messages object containing all English translations.\n * This is our single source of truth for translations.\n * @alpha\n */\nexport const lightspeedMessages = {\n // Page titles and headers\n 'page.title': 'Lightspeed',\n 'page.subtitle': 'AI-powered development assistant',\n\n // Sample prompts - General Development\n 'prompts.codeReadability.title': 'Get Help On Code Readability',\n 'prompts.codeReadability.message':\n 'Can you suggest techniques I can use to make my code more readable and maintainable?',\n 'prompts.debugging.title': 'Get Help With Debugging',\n 'prompts.debugging.message':\n 'My application is throwing an error when trying to connect to the database. Can you help me identify the issue?',\n 'prompts.developmentConcept.title': 'Explain a Development Concept',\n 'prompts.developmentConcept.message':\n 'Can you explain how microservices architecture works and its advantages over a monolithic design?',\n 'prompts.codeOptimization.title': 'Suggest Code Optimizations',\n 'prompts.codeOptimization.message':\n 'Can you suggest common ways to optimize code to achieve better performance?',\n 'prompts.documentation.title': 'Documentation Summary',\n 'prompts.documentation.message':\n 'Can you summarize the documentation for implementing OAuth 2.0 authentication in a web app?',\n 'prompts.gitWorkflows.title': 'Workflows With Git',\n 'prompts.gitWorkflows.message':\n 'I want to make changes to code on another branch without losing my existing work. What is the procedure to do this using Git?',\n 'prompts.testingStrategies.title': 'Suggest Testing Strategies',\n 'prompts.testingStrategies.message':\n 'Can you recommend some common testing strategies that will make my application robust and error-free?',\n 'prompts.sortingAlgorithms.title': 'Demystify Sorting Algorithms',\n 'prompts.sortingAlgorithms.message':\n 'Can you explain the difference between a quicksort and a merge sort algorithm, and when to use each?',\n 'prompts.eventDriven.title': 'Understand Event-Driven Architecture',\n 'prompts.eventDriven.message':\n \"Can you explain what event-driven architecture is and when it's beneficial to use it in software development?\",\n\n // Sample prompts - RHDH Specific\n 'prompts.tekton.title': 'Deploy With Tekton',\n 'prompts.tekton.message':\n 'Can you help me automate the deployment of my application using Tekton pipelines?',\n 'prompts.openshift.title': 'Create An OpenShift Deployment',\n 'prompts.openshift.message':\n 'Can you guide me through creating a new deployment in OpenShift for a containerized application?',\n 'prompts.rhdh.title': 'Getting Started with Red Hat Developer Hub',\n 'prompts.rhdh.message':\n 'Can you guide me through the first steps to start using Developer Hub as a developer, like exploring the Software Catalog and adding my service?',\n\n // Conversation history\n 'conversation.delete.confirm.title': 'Delete chat?',\n 'conversation.delete.confirm.message':\n \"You'll no longer see this chat here. This will also delete related activity like prompts, responses, and feedback from your Lightspeed Activity.\",\n 'conversation.delete.confirm.action': 'Delete',\n 'conversation.rename.confirm.title': 'Rename chat?',\n 'conversation.rename.confirm.action': 'Rename',\n 'conversation.rename.placeholder': 'Chat name',\n\n // Permissions\n 'permission.required.title': 'Missing permissions',\n 'permission.required.description':\n 'To view lightspeed plugin, contact your administrator to give the <b>lightspeed.chat.read</b> and <b>lightspeed.chat.create</b> permissions.',\n\n // Disclaimers\n 'disclaimer.withValidation':\n \"This feature uses AI technology. Do not include any personal information or any other sensitive information in your input. Interactions may be used to improve Red Hat's products or services.\",\n 'disclaimer.withoutValidation':\n \"This feature uses AI technology. Do not include any personal information or any other sensitive information in your input. Interactions may be used to improve Red Hat's products or services.\",\n\n // Footer and feedback\n 'footer.accuracy.label': 'Always review AI generated content prior to use.',\n\n // Common actions\n 'common.cancel': 'Cancel',\n 'common.close': 'Close',\n 'common.readMore': 'Read more',\n 'common.noSearchResults': 'No result matches the search',\n\n // Menu items\n 'menu.newConversation': 'New Chat',\n\n // Chat-specific UI elements\n 'chatbox.header.title': 'Developer Lightspeed',\n 'chatbox.search.placeholder': 'Search',\n 'chatbox.provider.other': 'Other',\n 'chatbox.emptyState.noPinnedChats': 'No pinned chats',\n 'chatbox.emptyState.noRecentChats': 'No recent chats',\n 'chatbox.emptyState.noResults.title': 'No results found',\n 'chatbox.emptyState.noResults.body':\n 'Adjust your search query and try again. Check your spelling or try a more general term.',\n 'chatbox.welcome.greeting': 'Hello, {{userName}}',\n 'chatbox.welcome.description': 'How can I help you today?',\n 'chatbox.message.placeholder': 'Enter a prompt for Lightspeed',\n 'chatbox.fileUpload.failed': 'File upload failed',\n 'chatbox.fileUpload.infoText':\n 'Supported file types are: .txt, .yaml, and .json. The maximum file size is 25 MB.',\n\n // Accessibility and ARIA labels\n 'aria.chatbotSelector': 'Chatbot selector',\n 'aria.important': 'Important',\n 'aria.chatHistoryMenu': 'Chat history menu',\n 'aria.closeDrawerPanel': 'Close drawer panel',\n 'aria.search.placeholder': 'Search',\n 'aria.searchPreviousConversations': 'Search previous conversations',\n 'aria.resize': 'Resize',\n 'aria.options.label': 'Options',\n 'aria.scroll.down': 'Back to bottom',\n 'aria.scroll.up': 'Back to top',\n 'aria.settings.label': 'Chatbot options',\n 'aria.close': 'Close chatbot',\n\n // Modal actions\n 'modal.edit': 'Edit',\n 'modal.save': 'Save',\n 'modal.close': 'Close',\n 'modal.cancel': 'Cancel',\n\n // Conversation actions\n 'conversation.delete': 'Delete',\n 'conversation.rename': 'Rename',\n 'conversation.addToPinnedChats': 'Pin',\n 'conversation.removeFromPinnedChats': 'Unpin',\n 'conversation.announcement.userMessage':\n 'Message from User: {{prompt}}. Message from Bot is loading.',\n\n // User states\n 'user.guest': 'Guest',\n 'user.loading': '...',\n\n // Button tooltips and labels\n 'tooltip.attach': 'Attach',\n 'tooltip.send': 'Send',\n 'tooltip.microphone.active': 'Stop listening',\n 'tooltip.microphone.inactive': 'Use microphone',\n 'button.newChat': 'New chat',\n 'tooltip.chatHistoryMenu': 'Chat history menu',\n 'tooltip.responseRecorded': 'Response recorded',\n 'tooltip.backToTop': 'Back to top',\n 'tooltip.backToBottom': 'Back to bottom',\n 'tooltip.settings': 'Chatbot options',\n 'tooltip.close': 'Close',\n\n // Modal titles\n 'modal.title.preview': 'Preview attachment',\n 'modal.title.edit': 'Edit attachment',\n\n // Alt texts for icons\n 'icon.lightspeed.alt': 'lightspeed icon',\n 'icon.permissionRequired.alt': 'permission required icon',\n\n // Message utilities\n 'message.options.label': 'Options',\n\n // File attachment errors\n 'file.upload.error.alreadyExists': 'File already exists.',\n 'file.upload.error.multipleFiles': 'Uploaded more than one file.',\n 'file.upload.error.unsupportedType':\n 'Unsupported file type. Supported types are: .txt, .yaml, and .json.',\n 'file.upload.error.fileTooLarge':\n 'Your file size is too large. Please ensure that your file is less than 25 MB.',\n 'file.upload.error.readFailed': 'Failed to read file: {{errorMessage}}',\n\n // Developer error messages\n 'error.context.fileAttachment':\n 'useFileAttachmentContext must be within a FileAttachmentContextProvider',\n\n // Feedback actions\n 'feedback.form.title': 'Why did you choose this rating?',\n 'feedback.form.textAreaPlaceholder': 'Provide optional additional feedback',\n 'feedback.form.submitWord': 'Submit',\n 'feedback.tooltips.goodResponse': 'Good Response',\n 'feedback.tooltips.badResponse': 'Bad Response',\n 'feedback.tooltips.copied': 'Copied',\n 'feedback.tooltips.copy': 'Copy',\n 'feedback.tooltips.listening': 'Listening',\n 'feedback.tooltips.listen': 'Listen',\n 'feedback.quickResponses.positive.helpful': 'Helpful information',\n 'feedback.quickResponses.positive.easyToUnderstand': 'Easy to understand',\n 'feedback.quickResponses.positive.resolvedIssue': 'Resolved my issue',\n 'feedback.quickResponses.negative.didntAnswer': \"Didn't answer my question\",\n 'feedback.quickResponses.negative.hardToUnderstand': 'Hard to understand',\n 'feedback.quickResponses.negative.notHelpful': 'Not Helpful',\n 'feedback.completion.title': 'Feedback submitted',\n 'feedback.completion.body':\n \"We've received your response. Thank you for sharing your feedback!\",\n\n // Conversation categorization\n 'conversation.category.pinnedChats': 'Pinned',\n 'conversation.category.recent': 'Recent',\n\n // lightspeed settings\n 'settings.pinned.enable': 'Enable pinned chats',\n 'settings.pinned.disable': 'Disable pinned chats',\n 'settings.pinned.enabled.description': 'Pinned chats are currently enabled',\n 'settings.pinned.disabled.description': 'Pinned chats are currently disabled',\n\n // Tool calling\n 'toolCall.header': 'Tool response: {{toolName}}',\n 'toolCall.thinking': 'Thought for {{seconds}} seconds',\n 'toolCall.executionTime': 'Execution time: ',\n 'toolCall.parameters': 'Parameters',\n 'toolCall.response': 'Response',\n 'toolCall.showMore': 'show more',\n 'toolCall.showLess': 'show less',\n 'toolCall.loading': 'Executing tool...',\n 'toolCall.executing': 'Executing tool...',\n 'toolCall.copyResponse': 'Copy response',\n 'toolCall.summary': \"Here's a summary of your response\",\n 'toolCall.mcpServer': 'MCP Server',\n // Display modes\n 'settings.displayMode.label': 'Display mode',\n 'settings.displayMode.overlay': 'Overlay',\n 'settings.displayMode.docked': 'Dock to window',\n 'settings.displayMode.fullscreen': 'Fullscreen',\n\n // Sort options\n 'sort.label': 'Sort conversations',\n 'sort.newest': 'Date (newest first)',\n 'sort.oldest': 'Date (oldest first)',\n 'sort.alphabeticalAsc': 'Name (A-Z)',\n 'sort.alphabeticalDesc': 'Name (Z-A)',\n // Deep thinking\n 'reasoning.thinking': 'Show thinking',\n};\n\n/**\n * Translation Reference for Developer Lightspeed\n * @alpha\n **/\nexport const lightspeedTranslationRef = createTranslationRef({\n id: 'plugin.lightspeed',\n messages: lightspeedMessages,\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,8 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import PushPinIcon from '@mui/icons-material/PushPin';
|
|
3
3
|
|
|
4
|
-
const getFootnoteProps = (
|
|
5
|
-
label: t?.("footer.accuracy.label") || "Always review AI generated content prior to use."
|
|
6
|
-
popover: {
|
|
7
|
-
popoverProps: {
|
|
8
|
-
className: additionalClassName ?? ""
|
|
9
|
-
},
|
|
10
|
-
title: t?.("footer.accuracy.popover.title") || "Verify accuracy",
|
|
11
|
-
description: t?.("footer.accuracy.popover.description") || `While Developer Lightspeed strives for accuracy, there's always a possibility of errors. It's a good practice to verify critical information from reliable sources, especially if it's crucial for decision-making or actions.`,
|
|
12
|
-
bannerImage: {
|
|
13
|
-
src: "https://cdn.dribbble.com/userupload/10651749/file/original-8a07b8e39d9e8bf002358c66fce1223e.gif",
|
|
14
|
-
alt: t?.("footer.accuracy.popover.image.alt") || "Example image for footnote popover"
|
|
15
|
-
},
|
|
16
|
-
cta: {
|
|
17
|
-
label: t?.("footer.accuracy.popover.cta.label") || "Got it",
|
|
18
|
-
onClick: () => {
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
link: {
|
|
22
|
-
label: t?.("footer.accuracy.popover.link.label") || "Learn more",
|
|
23
|
-
url: "https://www.redhat.com/"
|
|
24
|
-
}
|
|
25
|
-
}
|
|
4
|
+
const getFootnoteProps = (t) => ({
|
|
5
|
+
label: t?.("footer.accuracy.label") || "Always review AI generated content prior to use."
|
|
26
6
|
});
|
|
27
7
|
const getTimestampVariablesString = (v) => {
|
|
28
8
|
if (v < 10) {
|
|
@@ -147,7 +127,17 @@ const getCategorizeMessages = (messages, pinnedChats, addProps, t, sortOption =
|
|
|
147
127
|
if (pinnedChats.includes(c.conversation_id)) {
|
|
148
128
|
categorizedMessages[pinnedChatsKey].push({
|
|
149
129
|
...message,
|
|
150
|
-
icon: /* @__PURE__ */ jsx(
|
|
130
|
+
icon: /* @__PURE__ */ jsx(
|
|
131
|
+
PushPinIcon,
|
|
132
|
+
{
|
|
133
|
+
sx: {
|
|
134
|
+
width: "1rem",
|
|
135
|
+
height: "1rem",
|
|
136
|
+
display: "flex",
|
|
137
|
+
alignItems: "center"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
)
|
|
151
141
|
});
|
|
152
142
|
} else {
|
|
153
143
|
categorizedMessages[recentKey].push(message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightspeed-chatbox-utils.esm.js","sources":["../../src/utils/lightspeed-chatbox-utils.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport PushPinIcon from '@mui/icons-material/PushPin';\nimport { Conversation, SourcesCardProps } from '@patternfly/chatbot';\nimport { PopoverProps } from '@patternfly/react-core';\n\nimport {\n BaseMessage,\n ConversationList,\n ConversationSummary,\n LCSConversation,\n ReferencedDocument,\n ReferencedDocuments,\n ToolCall,\n} from '../types';\n\nexport const getFootnoteProps = (\n additionalClassName: string,\n t?: (key: string, params?: any) => string,\n) => ({\n label:\n t?.('footer.accuracy.label') ||\n 'Always review AI generated content prior to use.',\n popover: {\n popoverProps: {\n className: additionalClassName ?? '',\n } as PopoverProps,\n title: t?.('footer.accuracy.popover.title') || 'Verify accuracy',\n description:\n t?.('footer.accuracy.popover.description') ||\n `While Developer Lightspeed strives for accuracy, there's always a possibility of errors. It's a good practice to verify critical information from reliable sources, especially if it's crucial for decision-making or actions.`,\n bannerImage: {\n src: 'https://cdn.dribbble.com/userupload/10651749/file/original-8a07b8e39d9e8bf002358c66fce1223e.gif',\n alt:\n t?.('footer.accuracy.popover.image.alt') ||\n 'Example image for footnote popover',\n },\n cta: {\n label: t?.('footer.accuracy.popover.cta.label') || 'Got it',\n onClick: () => {},\n },\n link: {\n label: t?.('footer.accuracy.popover.link.label') || 'Learn more',\n url: 'https://www.redhat.com/',\n },\n },\n});\n\nexport const getTimestampVariablesString = (v: number) => {\n if (v < 10) {\n return `0${v}`;\n }\n return `${v}`;\n};\n\nexport const getTimestamp = (unix_timestamp: number) => {\n if (typeof unix_timestamp !== 'number' || Number.isNaN(unix_timestamp)) {\n // eslint-disable-next-line no-console\n console.error('Invalid Unix timestamp provided');\n return '';\n }\n\n const a = new Date(unix_timestamp);\n const month = getTimestampVariablesString(a.getMonth() + 1);\n const year = a.getFullYear();\n const date = getTimestampVariablesString(a.getDate());\n const hour = getTimestampVariablesString(a.getHours());\n const min = getTimestampVariablesString(a.getMinutes());\n const sec = getTimestampVariablesString(a.getSeconds());\n const time = `${date}/${month}/${year}, ${hour}:${min}:${sec}`;\n return time;\n};\n\nexport const splitJsonStrings = (jsonString: string): string[] => {\n const chunks = jsonString.split('}{');\n\n if (chunks.length <= 1) {\n return [jsonString];\n }\n\n return chunks.map((chunk, index, arr) => {\n if (index === 0) {\n return `${chunk}}`;\n } else if (index === arr.length - 1) {\n return `{${chunk}`;\n }\n return `{${chunk}}`;\n });\n};\n\ntype MessageProps = {\n content: string;\n timestamp: string;\n name?: string;\n avatar?: string | any;\n isLoading?: boolean;\n error?: {\n title: string;\n };\n sources?: SourcesCardProps;\n toolCalls?: ToolCall[];\n};\n\nexport const createMessage = ({\n role,\n name,\n avatar,\n isLoading = false,\n content,\n timestamp,\n error,\n sources,\n toolCalls,\n defaultUserName = 'Guest',\n}: MessageProps & { role: 'user' | 'bot'; defaultUserName?: string }) => ({\n role,\n name: name || defaultUserName,\n avatar,\n isLoading,\n content,\n timestamp,\n error,\n sources,\n toolCalls,\n});\n\nexport const createUserMessage = (\n props: MessageProps & { defaultUserName?: string },\n) =>\n createMessage({\n ...props,\n role: 'user',\n defaultUserName: props.defaultUserName,\n });\n\nexport const createBotMessage = (props: MessageProps) =>\n createMessage({\n ...props,\n role: 'bot',\n });\n\nexport const getConversationsData = (\n conversation: LCSConversation,\n): [BaseMessage, BaseMessage] => {\n const [userMessage, botMessage] = conversation.messages || [];\n return [\n {\n ...userMessage,\n timestamp: getTimestamp(\n conversation.started_at\n ? new Date(conversation.started_at).getTime()\n : Date.now(),\n ),\n },\n {\n ...botMessage,\n timestamp: getTimestamp(\n conversation.completed_at\n ? new Date(conversation.completed_at).getTime()\n : Date.now(),\n ),\n referenced_documents: botMessage?.referenced_documents ?? [],\n },\n ];\n};\n\nexport const transformDocumentsToSources = (\n referenced_documents: ReferencedDocuments,\n): SourcesCardProps | undefined => {\n if (!referenced_documents || referenced_documents?.length === 0) {\n return undefined;\n }\n return {\n sources: referenced_documents.map((doc: ReferencedDocument) => ({\n body: doc.doc_description,\n title: doc.doc_title,\n link: doc?.doc_url,\n isExternal: true,\n })),\n };\n};\n\nexport type SortOption =\n | 'newest'\n | 'oldest'\n | 'alphabeticalAsc'\n | 'alphabeticalDesc';\n\nconst sortConversations = (\n messages: ConversationList,\n sortOption: SortOption,\n): ConversationList => {\n return [...messages].sort((a, b) => {\n switch (sortOption) {\n case 'oldest':\n return a.last_message_timestamp - b.last_message_timestamp;\n case 'alphabeticalAsc':\n return a.topic_summary.localeCompare(b.topic_summary, undefined, {\n sensitivity: 'base',\n });\n case 'alphabeticalDesc':\n return b.topic_summary.localeCompare(a.topic_summary, undefined, {\n sensitivity: 'base',\n });\n case 'newest':\n default:\n return b.last_message_timestamp - a.last_message_timestamp;\n }\n });\n};\n\nexport const getCategorizeMessages = (\n messages: ConversationList,\n pinnedChats: string[],\n addProps: (c: ConversationSummary) => { [k: string]: any },\n t?: (key: string, params?: any) => string,\n sortOption: SortOption = 'newest',\n): { [k: string]: Conversation[] } => {\n const pinnedChatsKey = t?.('conversation.category.pinnedChats') || 'Pinned';\n const recentKey = t?.('conversation.category.recent') || 'Recent';\n const categorizedMessages: { [k: string]: Conversation[] } = {\n [pinnedChatsKey]: [],\n [recentKey]: [],\n };\n const sortedMessages = sortConversations(messages, sortOption);\n sortedMessages.forEach(c => {\n const message: Conversation = {\n id: c.conversation_id,\n text: c.topic_summary,\n label: t?.('message.options.label') || 'Options',\n additionalProps: {\n 'aria-label': t?.('aria.options.label') || 'Options',\n },\n ...addProps(c),\n };\n\n if (pinnedChats.includes(c.conversation_id)) {\n categorizedMessages[pinnedChatsKey].push({\n ...message,\n icon: <PushPinIcon />,\n });\n } else {\n categorizedMessages[recentKey].push(message);\n }\n });\n\n const filteredCategories = Object.keys(categorizedMessages).reduce(\n (result, category) => {\n result[category] = categorizedMessages[category];\n return result;\n },\n {} as any,\n );\n\n return filteredCategories;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lightspeed-chatbox-utils.esm.js","sources":["../../src/utils/lightspeed-chatbox-utils.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport PushPinIcon from '@mui/icons-material/PushPin';\nimport { Conversation, SourcesCardProps } from '@patternfly/chatbot';\n\nimport {\n BaseMessage,\n ConversationList,\n ConversationSummary,\n LCSConversation,\n ReferencedDocument,\n ReferencedDocuments,\n ToolCall,\n} from '../types';\n\nexport const getFootnoteProps = (\n t?: (key: string, params?: any) => string,\n) => ({\n label:\n t?.('footer.accuracy.label') ||\n 'Always review AI generated content prior to use.',\n});\n\nexport const getTimestampVariablesString = (v: number) => {\n if (v < 10) {\n return `0${v}`;\n }\n return `${v}`;\n};\n\nexport const getTimestamp = (unix_timestamp: number) => {\n if (typeof unix_timestamp !== 'number' || Number.isNaN(unix_timestamp)) {\n // eslint-disable-next-line no-console\n console.error('Invalid Unix timestamp provided');\n return '';\n }\n\n const a = new Date(unix_timestamp);\n const month = getTimestampVariablesString(a.getMonth() + 1);\n const year = a.getFullYear();\n const date = getTimestampVariablesString(a.getDate());\n const hour = getTimestampVariablesString(a.getHours());\n const min = getTimestampVariablesString(a.getMinutes());\n const sec = getTimestampVariablesString(a.getSeconds());\n const time = `${date}/${month}/${year}, ${hour}:${min}:${sec}`;\n return time;\n};\n\nexport const splitJsonStrings = (jsonString: string): string[] => {\n const chunks = jsonString.split('}{');\n\n if (chunks.length <= 1) {\n return [jsonString];\n }\n\n return chunks.map((chunk, index, arr) => {\n if (index === 0) {\n return `${chunk}}`;\n } else if (index === arr.length - 1) {\n return `{${chunk}`;\n }\n return `{${chunk}}`;\n });\n};\n\ntype MessageProps = {\n content: string;\n timestamp: string;\n name?: string;\n avatar?: string | any;\n isLoading?: boolean;\n error?: {\n title: string;\n };\n sources?: SourcesCardProps;\n toolCalls?: ToolCall[];\n};\n\nexport const createMessage = ({\n role,\n name,\n avatar,\n isLoading = false,\n content,\n timestamp,\n error,\n sources,\n toolCalls,\n defaultUserName = 'Guest',\n}: MessageProps & { role: 'user' | 'bot'; defaultUserName?: string }) => ({\n role,\n name: name || defaultUserName,\n avatar,\n isLoading,\n content,\n timestamp,\n error,\n sources,\n toolCalls,\n});\n\nexport const createUserMessage = (\n props: MessageProps & { defaultUserName?: string },\n) =>\n createMessage({\n ...props,\n role: 'user',\n defaultUserName: props.defaultUserName,\n });\n\nexport const createBotMessage = (props: MessageProps) =>\n createMessage({\n ...props,\n role: 'bot',\n });\n\nexport const getConversationsData = (\n conversation: LCSConversation,\n): [BaseMessage, BaseMessage] => {\n const [userMessage, botMessage] = conversation.messages || [];\n return [\n {\n ...userMessage,\n timestamp: getTimestamp(\n conversation.started_at\n ? new Date(conversation.started_at).getTime()\n : Date.now(),\n ),\n },\n {\n ...botMessage,\n timestamp: getTimestamp(\n conversation.completed_at\n ? new Date(conversation.completed_at).getTime()\n : Date.now(),\n ),\n referenced_documents: botMessage?.referenced_documents ?? [],\n },\n ];\n};\n\nexport const transformDocumentsToSources = (\n referenced_documents: ReferencedDocuments,\n): SourcesCardProps | undefined => {\n if (!referenced_documents || referenced_documents?.length === 0) {\n return undefined;\n }\n return {\n sources: referenced_documents.map((doc: ReferencedDocument) => ({\n body: doc.doc_description,\n title: doc.doc_title,\n link: doc?.doc_url,\n isExternal: true,\n })),\n };\n};\n\nexport type SortOption =\n | 'newest'\n | 'oldest'\n | 'alphabeticalAsc'\n | 'alphabeticalDesc';\n\nconst sortConversations = (\n messages: ConversationList,\n sortOption: SortOption,\n): ConversationList => {\n return [...messages].sort((a, b) => {\n switch (sortOption) {\n case 'oldest':\n return a.last_message_timestamp - b.last_message_timestamp;\n case 'alphabeticalAsc':\n return a.topic_summary.localeCompare(b.topic_summary, undefined, {\n sensitivity: 'base',\n });\n case 'alphabeticalDesc':\n return b.topic_summary.localeCompare(a.topic_summary, undefined, {\n sensitivity: 'base',\n });\n case 'newest':\n default:\n return b.last_message_timestamp - a.last_message_timestamp;\n }\n });\n};\n\nexport const getCategorizeMessages = (\n messages: ConversationList,\n pinnedChats: string[],\n addProps: (c: ConversationSummary) => { [k: string]: any },\n t?: (key: string, params?: any) => string,\n sortOption: SortOption = 'newest',\n): { [k: string]: Conversation[] } => {\n const pinnedChatsKey = t?.('conversation.category.pinnedChats') || 'Pinned';\n const recentKey = t?.('conversation.category.recent') || 'Recent';\n const categorizedMessages: { [k: string]: Conversation[] } = {\n [pinnedChatsKey]: [],\n [recentKey]: [],\n };\n const sortedMessages = sortConversations(messages, sortOption);\n sortedMessages.forEach(c => {\n const message: Conversation = {\n id: c.conversation_id,\n text: c.topic_summary,\n label: t?.('message.options.label') || 'Options',\n additionalProps: {\n 'aria-label': t?.('aria.options.label') || 'Options',\n },\n ...addProps(c),\n };\n\n if (pinnedChats.includes(c.conversation_id)) {\n categorizedMessages[pinnedChatsKey].push({\n ...message,\n icon: (\n <PushPinIcon\n sx={{\n width: '1rem',\n height: '1rem',\n display: 'flex',\n alignItems: 'center',\n }}\n />\n ),\n });\n } else {\n categorizedMessages[recentKey].push(message);\n }\n });\n\n const filteredCategories = Object.keys(categorizedMessages).reduce(\n (result, category) => {\n result[category] = categorizedMessages[category];\n return result;\n },\n {} as any,\n );\n\n return filteredCategories;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
const isReasoningInProgress = (content) => {
|
|
2
|
-
if (!content) return false;
|
|
3
|
-
const hasOpeningTag = content.includes("<think>");
|
|
4
|
-
const hasClosingTag = content.includes("</think>");
|
|
5
|
-
return hasOpeningTag && !hasClosingTag;
|
|
6
|
-
};
|
|
7
1
|
const parseReasoning = (content) => {
|
|
8
2
|
if (!content) {
|
|
9
3
|
return {
|
|
@@ -13,34 +7,27 @@ const parseReasoning = (content) => {
|
|
|
13
7
|
isReasoningInProgress: false
|
|
14
8
|
};
|
|
15
9
|
}
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
if (reasoningInProgress) {
|
|
30
|
-
return {
|
|
31
|
-
reasoning: null,
|
|
32
|
-
mainContent: "",
|
|
33
|
-
hasReasoning: false,
|
|
34
|
-
isReasoningInProgress: true
|
|
35
|
-
};
|
|
10
|
+
const lastOpenIndex = content.lastIndexOf("<think>");
|
|
11
|
+
const lastCloseIndex = content.lastIndexOf("</think>");
|
|
12
|
+
const isReasoningInProgress = lastOpenIndex !== -1 && lastOpenIndex > lastCloseIndex;
|
|
13
|
+
const reasoningPattern = /<think>(.*?)<\/think>/gs;
|
|
14
|
+
const matches = Array.from(content.matchAll(reasoningPattern));
|
|
15
|
+
const extractedReasoning = matches.map((m) => (m[1] || "").trim()).filter((reasoning) => reasoning.length > 0);
|
|
16
|
+
if (isReasoningInProgress && lastOpenIndex !== -1) {
|
|
17
|
+
const partial = content.substring(lastOpenIndex + "<think>".length).trim();
|
|
18
|
+
if (partial.length > 0) {
|
|
19
|
+
extractedReasoning.push(partial);
|
|
20
|
+
}
|
|
36
21
|
}
|
|
22
|
+
const mainContent = content.replaceAll(reasoningPattern, "").trim();
|
|
23
|
+
const hasValidReasoning = extractedReasoning.length > 0;
|
|
37
24
|
return {
|
|
38
|
-
reasoning: null,
|
|
39
|
-
mainContent:
|
|
40
|
-
hasReasoning:
|
|
41
|
-
isReasoningInProgress
|
|
25
|
+
reasoning: hasValidReasoning ? extractedReasoning.join("\n\n") : null,
|
|
26
|
+
mainContent: isReasoningInProgress ? "" : mainContent,
|
|
27
|
+
hasReasoning: hasValidReasoning,
|
|
28
|
+
isReasoningInProgress
|
|
42
29
|
};
|
|
43
30
|
};
|
|
44
31
|
|
|
45
|
-
export {
|
|
32
|
+
export { parseReasoning };
|
|
46
33
|
//# sourceMappingURL=reasoningParser.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasoningParser.esm.js","sources":["../../src/utils/reasoningParser.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Parses a message content to extract redacted reasoning and main content.\n * Messages from models with deep thinking support may contain:\n * <think>Some reasoning...</think>Main response\n *\n * @param content - The message content that may contain reasoning tags\n * @returns An object with the extracted reasoning and cleaned main content\n */\nexport interface ParsedReasoning {\n reasoning: string | null;\n mainContent: string;\n hasReasoning: boolean;\n isReasoningInProgress: boolean;\n}\n\nexport const
|
|
1
|
+
{"version":3,"file":"reasoningParser.esm.js","sources":["../../src/utils/reasoningParser.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Parses a message content to extract redacted reasoning and main content.\n * Messages from models with deep thinking support may contain:\n * <think>Some reasoning...</think>Main response\n *\n * @param content - The message content that may contain reasoning tags\n * @returns An object with the extracted reasoning and cleaned main content\n */\nexport interface ParsedReasoning {\n reasoning: string | null;\n mainContent: string;\n hasReasoning: boolean;\n isReasoningInProgress: boolean;\n}\n\nexport const parseReasoning = (content: string): ParsedReasoning => {\n if (!content) {\n return {\n reasoning: null,\n mainContent: content,\n hasReasoning: false,\n isReasoningInProgress: false,\n };\n }\n\n const lastOpenIndex = content.lastIndexOf('<think>');\n const lastCloseIndex = content.lastIndexOf('</think>');\n\n const isReasoningInProgress =\n lastOpenIndex !== -1 && lastOpenIndex > lastCloseIndex;\n\n const reasoningPattern = /<think>(.*?)<\\/think>/gs;\n const matches = Array.from(content.matchAll(reasoningPattern));\n\n const extractedReasoning = matches\n .map(m => (m[1] || '').trim())\n .filter(reasoning => reasoning.length > 0);\n\n if (isReasoningInProgress && lastOpenIndex !== -1) {\n const partial = content.substring(lastOpenIndex + '<think>'.length).trim();\n if (partial.length > 0) {\n extractedReasoning.push(partial);\n }\n }\n\n const mainContent = content.replaceAll(reasoningPattern, '').trim();\n\n const hasValidReasoning = extractedReasoning.length > 0;\n\n return {\n reasoning: hasValidReasoning ? extractedReasoning.join('\\n\\n') : null,\n mainContent: isReasoningInProgress ? '' : mainContent,\n hasReasoning: hasValidReasoning,\n isReasoningInProgress: isReasoningInProgress,\n };\n};\n"],"names":[],"mappings":"AA+Ba,MAAA,cAAA,GAAiB,CAAC,OAAqC,KAAA;AAClE,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAO,OAAA;AAAA,MACL,SAAW,EAAA,IAAA;AAAA,MACX,WAAa,EAAA,OAAA;AAAA,MACb,YAAc,EAAA,KAAA;AAAA,MACd,qBAAuB,EAAA;AAAA,KACzB;AAAA;AAGF,EAAM,MAAA,aAAA,GAAgB,OAAQ,CAAA,WAAA,CAAY,SAAS,CAAA;AACnD,EAAM,MAAA,cAAA,GAAiB,OAAQ,CAAA,WAAA,CAAY,UAAU,CAAA;AAErD,EAAM,MAAA,qBAAA,GACJ,aAAkB,KAAA,EAAA,IAAM,aAAgB,GAAA,cAAA;AAE1C,EAAA,MAAM,gBAAmB,GAAA,yBAAA;AACzB,EAAA,MAAM,UAAU,KAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,QAAA,CAAS,gBAAgB,CAAC,CAAA;AAE7D,EAAA,MAAM,kBAAqB,GAAA,OAAA,CACxB,GAAI,CAAA,CAAA,CAAA,KAAA,CAAM,EAAE,CAAC,CAAA,IAAK,EAAI,EAAA,IAAA,EAAM,CAC5B,CAAA,MAAA,CAAO,CAAa,SAAA,KAAA,SAAA,CAAU,SAAS,CAAC,CAAA;AAE3C,EAAI,IAAA,qBAAA,IAAyB,kBAAkB,EAAI,EAAA;AACjD,IAAA,MAAM,UAAU,OAAQ,CAAA,SAAA,CAAU,gBAAgB,SAAU,CAAA,MAAM,EAAE,IAAK,EAAA;AACzE,IAAI,IAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACtB,MAAA,kBAAA,CAAmB,KAAK,OAAO,CAAA;AAAA;AACjC;AAGF,EAAA,MAAM,cAAc,OAAQ,CAAA,UAAA,CAAW,gBAAkB,EAAA,EAAE,EAAE,IAAK,EAAA;AAElE,EAAM,MAAA,iBAAA,GAAoB,mBAAmB,MAAS,GAAA,CAAA;AAEtD,EAAO,OAAA;AAAA,IACL,SAAW,EAAA,iBAAA,GAAoB,kBAAmB,CAAA,IAAA,CAAK,MAAM,CAAI,GAAA,IAAA;AAAA,IACjE,WAAA,EAAa,wBAAwB,EAAK,GAAA,WAAA;AAAA,IAC1C,YAAc,EAAA,iBAAA;AAAA,IACd;AAAA,GACF;AACF;;;;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { ToolCallContent } from '../components/ToolCallContent.esm.js';
|
|
3
3
|
|
|
4
|
-
const mapToPatternFlyToolCall = (toolCall, t) => {
|
|
4
|
+
const mapToPatternFlyToolCall = (toolCall, t, role) => {
|
|
5
5
|
return {
|
|
6
6
|
titleText: t("toolCall.header", { toolName: toolCall.toolName }),
|
|
7
7
|
isLoading: toolCall.isLoading,
|
|
8
8
|
loadingText: t("toolCall.executing"),
|
|
9
|
-
expandableContent: !toolCall.isLoading ? /* @__PURE__ */ jsx(ToolCallContent, { toolCall }) : undefined,
|
|
9
|
+
expandableContent: !toolCall.isLoading ? /* @__PURE__ */ jsx(ToolCallContent, { toolCall, role }) : undefined,
|
|
10
10
|
actions: []
|
|
11
11
|
};
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolCallMapper.esm.js","sources":["../../src/utils/toolCallMapper.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ToolCallProps } from '@patternfly/chatbot';\n\nimport { ToolCallContent } from '../components/ToolCallContent';\nimport { ToolCall } from '../types';\n\n/**\n * Maps our internal ToolCall type to PatternFly's ToolCallProps\n */\nexport const mapToPatternFlyToolCall = (\n toolCall: ToolCall,\n t: (key: any, options?: any) => string,\n): ToolCallProps => {\n return {\n titleText: t('toolCall.header' as any, { toolName: toolCall.toolName }),\n isLoading: toolCall.isLoading,\n loadingText: t('toolCall.executing'),\n expandableContent: !toolCall.isLoading ? (\n <ToolCallContent toolCall={toolCall} />\n ) : undefined,\n actions: [],\n };\n};\n\nexport default mapToPatternFlyToolCall;\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"toolCallMapper.esm.js","sources":["../../src/utils/toolCallMapper.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ToolCallProps } from '@patternfly/chatbot';\n\nimport { ToolCallContent } from '../components/ToolCallContent';\nimport { ToolCall } from '../types';\n\n/**\n * Maps our internal ToolCall type to PatternFly's ToolCallProps\n */\nexport const mapToPatternFlyToolCall = (\n toolCall: ToolCall,\n t: (key: any, options?: any) => string,\n role?: 'user' | 'bot',\n): ToolCallProps => {\n return {\n titleText: t('toolCall.header' as any, { toolName: toolCall.toolName }),\n isLoading: toolCall.isLoading,\n loadingText: t('toolCall.executing'),\n expandableContent: !toolCall.isLoading ? (\n <ToolCallContent toolCall={toolCall} role={role} />\n ) : undefined,\n actions: [],\n };\n};\n\nexport default mapToPatternFlyToolCall;\n"],"names":[],"mappings":";;;AAwBO,MAAM,uBAA0B,GAAA,CACrC,QACA,EAAA,CAAA,EACA,IACkB,KAAA;AAClB,EAAO,OAAA;AAAA,IACL,WAAW,CAAE,CAAA,iBAAA,EAA0B,EAAE,QAAU,EAAA,QAAA,CAAS,UAAU,CAAA;AAAA,IACtE,WAAW,QAAS,CAAA,SAAA;AAAA,IACpB,WAAA,EAAa,EAAE,oBAAoB,CAAA;AAAA,IACnC,iBAAA,EAAmB,CAAC,QAAS,CAAA,SAAA,uBAC1B,eAAgB,EAAA,EAAA,QAAA,EAAoB,MAAY,CAC/C,GAAA,SAAA;AAAA,IACJ,SAAS;AAAC,GACZ;AACF;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@red-hat-developer-hub/backstage-plugin-lightspeed",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"main": "./dist/index.esm.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -57,10 +57,10 @@
|
|
|
57
57
|
"prettier:fix": "prettier --ignore-unknown --write ."
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@backstage/core-components": "^0.18.
|
|
61
|
-
"@backstage/core-plugin-api": "^1.12.
|
|
62
|
-
"@backstage/plugin-permission-react": "^0.4.
|
|
63
|
-
"@backstage/theme": "^0.7.
|
|
60
|
+
"@backstage/core-components": "^0.18.6",
|
|
61
|
+
"@backstage/core-plugin-api": "^1.12.2",
|
|
62
|
+
"@backstage/plugin-permission-react": "^0.4.39",
|
|
63
|
+
"@backstage/theme": "^0.7.1",
|
|
64
64
|
"@material-ui/core": "^4.9.13",
|
|
65
65
|
"@material-ui/lab": "^4.0.0-alpha.61",
|
|
66
66
|
"@monaco-editor/react": "^4.7.0",
|
|
@@ -68,12 +68,13 @@
|
|
|
68
68
|
"@mui/material": "^5.12.2",
|
|
69
69
|
"@mui/styles": "5.18.0",
|
|
70
70
|
"@patternfly/chatbot": "6.5.0",
|
|
71
|
-
"@patternfly/react-core": "6.4.
|
|
71
|
+
"@patternfly/react-core": "6.4.1",
|
|
72
72
|
"@patternfly/react-icons": "^6.3.1",
|
|
73
|
-
"@red-hat-developer-hub/backstage-plugin-lightspeed-common": "^1.
|
|
73
|
+
"@red-hat-developer-hub/backstage-plugin-lightspeed-common": "^1.3.0",
|
|
74
74
|
"@red-hat-developer-hub/backstage-plugin-theme": "^0.12.0",
|
|
75
75
|
"@tanstack/react-query": "^5.59.15",
|
|
76
76
|
"monaco-editor": "^0.55.0",
|
|
77
|
+
"react-dropzone": "^14.4.0",
|
|
77
78
|
"react-markdown": "^9.0.1",
|
|
78
79
|
"react-use": "^17.2.4"
|
|
79
80
|
},
|
|
@@ -82,10 +83,10 @@
|
|
|
82
83
|
"react-router-dom": "^6.0.0"
|
|
83
84
|
},
|
|
84
85
|
"devDependencies": {
|
|
85
|
-
"@backstage/cli": "^0.
|
|
86
|
-
"@backstage/core-app-api": "^1.19.
|
|
87
|
-
"@backstage/dev-utils": "^1.1.
|
|
88
|
-
"@backstage/test-utils": "^1.7.
|
|
86
|
+
"@backstage/cli": "^0.35.3",
|
|
87
|
+
"@backstage/core-app-api": "^1.19.4",
|
|
88
|
+
"@backstage/dev-utils": "^1.1.19",
|
|
89
|
+
"@backstage/test-utils": "^1.7.14",
|
|
89
90
|
"@emotion/is-prop-valid": "^1.3.1",
|
|
90
91
|
"@ianvs/prettier-plugin-sort-imports": "^4.4.0",
|
|
91
92
|
"@spotify/prettier-config": "^15.0.0",
|