Compare commits

...

3 Commits

Author SHA1 Message Date
Tong Li
4b2aa0b2ad Merge branch 'ItzCrazyKns:master' into master 2025-02-01 02:28:28 -10:00
litongjava
78878313da feat:add copilotEnabled and setCopilotEnabled to ChatWindow 2025-02-01 02:27:19 -10:00
ItzCrazyKns
f37686189e feat(output-parsers): add empty check 2025-01-31 17:51:16 +05:30
5 changed files with 24 additions and 8 deletions

View File

@@ -19,6 +19,8 @@ class LineOutputParser extends BaseOutputParser<string> {
lc_namespace = ['langchain', 'output_parsers', 'line_output_parser']; lc_namespace = ['langchain', 'output_parsers', 'line_output_parser'];
async parse(text: string): Promise<string> { async parse(text: string): Promise<string> {
text = text.trim() || '';
const regex = /^(\s*(-|\*|\d+\.\s|\d+\)\s|\u2022)\s*)+/; const regex = /^(\s*(-|\*|\d+\.\s|\d+\)\s|\u2022)\s*)+/;
const startKeyIndex = text.indexOf(`<${this.key}>`); const startKeyIndex = text.indexOf(`<${this.key}>`);
const endKeyIndex = text.indexOf(`</${this.key}>`); const endKeyIndex = text.indexOf(`</${this.key}>`);

View File

@@ -19,11 +19,13 @@ class LineListOutputParser extends BaseOutputParser<string[]> {
lc_namespace = ['langchain', 'output_parsers', 'line_list_output_parser']; lc_namespace = ['langchain', 'output_parsers', 'line_list_output_parser'];
async parse(text: string): Promise<string[]> { async parse(text: string): Promise<string[]> {
text = text.trim() || '';
const regex = /^(\s*(-|\*|\d+\.\s|\d+\)\s|\u2022)\s*)+/; const regex = /^(\s*(-|\*|\d+\.\s|\d+\)\s|\u2022)\s*)+/;
const startKeyIndex = text.indexOf(`<${this.key}>`); const startKeyIndex = text.indexOf(`<${this.key}>`);
const endKeyIndex = text.indexOf(`</${this.key}>`); const endKeyIndex = text.indexOf(`</${this.key}>`);
if (startKeyIndex === -1 && endKeyIndex === -1) { if (startKeyIndex === -1 || endKeyIndex === -1) {
return []; return [];
} }

View File

@@ -10,6 +10,8 @@ const Chat = ({
loading, loading,
messages, messages,
sendMessage, sendMessage,
copilotEnabled,
setCopilotEnabled,
messageAppeared, messageAppeared,
rewrite, rewrite,
fileIds, fileIds,
@@ -18,6 +20,8 @@ const Chat = ({
setFiles, setFiles,
}: { }: {
messages: Message[]; messages: Message[];
copilotEnabled: boolean;
setCopilotEnabled: (enable: boolean) => void;
sendMessage: (message: string) => void; sendMessage: (message: string) => void;
loading: boolean; loading: boolean;
messageAppeared: boolean; messageAppeared: boolean;
@@ -89,6 +93,8 @@ const Chat = ({
<MessageInput <MessageInput
loading={loading} loading={loading}
sendMessage={sendMessage} sendMessage={sendMessage}
copilotEnabled={copilotEnabled}
setCopilotEnabled={setCopilotEnabled}
fileIds={fileIds} fileIds={fileIds}
setFileIds={setFileIds} setFileIds={setFileIds}
files={files} files={files}

View File

@@ -414,6 +414,7 @@ const ChatWindow = ({ id }: { id?: string }) => {
const [fileIds, setFileIds] = useState<string[]>([]); const [fileIds, setFileIds] = useState<string[]>([]);
const [focusMode, setFocusMode] = useState('webSearch'); const [focusMode, setFocusMode] = useState('webSearch');
const [copilotEnabled, setCopilotEnabled] = useState(true);
const [optimizationMode, setOptimizationMode] = useState('speed'); const [optimizationMode, setOptimizationMode] = useState('speed');
const [isMessagesLoaded, setIsMessagesLoaded] = useState(false); const [isMessagesLoaded, setIsMessagesLoaded] = useState(false);
@@ -498,8 +499,9 @@ const ChatWindow = ({ id }: { id?: string }) => {
}, },
files: fileIds, files: fileIds,
focusMode: focusMode, focusMode: focusMode,
copilotEnabled:copilotEnabled,
optimizationMode: optimizationMode, optimizationMode: optimizationMode,
history: [...chatHistory, ['human', message]], history: [...chatHistory],
}), }),
); );
@@ -661,6 +663,8 @@ const ChatWindow = ({ id }: { id?: string }) => {
loading={loading} loading={loading}
messages={messages} messages={messages}
sendMessage={sendMessage} sendMessage={sendMessage}
copilotEnabled={copilotEnabled}
setCopilotEnabled={setCopilotEnabled}
messageAppeared={messageAppeared} messageAppeared={messageAppeared}
rewrite={rewrite} rewrite={rewrite}
fileIds={fileIds} fileIds={fileIds}

View File

@@ -1,14 +1,15 @@
import { cn } from '@/lib/utils'; import {cn} from '@/lib/utils';
import { ArrowUp } from 'lucide-react'; import {ArrowUp} from 'lucide-react';
import { useEffect, useRef, useState } from 'react'; import {useEffect, useRef, useState} from 'react';
import TextareaAutosize from 'react-textarea-autosize'; import TextareaAutosize from 'react-textarea-autosize';
import Attach from './MessageInputActions/Attach';
import CopilotToggle from './MessageInputActions/Copilot'; import CopilotToggle from './MessageInputActions/Copilot';
import { File } from './ChatWindow'; import {File} from './ChatWindow';
import AttachSmall from './MessageInputActions/AttachSmall'; import AttachSmall from './MessageInputActions/AttachSmall';
const MessageInput = ({ const MessageInput = ({
sendMessage, sendMessage,
copilotEnabled,
setCopilotEnabled,
loading, loading,
fileIds, fileIds,
setFileIds, setFileIds,
@@ -16,13 +17,14 @@ const MessageInput = ({
setFiles, setFiles,
}: { }: {
sendMessage: (message: string) => void; sendMessage: (message: string) => void;
copilotEnabled: boolean;
setCopilotEnabled: (enable: boolean) => void;
loading: boolean; loading: boolean;
fileIds: string[]; fileIds: string[];
setFileIds: (fileIds: string[]) => void; setFileIds: (fileIds: string[]) => void;
files: File[]; files: File[];
setFiles: (files: File[]) => void; setFiles: (files: File[]) => void;
}) => { }) => {
const [copilotEnabled, setCopilotEnabled] = useState(false);
const [message, setMessage] = useState(''); const [message, setMessage] = useState('');
const [textareaRows, setTextareaRows] = useState(1); const [textareaRows, setTextareaRows] = useState(1);
const [mode, setMode] = useState<'multi' | 'single'>('single'); const [mode, setMode] = useState<'multi' | 'single'>('single');