trodo-node 1.2.0 → 2.1.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 +154 -2
  2. package/dist/cjs/TrodoClient.js +71 -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 +97 -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 +129 -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 +399 -0
  21. package/dist/cjs/otel/wrapAgent.js.map +1 -0
  22. package/dist/esm/TrodoClient.d.ts +34 -11
  23. package/dist/esm/TrodoClient.d.ts.map +1 -1
  24. package/dist/esm/TrodoClient.js +71 -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 +84 -19
  35. package/dist/esm/index.d.ts.map +1 -1
  36. package/dist/esm/index.js +82 -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 +94 -0
  51. package/dist/esm/otel/processor.d.ts.map +1 -0
  52. package/dist/esm/otel/processor.js +125 -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 +100 -0
  59. package/dist/esm/otel/wrapAgent.d.ts.map +1 -0
  60. package/dist/esm/otel/wrapAgent.js +389 -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,30 @@ 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.tool = tool;
83
+ exports.trackLlmCall = trackLlmCall;
84
+ exports.expressMiddleware = expressMiddleware;
85
+ exports.feedback = feedback;
50
86
  var TrodoClient_js_1 = require("./TrodoClient.js");
51
87
  Object.defineProperty(exports, "TrodoClient", { enumerable: true, get: function () { return TrodoClient_js_1.TrodoClient; } });
52
88
  var UserContext_js_1 = require("./UserContext.js");
53
89
  Object.defineProperty(exports, "UserContext", { enumerable: true, get: function () { return UserContext_js_1.UserContext; } });
54
90
  __exportStar(require("./types/index.js"), exports);
55
91
  const TrodoClient_js_2 = require("./TrodoClient.js");
92
+ var context_js_1 = require("./otel/context.js");
93
+ Object.defineProperty(exports, "getActiveContext", { enumerable: true, get: function () { return context_js_1.getActiveContext; } });
94
+ var wrapAgent_js_1 = require("./otel/wrapAgent.js");
95
+ Object.defineProperty(exports, "currentRunId", { enumerable: true, get: function () { return wrapAgent_js_1.currentRunId; } });
96
+ Object.defineProperty(exports, "currentSpanId", { enumerable: true, get: function () { return wrapAgent_js_1.currentSpanId; } });
97
+ const helpers_js_1 = require("./otel/helpers.js");
98
+ Object.defineProperty(exports, "propagationHeaders", { enumerable: true, get: function () { return helpers_js_1.propagationHeaders; } });
99
+ Object.defineProperty(exports, "trace", { enumerable: true, get: function () { return helpers_js_1.trace; } });
100
+ Object.defineProperty(exports, "llm", { enumerable: true, get: function () { return helpers_js_1.llm; } });
101
+ Object.defineProperty(exports, "retrieval", { enumerable: true, get: function () { return helpers_js_1.retrieval; } });
102
+ Object.defineProperty(exports, "getTracer", { enumerable: true, get: function () { return helpers_js_1.getTracer; } });
56
103
  // ============================================================================
57
104
  // Singleton convenience API
58
105
  // ============================================================================
@@ -125,22 +172,37 @@ async function shutdown() {
125
172
  return getClient().shutdown();
126
173
  }
127
174
  // ----------------------------------------------------------------------------
128
- // Agent Analyticssingleton wrappers
175
+ // Agent Runsunified surface
129
176
  // ----------------------------------------------------------------------------
