fix: start typing on message start

This commit is contained in:
Peter Steinberger
2026-01-13 04:32:28 +00:00
parent 0ba60ff69c
commit d4c205f8e1
6 changed files with 47 additions and 8 deletions

View File

@@ -25,9 +25,11 @@ export function resolveTypingMode({
export type TypingSignaler = {
mode: TypingMode;
shouldStartImmediately: boolean;
shouldStartOnMessageStart: boolean;
shouldStartOnText: boolean;
shouldStartOnReasoning: boolean;
signalRunStart: () => Promise<void>;
signalMessageStart: () => Promise<void>;
signalTextDelta: (text?: string) => Promise<void>;
signalReasoningDelta: () => Promise<void>;
signalToolStart: () => Promise<void>;
@@ -40,6 +42,7 @@ export function createTypingSignaler(params: {
}): TypingSignaler {
const { typing, mode, isHeartbeat } = params;
const shouldStartImmediately = mode === "instant";
const shouldStartOnMessageStart = mode === "message";
const shouldStartOnText = mode === "message" || mode === "instant";
const shouldStartOnReasoning = mode === "thinking";
const disabled = isHeartbeat || mode === "never";
@@ -49,6 +52,11 @@ export function createTypingSignaler(params: {
await typing.startTypingLoop();
};
const signalMessageStart = async () => {
if (disabled || !shouldStartOnMessageStart) return;
await typing.startTypingLoop();
};
const signalTextDelta = async (text?: string) => {
if (disabled) return;
if (shouldStartOnText) {
@@ -80,9 +88,11 @@ export function createTypingSignaler(params: {
return {
mode,
shouldStartImmediately,
shouldStartOnMessageStart,
shouldStartOnText,
shouldStartOnReasoning,
signalRunStart,
signalMessageStart,
signalTextDelta,
signalReasoningDelta,
signalToolStart,