From 908e9de0b3d8966787194862b8c9833f7d2fd93f Mon Sep 17 00:00:00 2001 From: Athul Date: Thu, 7 Mar 2024 21:47:12 +0530 Subject: [PATCH 1/4] Fix/prompt-studio UN-920 UN-919 UN-921 --- .../document-manager/DocumentManager.css | 7 ++- .../document-manager/DocumentManager.jsx | 11 +++-- .../document-parser/DocumentParser.jsx | 22 +++++++-- .../editable-text/EditableText.jsx | 1 - .../custom-tools/tool-ide/ToolIde.jsx | 48 +------------------ 5 files changed, 35 insertions(+), 54 deletions(-) diff --git a/frontend/src/components/custom-tools/document-manager/DocumentManager.css b/frontend/src/components/custom-tools/document-manager/DocumentManager.css index 788878b2a9..97a507856d 100644 --- a/frontend/src/components/custom-tools/document-manager/DocumentManager.css +++ b/frontend/src/components/custom-tools/document-manager/DocumentManager.css @@ -32,4 +32,9 @@ .rpv-default-layout__container { border: 0 !important; -} \ No newline at end of file +} + +.doc-main-title{ + color: darkgray; + font-weight: 600; +} diff --git a/frontend/src/components/custom-tools/document-manager/DocumentManager.jsx b/frontend/src/components/custom-tools/document-manager/DocumentManager.jsx index 7545890985..850e3dc91f 100644 --- a/frontend/src/components/custom-tools/document-manager/DocumentManager.jsx +++ b/frontend/src/components/custom-tools/document-manager/DocumentManager.jsx @@ -171,15 +171,20 @@ function DocumentManager({ generateIndex, handleUpdateTool, handleDocChange }) { /> +
+ {selectedDoc ? ( + + {selectedDoc} + + ) : null} +
diff --git a/frontend/src/components/custom-tools/document-parser/DocumentParser.jsx b/frontend/src/components/custom-tools/document-parser/DocumentParser.jsx index 95f1fdcabb..bfc4db9732 100644 --- a/frontend/src/components/custom-tools/document-parser/DocumentParser.jsx +++ b/frontend/src/components/custom-tools/document-parser/DocumentParser.jsx @@ -57,9 +57,26 @@ function DocumentParser({ value = event.target.value; } - if (!value && name === "prompt_key") { + if (name === "prompt_key") { // Return if the prompt or the prompt key is empty - return; + if (!value) { + return; + } + if (!isValidJsonKey(value)) { + setAlertDetails({ + type: "error", + content: "Please update invalid JSON key", + }); + return; + } + } + + function isValidJsonKey(key) { + // Check for Prompt-Key + // Allowed case, contains alphanumeric characters and underscores, + // and doesn't start with a number. + const regex = /^[a-zA-Z_][a-zA-Z0-9_]*$/; + return regex.test(key); } const index = promptsAndNotes.findIndex( @@ -149,7 +166,6 @@ function DocumentParser({ if (!isUpdate) { return; } - setUpdateStatus({ promptId: promptId, status: value, diff --git a/frontend/src/components/custom-tools/editable-text/EditableText.jsx b/frontend/src/components/custom-tools/editable-text/EditableText.jsx index 3e2882d0f0..cc46da1148 100644 --- a/frontend/src/components/custom-tools/editable-text/EditableText.jsx +++ b/frontend/src/components/custom-tools/editable-text/EditableText.jsx @@ -5,7 +5,6 @@ import debounce from "lodash/debounce"; import "./EditableText.css"; import { useCustomToolStore } from "../../../store/custom-tool-store"; - function EditableText({ isEditing, setIsEditing, diff --git a/frontend/src/components/custom-tools/tool-ide/ToolIde.jsx b/frontend/src/components/custom-tools/tool-ide/ToolIde.jsx index 165eb008dc..4178c77831 100644 --- a/frontend/src/components/custom-tools/tool-ide/ToolIde.jsx +++ b/frontend/src/components/custom-tools/tool-ide/ToolIde.jsx @@ -1,10 +1,9 @@ -import { FullscreenExitOutlined, FullscreenOutlined } from "@ant-design/icons"; -import { Col, Collapse, Modal, Row } from "antd"; +import { FullscreenExitOutlined } from "@ant-design/icons"; +import { Col, Modal, Row } from "antd"; import { useState } from "react"; import { handleException } from "../../../helpers/GetStaticData"; import { useAxiosPrivate } from "../../../hooks/useAxiosPrivate"; -import { IslandLayout } from "../../../layouts/island-layout/IslandLayout"; import { useAlertStore } from "../../../store/alert-store"; import { useCustomToolStore } from "../../../store/custom-tool-store"; import { useSessionStore } from "../../../store/session-store"; @@ -20,7 +19,6 @@ import "./ToolIde.css"; function ToolIde() { const [showLogsModal, setShowLogsModal] = useState(false); - const [activeKey, setActiveKey] = useState([]); const [openCusSynonymsModal, setOpenCusSynonymsModal] = useState(false); const [openManageLlmModal, setOpenManageLlmModal] = useState(false); const [openAddLlmModal, setOpenAddLlmModal] = useState(false); @@ -35,42 +33,10 @@ function ToolIde() { const { setAlertDetails } = useAlertStore(); const axiosPrivate = useAxiosPrivate(); - const openLogsModal = () => { - setShowLogsModal(true); - }; - const closeLogsModal = () => { setShowLogsModal(false); }; - const genExtra = () => ( - { - openLogsModal(); - event.stopPropagation(); - }} - /> - ); - - const getItems = () => [ - { - key: "1", - label: !activeKey?.length > 0 && "Logs", - children: ( -
- - - -
- ), - extra: genExtra(), - }, - ]; - - const handleCollapse = (keys) => { - setActiveKey(keys); - }; - const handleGenerateIndexModal = (isOpen) => { if (isGeneratingIndex) { return; @@ -184,16 +150,6 @@ function ToolIde() { -
- -
Date: Fri, 8 Mar 2024 16:55:10 +0530 Subject: [PATCH 2/4] Fix/prompt-studio improvements --- .../document-parser/DocumentParser.jsx | 9 +++++---- .../custom-tools/editable-text/EditableText.css | 6 +++++- .../custom-tools/editable-text/EditableText.jsx | 13 +++++++++++-- .../custom-tools/prompt-card/PromptCard.css | 4 ++-- .../custom-tools/prompt-card/PromptCard.jsx | 14 ++++++++++++-- frontend/src/helpers/GetStaticData.js | 1 + 6 files changed, 36 insertions(+), 11 deletions(-) diff --git a/frontend/src/components/custom-tools/document-parser/DocumentParser.jsx b/frontend/src/components/custom-tools/document-parser/DocumentParser.jsx index bfc4db9732..2528f1c663 100644 --- a/frontend/src/components/custom-tools/document-parser/DocumentParser.jsx +++ b/frontend/src/components/custom-tools/document-parser/DocumentParser.jsx @@ -63,10 +63,11 @@ function DocumentParser({ return; } if (!isValidJsonKey(value)) { - setAlertDetails({ - type: "error", - content: "Please update invalid JSON key", - }); + handleUpdateStatus( + isUpdateStatus, + promptId, + promptStudioUpdateStatus.validationError + ); return; } } diff --git a/frontend/src/components/custom-tools/editable-text/EditableText.css b/frontend/src/components/custom-tools/editable-text/EditableText.css index 8cf908e74f..9052bb660f 100644 --- a/frontend/src/components/custom-tools/editable-text/EditableText.css +++ b/frontend/src/components/custom-tools/editable-text/EditableText.css @@ -14,4 +14,8 @@ .edit-text-display-hover:hover { border: 1px solid #bdbdbd; border-radius: 4px; -} \ No newline at end of file +} + +.input-header-text { + font-weight: bold; +} diff --git a/frontend/src/components/custom-tools/editable-text/EditableText.jsx b/frontend/src/components/custom-tools/editable-text/EditableText.jsx index cc46da1148..f276ad8705 100644 --- a/frontend/src/components/custom-tools/editable-text/EditableText.jsx +++ b/frontend/src/components/custom-tools/editable-text/EditableText.jsx @@ -40,10 +40,19 @@ function EditableText({ setIsEditing(false); }; + let handleTextTimer = null; + const handleTextChange = (event) => { const value = event.target.value; setText(value); - onSearchDebounce(event); + + if (handleTextTimer) { + clearTimeout(handleTextTimer); + } + + handleTextTimer = setTimeout(() => { + onSearchDebounce(event); + }, 2000); }; const onSearchDebounce = useCallback( @@ -91,7 +100,7 @@ function EditableText({ return ( - + - + {isCoverageLoading && ( } @@ -654,6 +654,16 @@ function PromptCard({ Done )} + {updateStatus?.status === + promptStudioUpdateStatus.validationError && ( + } + color="error" + className="display-flex-align-center" + > + Invalid JSON Key + + )} )} diff --git a/frontend/src/helpers/GetStaticData.js b/frontend/src/helpers/GetStaticData.js index 6b2701d851..30337cae6a 100644 --- a/frontend/src/helpers/GetStaticData.js +++ b/frontend/src/helpers/GetStaticData.js @@ -230,6 +230,7 @@ const endpointType = { const promptStudioUpdateStatus = { isUpdating: "IS_UPDATING", done: "DONE", + validationError: "VALIDATION_ERROR", }; const getTimeForLogs = () => { From f264f5cbad4bf5717a5f20a7936d9c3f3f5613f8 Mon Sep 17 00:00:00 2001 From: Athul Date: Fri, 8 Mar 2024 18:23:04 +0530 Subject: [PATCH 3/4] Fix/prompt-studio log prompt-studio revert --- .../custom-tools/tool-ide/ToolIde.jsx | 48 ++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/custom-tools/tool-ide/ToolIde.jsx b/frontend/src/components/custom-tools/tool-ide/ToolIde.jsx index 4178c77831..165eb008dc 100644 --- a/frontend/src/components/custom-tools/tool-ide/ToolIde.jsx +++ b/frontend/src/components/custom-tools/tool-ide/ToolIde.jsx @@ -1,9 +1,10 @@ -import { FullscreenExitOutlined } from "@ant-design/icons"; -import { Col, Modal, Row } from "antd"; +import { FullscreenExitOutlined, FullscreenOutlined } from "@ant-design/icons"; +import { Col, Collapse, Modal, Row } from "antd"; import { useState } from "react"; import { handleException } from "../../../helpers/GetStaticData"; import { useAxiosPrivate } from "../../../hooks/useAxiosPrivate"; +import { IslandLayout } from "../../../layouts/island-layout/IslandLayout"; import { useAlertStore } from "../../../store/alert-store"; import { useCustomToolStore } from "../../../store/custom-tool-store"; import { useSessionStore } from "../../../store/session-store"; @@ -19,6 +20,7 @@ import "./ToolIde.css"; function ToolIde() { const [showLogsModal, setShowLogsModal] = useState(false); + const [activeKey, setActiveKey] = useState([]); const [openCusSynonymsModal, setOpenCusSynonymsModal] = useState(false); const [openManageLlmModal, setOpenManageLlmModal] = useState(false); const [openAddLlmModal, setOpenAddLlmModal] = useState(false); @@ -33,10 +35,42 @@ function ToolIde() { const { setAlertDetails } = useAlertStore(); const axiosPrivate = useAxiosPrivate(); + const openLogsModal = () => { + setShowLogsModal(true); + }; + const closeLogsModal = () => { setShowLogsModal(false); }; + const genExtra = () => ( + { + openLogsModal(); + event.stopPropagation(); + }} + /> + ); + + const getItems = () => [ + { + key: "1", + label: !activeKey?.length > 0 && "Logs", + children: ( +
+ + + +
+ ), + extra: genExtra(), + }, + ]; + + const handleCollapse = (keys) => { + setActiveKey(keys); + }; + const handleGenerateIndexModal = (isOpen) => { if (isGeneratingIndex) { return; @@ -150,6 +184,16 @@ function ToolIde() {
+
+ +
Date: Fri, 8 Mar 2024 18:33:50 +0530 Subject: [PATCH 4/4] Fix/prompt-studio timeout correction --- .../custom-tools/editable-text/EditableText.jsx | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/frontend/src/components/custom-tools/editable-text/EditableText.jsx b/frontend/src/components/custom-tools/editable-text/EditableText.jsx index f276ad8705..466b40115e 100644 --- a/frontend/src/components/custom-tools/editable-text/EditableText.jsx +++ b/frontend/src/components/custom-tools/editable-text/EditableText.jsx @@ -40,19 +40,10 @@ function EditableText({ setIsEditing(false); }; - let handleTextTimer = null; - const handleTextChange = (event) => { const value = event.target.value; setText(value); - - if (handleTextTimer) { - clearTimeout(handleTextTimer); - } - - handleTextTimer = setTimeout(() => { - onSearchDebounce(event); - }, 2000); + onSearchDebounce(event); }; const onSearchDebounce = useCallback(