diff options
Diffstat (limited to 'makima/frontend/src/components')
| -rw-r--r-- | makima/frontend/src/components/files/CliInput.tsx | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/makima/frontend/src/components/files/CliInput.tsx b/makima/frontend/src/components/files/CliInput.tsx index 0ac840a..c1e6b6d 100644 --- a/makima/frontend/src/components/files/CliInput.tsx +++ b/makima/frontend/src/components/files/CliInput.tsx @@ -1,5 +1,5 @@ import { useState, useCallback, useRef, useEffect } from "react"; -import { chatWithFile, type BodyElement, type LlmModel } from "../../lib/api"; +import { chatWithFile, type BodyElement, type LlmModel, type ChatMessage } from "../../lib/api"; import { SimpleMarkdown } from "../SimpleMarkdown"; interface CliInputProps { @@ -26,6 +26,8 @@ export function CliInput({ fileId, onUpdate }: CliInputProps) { const [messages, setMessages] = useState<Message[]>([]); const [expanded, setExpanded] = useState(false); const [model, setModel] = useState<LlmModel>("claude-opus"); + // Track conversation history for context continuity + const [conversationHistory, setConversationHistory] = useState<ChatMessage[]>([]); const inputRef = useRef<HTMLInputElement>(null); const messagesRef = useRef<HTMLDivElement>(null); @@ -55,7 +57,8 @@ export function CliInput({ fileId, onUpdate }: CliInputProps) { setLoading(true); try { - const response = await chatWithFile(fileId, userMessage, model); + // Send request with conversation history for context + const response = await chatWithFile(fileId, userMessage, model, conversationHistory); // Add assistant response const assistantMsgId = (Date.now() + 1).toString(); @@ -73,6 +76,13 @@ export function CliInput({ fileId, onUpdate }: CliInputProps) { }, ]); + // Update conversation history for next request + setConversationHistory((prev) => [ + ...prev, + { role: "user", content: userMessage }, + { role: "assistant", content: response.response }, + ]); + // Update parent with new body/summary onUpdate(response.updatedBody, response.updatedSummary); } catch (err) { @@ -90,11 +100,12 @@ export function CliInput({ fileId, onUpdate }: CliInputProps) { inputRef.current?.focus(); } }, - [input, loading, fileId, model, onUpdate] + [input, loading, fileId, model, onUpdate, conversationHistory] ); const clearMessages = useCallback(() => { setMessages([]); + setConversationHistory([]); }, []); return ( |
