Carry conversations into new sessions with a visible summary
- Bots get continue_in_new_session: the bot writes a title and summary, the session closes for good (read-only) and the new one opens with the summary as a "Carried over from the last session" message that links back to the old session. - Continue in new session (conversation menu, sessions modal) and the automatic rollover at the session length do the same; New session now starts a fresh, unlinked session. - Session length is an app setting in Settings > General. - ?session_id= opens a session; a carried-over one shows a bar linking to where the conversation went on instead of the composer. - The thread can open the previous session above the current one (shown only, never in the prompt), and replies get search_past_sessions and read_past_session. - Sessions are named from their opening messages, not their latest, and a carried summary is labelled as the earlier session's. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import type { BotSessionChangedData, BotSessionListItem } from "@/src/types";
|
||||
import postSessionApi from "@/src/functions/frontend/post-session-api";
|
||||
import conversationHref from "@/src/utils/conversation-href";
|
||||
import useServerEvent from "./use-server-event";
|
||||
|
||||
type Params = {
|
||||
@@ -44,6 +45,8 @@ function belongsToConversation({
|
||||
/**
|
||||
* A conversation's sessions, latest first, searched as the user types
|
||||
* (debounced). Starting or reopening a session reloads the page onto it.
|
||||
* A session that can't be reopened (carried over into a newer one) opens
|
||||
* to read instead.
|
||||
* New messages and session changes pushed live reload the list, so a
|
||||
* session started in the conversation (or named once its first reply is
|
||||
* in) shows without a reload.
|
||||
@@ -118,8 +121,21 @@ export default function useBotSessions({ bot_id, workspace_id, open, limit }: Pa
|
||||
|
||||
const res = await postSessionApi({ path, body }).catch(() => null);
|
||||
|
||||
/**
|
||||
* The plain address, not a reload: one showing a session to read
|
||||
* (`?session_id=`) would stay on it.
|
||||
*/
|
||||
if (res?.success) {
|
||||
window.location.reload();
|
||||
window.location.assign(conversationHref({ bot_id, workspace_id }));
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Carried over into a newer session, it stays closed: it opens to
|
||||
* read, with the way to where the conversation went on.
|
||||
*/
|
||||
if (res && path == "reopen-session") {
|
||||
window.location.assign(conversationHref({ bot_id, workspace_id, session_id: id }));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user