Load the lead's scrollback 50 turns at a time
This commit is contained in:
Vendored
+30
-2
@@ -366,8 +366,36 @@ export function selectTask(taskId) {
|
||||
dropClosedFeeds();
|
||||
notify("selection");
|
||||
}
|
||||
export function startLeadStream() {
|
||||
subscribe(0, { lead: true }, leadFeed.push, () => undefined, () => leadFeed.load([]));
|
||||
const leadPage = 50;
|
||||
let leadMore = false;
|
||||
async function fetchLeadTail() {
|
||||
for (;;) {
|
||||
try {
|
||||
return await get("/api/me/lead/events", { query: { turns: leadPage } });
|
||||
}
|
||||
catch (err) {
|
||||
console.error("load lead history", err);
|
||||
await new Promise((resolve) => setTimeout(resolve, 2_000));
|
||||
}
|
||||
}
|
||||
}
|
||||
export async function startLeadStream() {
|
||||
const page = await fetchLeadTail();
|
||||
leadMore = page.more;
|
||||
subscribe(page.events.at(-1)?.seq ?? 0, { lead: true }, leadFeed.push, () => undefined, () => leadFeed.load(page.events));
|
||||
}
|
||||
export function leadHasOlder() {
|
||||
return leadFeed.ready && leadMore;
|
||||
}
|
||||
export async function loadOlderLead() {
|
||||
const first = leadFeed.events[0];
|
||||
if (!first) {
|
||||
return [];
|
||||
}
|
||||
const page = await get("/api/me/lead/events", { query: { before: first.seq, turns: leadPage } });
|
||||
leadMore = page.more;
|
||||
leadFeed.events.unshift(...page.events);
|
||||
return page.events;
|
||||
}
|
||||
export function handleEvent(ev) {
|
||||
if (ev.task_id) {
|
||||
|
||||
Reference in New Issue
Block a user