fix(consult): drop traces, budget checkpoints, silent summary inherit
BUG-729: dropped history rounds leave an omission marker in the model-visible summary slot. BUG-730: checkpoint threshold is 0.4 of historyBudgetChars (128k still 16,000). BUG-731: session_full new chat copies owned context_summary on the server; clients send only continued_from_session_id.
This commit is contained in:
@@ -135,7 +135,7 @@ export type ConsultationRunParams = {
|
||||
uiPreviewMode: MutableRefObject<string | null>;
|
||||
persistSession: (session: ChatSession, mode?: "create" | "update") => Promise<void>;
|
||||
updateSession: (sessionId: string, change: (session: ChatSession) => ChatSession) => void;
|
||||
startNewChat: () => Promise<ChatSession | null>;
|
||||
startNewChat: (options?: { continuedFromSessionId?: string }) => Promise<ChatSession | null>;
|
||||
continueInNewChat: (prompt: { question: string; theme: Theme }) => Promise<void>;
|
||||
refreshAccount: () => Promise<void>;
|
||||
openAccountDialog: (dialog: AccountDialog, options?: HTMLButtonElement | null | OpenAccountDialogOptions) => void;
|
||||
|
||||
@@ -139,7 +139,11 @@ export function useSessionManagement(params: SessionManagementParams) {
|
||||
setSessions((current) => current.map((session) => (session.id === sessionId ? change(session) : session)));
|
||||
}
|
||||
|
||||
async function persistSession(session: ChatSession, mode: "create" | "update" = "update") {
|
||||
async function persistSession(
|
||||
session: ChatSession,
|
||||
mode: "create" | "update" = "update",
|
||||
options?: { continuedFromSessionId?: string },
|
||||
) {
|
||||
if (!account) throw new Error("账户尚未加载完成");
|
||||
if (process.env.NODE_ENV === "development" && uiPreview.current) return;
|
||||
const values = mode === "create"
|
||||
@@ -153,6 +157,9 @@ export function useSessionManagement(params: SessionManagementParams) {
|
||||
chart_profile_id: session.chartProfileId,
|
||||
chart_profile_name: session.chartProfileName,
|
||||
chart_profile_role: session.chartProfileRole,
|
||||
...(options?.continuedFromSessionId
|
||||
? { continued_from_session_id: options.continuedFromSessionId }
|
||||
: {}),
|
||||
}
|
||||
: {
|
||||
title: session.title,
|
||||
@@ -192,7 +199,10 @@ export function useSessionManagement(params: SessionManagementParams) {
|
||||
|
||||
async function continueInNewChat(prompt: { question: string; theme: Theme }) {
|
||||
setSessionFullPrompt(null);
|
||||
const created = await startNewChat();
|
||||
const sourceSessionId = activeSessionId;
|
||||
const created = await startNewChat(
|
||||
sourceSessionId ? { continuedFromSessionId: sourceSessionId } : undefined,
|
||||
);
|
||||
if (!created) return;
|
||||
setDraft(prompt.question);
|
||||
setDraftTheme(prompt.theme);
|
||||
@@ -294,7 +304,7 @@ export function useSessionManagement(params: SessionManagementParams) {
|
||||
}
|
||||
}
|
||||
|
||||
async function startNewChat(): Promise<ChatSession | null> {
|
||||
async function startNewChat(options?: { continuedFromSessionId?: string }): Promise<ChatSession | null> {
|
||||
if (!account || !modelCatalog || creatingSession) return null;
|
||||
const nextSession = {
|
||||
...createSession(modelCatalog.defaultModelId),
|
||||
@@ -312,7 +322,13 @@ export function useSessionManagement(params: SessionManagementParams) {
|
||||
setComposerNotice("");
|
||||
setRequestError(null);
|
||||
try {
|
||||
await persistSession(nextSession, "create");
|
||||
await persistSession(
|
||||
nextSession,
|
||||
"create",
|
||||
options?.continuedFromSessionId
|
||||
? { continuedFromSessionId: options.continuedFromSessionId }
|
||||
: undefined,
|
||||
);
|
||||
return nextSession;
|
||||
} catch (caught) {
|
||||
setSessions((current) => current.filter((session) => session.id !== nextSession.id));
|
||||
|
||||
Reference in New Issue
Block a user