neatlogs 1.1.6 → 1.1.7
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 +16 -27
- package/dist/ai-sdk.cjs +142 -54
- package/dist/ai-sdk.cjs.map +1 -1
- package/dist/ai-sdk.mjs +145 -53
- package/dist/ai-sdk.mjs.map +1 -1
- package/dist/anthropic.cjs +65 -29
- package/dist/anthropic.cjs.map +1 -1
- package/dist/anthropic.mjs +73 -36
- package/dist/anthropic.mjs.map +1 -1
- package/dist/azure-openai.cjs +65 -29
- package/dist/azure-openai.cjs.map +1 -1
- package/dist/azure-openai.mjs +73 -36
- package/dist/azure-openai.mjs.map +1 -1
- package/dist/bedrock.cjs +65 -29
- package/dist/bedrock.cjs.map +1 -1
- package/dist/bedrock.mjs +73 -36
- package/dist/bedrock.mjs.map +1 -1
- package/dist/claude-agent-sdk.cjs +55 -15
- package/dist/claude-agent-sdk.cjs.map +1 -1
- package/dist/claude-agent-sdk.mjs +52 -8
- package/dist/claude-agent-sdk.mjs.map +1 -1
- package/dist/google-genai.cjs +69 -35
- package/dist/google-genai.cjs.map +1 -1
- package/dist/google-genai.mjs +77 -42
- package/dist/google-genai.mjs.map +1 -1
- package/dist/index.cjs +951 -682
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +44 -2
- package/dist/index.mjs +881 -609
- package/dist/index.mjs.map +1 -1
- package/dist/langchain.cjs +46 -12
- package/dist/langchain.cjs.map +1 -1
- package/dist/langchain.mjs +54 -19
- package/dist/langchain.mjs.map +1 -1
- package/dist/mastra-wrap.cjs +318 -46
- package/dist/mastra-wrap.cjs.map +1 -1
- package/dist/mastra-wrap.mjs +319 -41
- package/dist/mastra-wrap.mjs.map +1 -1
- package/dist/openai-agents.cjs +45 -9
- package/dist/openai-agents.cjs.map +1 -1
- package/dist/openai-agents.mjs +45 -5
- package/dist/openai-agents.mjs.map +1 -1
- package/dist/openai.cjs +65 -29
- package/dist/openai.cjs.map +1 -1
- package/dist/openai.mjs +73 -36
- package/dist/openai.mjs.map +1 -1
- package/dist/opencode-plugin.cjs +1 -1
- package/dist/opencode-plugin.cjs.map +1 -1
- package/dist/opencode-plugin.mjs +1 -1
- package/dist/opencode-plugin.mjs.map +1 -1
- package/dist/openrouter-agent.cjs +48 -12
- package/dist/openrouter-agent.cjs.map +1 -1
- package/dist/openrouter-agent.mjs +56 -19
- package/dist/openrouter-agent.mjs.map +1 -1
- package/dist/pi-agent.cjs +45 -9
- package/dist/pi-agent.cjs.map +1 -1
- package/dist/pi-agent.mjs +45 -6
- package/dist/pi-agent.mjs.map +1 -1
- package/dist/strands.cjs +4 -136
- package/dist/strands.cjs.map +1 -1
- package/dist/strands.d.ts +5 -24
- package/dist/strands.mjs +4 -136
- package/dist/strands.mjs.map +1 -1
- package/dist/vertex-ai.cjs +69 -35
- package/dist/vertex-ai.cjs.map +1 -1
- package/dist/vertex-ai.mjs +77 -42
- package/dist/vertex-ai.mjs.map +1 -1
- package/package.json +2 -7
package/dist/vertex-ai.mjs
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
// src/vertex-ai.ts
|
|
2
|
-
import {
|
|
2
|
+
import { SpanStatusCode as SpanStatusCode3 } from "@opentelemetry/api";
|
|
3
3
|
|
|
4
4
|
// src/core/auto-root.ts
|
|
5
5
|
import {
|
|
6
|
-
trace as otelTrace3
|
|
7
|
-
context as otelContext3
|
|
6
|
+
trace as otelTrace3
|
|
8
7
|
} from "@opentelemetry/api";
|
|
9
8
|
|
|
10
9
|
// src/core/context.ts
|
|
11
10
|
import {
|
|
12
|
-
trace as otelTrace2,
|
|
13
|
-
context as otelContext2,
|
|
14
11
|
createContextKey,
|
|
15
|
-
ROOT_CONTEXT,
|
|
12
|
+
ROOT_CONTEXT as ROOT_CONTEXT3,
|
|
16
13
|
SpanStatusCode as SpanStatusCode2
|
|
17
14
|
} from "@opentelemetry/api";
|
|
18
15
|
|
|
@@ -67,9 +64,6 @@ function getLogger() {
|
|
|
67
64
|
// src/core/mask.ts
|
|
68
65
|
var logger = getLogger();
|
|
69
66
|
|
|
70
|
-
// src/core/end-user.ts
|
|
71
|
-
import { trace as otelTrace, context as otelContext } from "@opentelemetry/api";
|
|
72
|
-
|
|
73
67
|
// src/core/identity.ts
|
|
74
68
|
import { AsyncLocalStorage as AsyncLocalStorage2 } from "async_hooks";
|
|
75
69
|
var _GLOBAL_KEY = /* @__PURE__ */ Symbol.for("neatlogs.identity.storage");
|
|
@@ -85,6 +79,51 @@ function currentEndUserMetadata() {
|
|
|
85
79
|
return _storage.getStore()?.endUserMetadata;
|
|
86
80
|
}
|
|
87
81
|
|
|
82
|
+
// src/core/provider.ts
|
|
83
|
+
import { AsyncLocalStorage as AsyncLocalStorage3 } from "async_hooks";
|
|
84
|
+
import {
|
|
85
|
+
ROOT_CONTEXT,
|
|
86
|
+
INVALID_SPAN_CONTEXT,
|
|
87
|
+
trace as otelTrace
|
|
88
|
+
} from "@opentelemetry/api";
|
|
89
|
+
var PRIVATE_SPAN_STORAGE_KEY = /* @__PURE__ */ Symbol.for(
|
|
90
|
+
"neatlogs.private_span_async_local_storage"
|
|
91
|
+
);
|
|
92
|
+
var PRIVATE_PROVIDER_STATE_KEY = /* @__PURE__ */ Symbol.for(
|
|
93
|
+
"neatlogs.private_provider_state"
|
|
94
|
+
);
|
|
95
|
+
var neatlogsGlobal = globalThis;
|
|
96
|
+
var privateContextStorage = neatlogsGlobal[PRIVATE_SPAN_STORAGE_KEY] ?? (neatlogsGlobal[PRIVATE_SPAN_STORAGE_KEY] = new AsyncLocalStorage3());
|
|
97
|
+
var providerState = neatlogsGlobal[PRIVATE_PROVIDER_STATE_KEY] ?? (neatlogsGlobal[PRIVATE_PROVIDER_STATE_KEY] = {
|
|
98
|
+
provider: null
|
|
99
|
+
});
|
|
100
|
+
var preInitTracer = {
|
|
101
|
+
startSpan() {
|
|
102
|
+
return otelTrace.wrapSpanContext(INVALID_SPAN_CONTEXT);
|
|
103
|
+
},
|
|
104
|
+
startActiveSpan(_name, arg2, arg3, arg4) {
|
|
105
|
+
const fn = typeof arg2 === "function" ? arg2 : typeof arg3 === "function" ? arg3 : arg4;
|
|
106
|
+
return fn(otelTrace.wrapSpanContext(INVALID_SPAN_CONTEXT));
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
function getNeatlogsTracer(name) {
|
|
110
|
+
return providerState.provider?.getTracer(name) ?? preInitTracer;
|
|
111
|
+
}
|
|
112
|
+
function getNeatlogsActiveContext() {
|
|
113
|
+
return privateContextStorage.getStore() ?? ROOT_CONTEXT;
|
|
114
|
+
}
|
|
115
|
+
function getActiveNeatlogsSpan() {
|
|
116
|
+
return otelTrace.getSpan(getNeatlogsActiveContext());
|
|
117
|
+
}
|
|
118
|
+
function getNeatlogsParentContext(baseContext) {
|
|
119
|
+
return baseContext ?? getNeatlogsActiveContext();
|
|
120
|
+
}
|
|
121
|
+
function withNeatlogsSpan(span, fn, baseContext) {
|
|
122
|
+
const base = baseContext ?? getNeatlogsActiveContext();
|
|
123
|
+
const ctx = otelTrace.setSpan(base, span);
|
|
124
|
+
return privateContextStorage.run(ctx, fn);
|
|
125
|
+
}
|
|
126
|
+
|
|
88
127
|
// src/core/end-user.ts
|
|
89
128
|
var logger2 = getLogger();
|
|
90
129
|
var END_USER_ID_KEY = "neatlogs.end_user.id";
|
|
@@ -133,7 +172,7 @@ function applySessionAttributes(span, sessionId, isRoot = true) {
|
|
|
133
172
|
}
|
|
134
173
|
|
|
135
174
|
// src/decorators/base.ts
|
|
136
|
-
import {
|
|
175
|
+
import { ROOT_CONTEXT as ROOT_CONTEXT2, SpanStatusCode } from "@opentelemetry/api";
|
|
137
176
|
var logger4 = getLogger();
|
|
138
177
|
|
|
139
178
|
// src/core/context.ts
|
|
@@ -198,11 +237,11 @@ var AutoRootTracer = class {
|
|
|
198
237
|
const kind = String(
|
|
199
238
|
options?.attributes?.["neatlogs.span.kind"] ?? ""
|
|
200
239
|
).toLowerCase();
|
|
201
|
-
const ctx = context ??
|
|
202
|
-
const parent =
|
|
240
|
+
const ctx = context ?? getNeatlogsParentContext();
|
|
241
|
+
const parent = getActiveNeatlogsSpan();
|
|
203
242
|
const needsRoot = autoRootEnabled() && !ROOT_KINDS.has(kind) && !(parent !== void 0 && parent.isRecording());
|
|
204
243
|
if (!needsRoot) {
|
|
205
|
-
return this._tracer.startSpan(name, options,
|
|
244
|
+
return this._tracer.startSpan(name, options, ctx);
|
|
206
245
|
}
|
|
207
246
|
const root = this._tracer.startSpan(
|
|
208
247
|
resolveRootWorkflowName(),
|
|
@@ -221,7 +260,7 @@ var AutoRootTracer = class {
|
|
|
221
260
|
));
|
|
222
261
|
};
|
|
223
262
|
function getProviderTracer(name) {
|
|
224
|
-
return new AutoRootTracer(
|
|
263
|
+
return new AutoRootTracer(getNeatlogsTracer(name));
|
|
225
264
|
}
|
|
226
265
|
|
|
227
266
|
// src/vertex-ai.ts
|
|
@@ -233,8 +272,8 @@ function wrapVertexAI(client) {
|
|
|
233
272
|
}
|
|
234
273
|
function traceTool(name, fn) {
|
|
235
274
|
return async function tracedTool(args) {
|
|
236
|
-
const tracer =
|
|
237
|
-
|
|
275
|
+
const tracer = getNeatlogsTracer(TRACER_NAME);
|
|
276
|
+
const span = tracer.startSpan(
|
|
238
277
|
`tool.${name}`,
|
|
239
278
|
{
|
|
240
279
|
attributes: {
|
|
@@ -243,21 +282,21 @@ function traceTool(name, fn) {
|
|
|
243
282
|
"input.value": safeStringify(args)
|
|
244
283
|
}
|
|
245
284
|
},
|
|
246
|
-
|
|
247
|
-
async (span) => {
|
|
248
|
-
try {
|
|
249
|
-
const result = await fn(args);
|
|
250
|
-
span.setAttribute("output.value", safeStringify(result));
|
|
251
|
-
span.setStatus({ code: SpanStatusCode3.OK });
|
|
252
|
-
return result;
|
|
253
|
-
} catch (err) {
|
|
254
|
-
recordError(span, err);
|
|
255
|
-
throw err;
|
|
256
|
-
} finally {
|
|
257
|
-
span.end();
|
|
258
|
-
}
|
|
259
|
-
}
|
|
285
|
+
getNeatlogsParentContext()
|
|
260
286
|
);
|
|
287
|
+
return withNeatlogsSpan(span, async () => {
|
|
288
|
+
try {
|
|
289
|
+
const result = await fn(args);
|
|
290
|
+
span.setAttribute("output.value", safeStringify(result));
|
|
291
|
+
span.setStatus({ code: SpanStatusCode3.OK });
|
|
292
|
+
return result;
|
|
293
|
+
} catch (err) {
|
|
294
|
+
recordError(span, err);
|
|
295
|
+
throw err;
|
|
296
|
+
} finally {
|
|
297
|
+
span.end();
|
|
298
|
+
}
|
|
299
|
+
});
|
|
261
300
|
};
|
|
262
301
|
}
|
|
263
302
|
function wrapNamespace(target, path) {
|
|
@@ -319,15 +358,14 @@ function tracedChatSend(original, chat, params, rest, isStream) {
|
|
|
319
358
|
"neatlogs.llm.model_name": model,
|
|
320
359
|
"neatlogs.llm.is_streaming": isStream
|
|
321
360
|
}
|
|
322
|
-
},
|
|
361
|
+
}, getNeatlogsParentContext());
|
|
323
362
|
const message = params?.message ?? params;
|
|
324
363
|
span.setAttribute("neatlogs.llm.input_messages.0.role", "user");
|
|
325
364
|
span.setAttribute(
|
|
326
365
|
"neatlogs.llm.input_messages.0.content",
|
|
327
366
|
typeof message === "string" ? message : safeStringify(message)
|
|
328
367
|
);
|
|
329
|
-
const
|
|
330
|
-
const result = otelContext4.with(ctx, () => original(params, ...rest));
|
|
368
|
+
const result = withNeatlogsSpan(span, () => original(params, ...rest));
|
|
331
369
|
return Promise.resolve(result).then(
|
|
332
370
|
(response) => {
|
|
333
371
|
if (isStream) return wrapStream(response, span);
|
|
@@ -350,9 +388,8 @@ function tracedEmbedContent(original) {
|
|
|
350
388
|
"neatlogs.embedding.model_name": opts?.model ?? "",
|
|
351
389
|
"neatlogs.embedding.text": safeStringify(opts?.contents ?? "")
|
|
352
390
|
}
|
|
353
|
-
},
|
|
354
|
-
const
|
|
355
|
-
const result = otelContext4.with(ctx, () => original(opts, ...rest));
|
|
391
|
+
}, getNeatlogsParentContext());
|
|
392
|
+
const result = withNeatlogsSpan(span, () => original(opts, ...rest));
|
|
356
393
|
return Promise.resolve(result).then(
|
|
357
394
|
(response) => {
|
|
358
395
|
const embeddings = response?.embeddings;
|
|
@@ -382,9 +419,8 @@ function tracedCountTokens(original) {
|
|
|
382
419
|
"neatlogs.llm.task": "count_tokens",
|
|
383
420
|
"neatlogs.llm.model_name": opts?.model ?? ""
|
|
384
421
|
}
|
|
385
|
-
},
|
|
386
|
-
const
|
|
387
|
-
const result = otelContext4.with(ctx, () => original(opts, ...rest));
|
|
422
|
+
}, getNeatlogsParentContext());
|
|
423
|
+
const result = withNeatlogsSpan(span, () => original(opts, ...rest));
|
|
388
424
|
return Promise.resolve(result).then(
|
|
389
425
|
(response) => {
|
|
390
426
|
if (response?.totalTokens != null) span.setAttribute("neatlogs.llm.token_count.prompt", response.totalTokens);
|
|
@@ -411,10 +447,9 @@ function tracedGenerateContent(original, isStream) {
|
|
|
411
447
|
"neatlogs.llm.model_name": model,
|
|
412
448
|
"neatlogs.llm.is_streaming": isStream
|
|
413
449
|
}
|
|
414
|
-
},
|
|
450
|
+
}, getNeatlogsParentContext());
|
|
415
451
|
setInputAttributes(span, opts);
|
|
416
|
-
const
|
|
417
|
-
const result = otelContext4.with(ctx, () => original(opts, ...rest));
|
|
452
|
+
const result = withNeatlogsSpan(span, () => original(opts, ...rest));
|
|
418
453
|
return Promise.resolve(result).then(
|
|
419
454
|
(response) => {
|
|
420
455
|
if (isStream) {
|