trodo-node 1.2.0 → 2.2.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.
Files changed (64) hide show
  1. package/README.md +182 -2
  2. package/dist/cjs/TrodoClient.js +85 -102
  3. package/dist/cjs/TrodoClient.js.map +1 -1
  4. package/dist/cjs/api/ApiClient.js +20 -2
  5. package/dist/cjs/api/ApiClient.js.map +1 -1
  6. package/dist/cjs/api/endpoints.js +7 -1
  7. package/dist/cjs/api/endpoints.js.map +1 -1
  8. package/dist/cjs/index.js +115 -29
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/otel/autoInstrument.js +253 -0
  11. package/dist/cjs/otel/autoInstrument.js.map +1 -0
  12. package/dist/cjs/otel/context.js +49 -0
  13. package/dist/cjs/otel/context.js.map +1 -0
  14. package/dist/cjs/otel/helpers.js +254 -0
  15. package/dist/cjs/otel/helpers.js.map +1 -0
  16. package/dist/cjs/otel/processor.js +153 -0
  17. package/dist/cjs/otel/processor.js.map +1 -0
  18. package/dist/cjs/otel/uuid.js +24 -0
  19. package/dist/cjs/otel/uuid.js.map +1 -0
  20. package/dist/cjs/otel/wrapAgent.js +460 -0
  21. package/dist/cjs/otel/wrapAgent.js.map +1 -0
  22. package/dist/esm/TrodoClient.d.ts +44 -11
  23. package/dist/esm/TrodoClient.d.ts.map +1 -1
  24. package/dist/esm/TrodoClient.js +85 -102
  25. package/dist/esm/TrodoClient.js.map +1 -1
  26. package/dist/esm/api/ApiClient.d.ts +9 -1
  27. package/dist/esm/api/ApiClient.d.ts.map +1 -1
  28. package/dist/esm/api/ApiClient.js +20 -2
  29. package/dist/esm/api/ApiClient.js.map +1 -1
  30. package/dist/esm/api/endpoints.d.ts +6 -1
  31. package/dist/esm/api/endpoints.d.ts.map +1 -1
  32. package/dist/esm/api/endpoints.js +7 -1
  33. package/dist/esm/api/endpoints.js.map +1 -1
  34. package/dist/esm/index.d.ts +96 -19
  35. package/dist/esm/index.d.ts.map +1 -1
  36. package/dist/esm/index.js +98 -23
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/otel/autoInstrument.d.ts +61 -0
  39. package/dist/esm/otel/autoInstrument.d.ts.map +1 -0
  40. package/dist/esm/otel/autoInstrument.js +248 -0
  41. package/dist/esm/otel/autoInstrument.js.map +1 -0
  42. package/dist/esm/otel/context.d.ts +26 -0
  43. package/dist/esm/otel/context.d.ts.map +1 -0
  44. package/dist/esm/otel/context.js +44 -0
  45. package/dist/esm/otel/context.js.map +1 -0
  46. package/dist/esm/otel/helpers.d.ts +119 -0
  47. package/dist/esm/otel/helpers.d.ts.map +1 -0
  48. package/dist/esm/otel/helpers.js +244 -0
  49. package/dist/esm/otel/helpers.js.map +1 -0
  50. package/dist/esm/otel/processor.d.ts +104 -0
  51. package/dist/esm/otel/processor.d.ts.map +1 -0
  52. package/dist/esm/otel/processor.js +149 -0
  53. package/dist/esm/otel/processor.js.map +1 -0
  54. package/dist/esm/otel/uuid.d.ts +7 -0
  55. package/dist/esm/otel/uuid.d.ts.map +1 -0
  56. package/dist/esm/otel/uuid.js +21 -0
  57. package/dist/esm/otel/uuid.js.map +1 -0
  58. package/dist/esm/otel/wrapAgent.d.ts +133 -0
  59. package/dist/esm/otel/wrapAgent.d.ts.map +1 -0
  60. package/dist/esm/otel/wrapAgent.js +448 -0
  61. package/dist/esm/otel/wrapAgent.js.map +1 -0
  62. package/dist/esm/types/index.d.ts +24 -48
  63. package/dist/esm/types/index.d.ts.map +1 -1
  64. package/package.json +1 -1
