@arizeai/phoenix-client 4.2.0 → 5.1.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/README.md +1 -1
- package/dist/esm/__generated__/api/v1.d.ts +9 -0
- package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
- package/dist/esm/datasets/getDataset.d.ts +2 -3
- package/dist/esm/datasets/getDataset.d.ts.map +1 -1
- package/dist/esm/datasets/getDataset.js +2 -3
- package/dist/esm/datasets/getDataset.js.map +1 -1
- package/dist/esm/datasets/getDatasetExamples.d.ts +4 -4
- package/dist/esm/datasets/getDatasetExamples.d.ts.map +1 -1
- package/dist/esm/datasets/getDatasetExamples.js +11 -11
- package/dist/esm/datasets/getDatasetExamples.js.map +1 -1
- package/dist/esm/experiments/getExperimentInfo.d.ts.map +1 -1
- package/dist/esm/experiments/getExperimentInfo.js +1 -1
- package/dist/esm/experiments/getExperimentInfo.js.map +1 -1
- package/dist/esm/experiments/runExperiment.d.ts +2 -3
- package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/runExperiment.js +35 -21
- package/dist/esm/experiments/runExperiment.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types/datasets.d.ts +8 -10
- package/dist/esm/types/datasets.d.ts.map +1 -1
- package/dist/esm/types/experiments.d.ts +1 -0
- package/dist/esm/types/experiments.d.ts.map +1 -1
- package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/esm/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/esm/utils/toObjectHeaders.d.ts +6 -0
- package/dist/esm/utils/toObjectHeaders.d.ts.map +1 -0
- package/dist/esm/utils/toObjectHeaders.js +18 -0
- package/dist/esm/utils/toObjectHeaders.js.map +1 -0
- package/dist/src/__generated__/api/v1.d.ts +9 -0
- package/dist/src/__generated__/api/v1.d.ts.map +1 -1
- package/dist/src/datasets/getDataset.d.ts +2 -3
- package/dist/src/datasets/getDataset.d.ts.map +1 -1
- package/dist/src/datasets/getDataset.js +2 -3
- package/dist/src/datasets/getDataset.js.map +1 -1
- package/dist/src/datasets/getDatasetExamples.d.ts +4 -4
- package/dist/src/datasets/getDatasetExamples.d.ts.map +1 -1
- package/dist/src/datasets/getDatasetExamples.js +8 -11
- package/dist/src/datasets/getDatasetExamples.js.map +1 -1
- package/dist/src/experiments/getExperimentInfo.d.ts.map +1 -1
- package/dist/src/experiments/getExperimentInfo.js +1 -1
- package/dist/src/experiments/getExperimentInfo.js.map +1 -1
- package/dist/src/experiments/runExperiment.d.ts +2 -3
- package/dist/src/experiments/runExperiment.d.ts.map +1 -1
- package/dist/src/experiments/runExperiment.js +46 -41
- package/dist/src/experiments/runExperiment.js.map +1 -1
- package/dist/src/types/datasets.d.ts +8 -10
- package/dist/src/types/datasets.d.ts.map +1 -1
- package/dist/src/types/experiments.d.ts +1 -0
- package/dist/src/types/experiments.d.ts.map +1 -1
- package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/src/utils/toObjectHeaders.d.ts +6 -0
- package/dist/src/utils/toObjectHeaders.d.ts.map +1 -0
- package/dist/src/utils/toObjectHeaders.js +21 -0
- package/dist/src/utils/toObjectHeaders.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -10
- package/src/__generated__/api/v1.ts +9 -0
- package/src/datasets/getDataset.ts +2 -4
- package/src/datasets/getDatasetExamples.ts +13 -13
- package/src/experiments/getExperimentInfo.ts +3 -5
- package/src/experiments/runExperiment.ts +41 -22
- package/src/types/datasets.ts +5 -9
- package/src/types/experiments.ts +2 -0
- package/src/utils/toObjectHeaders.ts +22 -0
- package/dist/esm/experiments/instrumentation.d.ts +0 -29
- package/dist/esm/experiments/instrumentation.d.ts.map +0 -1
- package/dist/esm/experiments/instrumentation.js +0 -40
- package/dist/esm/experiments/instrumentation.js.map +0 -1
- package/dist/esm/utils/objectAsAttributes.d.ts +0 -3
- package/dist/esm/utils/objectAsAttributes.d.ts.map +0 -1
- package/dist/esm/utils/objectAsAttributes.js +0 -4
- package/dist/esm/utils/objectAsAttributes.js.map +0 -1
- package/dist/src/experiments/instrumentation.d.ts +0 -29
- package/dist/src/experiments/instrumentation.d.ts.map +0 -1
- package/dist/src/experiments/instrumentation.js +0 -44
- package/dist/src/experiments/instrumentation.js.map +0 -1
- package/dist/src/utils/objectAsAttributes.d.ts +0 -3
- package/dist/src/utils/objectAsAttributes.d.ts.map +0 -1
- package/dist/src/utils/objectAsAttributes.js +0 -7
- package/dist/src/utils/objectAsAttributes.js.map +0 -1
- package/src/experiments/instrumentation.ts +0 -75
- package/src/utils/objectAsAttributes.ts +0 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arizeai/phoenix-client",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "A client for the Phoenix API",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -72,25 +72,19 @@
|
|
|
72
72
|
"dependencies": {
|
|
73
73
|
"@arizeai/openinference-semantic-conventions": "^1.1.0",
|
|
74
74
|
"@arizeai/openinference-vercel": "^2.3.1",
|
|
75
|
-
"@opentelemetry/api": "^1.9.0",
|
|
76
|
-
"@opentelemetry/core": "^1.25.1",
|
|
77
|
-
"@opentelemetry/exporter-trace-otlp-proto": "^0.57.2",
|
|
78
|
-
"@opentelemetry/instrumentation": "^0.57.2",
|
|
79
|
-
"@opentelemetry/resources": "^2.0.0",
|
|
80
|
-
"@opentelemetry/sdk-trace-base": "^1.30.1",
|
|
81
|
-
"@opentelemetry/sdk-trace-node": "^1.30.1",
|
|
82
75
|
"async": "^3.2.6",
|
|
83
76
|
"openapi-fetch": "^0.12.5",
|
|
84
77
|
"tiny-invariant": "^1.3.3",
|
|
85
78
|
"zod": "^3.24.2",
|
|
86
|
-
"zod-to-json-schema": "^3.24.3"
|
|
79
|
+
"zod-to-json-schema": "^3.24.3",
|
|
80
|
+
"@arizeai/phoenix-otel": "0.2.0"
|
|
87
81
|
},
|
|
88
82
|
"engines": {
|
|
89
83
|
"node": ">=18"
|
|
90
84
|
},
|
|
91
85
|
"optionalDependencies": {
|
|
92
86
|
"@anthropic-ai/sdk": "^0.35.0",
|
|
93
|
-
"ai": "^5.0.
|
|
87
|
+
"ai": "^5.0.76",
|
|
94
88
|
"openai": "^5.12.1"
|
|
95
89
|
},
|
|
96
90
|
"scripts": {
|
|
@@ -939,6 +939,11 @@ export interface components {
|
|
|
939
939
|
* @description ID of the dataset version over which the experiment will be run (if omitted, the latest version will be used)
|
|
940
940
|
*/
|
|
941
941
|
version_id?: string | null;
|
|
942
|
+
/**
|
|
943
|
+
* Splits
|
|
944
|
+
* @description List of dataset split identifiers (GlobalIDs or names) to filter by
|
|
945
|
+
*/
|
|
946
|
+
splits?: string[] | null;
|
|
942
947
|
/**
|
|
943
948
|
* Repetitions
|
|
944
949
|
* @description Number of times the experiment should be repeated for each example
|
|
@@ -1397,6 +1402,8 @@ export interface components {
|
|
|
1397
1402
|
dataset_id: string;
|
|
1398
1403
|
/** Version Id */
|
|
1399
1404
|
version_id: string;
|
|
1405
|
+
/** Filtered Splits */
|
|
1406
|
+
filtered_splits?: string[];
|
|
1400
1407
|
/** Examples */
|
|
1401
1408
|
examples: components["schemas"]["DatasetExample"][];
|
|
1402
1409
|
};
|
|
@@ -3437,6 +3444,8 @@ export interface operations {
|
|
|
3437
3444
|
query?: {
|
|
3438
3445
|
/** @description The ID of the dataset version (if omitted, returns data from the latest version) */
|
|
3439
3446
|
version_id?: string | null;
|
|
3447
|
+
/** @description List of dataset split identifiers (GlobalIDs or names) to filter by */
|
|
3448
|
+
split?: string[] | null;
|
|
3440
3449
|
};
|
|
3441
3450
|
header?: never;
|
|
3442
3451
|
path: {
|
|
@@ -5,24 +5,22 @@ import { getDatasetExamples } from "./getDatasetExamples";
|
|
|
5
5
|
import { getDatasetInfo } from "./getDatasetInfo";
|
|
6
6
|
|
|
7
7
|
export type GetDatasetParams = ClientFn & {
|
|
8
|
+
/** Dataset selector (ID or name) */
|
|
8
9
|
dataset: DatasetSelector;
|
|
9
|
-
versionId?: string;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Get dataset info and examples from the dataset
|
|
14
14
|
* @param dataset - Dataset selector (ID or name)
|
|
15
|
-
* @param versionId - Optional specific version ID (if omitted, returns data from the latest version)
|
|
16
15
|
*/
|
|
17
16
|
export async function getDataset({
|
|
18
17
|
client: _client,
|
|
19
18
|
dataset,
|
|
20
|
-
versionId,
|
|
21
19
|
}: GetDatasetParams): Promise<Dataset> {
|
|
22
20
|
const client = _client || createClient();
|
|
23
21
|
const [datasetInfo, datasetExamples] = await Promise.all([
|
|
24
22
|
getDatasetInfo({ client, dataset }),
|
|
25
|
-
getDatasetExamples({ client, dataset
|
|
23
|
+
getDatasetExamples({ client, dataset }),
|
|
26
24
|
]);
|
|
27
25
|
return {
|
|
28
26
|
...datasetInfo,
|
|
@@ -5,44 +5,44 @@ import { DatasetSelector, DatasetExamples } from "../types/datasets";
|
|
|
5
5
|
import { getDatasetInfoByName } from "./getDatasetInfoByName";
|
|
6
6
|
|
|
7
7
|
export type GetDatasetExamplesParams = ClientFn & {
|
|
8
|
+
/** Dataset selector (ID, name, or version ID) */
|
|
8
9
|
dataset: DatasetSelector;
|
|
9
|
-
versionId?: string;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Get examples from a dataset
|
|
14
|
-
* @param dataset - Dataset selector (ID, name,
|
|
15
|
-
* @
|
|
14
|
+
* @param dataset - Dataset selector (ID, name, version ID, or splits)
|
|
15
|
+
* @returns Dataset examples
|
|
16
16
|
*/
|
|
17
17
|
export async function getDatasetExamples({
|
|
18
18
|
client: _client,
|
|
19
|
-
dataset,
|
|
20
|
-
versionId,
|
|
19
|
+
dataset: datasetSelector,
|
|
21
20
|
}: GetDatasetExamplesParams): Promise<DatasetExamples> {
|
|
22
21
|
const client = _client || createClient();
|
|
23
22
|
|
|
24
23
|
let datasetId: string;
|
|
25
24
|
|
|
26
|
-
if ("datasetName" in
|
|
25
|
+
if ("datasetName" in datasetSelector) {
|
|
27
26
|
const datasetInfo = await getDatasetInfoByName({
|
|
28
27
|
client,
|
|
29
|
-
datasetName:
|
|
28
|
+
datasetName: datasetSelector.datasetName,
|
|
30
29
|
});
|
|
31
30
|
datasetId = datasetInfo.id;
|
|
32
31
|
} else {
|
|
33
|
-
datasetId =
|
|
32
|
+
datasetId = datasetSelector.datasetId;
|
|
34
33
|
}
|
|
35
34
|
|
|
35
|
+
const { versionId, splits } = datasetSelector;
|
|
36
|
+
|
|
36
37
|
const response = await client.GET("/v1/datasets/{id}/examples", {
|
|
37
38
|
params: {
|
|
38
39
|
path: {
|
|
39
40
|
id: datasetId,
|
|
40
41
|
},
|
|
41
|
-
query:
|
|
42
|
-
? {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
: undefined,
|
|
42
|
+
query: {
|
|
43
|
+
...(versionId ? { version_id: versionId } : {}),
|
|
44
|
+
...(splits ? { split: splits } : {}),
|
|
45
|
+
},
|
|
46
46
|
},
|
|
47
47
|
});
|
|
48
48
|
|
|
@@ -18,16 +18,14 @@ export async function getExperimentInfo({
|
|
|
18
18
|
experimentId: experiment_id,
|
|
19
19
|
}: GetExperimentParams): Promise<ExperimentInfo> {
|
|
20
20
|
const client = _client || createClient();
|
|
21
|
-
const { data: { data: experimentData } = {} } =
|
|
22
|
-
"/v1/experiments/{experiment_id}",
|
|
23
|
-
{
|
|
21
|
+
const { data: { data: experimentData } = { data: undefined } } =
|
|
22
|
+
await client.GET("/v1/experiments/{experiment_id}", {
|
|
24
23
|
params: {
|
|
25
24
|
path: {
|
|
26
25
|
experiment_id,
|
|
27
26
|
},
|
|
28
27
|
},
|
|
29
|
-
}
|
|
30
|
-
);
|
|
28
|
+
});
|
|
31
29
|
invariant(experimentData, "Failed to get experiment");
|
|
32
30
|
return {
|
|
33
31
|
id: experimentData.id,
|
|
@@ -22,27 +22,29 @@ import { getDataset } from "../datasets/getDataset";
|
|
|
22
22
|
import { pluralize } from "../utils/pluralize";
|
|
23
23
|
import { promisifyResult } from "../utils/promisifyResult";
|
|
24
24
|
import { AnnotatorKind } from "../types/annotations";
|
|
25
|
-
import { createProvider, createNoOpProvider } from "./instrumentation";
|
|
26
25
|
import {
|
|
27
26
|
type DiagLogLevel,
|
|
28
27
|
SpanStatusCode,
|
|
29
28
|
Tracer,
|
|
30
29
|
trace,
|
|
31
|
-
|
|
30
|
+
NodeTracerProvider,
|
|
31
|
+
objectAsAttributes,
|
|
32
|
+
createNoOpProvider,
|
|
33
|
+
register,
|
|
34
|
+
} from "@arizeai/phoenix-otel";
|
|
32
35
|
import {
|
|
33
36
|
MimeType,
|
|
34
37
|
OpenInferenceSpanKind,
|
|
35
38
|
SemanticConventions,
|
|
36
39
|
} from "@arizeai/openinference-semantic-conventions";
|
|
37
40
|
import { ensureString } from "../utils/ensureString";
|
|
38
|
-
import type { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
39
|
-
import { objectAsAttributes } from "../utils/objectAsAttributes";
|
|
40
41
|
import {
|
|
41
42
|
getDatasetUrl,
|
|
42
43
|
getDatasetExperimentsUrl,
|
|
43
44
|
getExperimentUrl,
|
|
44
45
|
} from "../utils/urlUtils";
|
|
45
46
|
import assert from "assert";
|
|
47
|
+
import { toObjectHeaders } from "../utils/toObjectHeaders";
|
|
46
48
|
|
|
47
49
|
/**
|
|
48
50
|
* Validate that a repetition is valid
|
|
@@ -160,7 +162,7 @@ export async function runExperiment({
|
|
|
160
162
|
experimentDescription,
|
|
161
163
|
experimentMetadata = {},
|
|
162
164
|
client: _client,
|
|
163
|
-
dataset:
|
|
165
|
+
dataset: datasetSelector,
|
|
164
166
|
task,
|
|
165
167
|
evaluators,
|
|
166
168
|
logger = console,
|
|
@@ -180,7 +182,10 @@ export async function runExperiment({
|
|
|
180
182
|
let provider: NodeTracerProvider | undefined;
|
|
181
183
|
const isDryRun = typeof dryRun === "number" || dryRun === true;
|
|
182
184
|
const client = _client ?? createClient();
|
|
183
|
-
const dataset = await getDataset({
|
|
185
|
+
const dataset = await getDataset({
|
|
186
|
+
dataset: datasetSelector,
|
|
187
|
+
client,
|
|
188
|
+
});
|
|
184
189
|
invariant(dataset, `Dataset not found`);
|
|
185
190
|
invariant(dataset.examples.length > 0, `Dataset has no examples`);
|
|
186
191
|
const nExamples =
|
|
@@ -197,6 +202,8 @@ export async function runExperiment({
|
|
|
197
202
|
id: localId(),
|
|
198
203
|
datasetId: dataset.id,
|
|
199
204
|
datasetVersionId: dataset.versionId,
|
|
205
|
+
// @todo: the dataset should return splits in response body
|
|
206
|
+
datasetSplits: datasetSelector?.splits ?? [],
|
|
200
207
|
projectName,
|
|
201
208
|
metadata: experimentMetadata,
|
|
202
209
|
};
|
|
@@ -215,6 +222,11 @@ export async function runExperiment({
|
|
|
215
222
|
metadata: experimentMetadata,
|
|
216
223
|
project_name: projectName,
|
|
217
224
|
repetitions,
|
|
225
|
+
// @todo: the dataset should return splits in response body
|
|
226
|
+
...(datasetSelector?.splits
|
|
227
|
+
? { splits: datasetSelector.splits }
|
|
228
|
+
: {}),
|
|
229
|
+
...(dataset?.versionId ? { version_id: dataset.versionId } : {}),
|
|
218
230
|
},
|
|
219
231
|
})
|
|
220
232
|
.then((res) => res.data?.data);
|
|
@@ -224,6 +236,8 @@ export async function runExperiment({
|
|
|
224
236
|
id: experimentResponse.id,
|
|
225
237
|
datasetId: experimentResponse.dataset_id,
|
|
226
238
|
datasetVersionId: experimentResponse.dataset_version_id,
|
|
239
|
+
// @todo: the dataset should return splits in response body
|
|
240
|
+
datasetSplits: datasetSelector?.splits ?? [],
|
|
227
241
|
projectName,
|
|
228
242
|
metadata: experimentResponse.metadata,
|
|
229
243
|
};
|
|
@@ -233,17 +247,18 @@ export async function runExperiment({
|
|
|
233
247
|
baseUrl,
|
|
234
248
|
"Phoenix base URL not found. Please set PHOENIX_HOST or set baseUrl on the client."
|
|
235
249
|
);
|
|
236
|
-
|
|
250
|
+
|
|
251
|
+
provider = register({
|
|
237
252
|
projectName,
|
|
238
|
-
baseUrl,
|
|
239
|
-
headers: client.config.headers
|
|
240
|
-
|
|
253
|
+
url: baseUrl,
|
|
254
|
+
headers: client.config.headers
|
|
255
|
+
? toObjectHeaders(client.config.headers)
|
|
256
|
+
: undefined,
|
|
257
|
+
batch: useBatchSpanProcessor,
|
|
241
258
|
diagLogLevel,
|
|
259
|
+
global: setGlobalTracerProvider,
|
|
242
260
|
});
|
|
243
|
-
|
|
244
|
-
if (setGlobalTracerProvider) {
|
|
245
|
-
provider.register();
|
|
246
|
-
}
|
|
261
|
+
|
|
247
262
|
taskTracer = provider.getTracer(projectName);
|
|
248
263
|
}
|
|
249
264
|
if (!record) {
|
|
@@ -536,16 +551,16 @@ export async function evaluateExperiment({
|
|
|
536
551
|
if (paramsTracerProvider) {
|
|
537
552
|
provider = paramsTracerProvider;
|
|
538
553
|
} else if (!isDryRun) {
|
|
539
|
-
provider =
|
|
554
|
+
provider = register({
|
|
540
555
|
projectName: "evaluators",
|
|
541
|
-
baseUrl,
|
|
542
|
-
headers: client.config.headers
|
|
543
|
-
|
|
556
|
+
url: baseUrl,
|
|
557
|
+
headers: client.config.headers
|
|
558
|
+
? toObjectHeaders(client.config.headers)
|
|
559
|
+
: undefined,
|
|
560
|
+
batch: useBatchSpanProcessor,
|
|
544
561
|
diagLogLevel,
|
|
562
|
+
global: setGlobalTracerProvider,
|
|
545
563
|
});
|
|
546
|
-
if (setGlobalTracerProvider) {
|
|
547
|
-
provider.register();
|
|
548
|
-
}
|
|
549
564
|
} else {
|
|
550
565
|
provider = createNoOpProvider();
|
|
551
566
|
}
|
|
@@ -557,7 +572,11 @@ export async function evaluateExperiment({
|
|
|
557
572
|
? Math.min(dryRun, Object.keys(experiment.runs).length)
|
|
558
573
|
: Object.keys(experiment.runs).length;
|
|
559
574
|
const dataset = await getDataset({
|
|
560
|
-
dataset: {
|
|
575
|
+
dataset: {
|
|
576
|
+
datasetId: experiment.datasetId,
|
|
577
|
+
versionId: experiment.datasetVersionId,
|
|
578
|
+
splits: experiment.datasetSplits,
|
|
579
|
+
},
|
|
561
580
|
client,
|
|
562
581
|
});
|
|
563
582
|
invariant(dataset, `Dataset "${experiment.datasetId}" not found`);
|
package/src/types/datasets.ts
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import { Node } from "./core";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
* A dataset can be identified by its datasetId, datasetName, or datasetVersionId
|
|
5
|
-
*/
|
|
6
|
-
export type DatasetSelector = { datasetId: string } | { datasetName: string };
|
|
3
|
+
type DatasetSelectorBase = { versionId?: string; splits?: string[] };
|
|
7
4
|
|
|
8
5
|
/**
|
|
9
|
-
*
|
|
6
|
+
* A dataset can be identified by its datasetId, datasetName, or datasetVersionId
|
|
10
7
|
*/
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
8
|
+
export type DatasetSelector =
|
|
9
|
+
| (DatasetSelectorBase & { datasetId: string })
|
|
10
|
+
| (DatasetSelectorBase & { datasetName: string });
|
|
15
11
|
|
|
16
12
|
/**
|
|
17
13
|
* Overview information about a dataset
|
package/src/types/experiments.ts
CHANGED
|
@@ -8,6 +8,8 @@ import { Example } from "./datasets";
|
|
|
8
8
|
export interface ExperimentInfo extends Node {
|
|
9
9
|
datasetId: string;
|
|
10
10
|
datasetVersionId: string;
|
|
11
|
+
// @todo: mark this as required when experiment API returns it
|
|
12
|
+
datasetSplits?: string[];
|
|
11
13
|
/**
|
|
12
14
|
* The project under which the experiment task traces are recorded
|
|
13
15
|
*/
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { HeadersOptions } from "openapi-fetch";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A utility function that simplifies the headers for passing to other clients
|
|
5
|
+
*/
|
|
6
|
+
export function toObjectHeaders(
|
|
7
|
+
headers: HeadersOptions
|
|
8
|
+
): Record<string, string> {
|
|
9
|
+
if (Array.isArray(headers)) {
|
|
10
|
+
return Object.fromEntries(headers);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const objectHeaders: Record<string, string> = {};
|
|
14
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
15
|
+
if (value !== null && value !== undefined) {
|
|
16
|
+
objectHeaders[key] = Array.isArray(value)
|
|
17
|
+
? value.join(", ")
|
|
18
|
+
: String(value);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return objectHeaders;
|
|
22
|
+
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { DiagLogLevel } from "@opentelemetry/api";
|
|
2
|
-
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
3
|
-
import { HeadersOptions } from "openapi-fetch";
|
|
4
|
-
/**
|
|
5
|
-
* Creates a provider that exports traces to Phoenix.
|
|
6
|
-
*/
|
|
7
|
-
export declare function createProvider({ projectName, baseUrl, headers, useBatchSpanProcessor, diagLogLevel, }: {
|
|
8
|
-
projectName: string;
|
|
9
|
-
headers: HeadersOptions;
|
|
10
|
-
/**
|
|
11
|
-
* Whether to use batching for the span processor.
|
|
12
|
-
* @default true
|
|
13
|
-
*/
|
|
14
|
-
useBatchSpanProcessor: boolean;
|
|
15
|
-
/**
|
|
16
|
-
* The base URL of the Phoenix. Doesn't include the /v1/traces path.
|
|
17
|
-
*/
|
|
18
|
-
baseUrl: string;
|
|
19
|
-
/**
|
|
20
|
-
* The diag log level to set for the built in DiagConsoleLogger instance.
|
|
21
|
-
* Omit to disable built in logging.
|
|
22
|
-
*/
|
|
23
|
-
diagLogLevel?: DiagLogLevel;
|
|
24
|
-
}): NodeTracerProvider;
|
|
25
|
-
/**
|
|
26
|
-
* For dry runs we create a provider that doesn't export traces.
|
|
27
|
-
*/
|
|
28
|
-
export declare function createNoOpProvider(): NodeTracerProvider;
|
|
29
|
-
//# sourceMappingURL=instrumentation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/experiments/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EACL,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,OAAO,EACP,OAAO,EACP,qBAA4B,EAC5B,YAAY,GACb,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,sBAyBA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,uBAIjC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { diag, DiagConsoleLogger } from "@opentelemetry/api";
|
|
2
|
-
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
|
|
3
|
-
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
4
|
-
import { NodeTracerProvider, } from "@opentelemetry/sdk-trace-node";
|
|
5
|
-
import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions";
|
|
6
|
-
import { OpenInferenceBatchSpanProcessor, OpenInferenceSimpleSpanProcessor, } from "@arizeai/openinference-vercel";
|
|
7
|
-
/**
|
|
8
|
-
* Creates a provider that exports traces to Phoenix.
|
|
9
|
-
*/
|
|
10
|
-
export function createProvider({ projectName, baseUrl, headers, useBatchSpanProcessor = true, diagLogLevel, }) {
|
|
11
|
-
if (diagLogLevel) {
|
|
12
|
-
diag.setLogger(new DiagConsoleLogger(), diagLogLevel);
|
|
13
|
-
}
|
|
14
|
-
const exporter = new OTLPTraceExporter({
|
|
15
|
-
url: `${baseUrl}/v1/traces`,
|
|
16
|
-
headers: Array.isArray(headers) ? Object.fromEntries(headers) : headers,
|
|
17
|
-
});
|
|
18
|
-
let spanProcessor;
|
|
19
|
-
if (useBatchSpanProcessor) {
|
|
20
|
-
spanProcessor = new OpenInferenceBatchSpanProcessor({ exporter });
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
spanProcessor = new OpenInferenceSimpleSpanProcessor({ exporter });
|
|
24
|
-
}
|
|
25
|
-
const provider = new NodeTracerProvider({
|
|
26
|
-
resource: resourceFromAttributes({
|
|
27
|
-
[SEMRESATTRS_PROJECT_NAME]: projectName,
|
|
28
|
-
}),
|
|
29
|
-
spanProcessors: [spanProcessor],
|
|
30
|
-
});
|
|
31
|
-
return provider;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* For dry runs we create a provider that doesn't export traces.
|
|
35
|
-
*/
|
|
36
|
-
export function createNoOpProvider() {
|
|
37
|
-
const provider = new NodeTracerProvider({});
|
|
38
|
-
return provider;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=instrumentation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../src/experiments/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAgB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,kBAAkB,GAEnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAEvF,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,+BAA+B,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,WAAW,EACX,OAAO,EACP,OAAO,EACP,qBAAqB,GAAG,IAAI,EAC5B,YAAY,GAkBb;IACC,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,EAAE,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;QACrC,GAAG,EAAE,GAAG,OAAO,YAAY;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;KACxE,CAAC,CAAC;IAEH,IAAI,aAA4B,CAAC;IACjC,IAAI,qBAAqB,EAAE,CAAC;QAC1B,aAAa,GAAG,IAAI,+BAA+B,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAI,gCAAgC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC;QACtC,QAAQ,EAAE,sBAAsB,CAAC;YAC/B,CAAC,wBAAwB,CAAC,EAAE,WAAW;SACxC,CAAC;QACF,cAAc,EAAE,CAAC,aAAa,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE5C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"objectAsAttributes.d.ts","sourceRoot":"","sources":["../../../src/utils/objectAsAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,GAAG,EAAE,CAAC,GACL,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAIhC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"objectAsAttributes.js","sourceRoot":"","sources":["../../../src/utils/objectAsAttributes.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAChC,GAAM;IAEN,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CACzB,CAAC;AACtC,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { DiagLogLevel } from "@opentelemetry/api";
|
|
2
|
-
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
3
|
-
import { HeadersOptions } from "openapi-fetch";
|
|
4
|
-
/**
|
|
5
|
-
* Creates a provider that exports traces to Phoenix.
|
|
6
|
-
*/
|
|
7
|
-
export declare function createProvider({ projectName, baseUrl, headers, useBatchSpanProcessor, diagLogLevel, }: {
|
|
8
|
-
projectName: string;
|
|
9
|
-
headers: HeadersOptions;
|
|
10
|
-
/**
|
|
11
|
-
* Whether to use batching for the span processor.
|
|
12
|
-
* @default true
|
|
13
|
-
*/
|
|
14
|
-
useBatchSpanProcessor: boolean;
|
|
15
|
-
/**
|
|
16
|
-
* The base URL of the Phoenix. Doesn't include the /v1/traces path.
|
|
17
|
-
*/
|
|
18
|
-
baseUrl: string;
|
|
19
|
-
/**
|
|
20
|
-
* The diag log level to set for the built in DiagConsoleLogger instance.
|
|
21
|
-
* Omit to disable built in logging.
|
|
22
|
-
*/
|
|
23
|
-
diagLogLevel?: DiagLogLevel;
|
|
24
|
-
}): NodeTracerProvider;
|
|
25
|
-
/**
|
|
26
|
-
* For dry runs we create a provider that doesn't export traces.
|
|
27
|
-
*/
|
|
28
|
-
export declare function createNoOpProvider(): NodeTracerProvider;
|
|
29
|
-
//# sourceMappingURL=instrumentation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/experiments/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EACL,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,OAAO,EACP,OAAO,EACP,qBAA4B,EAC5B,YAAY,GACb,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,sBAyBA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,uBAIjC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createProvider = createProvider;
|
|
4
|
-
exports.createNoOpProvider = createNoOpProvider;
|
|
5
|
-
const api_1 = require("@opentelemetry/api");
|
|
6
|
-
const exporter_trace_otlp_proto_1 = require("@opentelemetry/exporter-trace-otlp-proto");
|
|
7
|
-
const resources_1 = require("@opentelemetry/resources");
|
|
8
|
-
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
|
|
9
|
-
const openinference_semantic_conventions_1 = require("@arizeai/openinference-semantic-conventions");
|
|
10
|
-
const openinference_vercel_1 = require("@arizeai/openinference-vercel");
|
|
11
|
-
/**
|
|
12
|
-
* Creates a provider that exports traces to Phoenix.
|
|
13
|
-
*/
|
|
14
|
-
function createProvider({ projectName, baseUrl, headers, useBatchSpanProcessor = true, diagLogLevel, }) {
|
|
15
|
-
if (diagLogLevel) {
|
|
16
|
-
api_1.diag.setLogger(new api_1.DiagConsoleLogger(), diagLogLevel);
|
|
17
|
-
}
|
|
18
|
-
const exporter = new exporter_trace_otlp_proto_1.OTLPTraceExporter({
|
|
19
|
-
url: `${baseUrl}/v1/traces`,
|
|
20
|
-
headers: Array.isArray(headers) ? Object.fromEntries(headers) : headers,
|
|
21
|
-
});
|
|
22
|
-
let spanProcessor;
|
|
23
|
-
if (useBatchSpanProcessor) {
|
|
24
|
-
spanProcessor = new openinference_vercel_1.OpenInferenceBatchSpanProcessor({ exporter });
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
spanProcessor = new openinference_vercel_1.OpenInferenceSimpleSpanProcessor({ exporter });
|
|
28
|
-
}
|
|
29
|
-
const provider = new sdk_trace_node_1.NodeTracerProvider({
|
|
30
|
-
resource: (0, resources_1.resourceFromAttributes)({
|
|
31
|
-
[openinference_semantic_conventions_1.SEMRESATTRS_PROJECT_NAME]: projectName,
|
|
32
|
-
}),
|
|
33
|
-
spanProcessors: [spanProcessor],
|
|
34
|
-
});
|
|
35
|
-
return provider;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* For dry runs we create a provider that doesn't export traces.
|
|
39
|
-
*/
|
|
40
|
-
function createNoOpProvider() {
|
|
41
|
-
const provider = new sdk_trace_node_1.NodeTracerProvider({});
|
|
42
|
-
return provider;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=instrumentation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../src/experiments/instrumentation.ts"],"names":[],"mappings":";;AAiBA,wCAgDC;AAKD,gDAIC;AA1ED,4CAA2E;AAC3E,wFAA6E;AAC7E,wDAAkE;AAClE,kEAGuC;AACvC,oGAAuF;AAEvF,wEAGuC;AAEvC;;GAEG;AACH,SAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,OAAO,EACP,OAAO,EACP,qBAAqB,GAAG,IAAI,EAC5B,YAAY,GAkBb;IACC,IAAI,YAAY,EAAE,CAAC;QACjB,UAAI,CAAC,SAAS,CAAC,IAAI,uBAAiB,EAAE,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,6CAAiB,CAAC;QACrC,GAAG,EAAE,GAAG,OAAO,YAAY;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;KACxE,CAAC,CAAC;IAEH,IAAI,aAA4B,CAAC;IACjC,IAAI,qBAAqB,EAAE,CAAC;QAC1B,aAAa,GAAG,IAAI,sDAA+B,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAI,uDAAgC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,mCAAkB,CAAC;QACtC,QAAQ,EAAE,IAAA,kCAAsB,EAAC;YAC/B,CAAC,6DAAwB,CAAC,EAAE,WAAW;SACxC,CAAC;QACF,cAAc,EAAE,CAAC,aAAa,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB;IAChC,MAAM,QAAQ,GAAG,IAAI,mCAAkB,CAAC,EAAE,CAAC,CAAC;IAE5C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"objectAsAttributes.d.ts","sourceRoot":"","sources":["../../../src/utils/objectAsAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,GAAG,EAAE,CAAC,GACL,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAIhC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.objectAsAttributes = objectAsAttributes;
|
|
4
|
-
function objectAsAttributes(obj) {
|
|
5
|
-
return Object.fromEntries(Object.entries(obj).filter(([_, value]) => value !== null));
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=objectAsAttributes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"objectAsAttributes.js","sourceRoot":"","sources":["../../../src/utils/objectAsAttributes.ts"],"names":[],"mappings":";;AAEA,gDAMC;AAND,SAAgB,kBAAkB,CAChC,GAAM;IAEN,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CACzB,CAAC;AACtC,CAAC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
|
|
2
|
-
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
|
|
3
|
-
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
4
|
-
import {
|
|
5
|
-
NodeTracerProvider,
|
|
6
|
-
SpanProcessor,
|
|
7
|
-
} from "@opentelemetry/sdk-trace-node";
|
|
8
|
-
import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions";
|
|
9
|
-
import { HeadersOptions } from "openapi-fetch";
|
|
10
|
-
import {
|
|
11
|
-
OpenInferenceBatchSpanProcessor,
|
|
12
|
-
OpenInferenceSimpleSpanProcessor,
|
|
13
|
-
} from "@arizeai/openinference-vercel";
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Creates a provider that exports traces to Phoenix.
|
|
17
|
-
*/
|
|
18
|
-
export function createProvider({
|
|
19
|
-
projectName,
|
|
20
|
-
baseUrl,
|
|
21
|
-
headers,
|
|
22
|
-
useBatchSpanProcessor = true,
|
|
23
|
-
diagLogLevel,
|
|
24
|
-
}: {
|
|
25
|
-
projectName: string;
|
|
26
|
-
headers: HeadersOptions;
|
|
27
|
-
/**
|
|
28
|
-
* Whether to use batching for the span processor.
|
|
29
|
-
* @default true
|
|
30
|
-
*/
|
|
31
|
-
useBatchSpanProcessor: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* The base URL of the Phoenix. Doesn't include the /v1/traces path.
|
|
34
|
-
*/
|
|
35
|
-
baseUrl: string;
|
|
36
|
-
/**
|
|
37
|
-
* The diag log level to set for the built in DiagConsoleLogger instance.
|
|
38
|
-
* Omit to disable built in logging.
|
|
39
|
-
*/
|
|
40
|
-
diagLogLevel?: DiagLogLevel;
|
|
41
|
-
}) {
|
|
42
|
-
if (diagLogLevel) {
|
|
43
|
-
diag.setLogger(new DiagConsoleLogger(), diagLogLevel);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const exporter = new OTLPTraceExporter({
|
|
47
|
-
url: `${baseUrl}/v1/traces`,
|
|
48
|
-
headers: Array.isArray(headers) ? Object.fromEntries(headers) : headers,
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
let spanProcessor: SpanProcessor;
|
|
52
|
-
if (useBatchSpanProcessor) {
|
|
53
|
-
spanProcessor = new OpenInferenceBatchSpanProcessor({ exporter });
|
|
54
|
-
} else {
|
|
55
|
-
spanProcessor = new OpenInferenceSimpleSpanProcessor({ exporter });
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const provider = new NodeTracerProvider({
|
|
59
|
-
resource: resourceFromAttributes({
|
|
60
|
-
[SEMRESATTRS_PROJECT_NAME]: projectName,
|
|
61
|
-
}),
|
|
62
|
-
spanProcessors: [spanProcessor],
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
return provider;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* For dry runs we create a provider that doesn't export traces.
|
|
70
|
-
*/
|
|
71
|
-
export function createNoOpProvider() {
|
|
72
|
-
const provider = new NodeTracerProvider({});
|
|
73
|
-
|
|
74
|
-
return provider;
|
|
75
|
-
}
|