diff --git a/orchestrator/src/client/api/client.ts b/orchestrator/src/client/api/client.ts index 21c5220..fd81062 100644 --- a/orchestrator/src/client/api/client.ts +++ b/orchestrator/src/client/api/client.ts @@ -671,6 +671,18 @@ export async function cancelJobChatRun( ); } +export async function resetJobGhostwriterConversation( + jobId: string, +): Promise<{ deletedMessages: number; deletedRuns: number }> { + return fetchApi<{ deletedMessages: number; deletedRuns: number }>( + `/jobs/${jobId}/chat/reset`, + { + method: "POST", + body: JSON.stringify({}), + }, + ); +} + export async function cancelJobGhostwriterRun( jobId: string, runId: string, diff --git a/orchestrator/src/client/components/ghostwriter/Composer.tsx b/orchestrator/src/client/components/ghostwriter/Composer.tsx index 9f1ecaa..f5cf0d1 100644 --- a/orchestrator/src/client/components/ghostwriter/Composer.tsx +++ b/orchestrator/src/client/components/ghostwriter/Composer.tsx @@ -1,5 +1,5 @@ import { getMetaShortcutLabel, isMetaKeyPressed } from "@client/lib/meta-key"; -import { RefreshCcw, Send, Square } from "lucide-react"; +import { Eraser, RefreshCcw, Send, Square } from "lucide-react"; import type React from "react"; import { useState } from "react"; import { Button } from "@/components/ui/button"; @@ -9,18 +9,22 @@ type ComposerProps = { disabled?: boolean; isStreaming: boolean; canRegenerate: boolean; + canReset: boolean; onRegenerate: () => Promise; onStop: () => Promise; onSend: (content: string) => Promise; + onReset: () => void; }; export const Composer: React.FC = ({ disabled, isStreaming, canRegenerate, + canReset, onRegenerate, onStop, onSend, + onReset, }) => { const [value, setValue] = useState(""); @@ -51,6 +55,18 @@ export const Composer: React.FC = ({ {getMetaShortcutLabel("Enter")} to send
+ + {isStreaming ? (