@arizeai/phoenix-client 7.7.0 → 7.8.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/CHANGELOG.md +12 -0
- package/dist/esm/__generated__/api/v1.d.ts +127 -6
- package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
- package/dist/esm/experiments/resumeEvaluation.d.ts +0 -60
- package/dist/esm/experiments/resumeEvaluation.d.ts.map +1 -1
- package/dist/esm/experiments/resumeEvaluation.js +44 -37
- package/dist/esm/experiments/resumeEvaluation.js.map +1 -1
- package/dist/esm/experiments/resumeExperiment.d.ts +0 -52
- package/dist/esm/experiments/resumeExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/resumeExperiment.js +42 -35
- package/dist/esm/experiments/resumeExperiment.js.map +1 -1
- package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/runExperiment.js +152 -123
- package/dist/esm/experiments/runExperiment.js.map +1 -1
- package/dist/esm/prompts/constants.d.ts.map +1 -1
- package/dist/esm/prompts/constants.js +1 -0
- package/dist/esm/prompts/constants.js.map +1 -1
- package/dist/esm/prompts/sdks/toOpenAI.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toOpenAI.js +51 -58
- package/dist/esm/prompts/sdks/toOpenAI.js.map +1 -1
- package/dist/esm/sessions/sessionUtils.d.ts.map +1 -1
- package/dist/esm/sessions/sessionUtils.js +3 -0
- package/dist/esm/sessions/sessionUtils.js.map +1 -1
- package/dist/esm/spans/getSpans.d.ts +0 -70
- package/dist/esm/spans/getSpans.d.ts.map +1 -1
- package/dist/esm/spans/getSpans.js +42 -93
- package/dist/esm/spans/getSpans.js.map +1 -1
- package/dist/esm/testing/phoenix-test-tracking.d.ts.map +1 -1
- package/dist/esm/testing/phoenix-test-tracking.js +109 -78
- package/dist/esm/testing/phoenix-test-tracking.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types/prompts.d.ts +1 -1
- package/dist/esm/types/prompts.d.ts.map +1 -1
- package/dist/esm/types/prompts.js.map +1 -1
- package/dist/esm/types/sessions.d.ts +6 -0
- package/dist/esm/types/sessions.d.ts.map +1 -1
- package/dist/esm/utils/getPromptBySelector.d.ts +1 -1
- package/dist/src/__generated__/api/v1.d.ts +127 -6
- package/dist/src/__generated__/api/v1.d.ts.map +1 -1
- package/dist/src/experiments/resumeEvaluation.d.ts +0 -60
- package/dist/src/experiments/resumeEvaluation.d.ts.map +1 -1
- package/dist/src/experiments/resumeEvaluation.js +44 -37
- package/dist/src/experiments/resumeEvaluation.js.map +1 -1
- package/dist/src/experiments/resumeExperiment.d.ts +0 -52
- package/dist/src/experiments/resumeExperiment.d.ts.map +1 -1
- package/dist/src/experiments/resumeExperiment.js +42 -35
- package/dist/src/experiments/resumeExperiment.js.map +1 -1
- package/dist/src/experiments/runExperiment.d.ts.map +1 -1
- package/dist/src/experiments/runExperiment.js +148 -116
- package/dist/src/experiments/runExperiment.js.map +1 -1
- package/dist/src/prompts/constants.d.ts.map +1 -1
- package/dist/src/prompts/constants.js +1 -0
- package/dist/src/prompts/constants.js.map +1 -1
- package/dist/src/prompts/sdks/toOpenAI.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toOpenAI.js +58 -63
- package/dist/src/prompts/sdks/toOpenAI.js.map +1 -1
- package/dist/src/sessions/sessionUtils.d.ts.map +1 -1
- package/dist/src/sessions/sessionUtils.js +3 -0
- package/dist/src/sessions/sessionUtils.js.map +1 -1
- package/dist/src/spans/getSpans.d.ts +0 -70
- package/dist/src/spans/getSpans.d.ts.map +1 -1
- package/dist/src/spans/getSpans.js +43 -94
- package/dist/src/spans/getSpans.js.map +1 -1
- package/dist/src/testing/phoenix-test-tracking.d.ts.map +1 -1
- package/dist/src/testing/phoenix-test-tracking.js +117 -84
- package/dist/src/testing/phoenix-test-tracking.js.map +1 -1
- package/dist/src/types/prompts.d.ts +1 -1
- package/dist/src/types/prompts.d.ts.map +1 -1
- package/dist/src/types/prompts.js.map +1 -1
- package/dist/src/types/sessions.d.ts +6 -0
- package/dist/src/types/sessions.d.ts.map +1 -1
- package/dist/src/utils/getPromptBySelector.d.ts +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/sessions.mdx +10 -1
- package/package.json +1 -1
- package/src/__generated__/api/v1.ts +127 -6
- package/src/experiments/resumeEvaluation.ts +78 -48
- package/src/experiments/resumeExperiment.ts +73 -46
- package/src/experiments/runExperiment.ts +235 -129
- package/src/prompts/constants.ts +1 -0
- package/src/prompts/sdks/toOpenAI.ts +60 -61
- package/src/sessions/sessionUtils.ts +3 -0
- package/src/spans/getSpans.ts +84 -48
- package/src/testing/phoenix-test-tracking.ts +154 -90
- package/src/types/prompts.ts +2 -1
- package/src/types/sessions.ts +6 -0
|
@@ -42,75 +42,5 @@ export type GetSpansResult = {
|
|
|
42
42
|
spans: GetSpansResponse["content"]["application/json"]["data"];
|
|
43
43
|
nextCursor: GetSpansResponse["content"]["application/json"]["next_cursor"];
|
|
44
44
|
};
|
|
45
|
-
/**
|
|
46
|
-
* Get spans from a project with filtering criteria.
|
|
47
|
-
*
|
|
48
|
-
* This method allows you to search for spans within a project using various filters
|
|
49
|
-
* such as time range and supports cursor-based pagination.
|
|
50
|
-
* The spans are returned in Phoenix's standard format with human-readable timestamps
|
|
51
|
-
* and simplified attribute structures.
|
|
52
|
-
*
|
|
53
|
-
* @experimental this function is experimental and may change in the future
|
|
54
|
-
*
|
|
55
|
-
* @param params - The parameters to search for spans
|
|
56
|
-
* @returns A paginated response containing spans and optional next cursor
|
|
57
|
-
*
|
|
58
|
-
* @requires Phoenix server >= 13.9.0 when filtering by `traceIds`
|
|
59
|
-
* @requires Phoenix server >= 19.6.0 when filtering by `spanIds`
|
|
60
|
-
* @requires Phoenix server >= 14.9.0 when filtering by `attributes`
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```ts
|
|
64
|
-
* // Get recent spans from a project
|
|
65
|
-
* const result = await getSpans({
|
|
66
|
-
* client,
|
|
67
|
-
* project: { projectName: "my-project" },
|
|
68
|
-
* limit: 50
|
|
69
|
-
* });
|
|
70
|
-
*
|
|
71
|
-
* // Get spans in a time range
|
|
72
|
-
|
|
73
|
-
* const result = await getSpans({
|
|
74
|
-
* client,
|
|
75
|
-
* project: { projectName: "my-project" },
|
|
76
|
-
* startTime: new Date("2024-01-01"),
|
|
77
|
-
* endTime: new Date("2024-01-02"),
|
|
78
|
-
* limit: 100
|
|
79
|
-
* });
|
|
80
|
-
|
|
81
|
-
*
|
|
82
|
-
* // Get all spans for specific traces (requires Phoenix server >= 13.9.0)
|
|
83
|
-
* const result = await getSpans({
|
|
84
|
-
* client,
|
|
85
|
-
* project: { projectName: "my-project" },
|
|
86
|
-
* traceIds: ["trace-abc-123", "trace-def-456"],
|
|
87
|
-
* });
|
|
88
|
-
*
|
|
89
|
-
* // Get specific spans by span ID (requires Phoenix server >= 19.6.0)
|
|
90
|
-
* const result = await getSpans({
|
|
91
|
-
* client,
|
|
92
|
-
* project: { projectName: "my-project" },
|
|
93
|
-
* spanIds: ["span-abc-123", "span-def-456"],
|
|
94
|
-
* });
|
|
95
|
-
*
|
|
96
|
-
* // Paginate through results
|
|
97
|
-
* let cursor: string | undefined;
|
|
98
|
-
* do {
|
|
99
|
-
* const result = await getSpans({
|
|
100
|
-
* client,
|
|
101
|
-
* project: { projectName: "my-project" },
|
|
102
|
-
* cursor,
|
|
103
|
-
* limit: 100
|
|
104
|
-
* });
|
|
105
|
-
*
|
|
106
|
-
* // Process spans
|
|
107
|
-
* result.spans.forEach(span => {
|
|
108
|
-
* console.log(`Span: ${span.name}, Trace: ${span.context.trace_id}`);
|
|
109
|
-
* });
|
|
110
|
-
*
|
|
111
|
-
* cursor = result.nextCursor || undefined;
|
|
112
|
-
* } while (cursor);
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
45
|
export declare function getSpans({ client: _client, project, cursor, limit, startTime, endTime, traceIds, spanIds, parentId, name, spanKind, statusCode, attributes, }: GetSpansParams): Promise<GetSpansResult>;
|
|
116
46
|
//# 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;AAQ1D,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,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,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;
|
|
1
|
+
{"version":3,"file":"getSpans.d.ts","sourceRoot":"","sources":["../../../src/spans/getSpans.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAQ1D,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,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,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;AAkJF,wBAAsB,QAAQ,CAAC,EAC7B,MAAM,EAAE,OAAO,EACf,OAAO,EACP,MAAM,EACN,KAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,UAAU,GACX,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAiD1C"}
|
|
@@ -29,83 +29,7 @@ function serializeAttributeValue(value) {
|
|
|
29
29
|
function serializeAttributes(attributes) {
|
|
30
30
|
return Object.entries(attributes).map(([key, value]) => `${key}:${serializeAttributeValue(value)}`);
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
* Get spans from a project with filtering criteria.
|
|
34
|
-
*
|
|
35
|
-
* This method allows you to search for spans within a project using various filters
|
|
36
|
-
* such as time range and supports cursor-based pagination.
|
|
37
|
-
* The spans are returned in Phoenix's standard format with human-readable timestamps
|
|
38
|
-
* and simplified attribute structures.
|
|
39
|
-
*
|
|
40
|
-
* @experimental this function is experimental and may change in the future
|
|
41
|
-
*
|
|
42
|
-
* @param params - The parameters to search for spans
|
|
43
|
-
* @returns A paginated response containing spans and optional next cursor
|
|
44
|
-
*
|
|
45
|
-
* @requires Phoenix server >= 13.9.0 when filtering by `traceIds`
|
|
46
|
-
* @requires Phoenix server >= 19.6.0 when filtering by `spanIds`
|
|
47
|
-
* @requires Phoenix server >= 14.9.0 when filtering by `attributes`
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* ```ts
|
|
51
|
-
* // Get recent spans from a project
|
|
52
|
-
* const result = await getSpans({
|
|
53
|
-
* client,
|
|
54
|
-
* project: { projectName: "my-project" },
|
|
55
|
-
* limit: 50
|
|
56
|
-
* });
|
|
57
|
-
*
|
|
58
|
-
* // Get spans in a time range
|
|
59
|
-
|
|
60
|
-
* const result = await getSpans({
|
|
61
|
-
* client,
|
|
62
|
-
* project: { projectName: "my-project" },
|
|
63
|
-
* startTime: new Date("2024-01-01"),
|
|
64
|
-
* endTime: new Date("2024-01-02"),
|
|
65
|
-
* limit: 100
|
|
66
|
-
* });
|
|
67
|
-
|
|
68
|
-
*
|
|
69
|
-
* // Get all spans for specific traces (requires Phoenix server >= 13.9.0)
|
|
70
|
-
* const result = await getSpans({
|
|
71
|
-
* client,
|
|
72
|
-
* project: { projectName: "my-project" },
|
|
73
|
-
* traceIds: ["trace-abc-123", "trace-def-456"],
|
|
74
|
-
* });
|
|
75
|
-
*
|
|
76
|
-
* // Get specific spans by span ID (requires Phoenix server >= 19.6.0)
|
|
77
|
-
* const result = await getSpans({
|
|
78
|
-
* client,
|
|
79
|
-
* project: { projectName: "my-project" },
|
|
80
|
-
* spanIds: ["span-abc-123", "span-def-456"],
|
|
81
|
-
* });
|
|
82
|
-
*
|
|
83
|
-
* // Paginate through results
|
|
84
|
-
* let cursor: string | undefined;
|
|
85
|
-
* do {
|
|
86
|
-
* const result = await getSpans({
|
|
87
|
-
* client,
|
|
88
|
-
* project: { projectName: "my-project" },
|
|
89
|
-
* cursor,
|
|
90
|
-
* limit: 100
|
|
91
|
-
* });
|
|
92
|
-
*
|
|
93
|
-
* // Process spans
|
|
94
|
-
* result.spans.forEach(span => {
|
|
95
|
-
* console.log(`Span: ${span.name}, Trace: ${span.context.trace_id}`);
|
|
96
|
-
* });
|
|
97
|
-
*
|
|
98
|
-
* cursor = result.nextCursor || undefined;
|
|
99
|
-
* } while (cursor);
|
|
100
|
-
* ```
|
|
101
|
-
*/
|
|
102
|
-
async function getSpans({ client: _client, project, cursor, limit = 100, startTime, endTime, traceIds, spanIds, parentId, name, spanKind, statusCode, attributes, }) {
|
|
103
|
-
var _a, _b;
|
|
104
|
-
const client = _client !== null && _client !== void 0 ? _client : (0, client_1.createClient)();
|
|
105
|
-
const serializedAttributes = attributes != null ? serializeAttributes(attributes) : undefined;
|
|
106
|
-
const attributeFilters = serializedAttributes != null && serializedAttributes.length > 0
|
|
107
|
-
? serializedAttributes
|
|
108
|
-
: undefined;
|
|
32
|
+
async function ensureSpanFilterCapabilities({ client, traceIds, spanIds, name, spanKind, statusCode, attributeFilters, }) {
|
|
109
33
|
if (traceIds) {
|
|
110
34
|
await (0, serverVersionUtils_1.ensureServerCapability)({ client, requirement: serverRequirements_1.GET_SPANS_TRACE_IDS });
|
|
111
35
|
}
|
|
@@ -115,19 +39,17 @@ async function getSpans({ client: _client, project, cursor, limit = 100, startTi
|
|
|
115
39
|
if (name != null || spanKind != null || statusCode != null) {
|
|
116
40
|
await (0, serverVersionUtils_1.ensureServerCapability)({ client, requirement: serverRequirements_1.GET_SPANS_FILTERS });
|
|
117
41
|
}
|
|
118
|
-
if (attributeFilters
|
|
42
|
+
if (attributeFilters) {
|
|
119
43
|
await (0, serverVersionUtils_1.ensureServerCapability)({
|
|
120
44
|
client,
|
|
121
45
|
requirement: serverRequirements_1.GET_SPANS_BY_ATTRIBUTE,
|
|
122
46
|
});
|
|
123
47
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (cursor) {
|
|
48
|
+
}
|
|
49
|
+
function buildSpansQuery({ cursor, limit, startTime, endTime, traceIds, spanIds, parentId, name, spanKind, statusCode, attributeFilters, }) {
|
|
50
|
+
const params = { limit };
|
|
51
|
+
if (cursor)
|
|
129
52
|
params.cursor = cursor;
|
|
130
|
-
}
|
|
131
53
|
if (startTime) {
|
|
132
54
|
params.start_time =
|
|
133
55
|
startTime instanceof Date ? startTime.toISOString() : startTime;
|
|
@@ -135,27 +57,54 @@ async function getSpans({ client: _client, project, cursor, limit = 100, startTi
|
|
|
135
57
|
if (endTime) {
|
|
136
58
|
params.end_time = endTime instanceof Date ? endTime.toISOString() : endTime;
|
|
137
59
|
}
|
|
138
|
-
if (traceIds)
|
|
60
|
+
if (traceIds)
|
|
139
61
|
params.trace_id = traceIds;
|
|
140
|
-
|
|
141
|
-
if (spanIds) {
|
|
62
|
+
if (spanIds)
|
|
142
63
|
params.span_id = spanIds;
|
|
143
|
-
}
|
|
144
64
|
if (parentId !== undefined) {
|
|
145
65
|
params.parent_id = parentId === null ? "null" : parentId;
|
|
146
66
|
}
|
|
147
|
-
if (name)
|
|
67
|
+
if (name)
|
|
148
68
|
params.name = Array.isArray(name) ? name : [name];
|
|
149
|
-
|
|
150
|
-
if (spanKind) {
|
|
69
|
+
if (spanKind)
|
|
151
70
|
params.span_kind = Array.isArray(spanKind) ? spanKind : [spanKind];
|
|
152
|
-
}
|
|
153
71
|
if (statusCode) {
|
|
154
72
|
params.status_code = Array.isArray(statusCode) ? statusCode : [statusCode];
|
|
155
73
|
}
|
|
156
|
-
if (attributeFilters
|
|
74
|
+
if (attributeFilters)
|
|
157
75
|
params.attribute = attributeFilters;
|
|
158
|
-
|
|
76
|
+
return params;
|
|
77
|
+
}
|
|
78
|
+
async function getSpans({ client: _client, project, cursor, limit = 100, startTime, endTime, traceIds, spanIds, parentId, name, spanKind, statusCode, attributes, }) {
|
|
79
|
+
var _a, _b;
|
|
80
|
+
const client = _client !== null && _client !== void 0 ? _client : (0, client_1.createClient)();
|
|
81
|
+
const serializedAttributes = attributes != null ? serializeAttributes(attributes) : undefined;
|
|
82
|
+
const attributeFilters = serializedAttributes != null && serializedAttributes.length > 0
|
|
83
|
+
? serializedAttributes
|
|
84
|
+
: undefined;
|
|
85
|
+
await ensureSpanFilterCapabilities({
|
|
86
|
+
client,
|
|
87
|
+
traceIds,
|
|
88
|
+
spanIds,
|
|
89
|
+
name,
|
|
90
|
+
spanKind,
|
|
91
|
+
statusCode,
|
|
92
|
+
attributeFilters,
|
|
93
|
+
});
|
|
94
|
+
const projectIdentifier = (0, projects_1.resolveProjectIdentifier)(project);
|
|
95
|
+
const params = buildSpansQuery({
|
|
96
|
+
cursor,
|
|
97
|
+
limit,
|
|
98
|
+
startTime,
|
|
99
|
+
endTime,
|
|
100
|
+
traceIds,
|
|
101
|
+
spanIds,
|
|
102
|
+
parentId,
|
|
103
|
+
name,
|
|
104
|
+
spanKind,
|
|
105
|
+
statusCode,
|
|
106
|
+
attributeFilters,
|
|
107
|
+
});
|
|
159
108
|
const { data, error } = await client.GET("/v1/projects/{project_identifier}/spans", {
|
|
160
109
|
params: {
|
|
161
110
|
path: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSpans.js","sourceRoot":"","sources":["../../../src/spans/getSpans.ts"],"names":[],"mappings":";;;AACA,sCAAyC;AACzC,wEAKyC;AAGzC,gDAA6D;AAE7D,oEAAqE;AAKrE,SAAS,uBAAuB,CAAC,KAAyB;IACxD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAClB,yDAAyD,KAAK,EAAE,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;eAAO,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,UAA0B;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CACnC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAC7D,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"getSpans.js","sourceRoot":"","sources":["../../../src/spans/getSpans.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phoenix-test-tracking.d.ts","sourceRoot":"","sources":["../../../src/testing/phoenix-test-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gCAAgC,EAErC,KAAK,kBAAkB,EAQxB,MAAM,uBAAuB,CAAC;AAgB/B,OAAO,EAAc,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEjD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAW9D;AAqBD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CASA;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,UAAU,GAChB,MAAM,CAaR;
|
|
1
|
+
{"version":3,"file":"phoenix-test-tracking.d.ts","sourceRoot":"","sources":["../../../src/testing/phoenix-test-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gCAAgC,EAErC,KAAK,kBAAkB,EAQxB,MAAM,uBAAuB,CAAC;AAgB/B,OAAO,EAAc,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEjD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAW9D;AAqBD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CASA;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,UAAU,GAChB,MAAM,CAaR;AA8RD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCtE;AAeD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAC7C,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GACxB,OAAO,CACN;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAC1D,CAiCA;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAErD;AAsDD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,QAAQ,GACZ,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAyC7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED,2DAA2D;AAC3D,wBAAsB,uBAAuB,CAC3C,eAAe,SAAS,KAAK,EAC7B,eAAe,EAEf,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,GAC1E,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAiC9D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpE;AAgBD,uDAAuD;AACvD,YAAY,EAAE,gCAAgC,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -174,28 +174,16 @@ function buildLinks(client, datasetId, experimentId) {
|
|
|
174
174
|
},
|
|
175
175
|
];
|
|
176
176
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
* this populates a no-op tracer and exits without making any network calls.
|
|
183
|
-
*/
|
|
184
|
-
async function initializeSuite(suite) {
|
|
185
|
-
var _a;
|
|
186
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
187
|
-
const tracking = isTrackingEnabled(suite);
|
|
188
|
-
if (!tracking.enabled) {
|
|
189
|
-
suite.trackingDisabled = true;
|
|
190
|
-
suite.trackingDisabledReason = tracking.reason;
|
|
191
|
-
suite.tracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
192
|
-
suite.evaluatorTracer = suite.tracer;
|
|
193
|
-
return;
|
|
177
|
+
function disableSuiteTracking({ suite, error, }) {
|
|
178
|
+
suite.trackingDisabled = true;
|
|
179
|
+
if (error !== undefined) {
|
|
180
|
+
suite.setupError =
|
|
181
|
+
error instanceof Error ? error : new Error(String(error));
|
|
194
182
|
}
|
|
195
|
-
|
|
196
|
-
suite.
|
|
197
|
-
|
|
198
|
-
|
|
183
|
+
suite.tracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
184
|
+
suite.evaluatorTracer = suite.tracer;
|
|
185
|
+
}
|
|
186
|
+
async function createSuiteDataset({ suite, client, datasetName, description, }) {
|
|
199
187
|
const examples = Array.from(suite.registeredExamples.values()).map((registered) => { var _a, _b, _c; return ({
|
|
200
188
|
id: (_a = registered.params.id) !== null && _a !== void 0 ? _a : null,
|
|
201
189
|
input: registered.params.input,
|
|
@@ -203,7 +191,6 @@ async function initializeSuite(suite) {
|
|
|
203
191
|
metadata: (_c = registered.params.metadata) !== null && _c !== void 0 ? _c : {},
|
|
204
192
|
splits: registered.params.splits,
|
|
205
193
|
}); });
|
|
206
|
-
let datasetId;
|
|
207
194
|
try {
|
|
208
195
|
const created = await (0, datasets_1.createDataset)({
|
|
209
196
|
client,
|
|
@@ -211,101 +198,108 @@ async function initializeSuite(suite) {
|
|
|
211
198
|
description,
|
|
212
199
|
examples,
|
|
213
200
|
});
|
|
214
|
-
|
|
201
|
+
return created.datasetId;
|
|
215
202
|
}
|
|
216
|
-
catch (
|
|
217
|
-
suite
|
|
218
|
-
|
|
219
|
-
suite.tracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
220
|
-
suite.evaluatorTracer = suite.tracer;
|
|
221
|
-
return;
|
|
203
|
+
catch (error) {
|
|
204
|
+
disableSuiteTracking({ suite, error });
|
|
205
|
+
return null;
|
|
222
206
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
// `JSON.stringify(input)` deep-equality with FIFO-on-collision.
|
|
207
|
+
}
|
|
208
|
+
async function resolveSuiteExampleIds({ suite, client, datasetId, }) {
|
|
209
|
+
var _a;
|
|
210
|
+
var _b, _c;
|
|
228
211
|
try {
|
|
229
212
|
const { data: response } = await client.GET("/v1/datasets/{id}/examples", {
|
|
230
213
|
params: { path: { id: datasetId } },
|
|
231
214
|
});
|
|
232
|
-
const fetched = (
|
|
215
|
+
const fetched = (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.examples) !== null && _b !== void 0 ? _b : [];
|
|
233
216
|
const idToTestName = new Map();
|
|
234
217
|
const inputKeyToTestNames = new Map();
|
|
235
218
|
for (const [testName, registered] of suite.registeredExamples.entries()) {
|
|
236
219
|
if (registered.params.id) {
|
|
237
220
|
idToTestName.set(registered.params.id, testName);
|
|
238
|
-
continue;
|
|
239
221
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
222
|
+
else {
|
|
223
|
+
const key = stableKey(registered.params.input);
|
|
224
|
+
inputKeyToTestNames.set(key, [
|
|
225
|
+
...((_c = inputKeyToTestNames.get(key)) !== null && _c !== void 0 ? _c : []),
|
|
226
|
+
testName,
|
|
227
|
+
]);
|
|
228
|
+
}
|
|
244
229
|
}
|
|
245
|
-
for (const
|
|
246
|
-
const
|
|
247
|
-
if (
|
|
248
|
-
suite.exampleIdsByTest.set(
|
|
249
|
-
exampleId:
|
|
250
|
-
nodeId:
|
|
230
|
+
for (const example of fetched) {
|
|
231
|
+
const testName = idToTestName.get(example.id);
|
|
232
|
+
if (testName) {
|
|
233
|
+
suite.exampleIdsByTest.set(testName, {
|
|
234
|
+
exampleId: example.id,
|
|
235
|
+
nodeId: example.node_id,
|
|
251
236
|
});
|
|
252
|
-
idToTestName.delete(
|
|
237
|
+
idToTestName.delete(example.id);
|
|
253
238
|
continue;
|
|
254
239
|
}
|
|
255
|
-
const queue = inputKeyToTestNames.get(stableKey(
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
suite.exampleIdsByTest.set(
|
|
259
|
-
exampleId:
|
|
260
|
-
nodeId:
|
|
240
|
+
const queue = inputKeyToTestNames.get(stableKey(example.input));
|
|
241
|
+
const matchedTestName = queue === null || queue === void 0 ? void 0 : queue.shift();
|
|
242
|
+
if (matchedTestName) {
|
|
243
|
+
suite.exampleIdsByTest.set(matchedTestName, {
|
|
244
|
+
exampleId: example.id,
|
|
245
|
+
nodeId: example.node_id,
|
|
261
246
|
});
|
|
262
247
|
}
|
|
263
248
|
}
|
|
264
249
|
}
|
|
265
|
-
catch (
|
|
266
|
-
//
|
|
250
|
+
catch (_d) {
|
|
251
|
+
// Runs can still be logged without resolved example IDs.
|
|
267
252
|
}
|
|
253
|
+
}
|
|
254
|
+
async function createSuiteExperiment({ suite, client, datasetId, datasetName, description, }) {
|
|
255
|
+
var _a, _b, _c, _d;
|
|
268
256
|
const projectName = `${datasetName}-${new Date().toISOString()}`;
|
|
269
257
|
suite.projectName = projectName;
|
|
270
258
|
try {
|
|
271
|
-
const
|
|
259
|
+
const response = await client
|
|
272
260
|
.POST("/v1/datasets/{dataset_id}/experiments", {
|
|
273
261
|
params: { path: { dataset_id: datasetId } },
|
|
274
262
|
body: {
|
|
275
|
-
name: (
|
|
263
|
+
name: (_a = suite.config.datasetName) !== null && _a !== void 0 ? _a : suite.name,
|
|
276
264
|
description,
|
|
277
|
-
metadata: Object.assign(Object.assign({}, ((
|
|
265
|
+
metadata: Object.assign(Object.assign({}, ((_b = suite.config.metadata) !== null && _b !== void 0 ? _b : {})), envMetadata()),
|
|
278
266
|
project_name: projectName,
|
|
279
|
-
repetitions: Math.max(1, (
|
|
267
|
+
repetitions: Math.max(1, (_c = suite.maxRepetitions) !== null && _c !== void 0 ? _c : 1),
|
|
280
268
|
},
|
|
281
269
|
})
|
|
282
|
-
.then((
|
|
283
|
-
if (!
|
|
270
|
+
.then((result) => { var _a; return (_a = result.data) === null || _a === void 0 ? void 0 : _a.data; });
|
|
271
|
+
if (!response)
|
|
284
272
|
throw new Error("Failed to create experiment");
|
|
285
|
-
|
|
286
|
-
suite.
|
|
287
|
-
|
|
273
|
+
suite.experimentId = response.id;
|
|
274
|
+
suite.projectName = (_d = response.project_name) !== null && _d !== void 0 ? _d : projectName;
|
|
275
|
+
return true;
|
|
288
276
|
}
|
|
289
|
-
catch (
|
|
290
|
-
suite
|
|
291
|
-
|
|
292
|
-
suite.tracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
293
|
-
suite.evaluatorTracer = suite.tracer;
|
|
294
|
-
return;
|
|
277
|
+
catch (error) {
|
|
278
|
+
disableSuiteTracking({ suite, error });
|
|
279
|
+
return false;
|
|
295
280
|
}
|
|
281
|
+
}
|
|
282
|
+
function setupSuiteTracer({ suite, client, }) {
|
|
296
283
|
const baseUrl = client.config.baseUrl;
|
|
297
284
|
if (!baseUrl) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
return;
|
|
285
|
+
disableSuiteTracking({
|
|
286
|
+
suite,
|
|
287
|
+
error: new Error("Phoenix base URL not found. Set PHOENIX_ENDPOINT (or PHOENIX_COLLECTOR_ENDPOINT) or pass baseUrl on the client."),
|
|
288
|
+
});
|
|
289
|
+
return false;
|
|
303
290
|
}
|
|
304
291
|
maybeWarnHttpScheme(baseUrl, client.config.headers);
|
|
305
|
-
|
|
292
|
+
const projectName = suite.projectName;
|
|
293
|
+
if (!projectName) {
|
|
294
|
+
disableSuiteTracking({
|
|
295
|
+
suite,
|
|
296
|
+
error: new Error("Experiment project name is missing."),
|
|
297
|
+
});
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
306
300
|
try {
|
|
307
|
-
provider = (0, phoenix_otel_1.register)({
|
|
308
|
-
projectName
|
|
301
|
+
const provider = (0, phoenix_otel_1.register)({
|
|
302
|
+
projectName,
|
|
309
303
|
url: (0, tracing_1.getTraceExportUrl)(client.config),
|
|
310
304
|
headers: client.config.headers
|
|
311
305
|
? (0, toObjectHeaders_1.toObjectHeaders)(client.config.headers)
|
|
@@ -315,18 +309,57 @@ async function initializeSuite(suite) {
|
|
|
315
309
|
});
|
|
316
310
|
suite.tracerProvider = provider;
|
|
317
311
|
suite.globalRegistration = (0, phoenix_otel_1.attachGlobalTracerProvider)(provider);
|
|
312
|
+
suite.tracer = provider.getTracer(projectName);
|
|
313
|
+
suite.evaluatorTracer = provider.getTracer(`${projectName}-evaluators`);
|
|
314
|
+
return true;
|
|
318
315
|
}
|
|
319
|
-
catch (
|
|
316
|
+
catch (error) {
|
|
317
|
+
disableSuiteTracking({ suite, error });
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Initialize the suite: upload the dataset, create the experiment, and
|
|
323
|
+
* register the OpenInference tracer.
|
|
324
|
+
*
|
|
325
|
+
* If tracing is disabled (no Phoenix env vars, or PHOENIX_TEST_TRACKING=false),
|
|
326
|
+
* this populates a no-op tracer and exits without making any network calls.
|
|
327
|
+
*/
|
|
328
|
+
async function initializeSuite(suite) {
|
|
329
|
+
var _a, _b, _c;
|
|
330
|
+
const tracking = isTrackingEnabled(suite);
|
|
331
|
+
if (!tracking.enabled) {
|
|
320
332
|
suite.trackingDisabled = true;
|
|
321
|
-
suite.
|
|
333
|
+
suite.trackingDisabledReason = tracking.reason;
|
|
322
334
|
suite.tracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
323
335
|
suite.evaluatorTracer = suite.tracer;
|
|
324
336
|
return;
|
|
325
337
|
}
|
|
326
|
-
|
|
327
|
-
suite.
|
|
328
|
-
|
|
329
|
-
|
|
338
|
+
const client = (_a = suite.config.client) !== null && _a !== void 0 ? _a : (0, index_1.createClient)();
|
|
339
|
+
suite.client = client;
|
|
340
|
+
const datasetName = (_b = suite.config.datasetName) !== null && _b !== void 0 ? _b : suite.name;
|
|
341
|
+
const description = (_c = suite.config.description) !== null && _c !== void 0 ? _c : `Phoenix test dataset auto-generated from ${suite.name}`;
|
|
342
|
+
const datasetId = await createSuiteDataset({
|
|
343
|
+
suite,
|
|
344
|
+
client,
|
|
345
|
+
datasetName,
|
|
346
|
+
description,
|
|
347
|
+
});
|
|
348
|
+
if (!datasetId)
|
|
349
|
+
return;
|
|
350
|
+
suite.datasetId = datasetId;
|
|
351
|
+
await resolveSuiteExampleIds({ suite, client, datasetId });
|
|
352
|
+
const hasExperiment = await createSuiteExperiment({
|
|
353
|
+
suite,
|
|
354
|
+
client,
|
|
355
|
+
datasetId,
|
|
356
|
+
datasetName,
|
|
357
|
+
description,
|
|
358
|
+
});
|
|
359
|
+
if (!hasExperiment || !setupSuiteTracer({ suite, client }))
|
|
360
|
+
return;
|
|
361
|
+
if (suite.experimentId) {
|
|
362
|
+
suite.links = buildLinks(client, datasetId, suite.experimentId);
|
|
330
363
|
}
|
|
331
364
|
}
|
|
332
365
|
/** Lazily-created no-op tracer reused for dry runs / fallbacks. */
|