fix(web): persist thinking, title sessions distinctly, and send follow-ups from the answer

Thinking disappeared on failure and never reached session storage. Keep the
sanitized chain on disk and on errors, and regroup the sidebar around reports,
charts, favorites, and dated history titles.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-22 09:10:47 +08:00
parent 649ba32034
commit 59559d4b24
27 changed files with 741 additions and 179 deletions
+9 -3
View File
@@ -500,6 +500,7 @@ export async function POST(request: Request) {
techniqueTruth: string,
workflowReceipt: WorkflowReceipt,
agentExecutionReceipt?: AgentExecutionReceipt,
thinkingText?: string,
): Promise<AgentSettlementResult> {
try {
const reply = parseAgentReply(
@@ -507,9 +508,11 @@ export async function POST(request: Request) {
createConsultationReplyMetadata({ question: visibleQuestion }),
);
if (!reply.text) throw new Error("empty_agent_reply");
const persistedThinking = thinkingText?.trim().slice(0, 4_000);
const responseMessage = {
role: "assistant" as const,
text: reply.text,
...(persistedThinking ? { thinkingText: persistedThinking } : {}),
techniqueTruth,
workflowReceipt,
...(agentExecutionReceipt ? { agentExecutionReceipt } : {}),
@@ -755,12 +758,13 @@ export async function POST(request: Request) {
headers: { "x-jyotish-birth-time-mode": consultationMode },
onFirstActivity: markFirstActivity,
onFirstOutput: markFirstText,
onComplete: (output, agentExecutionReceipt) => settleRun(() => completeResponse(
onComplete: (output, agentExecutionReceipt, thinkingText) => settleRun(() => completeResponse(
output,
mergeUsage(usages),
generalDailyContext ? "public-panchanga-only" : "not-applicable",
workflowReceipt,
agentExecutionReceipt,
thinkingText,
), undefined),
onError: (error) => settleRun(
cancel,
@@ -840,12 +844,13 @@ export async function POST(request: Request) {
headers: { "x-jyotish-birth-time-mode": consultationMode },
onFirstActivity: markFirstActivity,
onFirstOutput: markFirstText,
onComplete: (output, agentExecutionReceipt) => settleRun(() => completeResponse(
onComplete: (output, agentExecutionReceipt, thinkingText) => settleRun(() => completeResponse(
output,
mergeUsage(usages),
state.techniqueTruth ?? "declared-window",
state.workflowReceipt ?? workflowReceipt,
agentExecutionReceipt,
thinkingText,
), undefined),
onError: (error) => settleRun(
cancel,
@@ -930,12 +935,13 @@ export async function POST(request: Request) {
headers: { "x-jyotish-birth-time-mode": consultationMode },
onFirstActivity: markFirstActivity,
onFirstOutput: markFirstText,
onComplete: (output, agentExecutionReceipt) => settleRun(() => completeResponse(
onComplete: (output, agentExecutionReceipt, thinkingText) => settleRun(() => completeResponse(
output,
mergeUsage(usages),
state.techniqueTruth ?? "unknown",
state.workflowReceipt ?? workflowReceipt,
agentExecutionReceipt,
thinkingText,
), undefined),
onError: (error) => settleRun(
cancel,