@arizeai/phoenix-client 6.6.1 → 6.7.0
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/dist/esm/__generated__/api/v1.d.ts +4 -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 +8 -0
- package/dist/esm/constants/serverRequirements.js.map +1 -1
- package/dist/esm/spans/getSpans.d.ts +10 -1
- package/dist/esm/spans/getSpans.d.ts.map +1 -1
- package/dist/esm/spans/getSpans.js +40 -2
- package/dist/esm/spans/getSpans.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/src/__generated__/api/v1.d.ts +4 -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 +9 -1
- package/dist/src/constants/serverRequirements.js.map +1 -1
- package/dist/src/spans/getSpans.d.ts +10 -1
- package/dist/src/spans/getSpans.d.ts.map +1 -1
- package/dist/src/spans/getSpans.js +39 -1
- package/dist/src/spans/getSpans.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -2
- package/src/__generated__/api/v1.ts +4 -0
- package/src/constants/serverRequirements.ts +9 -0
- package/src/spans/getSpans.ts +57 -0
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* function that uses it.
|
|
14
14
|
*/
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.ALL_REQUIREMENTS = exports.LIST_PROJECT_TRACES = exports.GET_SPANS_FILTERS = exports.GET_SPANS_TRACE_IDS = exports.ANNOTATE_SESSIONS = exports.LIST_PROJECT_SESSIONS = exports.DELETE_SESSIONS = exports.DELETE_SESSION = exports.GET_SESSION = void 0;
|
|
16
|
+
exports.ALL_REQUIREMENTS = exports.GET_SPANS_BY_ATTRIBUTE = exports.LIST_PROJECT_TRACES = exports.GET_SPANS_FILTERS = exports.GET_SPANS_TRACE_IDS = exports.ANNOTATE_SESSIONS = exports.LIST_PROJECT_SESSIONS = exports.DELETE_SESSIONS = exports.DELETE_SESSION = exports.GET_SESSION = void 0;
|
|
17
17
|
exports.GET_SESSION = {
|
|
18
18
|
kind: "route",
|
|
19
19
|
method: "GET",
|
|
@@ -64,6 +64,13 @@ exports.LIST_PROJECT_TRACES = {
|
|
|
64
64
|
path: "/v1/projects/{project_identifier}/traces",
|
|
65
65
|
minServerVersion: [13, 15, 0],
|
|
66
66
|
};
|
|
67
|
+
exports.GET_SPANS_BY_ATTRIBUTE = {
|
|
68
|
+
kind: "parameter",
|
|
69
|
+
parameterName: "attribute",
|
|
70
|
+
parameterLocation: "query",
|
|
71
|
+
route: "GET /v1/projects/{id}/spans",
|
|
72
|
+
minServerVersion: [14, 9, 0],
|
|
73
|
+
};
|
|
67
74
|
/**
|
|
68
75
|
* Aggregate list of every known capability requirement.
|
|
69
76
|
*
|
|
@@ -78,6 +85,7 @@ exports.ALL_REQUIREMENTS = [
|
|
|
78
85
|
exports.ANNOTATE_SESSIONS,
|
|
79
86
|
exports.GET_SPANS_TRACE_IDS,
|
|
80
87
|
exports.GET_SPANS_FILTERS,
|
|
88
|
+
exports.GET_SPANS_BY_ATTRIBUTE,
|
|
81
89
|
exports.LIST_PROJECT_TRACES,
|
|
82
90
|
];
|
|
83
91
|
//# sourceMappingURL=serverRequirements.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverRequirements.js","sourceRoot":"","sources":["../../../src/constants/serverRequirements.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAQU,QAAA,WAAW,GAAqB;IAC3C,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,2BAA2B;IACjC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEW,QAAA,cAAc,GAAqB;IAC9C,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,2BAA2B;IACjC,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEW,QAAA,eAAe,GAAqB;IAC/C,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,qBAAqB;IAC3B,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEW,QAAA,qBAAqB,GAAqB;IACrD,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,oCAAoC;IAC1C,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEW,QAAA,iBAAiB,GAAqB;IACjD,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,yBAAyB;IAC/B,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEW,QAAA,mBAAmB,GAAyB;IACvD,IAAI,EAAE,WAAW;IACjB,aAAa,EAAE,UAAU;IACzB,iBAAiB,EAAE,OAAO;IAC1B,KAAK,EAAE,6BAA6B;IACpC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEW,QAAA,iBAAiB,GAAyB;IACrD,IAAI,EAAE,WAAW;IACjB,aAAa,EAAE,WAAW;IAC1B,iBAAiB,EAAE,OAAO;IAC1B,KAAK,EAAE,6BAA6B;IACpC,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEW,QAAA,mBAAmB,GAAqB;IACnD,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,0CAA0C;IAChD,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEF;;;;;GAKG;AACU,QAAA,gBAAgB,GAAqC;IAChE,mBAAW;IACX,sBAAc;IACd,uBAAe;IACf,6BAAqB;IACrB,yBAAiB;IACjB,2BAAmB;IACnB,yBAAiB;IACjB,2BAAmB;CACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"serverRequirements.js","sourceRoot":"","sources":["../../../src/constants/serverRequirements.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAQU,QAAA,WAAW,GAAqB;IAC3C,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,2BAA2B;IACjC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEW,QAAA,cAAc,GAAqB;IAC9C,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,2BAA2B;IACjC,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEW,QAAA,eAAe,GAAqB;IAC/C,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,qBAAqB;IAC3B,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEW,QAAA,qBAAqB,GAAqB;IACrD,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,oCAAoC;IAC1C,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEW,QAAA,iBAAiB,GAAqB;IACjD,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,yBAAyB;IAC/B,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEW,QAAA,mBAAmB,GAAyB;IACvD,IAAI,EAAE,WAAW;IACjB,aAAa,EAAE,UAAU;IACzB,iBAAiB,EAAE,OAAO;IAC1B,KAAK,EAAE,6BAA6B;IACpC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEW,QAAA,iBAAiB,GAAyB;IACrD,IAAI,EAAE,WAAW;IACjB,aAAa,EAAE,WAAW;IAC1B,iBAAiB,EAAE,OAAO;IAC1B,KAAK,EAAE,6BAA6B;IACpC,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEW,QAAA,mBAAmB,GAAqB;IACnD,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,0CAA0C;IAChD,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEW,QAAA,sBAAsB,GAAyB;IAC1D,IAAI,EAAE,WAAW;IACjB,aAAa,EAAE,WAAW;IAC1B,iBAAiB,EAAE,OAAO;IAC1B,KAAK,EAAE,6BAA6B;IACpC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;CAC7B,CAAC;AAEF;;;;;GAKG;AACU,QAAA,gBAAgB,GAAqC;IAChE,mBAAW;IACX,sBAAc;IACd,uBAAe;IACf,6BAAqB;IACrB,yBAAiB;IACjB,2BAAmB;IACnB,yBAAiB;IACjB,8BAAsB;IACtB,2BAAmB;CACX,CAAC"}
|
|
@@ -2,6 +2,8 @@ import type { operations } from "../__generated__/api/v1";
|
|
|
2
2
|
import type { ClientFn } from "../types/core";
|
|
3
3
|
import type { ProjectIdentifier } from "../types/projects";
|
|
4
4
|
import type { SpanKindFilter, SpanStatusCode } from "../types/spans";
|
|
5
|
+
export type SpanAttributeValue = string | number | boolean;
|
|
6
|
+
export type SpanAttributes = Record<string, SpanAttributeValue>;
|
|
5
7
|
/**
|
|
6
8
|
* Parameters to get spans from a project using auto-generated types
|
|
7
9
|
*/
|
|
@@ -26,6 +28,12 @@ export interface GetSpansParams extends ClientFn {
|
|
|
26
28
|
spanKind?: SpanKindFilter | SpanKindFilter[] | null;
|
|
27
29
|
/** Filter by status code(s) (OK, ERROR, UNSET) */
|
|
28
30
|
statusCode?: SpanStatusCode | SpanStatusCode[] | null;
|
|
31
|
+
/**
|
|
32
|
+
* Filter by attribute key/value pairs with AND semantics. The value's JS type
|
|
33
|
+
* selects how the stored attribute is matched: `{ "user.id": 12345 }` matches
|
|
34
|
+
* a stored integer, while `{ "user.id": "12345" }` matches a stored string.
|
|
35
|
+
*/
|
|
36
|
+
attributes?: SpanAttributes | null;
|
|
29
37
|
}
|
|
30
38
|
export type GetSpansResponse = operations["getSpans"]["responses"]["200"];
|
|
31
39
|
export type GetSpansResult = {
|
|
@@ -46,6 +54,7 @@ export type GetSpansResult = {
|
|
|
46
54
|
* @returns A paginated response containing spans and optional next cursor
|
|
47
55
|
*
|
|
48
56
|
* @requires Phoenix server >= 13.9.0 when filtering by `traceIds`
|
|
57
|
+
* @requires Phoenix server >= 14.9.0 when filtering by `attributes`
|
|
49
58
|
*
|
|
50
59
|
* @example
|
|
51
60
|
* ```ts
|
|
@@ -93,5 +102,5 @@ export type GetSpansResult = {
|
|
|
93
102
|
* } while (cursor);
|
|
94
103
|
* ```
|
|
95
104
|
*/
|
|
96
|
-
export declare function getSpans({ client: _client, project, cursor, limit, startTime, endTime, traceIds, parentId, name, spanKind, statusCode, }: GetSpansParams): Promise<GetSpansResult>;
|
|
105
|
+
export declare function getSpans({ client: _client, project, cursor, limit, startTime, endTime, traceIds, parentId, name, spanKind, statusCode, attributes, }: GetSpansParams): Promise<GetSpansResult>;
|
|
97
106
|
//# sourceMappingURL=getSpans.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSpans.d.ts","sourceRoot":"","sources":["../../../src/spans/getSpans.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"getSpans.d.ts","sourceRoot":"","sources":["../../../src/spans/getSpans.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAO1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AA+BhE;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,oCAAoC;IACpC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,kFAAkF;IAClF,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IACjC,kFAAkF;IAClF,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3B,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC;IACpD,kDAAkD;IAClD,UAAU,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC;IACtD;;;;OAIG;IACH,UAAU,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;AAE1E,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/D,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,CAAC;CAC5E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAsB,QAAQ,CAAC,EAC7B,MAAM,EAAE,OAAO,EACf,OAAO,EACP,MAAM,EACN,KAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,UAAU,GACX,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAgF1C"}
|
|
@@ -5,6 +5,30 @@ const client_1 = require("../client");
|
|
|
5
5
|
const serverRequirements_1 = require("../constants/serverRequirements");
|
|
6
6
|
const projects_1 = require("../types/projects");
|
|
7
7
|
const serverVersionUtils_1 = require("../utils/serverVersionUtils");
|
|
8
|
+
function serializeAttributeValue(value) {
|
|
9
|
+
if (typeof value === "boolean") {
|
|
10
|
+
return JSON.stringify(value);
|
|
11
|
+
}
|
|
12
|
+
if (typeof value === "number") {
|
|
13
|
+
if (!Number.isFinite(value)) {
|
|
14
|
+
throw new RangeError(`Non-finite attribute filter values are not supported: ${value}`);
|
|
15
|
+
}
|
|
16
|
+
return String(value);
|
|
17
|
+
}
|
|
18
|
+
if (value === "") {
|
|
19
|
+
return JSON.stringify(value);
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const parsed = JSON.parse(value);
|
|
23
|
+
return typeof parsed === "string" ? value : JSON.stringify(value);
|
|
24
|
+
}
|
|
25
|
+
catch (_a) {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function serializeAttributes(attributes) {
|
|
30
|
+
return Object.entries(attributes).map(([key, value]) => `${key}:${serializeAttributeValue(value)}`);
|
|
31
|
+
}
|
|
8
32
|
/**
|
|
9
33
|
* Get spans from a project with filtering criteria.
|
|
10
34
|
*
|
|
@@ -19,6 +43,7 @@ const serverVersionUtils_1 = require("../utils/serverVersionUtils");
|
|
|
19
43
|
* @returns A paginated response containing spans and optional next cursor
|
|
20
44
|
*
|
|
21
45
|
* @requires Phoenix server >= 13.9.0 when filtering by `traceIds`
|
|
46
|
+
* @requires Phoenix server >= 14.9.0 when filtering by `attributes`
|
|
22
47
|
*
|
|
23
48
|
* @example
|
|
24
49
|
* ```ts
|
|
@@ -66,15 +91,25 @@ const serverVersionUtils_1 = require("../utils/serverVersionUtils");
|
|
|
66
91
|
* } while (cursor);
|
|
67
92
|
* ```
|
|
68
93
|
*/
|
|
69
|
-
async function getSpans({ client: _client, project, cursor, limit = 100, startTime, endTime, traceIds, parentId, name, spanKind, statusCode, }) {
|
|
94
|
+
async function getSpans({ client: _client, project, cursor, limit = 100, startTime, endTime, traceIds, parentId, name, spanKind, statusCode, attributes, }) {
|
|
70
95
|
var _a, _b;
|
|
71
96
|
const client = _client !== null && _client !== void 0 ? _client : (0, client_1.createClient)();
|
|
97
|
+
const serializedAttributes = attributes != null ? serializeAttributes(attributes) : undefined;
|
|
98
|
+
const attributeFilters = serializedAttributes != null && serializedAttributes.length > 0
|
|
99
|
+
? serializedAttributes
|
|
100
|
+
: undefined;
|
|
72
101
|
if (traceIds) {
|
|
73
102
|
await (0, serverVersionUtils_1.ensureServerCapability)({ client, requirement: serverRequirements_1.GET_SPANS_TRACE_IDS });
|
|
74
103
|
}
|
|
75
104
|
if (name != null || spanKind != null || statusCode != null) {
|
|
76
105
|
await (0, serverVersionUtils_1.ensureServerCapability)({ client, requirement: serverRequirements_1.GET_SPANS_FILTERS });
|
|
77
106
|
}
|
|
107
|
+
if (attributeFilters != null) {
|
|
108
|
+
await (0, serverVersionUtils_1.ensureServerCapability)({
|
|
109
|
+
client,
|
|
110
|
+
requirement: serverRequirements_1.GET_SPANS_BY_ATTRIBUTE,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
78
113
|
const projectIdentifier = (0, projects_1.resolveProjectIdentifier)(project);
|
|
79
114
|
const params = {
|
|
80
115
|
limit,
|
|
@@ -104,6 +139,9 @@ async function getSpans({ client: _client, project, cursor, limit = 100, startTi
|
|
|
104
139
|
if (statusCode) {
|
|
105
140
|
params.status_code = Array.isArray(statusCode) ? statusCode : [statusCode];
|
|
106
141
|
}
|
|
142
|
+
if (attributeFilters != null) {
|
|
143
|
+
params.attribute = attributeFilters;
|
|
144
|
+
}
|
|
107
145
|
const { data, error } = await client.GET("/v1/projects/{project_identifier}/spans", {
|
|
108
146
|
params: {
|
|
109
147
|
path: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSpans.js","sourceRoot":"","sources":["../../../src/spans/getSpans.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"getSpans.js","sourceRoot":"","sources":["../../../src/spans/getSpans.ts"],"names":[],"mappings":"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"}
|