package/dist/cjs/index.js CHANGED
@@ -2,15 +2,49 @@
2
2
  /**
3
3
  * trodo-node — Trodo Analytics SDK for Node.js
4
4
  *
5
- * Usage (singleton):
5
+ * Quick start (any stack):
6
6
  * import trodo from 'trodo-node';
7
- * trodo.init({ siteId: 'your-site-id' });
8
- * const user = trodo.forUser('user-123');
9
- * await user.track('purchase_completed', { amount: 99.99 });
7
+ * trodo.init({ siteId: 'your-site-id' }); // autoInstrument on by default
10
8
  *
11
- * Usage (class):
12
- * import { TrodoClient } from 'trodo-node';
13
- * const client = new TrodoClient({ siteId: 'your-site-id' });
9
+ * // OpenAI / Anthropic / LangChain / Vercel AI SDK — nothing else to do.
10
+ * const { result, runId } = await trodo.wrapAgent(
11
+ * 'customer-support',
12
+ * async (run) => {
13
+ * run.setInput({ query });
14
+ * const answer = await agent.run(query);
15
+ * run.setOutput(answer);
16
+ * return answer;
17
+ * },
18
+ * { distinctId, conversationId },
19
+ * );
20
+ *
21
+ * await trodo.feedback(runId, { satisfaction: 'positive', rating: 5 });
22
+ *
23
+ * Raw-HTTP LLM caller:
24
+ * const resp = await fetch(url, { body }).then(r => r.json());
25
+ * await trodo.trackLlmCall({
26
+ * model: 'gemini-2.5-flash', provider: 'google',
27
+ * inputTokens: resp.usageMetadata.promptTokenCount,
28
+ * outputTokens: resp.usageMetadata.candidatesTokenCount,
29
+ * prompt: body, completion: resp,
30
+ * });
31
+ *
32
+ * Custom tool:
33
+ * const runFunnelQuery = trodo.tool(
34
+ * async (teamId, preset) => { ... },
35
+ * { name: 'run_funnel_query' },
36
+ * );
37
+ *
38
+ * Downstream microservice (join the caller's run instead of creating a new one):
39
+ * // Express:
40
+ * app.use(trodo.expressMiddleware());
41
+ *
42
+ * // Or manually:
43
+ * await trodo.joinRun(
44
+ * headers['x-trodo-run-id'],
45
+ * headers['x-trodo-parent-span-id'],
46
+ * async () => { ... },
47
+ * );
14
48
  */
15
49
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
50
  if (k2 === undefined) k2 = k;
@@ -27,7 +61,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
27
61
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
28
62
  };
29
63
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.people = exports.UserContext = exports.TrodoClient = void 0;
64
+ exports.people = exports.getTracer = exports.retrieval = exports.llm = exports.trace = exports.propagationHeaders = exports.currentSpanId = exports.currentRunId = exports.getActiveContext = exports.UserContext = exports.TrodoClient = void 0;
31
65
  exports.init = init;
32
66
  exports.forUser = forUser;
33
67
  exports.track = track;
@@ -42,17 +76,32 @@ exports.enableAutoEvents = enableAutoEvents;
42
76
  exports.disableAutoEvents = disableAutoEvents;
43
77
  exports.flush = flush;
44
78
  exports.shutdown = shutdown;
45
- exports.track_agent_call = track_agent_call;
46
- exports.track_tool_use = track_tool_use;
47
- exports.track_agent_response = track_agent_response;
48
- exports.track_agent_error = track_agent_error;
49
- exports.track_feedback = track_feedback;
79
+ exports.wrapAgent = wrapAgent;
80
+ exports.withSpan = withSpan;
81
+ exports.joinRun = joinRun;
82
+ exports.startRun = startRun;
83
+ exports.endRun = endRun;
84
+ exports.tool = tool;
85
+ exports.trackLlmCall = trackLlmCall;
86
+ exports.expressMiddleware = expressMiddleware;
87
+ exports.feedback = feedback;
50
88
  var TrodoClient_js_1 = require("./TrodoClient.js");
51
89
  Object.defineProperty(exports, "TrodoClient", { enumerable: true, get: function () { return TrodoClient_js_1.TrodoClient; } });
52
90
  var UserContext_js_1 = require("./UserContext.js");
53
91
  Object.defineProperty(exports, "UserContext", { enumerable: true, get: function () { return UserContext_js_1.UserContext; } });
54
92
  __exportStar(require("./types/index.js"), exports);
