neatlogs 1.1.6 → 1.1.8

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.
Files changed (68) hide show
  1. package/README.md +16 -27
  2. package/dist/ai-sdk.cjs +142 -54
  3. package/dist/ai-sdk.cjs.map +1 -1
  4. package/dist/ai-sdk.mjs +145 -53
  5. package/dist/ai-sdk.mjs.map +1 -1
  6. package/dist/anthropic.cjs +65 -29
  7. package/dist/anthropic.cjs.map +1 -1
  8. package/dist/anthropic.mjs +73 -36
  9. package/dist/anthropic.mjs.map +1 -1
  10. package/dist/azure-openai.cjs +65 -29
  11. package/dist/azure-openai.cjs.map +1 -1
  12. package/dist/azure-openai.mjs +73 -36
  13. package/dist/azure-openai.mjs.map +1 -1
  14. package/dist/bedrock.cjs +65 -29
  15. package/dist/bedrock.cjs.map +1 -1
  16. package/dist/bedrock.mjs +73 -36
  17. package/dist/bedrock.mjs.map +1 -1
  18. package/dist/claude-agent-sdk.cjs +55 -15
  19. package/dist/claude-agent-sdk.cjs.map +1 -1
  20. package/dist/claude-agent-sdk.mjs +52 -8
  21. package/dist/claude-agent-sdk.mjs.map +1 -1
  22. package/dist/google-genai.cjs +69 -35
  23. package/dist/google-genai.cjs.map +1 -1
  24. package/dist/google-genai.mjs +77 -42
  25. package/dist/google-genai.mjs.map +1 -1
  26. package/dist/index.cjs +963 -682
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.ts +44 -2
  29. package/dist/index.mjs +893 -609
  30. package/dist/index.mjs.map +1 -1
  31. package/dist/langchain.cjs +46 -12
  32. package/dist/langchain.cjs.map +1 -1
  33. package/dist/langchain.mjs +54 -19
  34. package/dist/langchain.mjs.map +1 -1
  35. package/dist/mastra-wrap.cjs +330 -46
  36. package/dist/mastra-wrap.cjs.map +1 -1
  37. package/dist/mastra-wrap.mjs +331 -41
  38. package/dist/mastra-wrap.mjs.map +1 -1
  39. package/dist/openai-agents.cjs +45 -9
  40. package/dist/openai-agents.cjs.map +1 -1
  41. package/dist/openai-agents.mjs +45 -5
  42. package/dist/openai-agents.mjs.map +1 -1
  43. package/dist/openai.cjs +65 -29
  44. package/dist/openai.cjs.map +1 -1
  45. package/dist/openai.mjs +73 -36
  46. package/dist/openai.mjs.map +1 -1
  47. package/dist/opencode-plugin.cjs +1 -1
  48. package/dist/opencode-plugin.cjs.map +1 -1
  49. package/dist/opencode-plugin.mjs +1 -1
  50. package/dist/opencode-plugin.mjs.map +1 -1
  51. package/dist/openrouter-agent.cjs +48 -12
  52. package/dist/openrouter-agent.cjs.map +1 -1
  53. package/dist/openrouter-agent.mjs +56 -19
  54. package/dist/openrouter-agent.mjs.map +1 -1
  55. package/dist/pi-agent.cjs +45 -9
  56. package/dist/pi-agent.cjs.map +1 -1
  57. package/dist/pi-agent.mjs +45 -6
  58. package/dist/pi-agent.mjs.map +1 -1
  59. package/dist/strands.cjs +4 -136
  60. package/dist/strands.cjs.map +1 -1
  61. package/dist/strands.d.ts +5 -24
  62. package/dist/strands.mjs +4 -136
  63. package/dist/strands.mjs.map +1 -1
  64. package/dist/vertex-ai.cjs +69 -35
  65. package/dist/vertex-ai.cjs.map +1 -1
  66. package/dist/vertex-ai.mjs +77 -42
  67. package/dist/vertex-ai.mjs.map +1 -1
  68. package/package.json +2 -7
package/dist/bedrock.mjs CHANGED
@@ -1,18 +1,15 @@
1
1
  // src/bedrock.ts
