302e9b45ab
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com> Co-authored-by: Aarav Sareen <96787824+arvsrn@users.noreply.github.com> Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com> Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com> Co-authored-by: opencode <opencode@sst.dev> Co-authored-by: Jay <53023+jayair@users.noreply.github.com> Co-authored-by: David Hill <1879069+iamdavidhill@users.noreply.github.com> Co-authored-by: BB84 <110078428+BB-84C@users.noreply.github.com> Co-authored-by: Aiden Cline <aidenpcline@gmail.com> Co-authored-by: Dax <mail@thdxr.com> Co-authored-by: Brendan Allan <git@brendonovich.dev> Co-authored-by: Jay V <air@live.ca> Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Co-authored-by: Dustin Deus <deusdustin@gmail.com> Co-authored-by: Frank <frank@anoma.ly> Co-authored-by: usrnk1 <7547651+usrnk1@users.noreply.github.com> Co-authored-by: Jack <jack@anoma.ly> Co-authored-by: Sebastian <hasta84@gmail.com> Co-authored-by: Jérôme Benoit <jerome.benoit@sap.com> Co-authored-by: Test User <test@test.com> Co-authored-by: Simon Klee <hello@simonklee.dk> Co-authored-by: Rahul A Mistry <149420892+ProdigyRahul@users.noreply.github.com> Co-authored-by: Qiping Li <liqiping1991@gmail.com> Co-authored-by: liqiping <liqiping@msh.team> Co-authored-by: OpeOginni <107570612+OpeOginni@users.noreply.github.com> Co-authored-by: Matthias Reso <13337103+mreso@users.noreply.github.com> Co-authored-by: tobwen <1864057+tobwen@users.noreply.github.com> Co-authored-by: Daniel Polito <danielbpolito@gmail.com> Co-authored-by: opencode <noreply@opencode.ai> Co-authored-by: Devin R Leopold <devin.leopold@gmail.com> Co-authored-by: Zach Bruggeman <mail@bruggie.com> Co-authored-by: Zach Bruggeman <zbruggeman@ramp.com> Co-authored-by: Kit Langton <kit.langton@gmail.com> Co-authored-by: David Siewert <david1gruppenplan@gmail.com> Co-authored-by: Andrei Dziahel <develop7@develop7.info> Co-authored-by: adityachaudhary99 <adityaachaudhary2003@gmail.com> Co-authored-by: Vladimir Glafirov <vglafirov@gitlab.com> Co-authored-by: Matt Carey <mcarey@cloudflare.com>
38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
import type { SessionApi, SessionInfo, SessionListInput } from "@opencode-ai/client/promise"
|
|
import type { Session } from "@opencode-ai/sdk/v2/client"
|
|
|
|
export function normalizeSessionInfo(input: SessionInfo | Session): Session {
|
|
if (!("location" in input)) return input
|
|
return {
|
|
id: input.id,
|
|
slug: input.id,
|
|
projectID: input.projectID,
|
|
workspaceID: input.location.workspaceID,
|
|
directory: input.location.directory,
|
|
path: input.subpath,
|
|
parentID: input.parentID,
|
|
cost: input.cost,
|
|
tokens: input.tokens,
|
|
title: input.title,
|
|
agent: input.agent,
|
|
model: input.model,
|
|
version: "",
|
|
time: input.time,
|
|
revert: input.revert && {
|
|
messageID: input.revert.messageID,
|
|
partID: input.revert.partID,
|
|
snapshot: input.revert.snapshot,
|
|
},
|
|
}
|
|
}
|
|
|
|
export async function listAllSessions(api: Pick<SessionApi, "list">, input: Omit<SessionListInput, "cursor">) {
|
|
const load = async (cursor?: string): Promise<Session[]> => {
|
|
const result = await api.list({ ...input, limit: input.limit ?? 100, cursor })
|
|
const sessions = result.data.map(normalizeSessionInfo)
|
|
if (result.data.length === 0 || !result.cursor.next) return sessions
|
|
return [...sessions, ...(await load(result.cursor.next))]
|
|
}
|
|
return load()
|
|
}
|