Remove unused session message processing (#3231)
* perf(app): remove unused session message state The legacy message accumulator had no readers but copied its full array for each activity and updated Zustand for every assistant chunk. Keep only the live voice-abort notification and voice transcription behavior. * test(app): use live session action in task subscription test
This commit is contained in:
@@ -97,7 +97,7 @@ describe("agent task state", () => {
|
||||
useSessionStore
|
||||
.getState()
|
||||
.setAgentStreamState("test-server", "agent-1", { taskSnapshot: tasks });
|
||||
useSessionStore.getState().setMessages("test-server", []);
|
||||
useSessionStore.getState().setIsPlayingAudio("test-server", true);
|
||||
useSessionStore
|
||||
.getState()
|
||||
.setAgentStreamState("test-server", "agent-1", { taskSnapshot: [...tasks] });
|
||||
|
||||
@@ -62,47 +62,6 @@ import {
|
||||
type TurnLivenessTransition,
|
||||
} from "@/timeline/turn-liveness";
|
||||
|
||||
// Re-export types that were in session-context
|
||||
export type MessageEntry =
|
||||
| {
|
||||
type: "user";
|
||||
id: string;
|
||||
timestamp: number;
|
||||
message: string;
|
||||
}
|
||||
| {
|
||||
type: "assistant";
|
||||
id: string;
|
||||
timestamp: number;
|
||||
message: string;
|
||||
}
|
||||
| {
|
||||
type: "activity";
|
||||
id: string;
|
||||
timestamp: number;
|
||||
activityType: "system" | "info" | "success" | "error";
|
||||
message: string;
|
||||
metadata?: Record<string, unknown>;
|
||||
}
|
||||
| {
|
||||
type: "artifact";
|
||||
id: string;
|
||||
timestamp: number;
|
||||
artifactId: string;
|
||||
artifactType: string;
|
||||
title: string;
|
||||
}
|
||||
| {
|
||||
type: "tool_call";
|
||||
id: string;
|
||||
timestamp: number;
|
||||
toolName: string;
|
||||
args: unknown;
|
||||
result?: unknown;
|
||||
error?: unknown;
|
||||
status: "executing" | "completed" | "failed";
|
||||
};
|
||||
|
||||
export interface AgentRuntimeInfo {
|
||||
provider: AgentProvider;
|
||||
sessionId: string | null;
|
||||
@@ -440,10 +399,6 @@ export interface SessionState {
|
||||
focusedAgentId: string | null;
|
||||
focusedTerminalId: string | null;
|
||||
|
||||
// Messages
|
||||
messages: MessageEntry[];
|
||||
currentAssistantMessage: string;
|
||||
|
||||
// Stream state (head/tail model)
|
||||
agentStreamTail: Map<string, StreamItem[]>;
|
||||
agentStreamHead: Map<string, StreamItem[]>;
|
||||
@@ -515,16 +470,6 @@ interface SessionStoreActions {
|
||||
setFocusedAgentId: (serverId: string, agentId: string | null) => void;
|
||||
setFocusedTerminalId: (serverId: string, terminalId: string | null) => void;
|
||||
|
||||
// Messages
|
||||
setMessages: (
|
||||
serverId: string,
|
||||
messages: MessageEntry[] | ((prev: MessageEntry[]) => MessageEntry[]),
|
||||
) => void;
|
||||
setCurrentAssistantMessage: (
|
||||
serverId: string,
|
||||
message: string | ((prev: string) => string),
|
||||
) => void;
|
||||
|
||||
// Stream state (head/tail model)
|
||||
setAgentStreamTail: (
|
||||
serverId: string,
|
||||
@@ -711,8 +656,6 @@ function createInitialSessionState(
|
||||
isPlayingAudio: false,
|
||||
focusedAgentId: null,
|
||||
focusedTerminalId: null,
|
||||
messages: [],
|
||||
currentAssistantMessage: "",
|
||||
agentStreamTail: new Map(),
|
||||
agentStreamHead: new Map(),
|
||||
agentTasks: new Map(),
|
||||
@@ -1050,49 +993,6 @@ export const useSessionStore = create<SessionStore>()(
|
||||
});
|
||||
},
|
||||
|
||||
// Messages
|
||||
setMessages: (serverId, messages) => {
|
||||
set((prev) => {
|
||||
const session = prev.sessions[serverId];
|
||||
if (!session) {
|
||||
return prev;
|
||||
}
|
||||
const nextMessages =
|
||||
typeof messages === "function" ? messages(session.messages) : messages;
|
||||
if (session.messages === nextMessages) {
|
||||
return prev;
|
||||
}
|
||||
return {
|
||||
...prev,
|
||||
sessions: {
|
||||
...prev.sessions,
|
||||
[serverId]: { ...session, messages: nextMessages },
|
||||
},
|
||||
};
|
||||
});
|
||||
},
|
||||
|
||||
setCurrentAssistantMessage: (serverId, message) => {
|
||||
set((prev) => {
|
||||
const session = prev.sessions[serverId];
|
||||
if (!session) {
|
||||
return prev;
|
||||
}
|
||||
const nextMessage =
|
||||
typeof message === "function" ? message(session.currentAssistantMessage) : message;
|
||||
if (session.currentAssistantMessage === nextMessage) {
|
||||
return prev;
|
||||
}
|
||||
return {
|
||||
...prev,
|
||||
sessions: {
|
||||
...prev.sessions,
|
||||
[serverId]: { ...session, currentAssistantMessage: nextMessage },
|
||||
},
|
||||
};
|
||||
});
|
||||
},
|
||||
|
||||
// Stream state (head/tail model)
|
||||
setAgentStreamTail: (serverId, state) => {
|
||||
set((prev) => {
|
||||
|
||||
Reference in New Issue
Block a user