UNPKG

@arizeai/phoenix-client

Version:
52 lines 1.8 kB
import invariant from "tiny-invariant"; import { createClient } from "../client.js"; import { LIST_PROJECT_SESSIONS } from "../constants/serverRequirements.js"; import { resolveProjectIdentifier } from "../types/projects.js"; import { ensureServerCapability } from "../utils/serverVersionUtils.js"; import { toSession } from "./sessionUtils.js"; const DEFAULT_PAGE_SIZE = 100; /** * List all sessions for a project with automatic pagination handling. * * @requires Phoenix server >= 13.5.0 * * @example * ```ts * import { listSessions } from "@arizeai/phoenix-client/sessions"; * * const sessions = await listSessions({ * project: "my-project", * }); * * for (const session of sessions) { * console.log(`Session: ${session.sessionId}, Traces: ${session.traces.length}`); * } * ``` */ export async function listSessions(params) { const client = params.client || createClient(); await ensureServerCapability({ client, requirement: LIST_PROJECT_SESSIONS }); const projectIdentifier = resolveProjectIdentifier(params); const sessions = []; let cursor = null; do { const response = await client.GET("/v1/projects/{project_identifier}/sessions", { params: { path: { project_identifier: projectIdentifier, }, query: { cursor, limit: DEFAULT_PAGE_SIZE, }, }, }); if (response.error) throw response.error; invariant(response.data?.data, "Failed to list sessions"); cursor = response.data.next_cursor ?? null; sessions.push(...response.data.data.map(toSession)); } while (cursor != null); return sessions; } //# sourceMappingURL=listSessions.js.map