55
93
  const TrodoClient_js_2 = require("./TrodoClient.js");
94
+ var context_js_1 = require("./otel/context.js");
95
+ Object.defineProperty(exports, "getActiveContext", { enumerable: true, get: function () { return context_js_1.getActiveContext; } });
96
+ var wrapAgent_js_1 = require("./otel/wrapAgent.js");
97
+ Object.defineProperty(exports, "currentRunId", { enumerable: true, get: function () { return wrapAgent_js_1.currentRunId; } });
98
+ Object.defineProperty(exports, "currentSpanId", { enumerable: true, get: function () { return wrapAgent_js_1.currentSpanId; } });
99
+ const helpers_js_1 = require("./otel/helpers.js");
100
+ Object.defineProperty(exports, "propagationHeaders", { enumerable: true, get: function () { return helpers_js_1.propagationHeaders; } });
101
+ Object.defineProperty(exports, "trace", { enumerable: true, get: function () { return helpers_js_1.trace; } });
102
+ Object.defineProperty(exports, "llm", { enumerable: true, get: function () { return helpers_js_1.llm; } });
103
+ Object.defineProperty(exports, "retrieval", { enumerable: true, get: function () { return helpers_js_1.retrieval; } });
104
+ Object.defineProperty(exports, "getTracer", { enumerable: true, get: function () { return helpers_js_1.getTracer; } });
56
105
  // ============================================================================
57
106
  // Singleton convenience API
58
107
  // ============================================================================
@@ -125,22 +174,51 @@ async function shutdown() {
125
174
  return getClient().shutdown();
126
175
  }
127
176
  // ----------------------------------------------------------------------------
128
- // Agent Analyticssingleton wrappers
177
+ // Agent Runsunified surface
129
178
  // ----------------------------------------------------------------------------
