@arizeai/phoenix-otel 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/register.d.ts +25 -3
- package/dist/esm/register.d.ts.map +1 -1
- package/dist/esm/register.js +138 -5
- package/dist/esm/register.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/utils.d.ts +1 -1
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/register.d.ts +25 -3
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +137 -2
- package/dist/src/register.js.map +1 -1
- package/dist/src/utils.d.ts +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/manual-spans.mdx +99 -0
- package/docs/overview.mdx +248 -0
- package/package.json +34 -29
- package/src/index.ts +1 -0
- package/src/register.ts +236 -13
- package/src/utils.ts +1 -1
package/README.md
CHANGED
|
@@ -156,7 +156,7 @@ const response = await openai.chat.completions.create({
|
|
|
156
156
|
Create custom spans using the OpenTelemetry API:
|
|
157
157
|
|
|
158
158
|
```typescript
|
|
159
|
-
import { register, trace } from "@arizeai/phoenix-otel";
|
|
159
|
+
import { register, trace, SpanStatusCode } from "@arizeai/phoenix-otel";
|
|
160
160
|
|
|
161
161
|
register({ projectName: "my-app" });
|
|
162
162
|
|
|
@@ -271,7 +271,7 @@ import {
|
|
|
271
271
|
|
|
272
272
|
Join our community to connect with thousands of AI builders:
|
|
273
273
|
|
|
274
|
-
- 🌍 Join our [Slack community](https://
|
|
274
|
+
- 🌍 Join our [Slack community](https://join.slack.com/t/arize-ai/shared_invite/zt-3r07iavnk-ammtATWSlF0pSrd1DsMW7g)
|
|
275
275
|
- 💡 Ask questions and provide feedback in the _#phoenix-support_ channel
|
|
276
276
|
- 🌟 Leave a star on our [GitHub](https://github.com/Arize-ai/phoenix)
|
|
277
277
|
- 🐞 Report bugs with [GitHub Issues](https://github.com/Arize-ai/phoenix/issues)
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { trace, context, DiagLogLevel, type Tracer, SpanStatusCode, } from "@opentelemetry/api";
|
|
2
|
+
export { suppressTracing } from "@opentelemetry/core";
|
|
2
3
|
export { registerInstrumentations } from "@opentelemetry/instrumentation";
|
|
3
4
|
export { type Instrumentation } from "@opentelemetry/instrumentation";
|
|
4
5
|
export { type NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,KAAK,MAAM,EACX,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,KAAK,MAAM,EACX,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { trace, context, DiagLogLevel, SpanStatusCode, } from "@opentelemetry/api";
|
|
2
|
+
export { suppressTracing } from "@opentelemetry/core";
|
|
2
3
|
export { registerInstrumentations } from "@opentelemetry/instrumentation";
|
|
3
4
|
// Phoenix abstractions
|
|
4
5
|
export * from "./createNoOpProvider.js";
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAI1E,uBAAuB;AACvB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EAEZ,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAI1E,uBAAuB;AACvB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
package/dist/esm/register.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { DiagLogLevel } from "@opentelemetry/api";
|
|
2
|
-
import { Instrumentation } from "@opentelemetry/instrumentation";
|
|
3
|
-
import {
|
|
1
|
+
import type { DiagLogLevel } from "@opentelemetry/api";
|
|
2
|
+
import type { Instrumentation } from "@opentelemetry/instrumentation";
|
|
3
|
+
import type { SpanProcessor } from "@opentelemetry/sdk-trace-node";
|
|
4
|
+
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
4
5
|
/**
|
|
5
6
|
* Type definition for HTTP headers used in OTLP communication
|
|
6
7
|
* @example { "custom-header": "value", "x-api-version": "1.0" }
|
|
@@ -130,6 +131,27 @@ export type RegisterParams = {
|
|
|
130
131
|
*/
|
|
131
132
|
diagLogLevel?: DiagLogLevel;
|
|
132
133
|
};
|
|
134
|
+
export type GlobalTracerProviderRegistration = {
|
|
135
|
+
/**
|
|
136
|
+
* Detach the global tracer provider and reset global tracing APIs to no-op state.
|
|
137
|
+
*
|
|
138
|
+
* This clears the OpenTelemetry tracer provider, context manager, and propagator
|
|
139
|
+
* so a different provider can be attached later in the same process.
|
|
140
|
+
*/
|
|
141
|
+
detach: () => void;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Detaches the current global OpenTelemetry tracer provider and resets the
|
|
145
|
+
* global trace, context, and propagation APIs.
|
|
146
|
+
*/
|
|
147
|
+
export declare function detachGlobalTracerProvider(): void;
|
|
148
|
+
/**
|
|
149
|
+
* Attaches an existing tracer provider as the global OpenTelemetry provider.
|
|
150
|
+
*
|
|
151
|
+
* Returns a handle that can be used to detach it later so another provider can
|
|
152
|
+
* be attached in the same process.
|
|
153
|
+
*/
|
|
154
|
+
export declare function attachGlobalTracerProvider(provider: NodeTracerProvider): GlobalTracerProviderRegistration;
|
|
133
155
|
/**
|
|
134
156
|
* Registers Phoenix OpenTelemetry tracing with the specified configuration.
|
|
135
157
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAkBvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAInE;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;OASG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;;;;;;;;;;;;;OAgBG;IACH,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IAErC;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IAEjC;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C;;;;;OAKG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AA+IF;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,kBAAkB,GAC3B,gCAAgC,CAmBlC;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,kBAAkB,CAiCnE;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,aAAkB,EAC3B,KAAY,GACb,EAAE,IAAI,CACL,cAAc,EACd,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CACvC,GAAG,aAAa,CAuBhB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAa3D"}
|
package/dist/esm/register.js
CHANGED
|
@@ -1,11 +1,140 @@
|
|
|
1
1
|
import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions";
|
|
2
2
|
import { OpenInferenceBatchSpanProcessor, OpenInferenceSimpleSpanProcessor, } from "@arizeai/openinference-vercel";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { context, diag, DiagConsoleLogger, propagation, trace, } from "@opentelemetry/api";
|
|
4
|
+
import { AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
|
|
5
|
+
import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator, } from "@opentelemetry/core";
|
|
5
6
|
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
|
|
6
|
-
import { registerInstrumentations
|
|
7
|
+
import { registerInstrumentations } from "@opentelemetry/instrumentation";
|
|
7
8
|
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
8
|
-
import { NodeTracerProvider
|
|
9
|
+
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
10
|
+
import { getEnvApiKey, getEnvCollectorURL } from "./config.js";
|
|
11
|
+
let nextGlobalTracerProviderMountId = 0;
|
|
12
|
+
let managedGlobalBaseSnapshot = null;
|
|
13
|
+
const managedGlobalTracerProviderMounts = [];
|
|
14
|
+
// OpenTelemetry v1 stores globals on this well-known symbol.
|
|
15
|
+
const OTEL_GLOBAL_SYMBOL = Symbol.for("opentelemetry.js.api.1");
|
|
16
|
+
function getOpenTelemetryGlobalState() {
|
|
17
|
+
return globalThis[OTEL_GLOBAL_SYMBOL];
|
|
18
|
+
}
|
|
19
|
+
function getGlobalTelemetrySnapshot() {
|
|
20
|
+
const globalState = getOpenTelemetryGlobalState();
|
|
21
|
+
return {
|
|
22
|
+
tracerProvider: globalState?.trace,
|
|
23
|
+
contextManager: globalState?.context,
|
|
24
|
+
propagator: globalState?.propagation,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function clearGlobalTelemetry() {
|
|
28
|
+
trace.disable();
|
|
29
|
+
context.disable();
|
|
30
|
+
propagation.disable();
|
|
31
|
+
}
|
|
32
|
+
function restoreGlobalTelemetrySnapshot(snapshot) {
|
|
33
|
+
clearGlobalTelemetry();
|
|
34
|
+
if (!snapshot) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (snapshot.tracerProvider) {
|
|
38
|
+
trace.setGlobalTracerProvider(snapshot.tracerProvider);
|
|
39
|
+
}
|
|
40
|
+
if (snapshot.contextManager) {
|
|
41
|
+
context.setGlobalContextManager(snapshot.contextManager);
|
|
42
|
+
}
|
|
43
|
+
if (snapshot.propagator) {
|
|
44
|
+
propagation.setGlobalPropagator(snapshot.propagator);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Sets the given provider as the global OpenTelemetry provider using this
|
|
49
|
+
* module's own imports of `trace`, `context`, and `propagation`.
|
|
50
|
+
*
|
|
51
|
+
* We deliberately avoid calling `provider.register()` because the SDK's
|
|
52
|
+
* internal import of `@opentelemetry/api` may resolve to a different module
|
|
53
|
+
* instance in pnpm workspaces (different symlink paths → different module
|
|
54
|
+
* identity). By routing all global-state mutations through **our** copy of
|
|
55
|
+
* the OTEL API, snapshot/restore stays consistent.
|
|
56
|
+
*/
|
|
57
|
+
function setGlobalProvider(provider) {
|
|
58
|
+
trace.setGlobalTracerProvider(provider);
|
|
59
|
+
const contextManager = new AsyncLocalStorageContextManager();
|
|
60
|
+
contextManager.enable();
|
|
61
|
+
context.setGlobalContextManager(contextManager);
|
|
62
|
+
propagation.setGlobalPropagator(new CompositePropagator({
|
|
63
|
+
propagators: [
|
|
64
|
+
new W3CTraceContextPropagator(),
|
|
65
|
+
new W3CBaggagePropagator(),
|
|
66
|
+
],
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
function restorePreviousManagedGlobalTracerProvider() {
|
|
70
|
+
const previousMount = managedGlobalTracerProviderMounts[managedGlobalTracerProviderMounts.length - 1];
|
|
71
|
+
if (previousMount) {
|
|
72
|
+
clearGlobalTelemetry();
|
|
73
|
+
setGlobalProvider(previousMount.provider);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
restoreGlobalTelemetrySnapshot(managedGlobalBaseSnapshot);
|
|
77
|
+
managedGlobalBaseSnapshot = null;
|
|
78
|
+
}
|
|
79
|
+
function detachManagedGlobalTracerProvider(mountId) {
|
|
80
|
+
if (managedGlobalTracerProviderMounts.length === 0) {
|
|
81
|
+
clearGlobalTelemetry();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const mountIndex = mountId == null
|
|
85
|
+
? managedGlobalTracerProviderMounts.length - 1
|
|
86
|
+
: managedGlobalTracerProviderMounts.findIndex((mount) => mount.id === mountId);
|
|
87
|
+
if (mountIndex === -1) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const isTopMount = mountIndex === managedGlobalTracerProviderMounts.length - 1;
|
|
91
|
+
managedGlobalTracerProviderMounts.splice(mountIndex, 1);
|
|
92
|
+
if (!isTopMount) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
restorePreviousManagedGlobalTracerProvider();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Detaches the current global OpenTelemetry tracer provider and resets the
|
|
99
|
+
* global trace, context, and propagation APIs.
|
|
100
|
+
*/
|
|
101
|
+
export function detachGlobalTracerProvider() {
|
|
102
|
+
detachManagedGlobalTracerProvider();
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Attaches an existing tracer provider as the global OpenTelemetry provider.
|
|
106
|
+
*
|
|
107
|
+
* Returns a handle that can be used to detach it later so another provider can
|
|
108
|
+
* be attached in the same process.
|
|
109
|
+
*/
|
|
110
|
+
export function attachGlobalTracerProvider(provider) {
|
|
111
|
+
if (managedGlobalTracerProviderMounts.length === 0) {
|
|
112
|
+
managedGlobalBaseSnapshot = getGlobalTelemetrySnapshot();
|
|
113
|
+
}
|
|
114
|
+
const mountId = nextGlobalTracerProviderMountId++;
|
|
115
|
+
managedGlobalTracerProviderMounts.push({
|
|
116
|
+
id: mountId,
|
|
117
|
+
provider,
|
|
118
|
+
});
|
|
119
|
+
clearGlobalTelemetry();
|
|
120
|
+
setGlobalProvider(provider);
|
|
121
|
+
return {
|
|
122
|
+
detach: () => {
|
|
123
|
+
detachManagedGlobalTracerProvider(mountId);
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function bindGlobalTracerProviderRegistrationToShutdown({ provider, registration, }) {
|
|
128
|
+
const shutdown = provider.shutdown.bind(provider);
|
|
129
|
+
let hasDetachedRegistration = false;
|
|
130
|
+
provider.shutdown = async () => {
|
|
131
|
+
if (!hasDetachedRegistration) {
|
|
132
|
+
hasDetachedRegistration = true;
|
|
133
|
+
registration.detach();
|
|
134
|
+
}
|
|
135
|
+
await shutdown();
|
|
136
|
+
};
|
|
137
|
+
}
|
|
9
138
|
/**
|
|
10
139
|
* Registers Phoenix OpenTelemetry tracing with the specified configuration.
|
|
11
140
|
*
|
|
@@ -106,7 +235,11 @@ export function register(params) {
|
|
|
106
235
|
});
|
|
107
236
|
}
|
|
108
237
|
if (global) {
|
|
109
|
-
provider
|
|
238
|
+
const registration = attachGlobalTracerProvider(provider);
|
|
239
|
+
bindGlobalTracerProviderRegistrationToShutdown({
|
|
240
|
+
provider,
|
|
241
|
+
registration,
|
|
242
|
+
});
|
|
110
243
|
}
|
|
111
244
|
return provider;
|
|
112
245
|
}
|
package/dist/esm/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"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"}
|