@introspection-sdk/introspection-node 0.4.2 → 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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-check-types.log +4 -0
- package/.turbo/turbo-lint.log +5 -0
- package/dist/client.d.ts +42 -132
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +67 -366
- package/dist/client.js.map +1 -0
- package/dist/converters/claude.d.ts +4 -0
- package/dist/converters/claude.d.ts.map +1 -1
- package/dist/converters/claude.js +7 -0
- package/dist/converters/claude.js.map +1 -0
- package/dist/converters/gemini.d.ts +90 -0
- package/dist/converters/gemini.d.ts.map +1 -0
- package/dist/converters/gemini.js +171 -0
- package/dist/converters/gemini.js.map +1 -0
- package/dist/converters/index.d.ts +1 -1
- package/dist/converters/index.d.ts.map +1 -1
- package/dist/converters/index.js +2 -1
- package/dist/converters/index.js.map +1 -0
- package/dist/converters/openai.js +1 -0
- package/dist/converters/openai.js.map +1 -0
- package/dist/converters/openclaw.d.ts +16 -0
- package/dist/converters/openclaw.d.ts.map +1 -0
- package/dist/converters/openclaw.js +49 -0
- package/dist/converters/openinference.js +1 -0
- package/dist/converters/openinference.js.map +1 -0
- package/dist/converters/vercel.d.ts.map +1 -1
- package/dist/converters/vercel.js +31 -3
- package/dist/converters/vercel.js.map +1 -0
- package/dist/http.d.ts +36 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +145 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +24 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -32
- package/dist/index.js.map +1 -0
- package/dist/otel/anthropic.d.ts +62 -0
- package/dist/otel/anthropic.d.ts.map +1 -0
- package/dist/otel/anthropic.js +425 -0
- package/dist/otel/anthropic.js.map +1 -0
- package/dist/otel/claude-hooks.d.ts +346 -0
- package/dist/otel/claude-hooks.d.ts.map +1 -0
- package/dist/otel/claude-hooks.js +645 -0
- package/dist/otel/claude-hooks.js.map +1 -0
- package/dist/otel/claude-wrapper.d.ts +93 -0
- package/dist/otel/claude-wrapper.d.ts.map +1 -0
- package/dist/otel/claude-wrapper.js +155 -0
- package/dist/otel/claude-wrapper.js.map +1 -0
- package/dist/otel/gemini.d.ts +48 -0
- package/dist/otel/gemini.d.ts.map +1 -0
- package/dist/otel/gemini.js +297 -0
- package/dist/otel/gemini.js.map +1 -0
- package/dist/otel/index.d.ts +27 -0
- package/dist/otel/index.d.ts.map +1 -0
- package/dist/otel/index.js +33 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/otel/langchain-handler.d.ts +112 -0
- package/dist/otel/langchain-handler.d.ts.map +1 -0
- package/dist/otel/langchain-handler.js +555 -0
- package/dist/otel/langchain-handler.js.map +1 -0
- package/dist/otel/logs.d.ts +82 -0
- package/dist/otel/logs.d.ts.map +1 -0
- package/dist/otel/logs.js +271 -0
- package/dist/otel/logs.js.map +1 -0
- package/dist/otel/mastra-exporter.d.ts +87 -0
- package/dist/otel/mastra-exporter.d.ts.map +1 -0
- package/dist/otel/mastra-exporter.js +525 -0
- package/dist/otel/mastra-exporter.js.map +1 -0
- package/dist/otel/pi.d.ts +59 -0
- package/dist/otel/pi.d.ts.map +1 -0
- package/dist/otel/pi.js +67 -0
- package/dist/otel/pi.js.map +1 -0
- package/dist/otel/setup.d.ts +23 -0
- package/dist/otel/setup.d.ts.map +1 -0
- package/dist/otel/setup.js +127 -0
- package/dist/otel/setup.js.map +1 -0
- package/dist/otel/span-processor.d.ts +62 -0
- package/dist/otel/span-processor.d.ts.map +1 -0
- package/dist/otel/span-processor.js +319 -0
- package/dist/otel/span-processor.js.map +1 -0
- package/dist/otel/tracing-processor.d.ts +139 -0
- package/dist/otel/tracing-processor.d.ts.map +1 -0
- package/dist/otel/tracing-processor.js +418 -0
- package/dist/otel/tracing-processor.js.map +1 -0
- package/dist/resources/experiments.d.ts +31 -0
- package/dist/resources/experiments.d.ts.map +1 -0
- package/dist/resources/experiments.js +133 -0
- package/dist/resources/experiments.js.map +1 -0
- package/dist/resources/recipes.d.ts +22 -0
- package/dist/resources/recipes.d.ts.map +1 -0
- package/dist/resources/recipes.js +61 -0
- package/dist/resources/recipes.js.map +1 -0
- package/dist/resources/runtimes.d.ts +76 -0
- package/dist/resources/runtimes.d.ts.map +1 -0
- package/dist/resources/runtimes.js +179 -0
- package/dist/resources/runtimes.js.map +1 -0
- package/dist/runner-resources/files.d.ts +35 -0
- package/dist/runner-resources/files.d.ts.map +1 -0
- package/dist/runner-resources/files.js +131 -0
- package/dist/runner-resources/files.js.map +1 -0
- package/dist/runner-resources/tasks.d.ts +39 -0
- package/dist/runner-resources/tasks.d.ts.map +1 -0
- package/dist/runner-resources/tasks.js +129 -0
- package/dist/runner-resources/tasks.js.map +1 -0
- package/dist/runner.d.ts +80 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +159 -0
- package/dist/runner.js.map +1 -0
- package/dist/streaming.d.ts +8 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +67 -0
- package/dist/streaming.js.map +1 -0
- package/dist/types/genai.d.ts +165 -0
- package/dist/types/genai.d.ts.map +1 -0
- package/dist/types/genai.js +82 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.js +1 -0
- package/dist/utils.js.map +1 -0
- package/dist/version.js +1 -0
- package/dist/version.js.map +1 -0
- package/package.json +81 -24
- package/src/client.ts +76 -473
- package/src/converters/claude.ts +10 -0
- package/src/converters/gemini.ts +243 -0
- package/src/converters/index.ts +13 -7
- package/src/converters/vercel.ts +41 -3
- package/src/http.ts +163 -0
- package/src/index.ts +110 -75
- package/src/{anthropic.ts → otel/anthropic.ts} +95 -8
- package/src/{claude-hooks.ts → otel/claude-hooks.ts} +119 -20
- package/src/{claude-wrapper.ts → otel/claude-wrapper.ts} +1 -1
- package/src/otel/gemini.ts +397 -0
- package/src/otel/index.ts +80 -0
- package/src/{langchain-handler.ts → otel/langchain-handler.ts} +53 -6
- package/src/otel/logs.ts +394 -0
- package/src/{mastra-exporter.ts → otel/mastra-exporter.ts} +83 -22
- package/src/otel/pi.ts +88 -0
- package/src/otel/setup.ts +174 -0
- package/src/{span-processor.ts → otel/span-processor.ts} +11 -6
- package/src/{tracing-processor.ts → otel/tracing-processor.ts} +94 -19
- package/src/resources/experiments.ts +170 -0
- package/src/resources/recipes.ts +73 -0
- package/src/resources/runtimes.ts +231 -0
- package/src/runner-resources/files.ts +163 -0
- package/src/runner-resources/tasks.ts +156 -0
- package/src/runner.ts +194 -0
- package/src/streaming.ts +57 -0
- package/src/ai-sdk-integration.ts +0 -691
- package/src/converters/ai-sdk.ts +0 -323
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/otel/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IntrospectionLogs — OTel logs exporter for Introspection.
|
|
3
|
+
*
|
|
4
|
+
* Owns its own `LoggerProvider` and OTLP log exporter. Provides `track`,
|
|
5
|
+
* `feedback`, `identify`, and async-context helpers (`withBaggage`,
|
|
6
|
+
* `withAgent`, `withConversation`, etc.) that propagate identity and
|
|
7
|
+
* gen_ai context through OpenTelemetry baggage.
|
|
8
|
+
*
|
|
9
|
+
* Fully independent of {@link IntrospectionClient}. Construct it directly
|
|
10
|
+
* with the OTel peer dependencies installed.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { IntrospectionLogs } from "@introspection-sdk/introspection-node/otel";
|
|
15
|
+
*
|
|
16
|
+
* const logs = new IntrospectionLogs({
|
|
17
|
+
* token: process.env.INTROSPECTION_TOKEN,
|
|
18
|
+
* serviceName: "my-service",
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* await logs.withAgent("support-bot", "agent_1", () =>
|
|
22
|
+
* logs.withConversation("conv_123", undefined, () => {
|
|
23
|
+
* logs.feedback("thumbs_up", { comments: "Great answer" });
|
|
24
|
+
* }),
|
|
25
|
+
* );
|
|
26
|
+
*
|
|
27
|
+
* await logs.shutdown();
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
import { SeverityNumber } from "@opentelemetry/api-logs";
|
|
31
|
+
import { LoggerProvider, BatchLogRecordProcessor, } from "@opentelemetry/sdk-logs";
|
|
32
|
+
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-proto";
|
|
33
|
+
import { resourceFromAttributes, defaultResource, } from "@opentelemetry/resources";
|
|
34
|
+
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
|
|
35
|
+
import { propagation, context } from "@opentelemetry/api";
|
|
36
|
+
import { logger as sdkLogger, withOtlpHttpsProxy } from "../utils.js";
|
|
37
|
+
import { VERSION } from "../version.js";
|
|
38
|
+
import { generateEventId, } from "../types.js";
|
|
39
|
+
export class IntrospectionLogs {
|
|
40
|
+
loggerProvider;
|
|
41
|
+
otelLogger;
|
|
42
|
+
userId;
|
|
43
|
+
anonymousId;
|
|
44
|
+
traits = {};
|
|
45
|
+
constructor(options = {}) {
|
|
46
|
+
const token = options.token || process.env.INTROSPECTION_TOKEN || "";
|
|
47
|
+
const serviceName = options.serviceName ||
|
|
48
|
+
process.env.INTROSPECTION_SERVICE_NAME ||
|
|
49
|
+
"introspection-client";
|
|
50
|
+
const baseOtelUrl = options.baseOtelUrl ||
|
|
51
|
+
process.env.INTROSPECTION_BASE_OTEL_URL ||
|
|
52
|
+
"https://otel.introspection.dev";
|
|
53
|
+
if (!token) {
|
|
54
|
+
sdkLogger.warn("IntrospectionLogs: No token provided. Events will not be sent.");
|
|
55
|
+
}
|
|
56
|
+
// Construct endpoint URL for logs.
|
|
57
|
+
const endpoint = baseOtelUrl.endsWith("/v1/logs")
|
|
58
|
+
? baseOtelUrl
|
|
59
|
+
: `${baseOtelUrl.replace(/\/$/, "")}/v1/logs`;
|
|
60
|
+
const headers = {
|
|
61
|
+
Authorization: `Bearer ${token}`,
|
|
62
|
+
...(options.additionalHeaders || {}),
|
|
63
|
+
};
|
|
64
|
+
const exporter = new OTLPLogExporter(withOtlpHttpsProxy({
|
|
65
|
+
url: endpoint,
|
|
66
|
+
headers,
|
|
67
|
+
}));
|
|
68
|
+
const processor = new BatchLogRecordProcessor(exporter, {
|
|
69
|
+
maxQueueSize: options.maxBatchSize ?? 100,
|
|
70
|
+
scheduledDelayMillis: options.flushInterval ?? 5000,
|
|
71
|
+
});
|
|
72
|
+
const baseResource = defaultResource();
|
|
73
|
+
const introspectionResource = resourceFromAttributes({
|
|
74
|
+
[ATTR_SERVICE_NAME]: serviceName,
|
|
75
|
+
});
|
|
76
|
+
const resource = baseResource.merge(introspectionResource);
|
|
77
|
+
this.loggerProvider = new LoggerProvider({
|
|
78
|
+
resource,
|
|
79
|
+
processors: [processor],
|
|
80
|
+
});
|
|
81
|
+
this.otelLogger = this.loggerProvider.getLogger("@introspection-sdk/introspection-node", VERSION);
|
|
82
|
+
sdkLogger.info(`IntrospectionLogs initialized: service=${serviceName}, otlp=${endpoint}`);
|
|
83
|
+
}
|
|
84
|
+
/** Get gen_ai context from baggage */
|
|
85
|
+
getGenAiFromContext() {
|
|
86
|
+
const baggage = propagation.getBaggage(context.active());
|
|
87
|
+
return {
|
|
88
|
+
conversationId: baggage?.getEntry("gen_ai.conversation.id")?.value,
|
|
89
|
+
previousResponseId: baggage?.getEntry("gen_ai.request.previous_response_id")?.value,
|
|
90
|
+
agentName: baggage?.getEntry("gen_ai.agent.name")?.value,
|
|
91
|
+
agentId: baggage?.getEntry("gen_ai.agent.id")?.value,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** Get identity from baggage or instance state */
|
|
95
|
+
getIdentityFromContext() {
|
|
96
|
+
const baggage = propagation.getBaggage(context.active());
|
|
97
|
+
return {
|
|
98
|
+
userId: baggage?.getEntry("identity.user_id")?.value || this.userId,
|
|
99
|
+
anonymousId: baggage?.getEntry("identity.anonymous_id")?.value || this.anonymousId,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
getTimestamp() {
|
|
103
|
+
const hrTimeNs = process.hrtime.bigint();
|
|
104
|
+
const epochNs = BigInt(Date.now()) * BigInt(1_000_000);
|
|
105
|
+
const offsetNs = hrTimeNs - process.hrtime.bigint() + epochNs;
|
|
106
|
+
const seconds = Number(offsetNs / BigInt(1_000_000_000));
|
|
107
|
+
const nanos = Number(offsetNs % BigInt(1_000_000_000));
|
|
108
|
+
return [seconds, nanos];
|
|
109
|
+
}
|
|
110
|
+
buildAttributes(eventName, options = {}) {
|
|
111
|
+
const { properties, traits, conversationId, previousResponseId, eventId } = options;
|
|
112
|
+
const attributes = {
|
|
113
|
+
"event.name": eventName,
|
|
114
|
+
"event.id": eventId || generateEventId(),
|
|
115
|
+
};
|
|
116
|
+
const identity = this.getIdentityFromContext();
|
|
117
|
+
if (identity.userId)
|
|
118
|
+
attributes["identity.user.id"] = identity.userId;
|
|
119
|
+
if (identity.anonymousId)
|
|
120
|
+
attributes["identity.anonymous.id"] = identity.anonymousId;
|
|
121
|
+
const genAi = this.getGenAiFromContext();
|
|
122
|
+
const finalConversationId = conversationId || genAi.conversationId;
|
|
123
|
+
const finalPreviousResponseId = previousResponseId || genAi.previousResponseId;
|
|
124
|
+
if (finalConversationId)
|
|
125
|
+
attributes["gen_ai.conversation.id"] = finalConversationId;
|
|
126
|
+
if (finalPreviousResponseId)
|
|
127
|
+
attributes["gen_ai.request.previous_response_id"] =
|
|
128
|
+
finalPreviousResponseId;
|
|
129
|
+
if (genAi.agentName)
|
|
130
|
+
attributes["gen_ai.agent.name"] = genAi.agentName;
|
|
131
|
+
if (genAi.agentId)
|
|
132
|
+
attributes["gen_ai.agent.id"] = genAi.agentId;
|
|
133
|
+
if (properties) {
|
|
134
|
+
for (const [key, value] of Object.entries(properties)) {
|
|
135
|
+
if (value != null) {
|
|
136
|
+
const attrKey = `properties.${key}`;
|
|
137
|
+
if (typeof value === "object") {
|
|
138
|
+
attributes[attrKey] = JSON.stringify(value);
|
|
139
|
+
}
|
|
140
|
+
else if (typeof value === "string" ||
|
|
141
|
+
typeof value === "number" ||
|
|
142
|
+
typeof value === "boolean") {
|
|
143
|
+
attributes[attrKey] = value;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (traits) {
|
|
149
|
+
for (const [key, value] of Object.entries(traits)) {
|
|
150
|
+
if (value != null) {
|
|
151
|
+
const attrKey = `context.traits.${key}`;
|
|
152
|
+
if (typeof value === "object") {
|
|
153
|
+
attributes[attrKey] = JSON.stringify(value);
|
|
154
|
+
}
|
|
155
|
+
else if (typeof value === "string" ||
|
|
156
|
+
typeof value === "number" ||
|
|
157
|
+
typeof value === "boolean") {
|
|
158
|
+
attributes[attrKey] = value;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return attributes;
|
|
164
|
+
}
|
|
165
|
+
track(eventName, properties, options) {
|
|
166
|
+
const attributes = this.buildAttributes(eventName, {
|
|
167
|
+
properties,
|
|
168
|
+
eventId: options?.eventId,
|
|
169
|
+
});
|
|
170
|
+
this.otelLogger.emit({
|
|
171
|
+
timestamp: this.getTimestamp(),
|
|
172
|
+
context: context.active(),
|
|
173
|
+
severityNumber: SeverityNumber.INFO,
|
|
174
|
+
severityText: "INFO",
|
|
175
|
+
attributes,
|
|
176
|
+
});
|
|
177
|
+
sdkLogger.debug(`Tracked: ${eventName}`);
|
|
178
|
+
}
|
|
179
|
+
feedback(name, options = {}) {
|
|
180
|
+
const { comments, conversationId, previousResponseId, eventId, ...extra } = options;
|
|
181
|
+
const properties = { name, ...extra };
|
|
182
|
+
if (comments)
|
|
183
|
+
properties.comments = comments;
|
|
184
|
+
const attributes = this.buildAttributes("introspection.feedback", {
|
|
185
|
+
properties,
|
|
186
|
+
conversationId: conversationId,
|
|
187
|
+
previousResponseId: previousResponseId,
|
|
188
|
+
eventId: eventId,
|
|
189
|
+
});
|
|
190
|
+
this.otelLogger.emit({
|
|
191
|
+
timestamp: this.getTimestamp(),
|
|
192
|
+
context: context.active(),
|
|
193
|
+
severityNumber: SeverityNumber.INFO,
|
|
194
|
+
severityText: "INFO",
|
|
195
|
+
attributes,
|
|
196
|
+
});
|
|
197
|
+
sdkLogger.debug(`Feedback: ${name}`);
|
|
198
|
+
}
|
|
199
|
+
identify(userId, traits, anonymousId, eventId) {
|
|
200
|
+
this.userId = userId;
|
|
201
|
+
if (anonymousId)
|
|
202
|
+
this.anonymousId = anonymousId;
|
|
203
|
+
if (traits)
|
|
204
|
+
this.traits = { ...this.traits, ...traits };
|
|
205
|
+
const attributes = this.buildAttributes("identify", { traits, eventId });
|
|
206
|
+
this.otelLogger.emit({
|
|
207
|
+
timestamp: this.getTimestamp(),
|
|
208
|
+
context: context.active(),
|
|
209
|
+
severityNumber: SeverityNumber.INFO,
|
|
210
|
+
severityText: "INFO",
|
|
211
|
+
attributes,
|
|
212
|
+
});
|
|
213
|
+
sdkLogger.debug(`Identified: ${userId}`);
|
|
214
|
+
}
|
|
215
|
+
createBaggageContext(values) {
|
|
216
|
+
const ctx = context.active();
|
|
217
|
+
let bag = propagation.getBaggage(ctx) || propagation.createBaggage();
|
|
218
|
+
for (const [key, value] of Object.entries(values)) {
|
|
219
|
+
bag = bag.setEntry(key, { value });
|
|
220
|
+
}
|
|
221
|
+
return propagation.setBaggage(ctx, bag);
|
|
222
|
+
}
|
|
223
|
+
async withBaggage(values, callback) {
|
|
224
|
+
const ctx = this.createBaggageContext(values);
|
|
225
|
+
return await context.with(ctx, callback);
|
|
226
|
+
}
|
|
227
|
+
async withAgent(agentName, agentId, callback) {
|
|
228
|
+
const values = { "gen_ai.agent.name": agentName };
|
|
229
|
+
if (agentId)
|
|
230
|
+
values["gen_ai.agent.id"] = agentId;
|
|
231
|
+
return await context.with(this.createBaggageContext(values), callback);
|
|
232
|
+
}
|
|
233
|
+
async withConversation(conversationId, previousResponseId, callback) {
|
|
234
|
+
const values = {};
|
|
235
|
+
if (conversationId)
|
|
236
|
+
values["gen_ai.conversation.id"] = conversationId;
|
|
237
|
+
if (previousResponseId)
|
|
238
|
+
values["gen_ai.request.previous_response_id"] = previousResponseId;
|
|
239
|
+
return await context.with(this.createBaggageContext(values), callback);
|
|
240
|
+
}
|
|
241
|
+
setUserId(userId) {
|
|
242
|
+
this.userId = userId;
|
|
243
|
+
}
|
|
244
|
+
setAnonymousId(anonymousId) {
|
|
245
|
+
this.anonymousId = anonymousId;
|
|
246
|
+
}
|
|
247
|
+
async withUserId(userId, callback) {
|
|
248
|
+
return await context.with(this.createBaggageContext({ "identity.user_id": userId }), callback);
|
|
249
|
+
}
|
|
250
|
+
async withAnonymousId(anonymousId, callback) {
|
|
251
|
+
return await context.with(this.createBaggageContext({ "identity.anonymous_id": anonymousId }), callback);
|
|
252
|
+
}
|
|
253
|
+
getAnonymousId() {
|
|
254
|
+
return this.anonymousId;
|
|
255
|
+
}
|
|
256
|
+
reset() {
|
|
257
|
+
this.userId = undefined;
|
|
258
|
+
this.anonymousId = undefined;
|
|
259
|
+
this.traits = {};
|
|
260
|
+
sdkLogger.debug("IntrospectionLogs state reset");
|
|
261
|
+
}
|
|
262
|
+
async flush() {
|
|
263
|
+
await this.loggerProvider.forceFlush();
|
|
264
|
+
sdkLogger.debug("Flushed pending log records");
|
|
265
|
+
}
|
|
266
|
+
async shutdown() {
|
|
267
|
+
await this.loggerProvider.shutdown();
|
|
268
|
+
sdkLogger.debug("IntrospectionLogs shutdown complete");
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/otel/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mastra-compatible Exporter for Introspection.
|
|
3
|
+
*
|
|
4
|
+
* Extends Mastra's BaseExporter to receive TracingEvents (Mastra's native
|
|
5
|
+
* span format) and convert them to gen_ai.* OTel spans for the Introspection
|
|
6
|
+
* backend.
|
|
7
|
+
*
|
|
8
|
+
* **Important:** This module requires `@mastra/observability` and `@mastra/core`
|
|
9
|
+
* at runtime. Import via the subpath: `@introspection-sdk/introspection-node/mastra`
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { Mastra } from "@mastra/core/mastra";
|
|
14
|
+
* import { IntrospectionMastraExporter } from "@introspection-sdk/introspection-node/mastra";
|
|
15
|
+
*
|
|
16
|
+
* const mastra = new Mastra({
|
|
17
|
+
* agents: { myAgent },
|
|
18
|
+
* observability: {
|
|
19
|
+
* configs: {
|
|
20
|
+
* otel: {
|
|
21
|
+
* serviceName: "my-mastra-app",
|
|
22
|
+
* exporters: [new IntrospectionMastraExporter()],
|
|
23
|
+
* },
|
|
24
|
+
* },
|
|
25
|
+
* },
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
import { BaseExporter } from "@mastra/observability";
|
|
30
|
+
import type { TracingEvent, InitExporterOptions } from "@mastra/core/observability";
|
|
31
|
+
import { type SpanExporter, type IdGenerator } from "@opentelemetry/sdk-trace-base";
|
|
32
|
+
/** Advanced options for testing and customization. */
|
|
33
|
+
export interface MastraExporterAdvancedOptions {
|
|
34
|
+
/** Custom span exporter for testing. */
|
|
35
|
+
spanExporter?: SpanExporter;
|
|
36
|
+
/** Custom ID generator for testing. */
|
|
37
|
+
idGenerator?: IdGenerator;
|
|
38
|
+
/** Use SimpleSpanProcessor instead of BatchSpanProcessor. */
|
|
39
|
+
useSimpleSpanProcessor?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/** Configuration for {@link IntrospectionMastraExporter}. */
|
|
42
|
+
export interface IntrospectionMastraExporterOptions {
|
|
43
|
+
/** Authentication token (env: INTROSPECTION_TOKEN). */
|
|
44
|
+
token?: string;
|
|
45
|
+
/** Base URL for the API (env: INTROSPECTION_BASE_OTEL_URL). */
|
|
46
|
+
baseUrl?: string;
|
|
47
|
+
/** Additional headers to include in requests. */
|
|
48
|
+
additionalHeaders?: Record<string, string>;
|
|
49
|
+
/** Enable debug logging. */
|
|
50
|
+
debug?: boolean;
|
|
51
|
+
/** Advanced options for testing. */
|
|
52
|
+
advanced?: MastraExporterAdvancedOptions;
|
|
53
|
+
}
|
|
54
|
+
export declare class IntrospectionMastraExporter extends BaseExporter {
|
|
55
|
+
name: string;
|
|
56
|
+
private _options;
|
|
57
|
+
private _tracerProvider?;
|
|
58
|
+
private _tracer?;
|
|
59
|
+
private _conversationIds;
|
|
60
|
+
private _rootSpans;
|
|
61
|
+
constructor(options?: IntrospectionMastraExporterOptions);
|
|
62
|
+
/**
|
|
63
|
+
* Called by Mastra after the instance is fully configured.
|
|
64
|
+
* We defer TracerProvider creation to here so we can use the service name.
|
|
65
|
+
*/
|
|
66
|
+
init(options: InitExporterOptions): void;
|
|
67
|
+
private _initProvider;
|
|
68
|
+
protected _exportTracingEvent(event: TracingEvent): Promise<void>;
|
|
69
|
+
flush(): Promise<void>;
|
|
70
|
+
shutdown(): Promise<void>;
|
|
71
|
+
private _exportSpan;
|
|
72
|
+
/** Ensure a root OTel span exists for this Mastra trace.
|
|
73
|
+
* Events arrive in end-order (children first, agent_run last),
|
|
74
|
+
* so we create a synthetic root on first encounter. */
|
|
75
|
+
private _ensureRoot;
|
|
76
|
+
private _createSpan;
|
|
77
|
+
private _exportAgentRun;
|
|
78
|
+
private _exportModelStep;
|
|
79
|
+
private _exportToolCall;
|
|
80
|
+
private _getConversationId;
|
|
81
|
+
private _convertInput;
|
|
82
|
+
private _convertOutput;
|
|
83
|
+
/** Extract plain text from a message content field (string, array of parts, or AIv5 parts). */
|
|
84
|
+
private _extractTextContent;
|
|
85
|
+
private _extractParts;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=mastra-exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mastra-exporter.d.ts","sourceRoot":"","sources":["../../src/otel/mastra-exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EAEpB,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AAkBvC,sDAAsD;AACtD,MAAM,WAAW,6BAA6B;IAC5C,wCAAwC;IACxC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,uCAAuC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,6DAA6D;IAC7D,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,6DAA6D;AAC7D,MAAM,WAAW,kCAAkC;IACjD,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,4BAA4B;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,6BAA6B,CAAC;CAC1C;AAMD,qBAAa,2BAA4B,SAAQ,YAAY;IAC3D,IAAI,SAAmB;IAEvB,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,OAAO,CAAC,CAA+C;IAC/D,OAAO,CAAC,gBAAgB,CAAkC;IAE1D,OAAO,CAAC,UAAU,CAAoC;gBAE1C,OAAO,GAAE,kCAAuC;IAU5D;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IASxC,OAAO,CAAC,aAAa;cA4EL,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAajE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,OAAO,CAAC,WAAW;IAsBnB;;4DAEwD;IACxD,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,eAAe;IAuDvB,OAAO,CAAC,gBAAgB;IAgJxB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,aAAa;IAuDrB,OAAO,CAAC,cAAc;IA6CtB,+FAA+F;IAC/F,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,aAAa;CA6DtB"}
|