130
- function track_agent_call(props) {
131
- return getClient().track_agent_call(props);
179
+ /**
180
+ * Wrap an async function as an agent run. All OTel-instrumented LLM/tool
181
+ * calls and nested withSpan calls are auto-captured as child spans.
182
+ */
183
+ function wrapAgent(agentName, fn, options) {
184
+ return getClient().wrapAgent(agentName, fn, options);
185
+ }
186
+ /** Create a nested span inside the current run. */
187
+ function withSpan(name, fn, options) {
188
+ return getClient().withSpan(name, fn, options);
189
+ }
190
+ /** Join an existing run owned by a remote service — spans nest under it. */
191
+ function joinRun(runId, parentSpanId, fn, options) {
192
+ return getClient().joinRun(runId, parentSpanId, fn, options);
193
+ }
194
+ /**
195
+ * Open a Run record without a context manager. Returns the runId.
196
+ *
197
+ * Pairs with {@link endRun} for sessions that span multiple processes or
198
+ * HTTP requests. Between startRun and endRun any process can use
199
+ * `joinRun(runId, ...)` to add spans.
200
+ */
201
+ function startRun(agentName, options) {
202
+ return getClient().startRun(agentName, options);
203
+ }
204
+ /** Finalise a Run opened by {@link startRun}. */
205
+ function endRun(runId, options) {
206
+ return getClient().endRun(runId, options);
132
207
  }
133
- function track_tool_use(props) {
134
- return getClient().track_tool_use(props);
208
+ function tool(a, b) {
209
+ return (0, helpers_js_1.tool)(a, b);
135
210
  }
136
- function track_agent_response(props) {
137
- return getClient().track_agent_response(props);
211
+ /** Record a one-shot LLM span for a raw-HTTP caller. */
212
+ function trackLlmCall(params) {
213
+ return getClient().trackLlmCall(params);
138
214
  }
139
- function track_agent_error(props) {
140
- return getClient().track_agent_error(props);
215
+ /** Return an Express/Connect middleware that auto-joins inbound runs. */
216
+ function expressMiddleware() {
217
+ return getClient().expressMiddleware();
141
218
  }
142
- function track_feedback(props) {
143
- return getClient().track_feedback(props);
219
+ /** Attach feedback to a completed run. */
220
+ function feedback(runId, props) {
221
+ return getClient().feedback(runId, props);
144
222
  }
145
223
  // Default export: the singleton namespace (matches frontend SDK pattern)
146
224
  const trodo = {
@@ -159,11 +237,19 @@ const trodo = {
159
237
  disableAutoEvents,
160
238
  flush,
161
239
  shutdown,
162
- track_agent_call,
163
- track_tool_use,
164
- track_agent_response,
165
- track_agent_error,
166
- track_feedback,
240
+ wrapAgent,
241
+ withSpan,
242
+ joinRun,
243
+ startRun,
244
+ endRun,
245
+ tool,
246
+ trace: helpers_js_1.trace,
247
+ llm: helpers_js_1.llm,
248
+ retrieval: helpers_js_1.retrieval,
249
+ getTracer: helpers_js_1.getTracer,
250
+ trackLlmCall,
251
+ expressMiddleware,
252
+ feedback,
167
253
  };
168
254
  exports.default = trodo;
169
255
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.otelSpanToTrodoSpan = otelSpanToTrodoSpan;
4
+ exports.otelAdapter = otelAdapter;
5
+ exports.enableAutoInstrument = enableAutoInstrument;
6
+ const context_js_1 = require("./context.js");
7
+ function hrToIso(hr) {
8
+ if (!hr)
9
+ return undefined;
10
+ const ms = hr[0] * 1000 + Math.floor(hr[1] / 1e6);
11
+ return new Date(ms).toISOString();
12
+ }
13
+ function inferKind(attrs) {
14
+ if (!attrs)
15
+ return 'generic';
16
+ if (attrs['gen_ai.tool.name'])
17
+ return 'tool';
18
+ if (attrs['gen_ai.operation.name'] || attrs['gen_ai.request.model'])
19
+ return 'llm';
20
+ if (attrs['db.system'] || attrs['retrieval.query'])
21
+ return 'retrieval';
22
+ return 'generic';
23
+ }
24
+ function pickNum(attrs, keys) {
25
+ for (const k of keys) {
26
+ const v = attrs[k];
27
+ if (typeof v === 'number')
28
+ return v;
29
+ if (typeof v === 'string' && v !== '' && !isNaN(Number(v)))
30
+ return Number(v);
31
+ }
32
+ return undefined;
33
+ }
34
+ function pickStr(attrs, keys) {
35
+ for (const k of keys) {
36
+ const v = attrs[k];
37
+ if (typeof v === 'string' && v.length)
38
+ return v;
39
+ }
40
+ return undefined;
41
+ }
42
+ /**
43
+ * Translate an OTel span to our TrodoSpan shape using GenAI semantic
44
+ * conventions (gen_ai.*). Accepts both stable and legacy/experimental keys.
45
+ */
46
+ function otelSpanToTrodoSpan(otel) {
47
+ const ctx = (0, context_js_1.getActiveContext)();
48
+ if (!ctx)
49
+ return null; // outside of wrapAgent — drop
50
+ const sc = otel.spanContext?.();
51
+ if (!sc)
52
+ return null;
53
+ const attrs = otel.attributes || {};
54
+ const kind = inferKind(attrs);
55
+ const startedAt = hrToIso(otel.startTime) || new Date().toISOString();
56
+ const endedAt = hrToIso(otel.endTime);
57
+ const durationMs = otel.startTime && otel.endTime
58
+ ? Math.max(0, (otel.endTime[0] - otel.startTime[0]) * 1000 +
59
+ (otel.endTime[1] - otel.startTime[1]) / 1e6)
60
+ : undefined;
61
+ const model = pickStr(attrs, [
62
+ 'gen_ai.request.model',
63
+ 'gen_ai.response.model',
64
+ 'llm.request.model',
65
+ ]);
66
+ const provider = pickStr(attrs, ['gen_ai.system', 'llm.vendor']);
67
+ const inputTokens = pickNum(attrs, [
68
+ 'gen_ai.usage.input_tokens',
69
+ 'gen_ai.usage.prompt_tokens',
70
+ 'llm.usage.prompt_tokens',
71
+ ]);
72
+ const outputTokens = pickNum(attrs, [
73
+ 'gen_ai.usage.output_tokens',
74
+ 'gen_ai.usage.completion_tokens',
75
+ 'llm.usage.completion_tokens',
76
+ ]);
77
+ const temperature = pickNum(attrs, ['gen_ai.request.temperature']);
78
+ const toolName = pickStr(attrs, ['gen_ai.tool.name']);
79
+ const input = pickStr(attrs, ['gen_ai.prompt', 'llm.prompts']);
80
+ const output = pickStr(attrs, ['gen_ai.completion', 'llm.completion']);
81
+ const span = {
82
+ span_id: sc.spanId,
83
+ run_id: ctx.runId,
84
+ parent_span_id: otel.parentSpanId || ctx.spanId,
85
+ kind,
86
+ name: otel.name,
87
+ status: otel.status?.code === 2 ? 'error' : 'ok',
88
+ started_at: startedAt,
89
+ ended_at: endedAt,
90
+ duration_ms: durationMs,
91
+ model,
92
+ provider,
93
+ input_tokens: inputTokens,
94
+ output_tokens: outputTokens,
95
+ temperature,
96
+ tool_name: toolName,
97
+ input,
98
+ output,
99
+ attributes: attrs,
100
+ };
101
+ return span;
102
+ }
103
+ /**
104
+ * Adapter that lets the OTel SDK push spans into our processor.
105
+ * Register with `sdk.addSpanProcessor(otelAdapter(processor))` in your app
106
+ * bootstrap.
107
+ */
108
+ function otelAdapter(processor) {
109
+ return {
110
+ onStart() {
111
+ /* noop */
112
+ },
113
+ onEnd(otel) {
114
+ const span = otelSpanToTrodoSpan(otel);
115
+ if (span)
116
+ processor.enqueueSpan(span);
117
+ },
118
+ async forceFlush() {
119
+ await processor.forceFlush();
120
+ },
121
+ async shutdown() {
122
+ await processor.shutdown();
123
+ },
124
+ };
125
+ }
126
+ function buildInstrumentors() {
127
+ return [
128
+ {
129
+ id: 'anthropic',
130
+ factory: () => {
131
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
132
+ const m = require('@opentelemetry/instrumentation-anthropic');
133
+ return new m.AnthropicInstrumentation();
134
+ },
135
+ },
136
+ {
137
+ id: 'openai',
138
+ factory: () => {
139
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
140
+ const m = require('@opentelemetry/instrumentation-openai');
141
+ return new m.OpenAIInstrumentation();
142
+ },
143
+ },
144
+ {
145
+ id: 'langchain',
146
+ factory: () => {
147
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
148
+ const m = require('@opentelemetry/instrumentation-langchain');
149
+ return new m.LangChainInstrumentation();
150
+ },
151
+ },
152
+ {
153
+ id: 'bedrock',
154
+ factory: () => {
155
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
156
+ const m = require('@opentelemetry/instrumentation-bedrock');
157
+ return new m.BedrockInstrumentation();
158
+ },
159
+ },
160
+ {
161
+ id: 'cohere',
162
+ factory: () => {
163
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
164
+ const m = require('@opentelemetry/instrumentation-cohere');
165
+ return new m.CohereInstrumentation();
166
+ },
167
+ },
168
+ {
169
+ id: 'google-generativeai',
170
+ factory: () => {
171
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
172
+ const m = require('@opentelemetry/instrumentation-google-generativeai');
173
+ return new m.GoogleGenerativeAIInstrumentation();
174
+ },
175
+ },
176
+ {
177
+ id: 'vertexai',
178
+ factory: () => {
179
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
180
+ const m = require('@opentelemetry/instrumentation-vertexai');
181
+ return new m.VertexAIInstrumentation();
182
+ },
183
+ },
184
+ {
185
+ id: 'llama-index',
186
+ factory: () => {
187
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
188
+ const m = require('@opentelemetry/instrumentation-llamaindex');
189
+ return new m.LlamaIndexInstrumentation();
190
+ },
191
+ },
192
+ {
193
+ id: 'http',
194
+ factory: () => {
195
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
196
+ const m = require('@opentelemetry/instrumentation-http');
197
+ return new m.HttpInstrumentation();
198
+ },
199
+ },
200
+ {
201
+ id: 'fetch',
202
+ factory: () => {
203
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
204
+ const m = require('@opentelemetry/instrumentation-fetch');
205
+ return new m.FetchInstrumentation();
206
+ },
207
+ },
208
+ ];
209
+ }
210
+ /**
211
+ * Best-effort: register OTel auto-instrumentations if the user has them
212
+ * installed. This is optional — users can also configure OTel themselves and
213
+ * pass `otelAdapter(processor)` as a span processor.
214
+ *
215
+ * Returns the list of instrumentation ids that were successfully registered.
216
+ *
217
+ * Vercel AI SDK note: if you set `experimental_telemetry: { isEnabled: true,
218
+ * tracer: trace.getTracer('ai') }` on generateText/streamText calls, those
219
+ * spans flow through the SDK-registered OTel SpanProcessor automatically.
220
+ */
221
+ function enableAutoInstrument(opts) {
222
+ const disabled = new Set(opts.disable || []);
223
+ const active = [];
224
+ try {
225
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
226
+ const { NodeSDK } = require('@opentelemetry/sdk-node');
227
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
228
+ const { Resource } = require('@opentelemetry/resources');
229
+ const instrumentations = [];
230
+ for (const spec of buildInstrumentors()) {
231
+ if (disabled.has(spec.id))
232
+ continue;
233
+ try {
234
+ instrumentations.push(spec.factory());
235
+ active.push(spec.id);
236
+ }
237
+ catch {
238
+ /* package not installed — skip */
239
+ }
240
+ }
241
+ const sdk = new NodeSDK({
242
+ resource: new Resource({ 'service.name': 'trodo-agent' }),
243
+ spanProcessor: otelAdapter(opts.processor),
244
+ instrumentations,
245
+ });
246
+ sdk.start();
247
+ }
248
+ catch {
249
+ // @opentelemetry/sdk-node not installed; wrapAgent + withSpan still work.
250
+ }
251
+ return active;
252
+ }
253
+ //# sourceMappingURL=autoInstrument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoInstrument.js","sourceRoot":"","sources":["../../../src/otel/autoInstrument.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getActiveContext = getActiveContext;
4
+ exports.runWithContext = runWithContext;
5
+ exports.runWithContextAsync = runWithContextAsync;
6
+ let AsyncLocalStorageCtor = null;
7
+ try {
8
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
9
+ AsyncLocalStorageCtor = require('node:async_hooks').AsyncLocalStorage;
10
+ }
11
+ catch {
12
+ try {
13
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
14
+ AsyncLocalStorageCtor = require('async_hooks').AsyncLocalStorage;
15
+ }
16
+ catch {
17
+ AsyncLocalStorageCtor = null;
18
+ }
19
+ }
20
+ const als = AsyncLocalStorageCtor ? new AsyncLocalStorageCtor() : null;
21
+ let fallbackStore = null;
22
+ function getActiveContext() {
23
+ if (als)
24
+ return als.getStore() ?? null;
25
+ return fallbackStore;
26
+ }
27
+ function runWithContext(ctx, fn) {
28
+ if (als)
29
+ return als.run(ctx, fn);
30
+ const prev = fallbackStore;
31
+ fallbackStore = ctx;
32
+ try {
33
+ return fn();
34
+ }
35
+ finally {
36
+ fallbackStore = prev;
37
+ }
38
+ }
39
+ /** Async variant — context is preserved across awaits via AsyncLocalStorage. */
40
+ function runWithContextAsync(ctx, fn) {
41
+ if (als)
42
+ return als.run(ctx, fn);
43
+ const prev = fallbackStore;
44
+ fallbackStore = ctx;
45
+ return fn().finally(() => {
46
+ fallbackStore = prev;
47
+ });
48
+ }
49
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/otel/context.ts"],"names":[],"mappings":";;AA2CA,4CAGC;AAED,wCASC;AAGD,kDAUC;AA/CD,IAAI,qBAAqB,GAGb,IAAI,CAAC;AAEjB,IAAI,CAAC;IACH,8DAA8D;IAC9D,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,iBAAiB,CAAC;AACxE,CAAC;AAAC,MAAM,CAAC;IACP,IAAI,CAAC;QACH,8DAA8D;QAC9D,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB,GAAG,IAAI,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,CAAC,IAAI,qBAAqB,EAAqB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1F,IAAI,aAAa,GAA6B,IAAI,CAAC;AAEnD,SAAgB,gBAAgB;IAC9B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC;IACvC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAgB,cAAc,CAAI,GAAsB,EAAE,EAAW;IACnE,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,aAAa,CAAC;IAC3B,aAAa,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;YAAS,CAAC;QACT,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,SAAgB,mBAAmB,CACjC,GAAsB,EACtB,EAAoB;IAEpB,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,aAAa,CAAC;IAC3B,aAAa,GAAG,GAAG,CAAC;IACpB,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QACvB,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}