130
- function track_agent_call(props) {
131
- return getClient().track_agent_call(props);
177
+ /**
178
+ * Wrap an async function as an agent run. All OTel-instrumented LLM/tool
179
+ * calls and nested withSpan calls are auto-captured as child spans.
180
+ */
181
+ function wrapAgent(agentName, fn, options) {
182
+ return getClient().wrapAgent(agentName, fn, options);
183
+ }
184
+ /** Create a nested span inside the current run. */
185
+ function withSpan(name, fn, options) {
186
+ return getClient().withSpan(name, fn, options);
187
+ }
188
+ /** Join an existing run owned by a remote service — spans nest under it. */
189
+ function joinRun(runId, parentSpanId, fn, options) {
190
+ return getClient().joinRun(runId, parentSpanId, fn, options);
132
191
  }
133
- function track_tool_use(props) {
134
- return getClient().track_tool_use(props);
192
+ function tool(a, b) {
193
+ return (0, helpers_js_1.tool)(a, b);
135
194
  }
136
- function track_agent_response(props) {
137
- return getClient().track_agent_response(props);
195
+ /** Record a one-shot LLM span for a raw-HTTP caller. */
196
+ function trackLlmCall(params) {
197
+ return getClient().trackLlmCall(params);
138
198
  }
139
- function track_agent_error(props) {
140
- return getClient().track_agent_error(props);
199
+ /** Return an Express/Connect middleware that auto-joins inbound runs. */
200
+ function expressMiddleware() {
201
+ return getClient().expressMiddleware();
141
202
  }
142
- function track_feedback(props) {
143
- return getClient().track_feedback(props);
203
+ /** Attach feedback to a completed run. */
204
+ function feedback(runId, props) {
205
+ return getClient().feedback(runId, props);
144
206
  }
145
207
  // Default export: the singleton namespace (matches frontend SDK pattern)
146
208
  const trodo = {
@@ -159,11 +221,17 @@ const trodo = {
159
221
  disableAutoEvents,
160
222
  flush,
161
223
  shutdown,
162
- track_agent_call,
163
- track_tool_use,
164
- track_agent_response,
165
- track_agent_error,
166
- track_feedback,
224
+ wrapAgent,
225
+ withSpan,
226
+ joinRun,
227
+ tool,
228
+ trace: helpers_js_1.trace,
229
+ llm: helpers_js_1.llm,
230
+ retrieval: helpers_js_1.retrieval,
231
+ getTracer: helpers_js_1.getTracer,
232
+ trackLlmCall,
233
+ expressMiddleware,
234
+ feedback,
167
235
  };
168
236
  exports.default = trodo;
169
237
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;AA0CH,oBAGC;AAGD,0BAKC;AAGD,sBAOC;AAGD,4BAKC;AAGD,sCAKC;AAGD,sBAEC;AAqBD,8BAMC;AAED,8BAMC;AAED,oCAMC;AAED,8BAMC;AAED,4CAEC;AAED,8CAEC;AAED,sBAEC;AAED,4BAEC;AAMD,4CAEC;AAED,wCAEC;AAED,oDAEC;AAED,8CAEC;AAED,wCAEC;AA7KD,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AACpB,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AACpB,mDAAiC;AAEjC,qDAA+C;AAoB/C,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,IAAI,OAAO,GAAuB,IAAI,CAAC;AAEvC,SAAS,SAAS;IAChB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,SAAgB,IAAI,CAAC,MAAmB;IACtC,OAAO,GAAG,IAAI,4BAAW,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0DAA0D;AAC1D,SAAgB,OAAO,CACrB,UAAkB,EAClB,OAAwB;IAExB,OAAO,SAAS,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,uDAAuD;AAChD,KAAK,UAAU,KAAK,CACzB,UAAkB,EAClB,SAAiB,EACjB,UAAoC,EACpC,OAAsB;IAEtB,OAAO,SAAS,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,iGAAiG;AAC1F,KAAK,UAAU,QAAQ,CAC5B,UAAkB,EAClB,OAAwB;IAExB,OAAO,SAAS,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,8CAA8C;AACvC,KAAK,UAAU,aAAa,CACjC,UAAkB,EAClB,UAAkB;IAElB,OAAO,SAAS,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED,8BAA8B;AACvB,KAAK,UAAU,KAAK,CAAC,UAAkB;IAC5C,OAAO,SAAS,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACvC,CAAC;AAEY,QAAA,MAAM,GAAG;IACpB,GAAG,EAAE,CAAC,CAAS,EAAE,CAA0B,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5E,OAAO,EAAE,CAAC,CAAS,EAAE,CAA0B,EAAE,EAAE,CACjD,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAClC,KAAK,EAAE,CAAC,CAAS,EAAE,CAAoB,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,SAAS,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,CAAU,EAAE,EAAE,CAC9C,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,CAAY,EAAE,EAAE,CAC7C,SAAS,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpC,KAAK,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,CAAY,EAAE,EAAE,CAC5C,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,CAAY,EAAE,EAAE,CAC7C,SAAS,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpC,WAAW,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,CAA2B,EAAE,EAAE,CACjE,SAAS,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACzC,YAAY,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,SAAgB,SAAS,CACvB,UAAkB,EAClB,QAAgB,EAChB,OAA0B;IAE1B,OAAO,SAAS,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,SAAS,CACvB,UAAkB,EAClB,QAAgB,EAChB,OAAe;IAEf,OAAO,SAAS,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,YAAY,CAC1B,UAAkB,EAClB,QAAgB,EAChB,OAAe;IAEf,OAAO,SAAS,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,SAAgB,SAAS,CACvB,UAAkB,EAClB,QAAgB,EAChB,OAAe;IAEf,OAAO,SAAS,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,gBAAgB;IAC9B,SAAS,EAAE,CAAC,gBAAgB,EAAE,CAAC;AACjC,CAAC;AAED,SAAgB,iBAAiB;IAC/B,SAAS,EAAE,CAAC,iBAAiB,EAAE,CAAC;AAClC,CAAC;AAEM,KAAK,UAAU,KAAK;IACzB,OAAO,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,QAAQ;IAC5B,OAAO,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E,SAAgB,gBAAgB,CAAC,KAAqB;IACpD,OAAO,SAAS,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,cAAc,CAAC,KAAmB;IAChD,OAAO,SAAS,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAyB;IAC5D,OAAO,SAAS,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAsB;IACtD,OAAO,SAAS,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,cAAc,CAAC,KAAoB;IACjD,OAAO,SAAS,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,yEAAyE;AACzE,MAAM,KAAK,GAAG;IACZ,IAAI;IACJ,OAAO;IACP,KAAK;IACL,QAAQ;IACR,aAAa;IACb,KAAK;IACL,MAAM,EAAN,cAAM;IACN,SAAS;IACT,SAAS;IACT,YAAY;IACZ,SAAS;IACT,gBAAgB;IAChB,iBAAiB;IACjB,KAAK;IACL,QAAQ;IACR,gBAAgB;IAChB,cAAc;IACd,oBAAoB;IACpB,iBAAiB;IACjB,cAAc;CACf,CAAC;AAEF,kBAAe,KAAK,CAAC"}
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"}