+ {agentModeEnabled && (isThinking || agentPendingQuestion) && (
+
{/* Hidden file input */}
@@ -716,7 +717,10 @@ const ChatArea = () => {
/>
-
Press Shift + Enter for new line
+
+
+
Press Shift + Enter for new line
+
{Object.keys(uploadedFiles).length > 0 && (
{Object.keys(uploadedFiles).length} file(s) uploaded
)}
diff --git a/frontend/src/components/Header.jsx b/frontend/src/components/Header.jsx
index b22b4fe..1776fc6 100644
--- a/frontend/src/components/Header.jsx
+++ b/frontend/src/components/Header.jsx
@@ -274,7 +274,7 @@ const Header = ({ onToggleRag, onToggleTools, onToggleFiles, onToggleCanvas, onC
diff --git a/frontend/src/components/PromptSelector.jsx b/frontend/src/components/PromptSelector.jsx
index 38f913a..f1ea4af 100644
--- a/frontend/src/components/PromptSelector.jsx
+++ b/frontend/src/components/PromptSelector.jsx
@@ -3,53 +3,38 @@ import { ChevronDown, Sparkles } from 'lucide-react'
import { useState, useRef, useEffect } from 'react'
const PromptSelector = () => {
- const { prompts, selectedPrompts, setSinglePrompt } = useChat()
+ const { prompts, selectedPrompts, togglePrompt, makePromptActive, selectedTools } = useChat()
const [isOpen, setIsOpen] = useState(false)
const dropdownRef = useRef(null)
- // Get currently selected prompt
- const selectedPromptKey = selectedPrompts && selectedPrompts.size > 0
- ? Array.from(selectedPrompts)[0]
- : null
+ // Get all selected prompt keys as an array
+ const selectedPromptKeys = selectedPrompts && selectedPrompts.size > 0
+ ? Array.from(selectedPrompts)
+ : []
- // Find the selected prompt info
- const selectedPromptInfo = (() => {
- if (!selectedPromptKey) return null
- const idx = selectedPromptKey.indexOf('_')
- if (idx === -1) return { key: selectedPromptKey, server: 'Unknown', name: selectedPromptKey }
- const server = selectedPromptKey.slice(0, idx)
- const name = selectedPromptKey.slice(idx + 1)
-
- // Find the server and prompt details
- const promptServer = prompts.find(p => p.server === server)
- if (promptServer) {
- const prompt = promptServer.prompts?.find(p => p.name === name)
- return {
- key: selectedPromptKey,
- server,
- name,
- description: prompt?.description || ''
- }
- }
- return { key: selectedPromptKey, server, name, description: '' }
- })()
-
- // Get all available prompts as a flat list
+ // Get only the prompts that are actually selected (enabled)
const allPrompts = []
prompts.forEach(server => {
if (server.prompts && server.prompts.length > 0) {
server.prompts.forEach(prompt => {
- allPrompts.push({
- key: `${server.server}_${prompt.name}`,
- server: server.server,
- name: prompt.name,
- description: prompt.description || '',
- compliance_level: server.compliance_level
- })
+ const promptKey = `${server.server}_${prompt.name}`
+ // Only include prompts that are actually selected
+ if (selectedPromptKeys.includes(promptKey)) {
+ allPrompts.push({
+ key: promptKey,
+ server: server.server,
+ name: prompt.name,
+ description: prompt.description || '',
+ compliance_level: server.compliance_level
+ })
+ }
})
}
})
+ // The first selected prompt is the active one (used by backend)
+ const activePromptKey = selectedPromptKeys.length > 0 ? selectedPromptKeys[0] : null
+
// Close dropdown when clicking outside
useEffect(() => {
const handleClickOutside = (event) => {
@@ -64,17 +49,20 @@ const PromptSelector = () => {
}
}, [isOpen])
- // If no prompts are available, don't render anything
- if (allPrompts.length === 0) return null
-
const handlePromptSelect = (promptKey) => {
- if (promptKey === selectedPromptKey) {
- // Deselect if clicking the same prompt
- setSinglePrompt(null)
- } else {
- setSinglePrompt(promptKey)
+ // Just make this prompt active without reordering
+ if (makePromptActive) {
+ makePromptActive(promptKey)
}
- setIsOpen(false)
+ }
+
+ // Get display text for the button - show the active (first) prompt name
+ const getButtonText = () => {
+ if (selectedPromptKeys.length === 0) return 'Default Prompt'
+ // Always show the active (first) prompt name
+ const key = selectedPromptKeys[0]
+ const idx = key.indexOf('_')
+ return idx === -1 ? key : key.slice(idx + 1)
}
return (
@@ -82,56 +70,85 @@ const PromptSelector = () => {
{isOpen && (
-
+
Custom Prompts
- Select a prompt to customize AI behavior
+ Select prompts to customize AI behavior
- {/* Clear selection option */}
- {selectedPromptKey && (
+ {/* Default Prompt option - always available */}
+
+
+ {/* Clear all selection option - only show if prompts are selected */}
+ {selectedPromptKeys.length > 1 && (
)}
{/* Prompt list */}
{allPrompts.map((prompt) => {
- const isSelected = prompt.key === selectedPromptKey
+ const isActive = prompt.key === activePromptKey
return (