2
- import { trace as trace2, context as otelContext4, SpanStatusCode as SpanStatusCode3 } from "@opentelemetry/api";
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 { trace, SpanStatusCode } from "@opentelemetry/api";
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 ?? otelContext3.active();
202
- const parent = otelTrace3.getSpan(ctx);
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, context);
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(otelTrace3.getTracer(name));
263
+ return new AutoRootTracer(getNeatlogsTracer(name));
225
264
  }
226
265
 
227
266
  // src/bedrock.ts
@@ -229,8 +268,8 @@ var TRACER_NAME = "neatlogs.bedrock";
229
268
  var PROVIDER = "bedrock";
230
269
  function traceTool(name, fn) {
231
270
  return async function tracedTool(args) {
232
- const tracer = getProviderTracer(TRACER_NAME);
233
- return tracer.startActiveSpan(
271
+ const tracer = getNeatlogsTracer(TRACER_NAME);
272
+ const span = tracer.startSpan(
234
273
  `tool.${name}`,
235
274
  {
236
275
  attributes: {
@@ -239,21 +278,21 @@ function traceTool(name, fn) {
239
278
  "input.value": safeStringify(args)
240
279
  }
241
280
  },
242
- otelContext4.active(),
243
- async (span) => {
244
- try {
245
- const result = await fn(args);
246
- span.setAttribute("output.value", safeStringify(result));
247
- span.setStatus({ code: SpanStatusCode3.OK });
248
- return result;
249
- } catch (err) {
250
- recordError(span, err);
251
- throw err;
252
- } finally {
253
- span.end();
254
- }
255
- }
281
+ getNeatlogsParentContext()
256
282
  );
283
+ return withNeatlogsSpan(span, async () => {
284
+ try {
285
+ const result = await fn(args);
286
+ span.setAttribute("output.value", safeStringify(result));
287
+ span.setStatus({ code: SpanStatusCode3.OK });
288
+ return result;
289
+ } catch (err) {
290
+ recordError(span, err);
291
+ throw err;
292
+ } finally {
293
+ span.end();
294
+ }
295
+ });
257
296
  };
258
297
  }
259
298
  function wrapBedrock(client) {
@@ -298,7 +337,7 @@ function startSpan(name, modelId, isStream) {
298
337
  "neatlogs.llm.model_name": String(modelId ?? ""),
299
338
  "neatlogs.llm.is_streaming": isStream
300
339
  }
301
- }, otelContext4.active());
340
+ }, getNeatlogsParentContext());
302
341
  }
303
342
  function tracedConverse(originalSend, command, input, rest, isStream) {
304
343
  const span = startSpan(
@@ -307,8 +346,7 @@ function tracedConverse(originalSend, command, input, rest, isStream) {
307
346
  isStream
308
347
  );
309
348
  setConverseInput(span, input);
310
- const ctx = trace2.setSpan(otelContext4.active(), span);
311
- const promise = otelContext4.with(ctx, () => originalSend(command, ...rest));
349
+ const promise = withNeatlogsSpan(span, () => originalSend(command, ...rest));
312
350
  return promise.then(
313
351
  (response) => {
314
352
  if (isStream) {
@@ -488,7 +526,7 @@ function tracedInvokeModel(originalSend, command, input, rest, isStream) {
488
526
  "neatlogs.llm.provider": PROVIDER,
489
527
  "neatlogs.embedding.model_name": String(input?.modelId ?? "")
490
528
  }
491
- }, otelContext4.active());
529
+ }, getNeatlogsParentContext());
492
530
  const text = bodyIn?.inputText ?? bodyIn?.texts ?? bodyIn?.input_text;
493
531
  if (text) {
494
532
  span.setAttribute("neatlogs.embedding.text", typeof text === "string" ? text : safeStringify(text));
@@ -501,8 +539,7 @@ function tracedInvokeModel(originalSend, command, input, rest, isStream) {
501
539
  );
502
540
  setInvokeInput(span, vendor, bodyIn);
503
541
  }
504
- const ctx = trace2.setSpan(otelContext4.active(), span);
505
- const promise = otelContext4.with(ctx, () => originalSend(command, ...rest));
542
+ const promise = withNeatlogsSpan(span, () => originalSend(command, ...rest));
506
543
  return promise.then(
507
544
  (response) => {
508
545
  if (isStream) {