@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.
Files changed (40) hide show
  1. package/README.md +194 -0
  2. package/dist/esm/__generated__/api/v1.d.ts +71 -0
  3. package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
  4. package/dist/esm/constants/serverRequirements.d.ts +1 -0
  5. package/dist/esm/constants/serverRequirements.d.ts.map +1 -1
  6. package/dist/esm/constants/serverRequirements.js +7 -0
  7. package/dist/esm/constants/serverRequirements.js.map +1 -1
  8. package/dist/esm/traces/getTraces.d.ts +78 -0
  9. package/dist/esm/traces/getTraces.d.ts.map +1 -0
  10. package/dist/esm/traces/getTraces.js +96 -0
  11. package/dist/esm/traces/getTraces.js.map +1 -0
  12. package/dist/esm/traces/index.d.ts +2 -0
  13. package/dist/esm/traces/index.d.ts.map +1 -0
  14. package/dist/esm/traces/index.js +2 -0
  15. package/dist/esm/traces/index.js.map +1 -0
  16. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  17. package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -1
  18. package/dist/esm/utils/getPromptBySelector.d.ts.map +1 -1
  19. package/dist/src/__generated__/api/v1.d.ts +71 -0
  20. package/dist/src/__generated__/api/v1.d.ts.map +1 -1
  21. package/dist/src/constants/serverRequirements.d.ts +1 -0
  22. package/dist/src/constants/serverRequirements.d.ts.map +1 -1
  23. package/dist/src/constants/serverRequirements.js +8 -1
  24. package/dist/src/constants/serverRequirements.js.map +1 -1
  25. package/dist/src/traces/getTraces.d.ts +78 -0
  26. package/dist/src/traces/getTraces.d.ts.map +1 -0
  27. package/dist/src/traces/getTraces.js +100 -0
  28. package/dist/src/traces/getTraces.js.map +1 -0
  29. package/dist/src/traces/index.d.ts +2 -0
  30. package/dist/src/traces/index.d.ts.map +1 -0
  31. package/dist/src/traces/index.js +18 -0
  32. package/dist/src/traces/index.js.map +1 -0
  33. package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
  34. package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +7 -3
  37. package/src/__generated__/api/v1.ts +71 -0
  38. package/src/constants/serverRequirements.ts +8 -0
  39. package/src/traces/getTraces.ts +156 -0
  40. 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.1",
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-config": "0.1.1",
75
- "@arizeai/phoenix-otel": "0.4.2"
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";