From b15f0621fe72e659360d7ed49072e154410a8164 Mon Sep 17 00:00:00 2001
From: 7HR4IZ3 <90985774+7HR4IZ3@users.noreply.github.com>
Date: Mon, 17 Jun 2024 20:04:54 +0000
Subject: [PATCH 1/5] feat: Added modal for editing long variable values
---
package-lock.json | 51 +++++++++++++
.../components/SmartViewer/Message.tsx | 12 ++--
.../prompts/PromptVariableEditor.tsx | 5 +-
.../components/prompts/VariableTextarea.tsx | 71 +++++++++++++++++++
packages/frontend/package.json | 3 +-
packages/frontend/styles/globals.css | 20 ++++++
6 files changed, 153 insertions(+), 9 deletions(-)
create mode 100644 packages/frontend/components/prompts/VariableTextarea.tsx
diff --git a/package-lock.json b/package-lock.json
index dcf34878..0501cd4d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2505,6 +2505,17 @@
}
]
},
+ "node_modules/chainsaw": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.0.9.tgz",
+ "integrity": "sha512-nG8PYH+/4xB+8zkV4G844EtfvZ5tTiLFoX3dZ4nhF4t3OCKIb9UvaFyNmeZO2zOSmRWzBoTD+napN6hiL+EgcA==",
+ "dependencies": {
+ "traverse": ">=0.3.0 <0.4"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -3722,6 +3733,17 @@
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
},
+ "node_modules/hashish": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/hashish/-/hashish-0.0.4.tgz",
+ "integrity": "sha512-xyD4XgslstNAs72ENaoFvgMwtv8xhiDtC2AtzCG+8yF7W/Knxxm9BX+e2s25mm+HxMKh0rBmXVOEGF3zNImXvA==",
+ "dependencies": {
+ "traverse": ">=0.2.4"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
@@ -5927,6 +5949,14 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
},
+ "node_modules/remove": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/remove/-/remove-0.1.5.tgz",
+ "integrity": "sha512-AJMA9oWvJzdTjwIGwSQZsjGQiRx73YTmiOWmfCp1fpLa/D4n7jKcpoA+CZiVLJqKcEKUuh1Suq80c5wF+L/qVQ==",
+ "dependencies": {
+ "seq": ">= 0.3.5"
+ }
+ },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -6126,6 +6156,18 @@
"node": ">=10"
}
},
+ "node_modules/seq": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/seq/-/seq-0.3.5.tgz",
+ "integrity": "sha512-sisY2Ln1fj43KBkRtXkesnRHYNdswIkIibvNe/0UKm2GZxjMbqmccpiatoKr/k2qX5VKiLU8xm+tz/74LAho4g==",
+ "dependencies": {
+ "chainsaw": ">=0.0.7 <0.1",
+ "hashish": ">=0.0.2 <0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -6737,6 +6779,14 @@
"punycode": "^2.1.0"
}
},
+ "node_modules/traverse": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
+ "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==",
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/tree-kill": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
@@ -7359,6 +7409,7 @@
"react-dom": "18.2.0",
"react-json-view-lite": "^1.2.1",
"recharts": "^2.12.7",
+ "remove": "^0.1.5",
"shared": "*",
"swr": "^2.2.4",
"zod": "^3.22.4"
diff --git a/packages/frontend/components/SmartViewer/Message.tsx b/packages/frontend/components/SmartViewer/Message.tsx
index 7c466b13..2855963c 100644
--- a/packages/frontend/components/SmartViewer/Message.tsx
+++ b/packages/frontend/components/SmartViewer/Message.tsx
@@ -227,8 +227,8 @@ function ToolCallsMessage({
function TextMessage({ data, onChange = () => {}, editable = false, codeBg }) {
return (
-
- {editable ? (
+ {editable ? (
+
) : (
- data.content || data.text
+
)}
-
)
}
@@ -451,8 +451,6 @@ export function ChatMessage({
// Add/remove the 'id' and 'name' props required on tool calls
useEffect(() => {
- if (!data) return
-
// Add/remove the 'name' props required on tool calls
if (data.role === "tool" && editable && typeof data.name !== "string") {
onChange({ ...data, name: "some-tool-name" })
@@ -593,4 +591,4 @@ export function BubbleMessage({ role, content, extra }) {
>
)
-}
+}
\ No newline at end of file
diff --git a/packages/frontend/components/prompts/PromptVariableEditor.tsx b/packages/frontend/components/prompts/PromptVariableEditor.tsx
index 24a71888..bb934342 100644
--- a/packages/frontend/components/prompts/PromptVariableEditor.tsx
+++ b/packages/frontend/components/prompts/PromptVariableEditor.tsx
@@ -10,6 +10,8 @@ import {
import { IconInfoCircle } from "@tabler/icons-react"
import { TemplateVariables } from "shared"
+import VariableTextarea from "./VariableTextarea"
+
export default function PromptVariableEditor({
value = {},
onChange,
@@ -56,7 +58,7 @@ export default function PromptVariableEditor({
>
{variable}
-