@arizeai/phoenix-client 6.5.1 → 6.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +194 -0
- package/dist/esm/__generated__/api/v1.d.ts +71 -0
- package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
- package/dist/esm/constants/serverRequirements.d.ts +1 -0
- package/dist/esm/constants/serverRequirements.d.ts.map +1 -1
- package/dist/esm/constants/serverRequirements.js +7 -0
- package/dist/esm/constants/serverRequirements.js.map +1 -1
- package/dist/esm/traces/getTraces.d.ts +78 -0
- package/dist/esm/traces/getTraces.d.ts.map +1 -0
- package/dist/esm/traces/getTraces.js +96 -0
- package/dist/esm/traces/getTraces.js.map +1 -0
- package/dist/esm/traces/index.d.ts +2 -0
- package/dist/esm/traces/index.d.ts.map +1 -0
- package/dist/esm/traces/index.js +2 -0
- package/dist/esm/traces/index.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/esm/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/src/__generated__/api/v1.d.ts +71 -0
- package/dist/src/__generated__/api/v1.d.ts.map +1 -1
- package/dist/src/constants/serverRequirements.d.ts +1 -0
- package/dist/src/constants/serverRequirements.d.ts.map +1 -1
- package/dist/src/constants/serverRequirements.js +8 -1
- package/dist/src/constants/serverRequirements.js.map +1 -1
- package/dist/src/traces/getTraces.d.ts +78 -0
- package/dist/src/traces/getTraces.d.ts.map +1 -0
- package/dist/src/traces/getTraces.js +100 -0
- package/dist/src/traces/getTraces.js.map +1 -0
- package/dist/src/traces/index.d.ts +2 -0
- package/dist/src/traces/index.d.ts.map +1 -0
- package/dist/src/traces/index.js +18 -0
- package/dist/src/traces/index.js.map +1 -0
- package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -3
- package/src/__generated__/api/v1.ts +71 -0
- package/src/constants/serverRequirements.ts +8 -0
- package/src/traces/getTraces.ts +156 -0
- package/src/traces/index.ts +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arizeai/phoenix-client",
|
|
3
|
-
"version": "6.5.
|
|
3
|
+
"version": "6.5.3",
|
|
4
4
|
"description": "A client for the Phoenix API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"arize",
|
|
@@ -47,6 +47,10 @@
|
|
|
47
47
|
"import": "./dist/esm/sessions/index.js",
|
|
48
48
|
"require": "./dist/src/sessions/index.js"
|
|
49
49
|
},
|
|
50
|
+
"./traces": {
|
|
51
|
+
"import": "./dist/esm/traces/index.js",
|
|
52
|
+
"require": "./dist/src/traces/index.js"
|
|
53
|
+
},
|
|
50
54
|
"./experiments": {
|
|
51
55
|
"import": "./dist/esm/experiments/index.js",
|
|
52
56
|
"require": "./dist/src/experiments/index.js"
|
|
@@ -71,8 +75,8 @@
|
|
|
71
75
|
"openapi-fetch": "^0.12.5",
|
|
72
76
|
"tiny-invariant": "^1.3.3",
|
|
73
77
|
"zod": "^4.0.14",
|
|
74
|
-
"@arizeai/phoenix-
|
|
75
|
-
"@arizeai/phoenix-
|
|
78
|
+
"@arizeai/phoenix-otel": "0.4.2",
|
|
79
|
+
"@arizeai/phoenix-config": "0.1.2"
|
|
76
80
|
},
|
|
77
81
|
"devDependencies": {
|
|
78
82
|
"@ai-sdk/openai": "^3.0.29",
|
|
@@ -889,6 +889,26 @@ export interface paths {
|
|
|
889
889
|
patch?: never;
|
|
890
890
|
trace?: never;
|
|
891
891
|
};
|
|
892
|
+
"/v1/user": {
|
|
893
|
+
parameters: {
|
|
894
|
+
query?: never;
|
|
895
|
+
header?: never;
|
|
896
|
+
path?: never;
|
|
897
|
+
cookie?: never;
|
|
898
|
+
};
|
|
899
|
+
/**
|
|
900
|
+
* Get the authenticated user
|
|
901
|
+
* @description Returns the profile of the currently authenticated user. When authentication is disabled, returns an anonymous user representation.
|
|
902
|
+
*/
|
|
903
|
+
get: operations["getViewer"];
|
|
904
|
+
put?: never;
|
|
905
|
+
post?: never;
|
|
906
|
+
delete?: never;
|
|
907
|
+
options?: never;
|
|
908
|
+
head?: never;
|
|
909
|
+
patch?: never;
|
|
910
|
+
trace?: never;
|
|
911
|
+
};
|
|
892
912
|
"/v1/users": {
|
|
893
913
|
parameters: {
|
|
894
914
|
query?: never;
|
|
@@ -998,6 +1018,14 @@ export interface components {
|
|
|
998
1018
|
*/
|
|
999
1019
|
explanation?: string | null;
|
|
1000
1020
|
};
|
|
1021
|
+
/** AnonymousUser */
|
|
1022
|
+
AnonymousUser: {
|
|
1023
|
+
/**
|
|
1024
|
+
* @description discriminator enum property added by openapi-typescript
|
|
1025
|
+
* @enum {string}
|
|
1026
|
+
*/
|
|
1027
|
+
auth_method: "ANONYMOUS";
|
|
1028
|
+
};
|
|
1001
1029
|
/** CategoricalAnnotationConfig */
|
|
1002
1030
|
CategoricalAnnotationConfig: {
|
|
1003
1031
|
/** Name */
|
|
@@ -1593,6 +1621,11 @@ export interface components {
|
|
|
1593
1621
|
/** Next Cursor */
|
|
1594
1622
|
next_cursor: string | null;
|
|
1595
1623
|
};
|
|
1624
|
+
/** GetViewerResponseBody */
|
|
1625
|
+
GetViewerResponseBody: {
|
|
1626
|
+
/** Data */
|
|
1627
|
+
data: components["schemas"]["LocalUser"] | components["schemas"]["OAuth2User"] | components["schemas"]["LDAPUser"] | components["schemas"]["AnonymousUser"];
|
|
1628
|
+
};
|
|
1596
1629
|
/** HTTPValidationError */
|
|
1597
1630
|
HTTPValidationError: {
|
|
1598
1631
|
/** Detail */
|
|
@@ -6383,6 +6416,44 @@ export interface operations {
|
|
|
6383
6416
|
};
|
|
6384
6417
|
};
|
|
6385
6418
|
};
|
|
6419
|
+
getViewer: {
|
|
6420
|
+
parameters: {
|
|
6421
|
+
query?: never;
|
|
6422
|
+
header?: never;
|
|
6423
|
+
path?: never;
|
|
6424
|
+
cookie?: never;
|
|
6425
|
+
};
|
|
6426
|
+
requestBody?: never;
|
|
6427
|
+
responses: {
|
|
6428
|
+
/** @description The authenticated user's profile. */
|
|
6429
|
+
200: {
|
|
6430
|
+
headers: {
|
|
6431
|
+
[name: string]: unknown;
|
|
6432
|
+
};
|
|
6433
|
+
content: {
|
|
6434
|
+
"application/json": components["schemas"]["GetViewerResponseBody"];
|
|
6435
|
+
};
|
|
6436
|
+
};
|
|
6437
|
+
/** @description User not found. */
|
|
6438
|
+
401: {
|
|
6439
|
+
headers: {
|
|
6440
|
+
[name: string]: unknown;
|
|
6441
|
+
};
|
|
6442
|
+
content: {
|
|
6443
|
+
"text/plain": string;
|
|
6444
|
+
};
|
|
6445
|
+
};
|
|
6446
|
+
/** @description Forbidden */
|
|
6447
|
+
403: {
|
|
6448
|
+
headers: {
|
|
6449
|
+
[name: string]: unknown;
|
|
6450
|
+
};
|
|
6451
|
+
content: {
|
|
6452
|
+
"text/plain": string;
|
|
6453
|
+
};
|
|
6454
|
+
};
|
|
6455
|
+
};
|
|
6456
|
+
};
|
|
6386
6457
|
getUsers: {
|
|
6387
6458
|
parameters: {
|
|
6388
6459
|
query?: {
|
|
@@ -69,6 +69,13 @@ export const GET_SPANS_FILTERS: ParameterRequirement = {
|
|
|
69
69
|
minServerVersion: [13, 15, 0],
|
|
70
70
|
};
|
|
71
71
|
|
|
72
|
+
export const LIST_PROJECT_TRACES: RouteRequirement = {
|
|
73
|
+
kind: "route",
|
|
74
|
+
method: "GET",
|
|
75
|
+
path: "/v1/projects/{project_identifier}/traces",
|
|
76
|
+
minServerVersion: [13, 15, 0],
|
|
77
|
+
};
|
|
78
|
+
|
|
72
79
|
/**
|
|
73
80
|
* Aggregate list of every known capability requirement.
|
|
74
81
|
*
|
|
@@ -83,4 +90,5 @@ export const ALL_REQUIREMENTS: readonly CapabilityRequirement[] = [
|
|
|
83
90
|
ANNOTATE_SESSIONS,
|
|
84
91
|
GET_SPANS_TRACE_IDS,
|
|
85
92
|
GET_SPANS_FILTERS,
|
|
93
|
+
LIST_PROJECT_TRACES,
|
|
86
94
|
] as const;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { operations } from "../__generated__/api/v1";
|
|
2
|
+
import { createClient } from "../client";
|
|
3
|
+
import { LIST_PROJECT_TRACES } from "../constants/serverRequirements";
|
|
4
|
+
import type { ClientFn } from "../types/core";
|
|
5
|
+
import type { ProjectIdentifier } from "../types/projects";
|
|
6
|
+
import { resolveProjectIdentifier } from "../types/projects";
|
|
7
|
+
import { ensureServerCapability } from "../utils/serverVersionUtils";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Parameters for getting traces from a project.
|
|
11
|
+
*/
|
|
12
|
+
export interface GetTracesParams extends ClientFn {
|
|
13
|
+
/** The project to get traces from */
|
|
14
|
+
project: ProjectIdentifier;
|
|
15
|
+
/** Inclusive lower bound time. Must be a valid ISO 8601 string or Date object. */
|
|
16
|
+
startTime?: Date | string | null;
|
|
17
|
+
/** Exclusive upper bound time. Must be a valid ISO 8601 string or Date object. */
|
|
18
|
+
endTime?: Date | string | null;
|
|
19
|
+
/** Sort field */
|
|
20
|
+
sort?: "start_time" | "latency_ms";
|
|
21
|
+
/** Sort direction */
|
|
22
|
+
order?: "asc" | "desc";
|
|
23
|
+
/** Maximum number of traces to return */
|
|
24
|
+
limit?: number;
|
|
25
|
+
/** Pagination cursor (Trace GlobalID) */
|
|
26
|
+
cursor?: string | null;
|
|
27
|
+
/** If true, include full span details for each trace */
|
|
28
|
+
includeSpans?: boolean;
|
|
29
|
+
/** Filter traces by session identifier(s) (session_id strings or GlobalIDs) */
|
|
30
|
+
sessionId?: string | string[] | null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type GetTracesResponse =
|
|
34
|
+
operations["listProjectTraces"]["responses"]["200"];
|
|
35
|
+
|
|
36
|
+
export type GetTracesResult = {
|
|
37
|
+
traces: GetTracesResponse["content"]["application/json"]["data"];
|
|
38
|
+
nextCursor: GetTracesResponse["content"]["application/json"]["next_cursor"];
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Get traces from a project with filtering and sorting options.
|
|
43
|
+
*
|
|
44
|
+
* This method fetches traces from a project with support for time range filtering,
|
|
45
|
+
* sorting, session filtering, and cursor-based pagination.
|
|
46
|
+
*
|
|
47
|
+
* @requires Phoenix server >= 13.15.0
|
|
48
|
+
*
|
|
49
|
+
* @param params - The parameters to get traces
|
|
50
|
+
* @returns A paginated response containing traces and optional next cursor
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* // Get recent traces from a project
|
|
55
|
+
* const result = await getTraces({
|
|
56
|
+
* client,
|
|
57
|
+
* project: { projectName: "my-project" },
|
|
58
|
+
* limit: 50,
|
|
59
|
+
* });
|
|
60
|
+
*
|
|
61
|
+
* // Get traces in a time range with spans included
|
|
62
|
+
* const result = await getTraces({
|
|
63
|
+
* client,
|
|
64
|
+
* project: { projectName: "my-project" },
|
|
65
|
+
* startTime: new Date("2024-01-01"),
|
|
66
|
+
* endTime: new Date("2024-01-02"),
|
|
67
|
+
* includeSpans: true,
|
|
68
|
+
* });
|
|
69
|
+
*
|
|
70
|
+
* // Paginate through results
|
|
71
|
+
* let cursor: string | undefined;
|
|
72
|
+
* do {
|
|
73
|
+
* const result = await getTraces({
|
|
74
|
+
* client,
|
|
75
|
+
* project: { projectName: "my-project" },
|
|
76
|
+
* cursor,
|
|
77
|
+
* limit: 100,
|
|
78
|
+
* });
|
|
79
|
+
* result.traces.forEach(trace => {
|
|
80
|
+
* console.log(`Trace: ${trace.trace_id}`);
|
|
81
|
+
* });
|
|
82
|
+
* cursor = result.nextCursor || undefined;
|
|
83
|
+
* } while (cursor);
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export async function getTraces({
|
|
87
|
+
client: _client,
|
|
88
|
+
project,
|
|
89
|
+
cursor,
|
|
90
|
+
limit = 100,
|
|
91
|
+
startTime,
|
|
92
|
+
endTime,
|
|
93
|
+
sort,
|
|
94
|
+
order,
|
|
95
|
+
includeSpans,
|
|
96
|
+
sessionId,
|
|
97
|
+
}: GetTracesParams): Promise<GetTracesResult> {
|
|
98
|
+
const client = _client ?? createClient();
|
|
99
|
+
await ensureServerCapability({ client, requirement: LIST_PROJECT_TRACES });
|
|
100
|
+
const projectIdentifier = resolveProjectIdentifier(project);
|
|
101
|
+
|
|
102
|
+
const params: NonNullable<
|
|
103
|
+
operations["listProjectTraces"]["parameters"]["query"]
|
|
104
|
+
> = {
|
|
105
|
+
limit,
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
if (cursor) {
|
|
109
|
+
params.cursor = cursor;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (startTime) {
|
|
113
|
+
params.start_time =
|
|
114
|
+
startTime instanceof Date ? startTime.toISOString() : startTime;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (endTime) {
|
|
118
|
+
params.end_time = endTime instanceof Date ? endTime.toISOString() : endTime;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (sort) {
|
|
122
|
+
params.sort = sort;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (order) {
|
|
126
|
+
params.order = order;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (includeSpans) {
|
|
130
|
+
params.include_spans = true;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (sessionId) {
|
|
134
|
+
params.session_identifier = Array.isArray(sessionId)
|
|
135
|
+
? sessionId
|
|
136
|
+
: [sessionId];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const { data, error } = await client.GET(
|
|
140
|
+
"/v1/projects/{project_identifier}/traces",
|
|
141
|
+
{
|
|
142
|
+
params: {
|
|
143
|
+
path: {
|
|
144
|
+
project_identifier: projectIdentifier,
|
|
145
|
+
},
|
|
146
|
+
query: params,
|
|
147
|
+
},
|
|
148
|
+
}
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
if (error) throw error;
|
|
152
|
+
return {
|
|
153
|
+
traces: data?.data ?? [],
|
|
154
|
+
nextCursor: data?.next_cursor ?? null,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./getTraces";
|