Skip to content

Commit 6055fe4

Browse files
committed
refactor: rely on content for single-line reasoning
1 parent 96a4898 commit 6055fe4

File tree

3 files changed

+3
-14
lines changed

3 files changed

+3
-14
lines changed

src/browser/components/Messages/ReasoningMessage.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,8 @@ export const ReasoningMessage: React.FC<ReasoningMessageProps> = ({ message, cla
1818
const isStreaming = message.isStreaming;
1919
const trimmedContent = content?.trim() ?? "";
2020
const hasContent = trimmedContent.length > 0;
21-
const reasoningSegments = message.reasoningSegmentCount ?? 1;
2221
// OpenAI models often emit terse, single-line traces; surface them inline instead of hiding behind the label.
23-
const isSingleLineTrace =
24-
!isStreaming && hasContent && reasoningSegments === 1 && !/[\r\n]/.test(trimmedContent);
22+
const isSingleLineTrace = !isStreaming && hasContent && !/[\r\n]/.test(trimmedContent);
2523
const isCollapsible = !isStreaming && hasContent && !isSingleLineTrace;
2624

2725
// Auto-collapse when streaming ends

src/browser/utils/messages/StreamingMessageAggregator.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,6 @@ export class StreamingMessageAggregator {
613613
type: "reasoning",
614614
text: data.delta,
615615
timestamp: data.timestamp,
616-
segmentCount: 1,
617616
});
618617

619618
// Track delta for token counting and TPS calculation
@@ -799,20 +798,15 @@ export class StreamingMessageAggregator {
799798
timestamp: lastMerged.timestamp ?? part.timestamp,
800799
};
801800
} else if (lastMerged?.type === "reasoning" && part.type === "reasoning") {
802-
// Merge reasoning parts, preserving the first timestamp and accumulating segment count
801+
// Merge reasoning parts, preserving the first timestamp
803802
mergedParts[mergedParts.length - 1] = {
804803
type: "reasoning",
805804
text: lastMerged.text + part.text,
806805
timestamp: lastMerged.timestamp ?? part.timestamp,
807-
segmentCount: (lastMerged.segmentCount ?? 1) + (part.segmentCount ?? 1),
808806
};
809807
} else {
810808
// Different type or tool part - add new part
811-
if (part.type === "reasoning") {
812-
mergedParts.push({ ...part, segmentCount: part.segmentCount ?? 1 });
813-
} else {
814-
mergedParts.push(part);
815-
}
809+
mergedParts.push(part);
816810
}
817811
}
818812

@@ -849,7 +843,6 @@ export class StreamingMessageAggregator {
849843
isPartial: message.metadata?.partial ?? false,
850844
isLastPartOfMessage: isLastPart,
851845
timestamp: part.timestamp ?? baseTimestamp,
852-
reasoningSegmentCount: part.segmentCount ?? 1,
853846
});
854847
} else if (part.type === "text" && part.text) {
855848
// Skip empty text parts

src/common/types/message.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ export interface MuxReasoningPart {
7272
type: "reasoning";
7373
text: string;
7474
timestamp?: number;
75-
segmentCount?: number; // Number of merged reasoning deltas represented by this part
7675
}
7776

7877
// File/Image part type for multimodal messages (matches AI SDK FileUIPart)
@@ -152,7 +151,6 @@ export type DisplayedMessage =
152151
isLastPartOfMessage?: boolean; // True if this is the last part of a multi-part message
153152
timestamp?: number;
154153
tokens?: number; // Reasoning tokens if available
155-
reasoningSegmentCount?: number; // Number of merged reasoning deltas represented by this block
156154
}
157155
| {
158156
type: "stream-error";

0 commit comments

Comments
 (0)