Procházet zdrojové kódy

fix(desktop): last text part streaming

Adam před 3 měsíci
rodič
revize
126d887e57

+ 1 - 2
packages/ui/src/components/message-part.tsx

@@ -415,8 +415,7 @@ PART_MAPPING["tool"] = function ToolPartDisplay(props) {
 PART_MAPPING["text"] = function TextPartDisplay(props) {
   const data = useData()
   const part = props.part as TextPart
-  const content = createMemo(() => (part.text ?? "").trim())
-  const displayText = createMemo(() => relativizeProjectPaths(content(), data.directory))
+  const displayText = () => relativizeProjectPaths((part.text ?? "").trim(), data.directory)
 
   return (
     <Show when={displayText()}>

+ 3 - 4
packages/ui/src/components/session-turn.tsx

@@ -65,6 +65,7 @@ function AssistantMessageItem(props: {
   summary: string | undefined
   response: string | undefined
   lastTextPartId: string | undefined
+  working: boolean
 }) {
   const data = useData()
   const msgParts = createMemo(() => data.store.part[props.message.id] ?? [])
@@ -74,9 +75,8 @@ function AssistantMessageItem(props: {
       .at(-1),
   )
 
-  // Only filter when this message contains the last text part and we're showing response instead of summary
   const filteredParts = createMemo(() => {
-    if (!props.summary && props.response && props.lastTextPartId === lastTextPart()?.id) {
+    if (!props.working && !props.summary && props.response && props.lastTextPartId === lastTextPart()?.id) {
       return msgParts().filter((p) => p?.id !== lastTextPart()?.id)
     }
     return msgParts()
@@ -102,9 +102,7 @@ export function SessionTurn(
   const data = useData()
   const diffComponent = useDiffComponent()
 
-  // Split the derived computation into separate memos to avoid unnecessary recalculations
   const allMessages = createMemo(() => data.store.message[props.sessionID] ?? [])
-
   const userMessages = createMemo(() =>
     allMessages()
       .filter((m) => m.role === "user")
@@ -441,6 +439,7 @@ export function SessionTurn(
                               summary={summary()}
                               response={response()}
                               lastTextPartId={lastTextPart()?.id}
+                              working={working()}
                             />
                           )}
                         </For>