@arizeai/phoenix-client
Version:
A client for the Phoenix API
52 lines • 1.8 kB
JavaScript
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