summaryrefslogtreecommitdiff
path: root/makima/frontend/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'makima/frontend/src/components')
-rw-r--r--makima/frontend/src/components/files/CliInput.tsx17
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 (