lightrace 0.1.7 → 0.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 (42) hide show
  1. package/dist/client.d.ts +14 -35
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +60 -84
  4. package/dist/client.js.map +1 -1
  5. package/dist/dev-server.d.ts +18 -0
  6. package/dist/dev-server.d.ts.map +1 -0
  7. package/dist/dev-server.js +95 -0
  8. package/dist/dev-server.js.map +1 -0
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/integrations/_base.d.ts +70 -0
  14. package/dist/integrations/_base.d.ts.map +1 -0
  15. package/dist/integrations/_base.js +167 -0
  16. package/dist/integrations/_base.js.map +1 -0
  17. package/dist/integrations/anthropic.d.ts +15 -0
  18. package/dist/integrations/anthropic.d.ts.map +1 -0
  19. package/dist/integrations/anthropic.js +229 -0
  20. package/dist/integrations/anthropic.js.map +1 -0
  21. package/dist/integrations/llamaindex.d.ts +14 -0
  22. package/dist/integrations/llamaindex.d.ts.map +1 -0
  23. package/dist/integrations/llamaindex.js +222 -0
  24. package/dist/integrations/llamaindex.js.map +1 -0
  25. package/dist/integrations/openai.d.ts +17 -0
  26. package/dist/integrations/openai.d.ts.map +1 -0
  27. package/dist/integrations/openai.js +259 -0
  28. package/dist/integrations/openai.js.map +1 -0
  29. package/dist/trace.d.ts.map +1 -1
  30. package/dist/trace.js +2 -1
  31. package/dist/trace.js.map +1 -1
  32. package/dist/types.d.ts +2 -39
  33. package/dist/types.d.ts.map +1 -1
  34. package/package.json +31 -5
  35. package/dist/security.d.ts +0 -20
  36. package/dist/security.d.ts.map +0 -1
  37. package/dist/security.js +0 -46
  38. package/dist/security.js.map +0 -1
  39. package/dist/tool-client.d.ts +0 -46
  40. package/dist/tool-client.d.ts.map +0 -1
  41. package/dist/tool-client.js +0 -237
  42. package/dist/tool-client.js.map +0 -1
@@ -0,0 +1,167 @@
1
+ import { generateId, jsonSerializable } from "../utils.js";
2
+ import * as attrs from "../otel-exporter.js";
3
+ import { Lightrace } from "../client.js";
4
+ /**
5
+ * Normalize token usage from any provider format to a canonical form.
6
+ *
7
+ * Supports OpenAI (`prompt_tokens`/`completion_tokens`), Anthropic
8
+ * (`input_tokens`/`output_tokens`), and camelCase variants.
9
+ */
10
+ export function normalizeUsage(raw) {
11
+ if (!raw || typeof raw !== "object")
12
+ return null;
13
+ const result = {};
14
+ const prompt = raw.promptTokens ?? raw.prompt_tokens ?? raw.input_tokens ?? undefined;
15
+ const completion = raw.completionTokens ?? raw.completion_tokens ?? raw.output_tokens ?? undefined;
16
+ const total = raw.totalTokens ?? raw.total_tokens ?? undefined;
17
+ if (prompt !== undefined)
18
+ result.promptTokens = Number(prompt);
19
+ if (completion !== undefined)
20
+ result.completionTokens = Number(completion);
21
+ if (total !== undefined)
22
+ result.totalTokens = Number(total);
23
+ else if (result.promptTokens !== undefined && result.completionTokens !== undefined)
24
+ result.totalTokens = result.promptTokens + result.completionTokens;
25
+ return Object.keys(result).length > 0 ? result : null;
26
+ }
27
+ /**
28
+ * Base class providing shared OTel tracing infrastructure for framework
29
+ * integrations. Manages span lifecycle, run-state tracking, and
30
+ * `lightrace.*` attribute setting.
31
+ */
32
+ export class TracingMixin {
33
+ runs = new Map();
34
+ runParents = new Map();
35
+ completionStartTimes = new Map();
36
+ rootRunId = null;
37
+ _traceId = null;
38
+ userId;
39
+ sessionId;
40
+ traceName;
41
+ rootMetadata;
42
+ otelExporter = null;
43
+ /** Root span for the current trace. */
44
+ rootSpan = null;
45
+ /** The trace ID from the most recently completed root run. */
46
+ lastTraceId = null;
47
+ constructor(opts) {
48
+ this.userId = opts?.userId;
49
+ this.sessionId = opts?.sessionId;
50
+ this.traceName = opts?.traceName;
51
+ this.rootMetadata = opts?.metadata;
52
+ const client = opts?.client ?? Lightrace.getInstance();
53
+ this.otelExporter = client?.getOtelExporter() ?? null;
54
+ }
55
+ /** Get the current active trace ID (null if no run is active). */
56
+ get traceId() {
57
+ return this._traceId;
58
+ }
59
+ // ── Core span management ──────────────────────────────────────────
60
+ registerRun(runId, parentRunId, info) {
61
+ const tracer = this.otelExporter?.tracer;
62
+ const isRoot = !this.rootRunId;
63
+ if (isRoot) {
64
+ this.rootRunId = runId;
65
+ this._traceId = generateId();
66
+ if (tracer) {
67
+ this.rootSpan = tracer.startSpan(this.traceName ?? info.name, {
68
+ startTime: info.startTime,
69
+ });
70
+ this.rootSpan.setAttribute(attrs.AS_ROOT, "true");
71
+ this.rootSpan.setAttribute(attrs.TRACE_NAME, this.traceName ?? info.name);
72
+ this.rootSpan.setAttribute(attrs.TRACE_INPUT, attrs.safeJson(jsonSerializable(info.input)));
73
+ if (this.userId)
74
+ this.rootSpan.setAttribute(attrs.TRACE_USER_ID, this.userId);
75
+ if (this.sessionId)
76
+ this.rootSpan.setAttribute(attrs.TRACE_SESSION_ID, this.sessionId);
77
+ if (this.rootMetadata) {
78
+ this.rootSpan.setAttribute(attrs.TRACE_METADATA, attrs.safeJson(this.rootMetadata));
79
+ }
80
+ }
81
+ }
82
+ const observationId = generateId();
83
+ let span;
84
+ if (tracer) {
85
+ span = tracer.startSpan(info.name, { startTime: info.startTime });
86
+ }
87
+ else {
88
+ span = {
89
+ setAttribute: () => span,
90
+ setAttributes: () => span,
91
+ addEvent: () => span,
92
+ setStatus: () => span,
93
+ end: () => { },
94
+ isRecording: () => false,
95
+ recordException: () => { },
96
+ spanContext: () => ({ traceId: "", spanId: "", traceFlags: 0 }),
97
+ updateName: () => span,
98
+ };
99
+ }
100
+ const runInfo = { ...info, observationId, parentRunId, span };
101
+ this.runs.set(runId, runInfo);
102
+ this.runParents.set(observationId, parentRunId ? this.runs.get(parentRunId)?.observationId : undefined);
103
+ return runInfo;
104
+ }
105
+ endObservationSpan(run, output, level, statusMessage, extra) {
106
+ const obsTypeMap = {
107
+ span: "SPAN",
108
+ generation: "GENERATION",
109
+ event: "EVENT",
110
+ tool: "TOOL",
111
+ chain: "CHAIN",
112
+ };
113
+ const span = run.span;
114
+ span.setAttribute(attrs.OBSERVATION_TYPE, obsTypeMap[run.type] ?? run.type);
115
+ span.setAttribute(attrs.OBSERVATION_INPUT, attrs.safeJson(jsonSerializable(run.input)));
116
+ span.setAttribute(attrs.OBSERVATION_OUTPUT, attrs.safeJson(jsonSerializable(output)));
117
+ span.setAttribute(attrs.OBSERVATION_LEVEL, level);
118
+ if (run.metadata) {
119
+ span.setAttribute(attrs.OBSERVATION_METADATA, attrs.safeJson(run.metadata));
120
+ }
121
+ if (run.model) {
122
+ span.setAttribute(attrs.OBSERVATION_MODEL, run.model);
123
+ }
124
+ if (statusMessage) {
125
+ span.setAttribute(attrs.OBSERVATION_STATUS_MESSAGE, statusMessage);
126
+ }
127
+ if (run.modelParameters && Object.keys(run.modelParameters).length > 0) {
128
+ span.setAttribute(attrs.OBSERVATION_MODEL_PARAMETERS, attrs.safeJson(run.modelParameters));
129
+ }
130
+ if (extra) {
131
+ const usageDetails = {};
132
+ if (extra.promptTokens !== undefined)
133
+ usageDetails.promptTokens = extra.promptTokens;
134
+ if (extra.completionTokens !== undefined)
135
+ usageDetails.completionTokens = extra.completionTokens;
136
+ if (extra.totalTokens !== undefined)
137
+ usageDetails.totalTokens = extra.totalTokens;
138
+ if (Object.keys(usageDetails).length > 0) {
139
+ span.setAttribute(attrs.OBSERVATION_USAGE_DETAILS, attrs.safeJson(usageDetails));
140
+ }
141
+ }
142
+ span.end();
143
+ }
144
+ endRun(runId, output, level = "DEFAULT", statusMessage = null, extra) {
145
+ const run = this.runs.get(runId);
146
+ if (!run)
147
+ return;
148
+ this.endObservationSpan(run, output, level, statusMessage, extra);
149
+ if (runId === this.rootRunId) {
150
+ if (this.rootSpan) {
151
+ this.rootSpan.setAttribute(attrs.TRACE_OUTPUT, attrs.safeJson(jsonSerializable(output)));
152
+ this.rootSpan.end();
153
+ this.rootSpan = null;
154
+ }
155
+ this.lastTraceId = this._traceId;
156
+ this.rootRunId = null;
157
+ this._traceId = null;
158
+ this.runs.clear();
159
+ this.runParents.clear();
160
+ this.completionStartTimes.clear();
161
+ }
162
+ else {
163
+ this.runs.delete(runId);
164
+ }
165
+ }
166
+ }
167
+ //# sourceMappingURL=_base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_base.js","sourceRoot":"","sources":["../../src/integrations/_base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { TracingMixin, type TracingMixinOptions } from "./_base.js";
2
+ export declare class LightraceAnthropicInstrumentor extends TracingMixin {
3
+ private patchedTargets;
4
+ constructor(opts?: TracingMixinOptions);
5
+ /**
6
+ * Patch an Anthropic client instance so that `messages.create` and
7
+ * `messages.stream` calls are automatically traced.
8
+ */
9
+ instrument(client: unknown): void;
10
+ /** Restore the original methods. */
11
+ uninstrument(client: unknown): void;
12
+ /** Start a trace for an Anthropic messages call. */
13
+ private startAnthropicTrace;
14
+ }
15
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/integrations/anthropic.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,YAAY,EAAkB,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAKpF,qBAAa,8BAA+B,SAAQ,YAAY;IAC9D,OAAO,CAAC,cAAc,CAGlB;gBAEQ,IAAI,CAAC,EAAE,mBAAmB;IAItC;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAqEjC,oCAAoC;IACpC,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAYnC,oDAAoD;IACpD,OAAO,CAAC,mBAAmB;CA8B5B"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Anthropic SDK integration for Lightrace.
3
+ *
4
+ * Wraps `messages.create` and `messages.stream` on Anthropic client instances
5
+ * to automatically capture traces via OpenTelemetry spans.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { LightraceAnthropicInstrumentor } from "lightrace/integrations/anthropic";
10
+ *
11
+ * const instrumentor = new LightraceAnthropicInstrumentor();
12
+ * instrumentor.instrument(client);
13
+ *
14
+ * const response = await client.messages.create({ ... });
15
+ * console.log(instrumentor.lastTraceId);
16
+ * ```
17
+ */
18
+ import { generateId, jsonSerializable } from "../utils.js";
19
+ import { TracingMixin } from "./_base.js";
20
+ export class LightraceAnthropicInstrumentor extends TracingMixin {
21
+ patchedTargets = new Map();
22
+ constructor(opts) {
23
+ super(opts);
24
+ }
25
+ /**
26
+ * Patch an Anthropic client instance so that `messages.create` and
27
+ * `messages.stream` calls are automatically traced.
28
+ */
29
+ instrument(client) {
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+ const c = client;
32
+ const messages = c?.messages;
33
+ if (!messages?.create)
34
+ return;
35
+ if (this.patchedTargets.has(client))
36
+ return;
37
+ const originalCreate = messages.create.bind(messages);
38
+ const originalStream = messages.stream ? messages.stream.bind(messages) : undefined;
39
+ this.patchedTargets.set(client, {
40
+ messages,
41
+ originalCreate,
42
+ originalStream,
43
+ });
44
+ const self = this;
45
+ // Patch messages.create
46
+ messages.create = async function (...args) {
47
+ const kwargs = args.length === 1 && typeof args[0] === "object" && args[0] !== null
48
+ ? args[0]
49
+ : {};
50
+ const { runId } = self.startAnthropicTrace(kwargs);
51
+ const stream = Boolean(kwargs.stream);
52
+ try {
53
+ const result = await originalCreate(...args);
54
+ if (!stream) {
55
+ const output = extractOutput(result);
56
+ const usage = extractUsage(result);
57
+ self.endRun(runId, output, "DEFAULT", null, usage ?? undefined);
58
+ }
59
+ else {
60
+ // For streaming, end immediately with partial info
61
+ self.endRun(runId, { streaming: true });
62
+ }
63
+ return result;
64
+ }
65
+ catch (err) {
66
+ self.endRun(runId, null, "ERROR", err instanceof Error ? err.message : String(err));
67
+ throw err;
68
+ }
69
+ };
70
+ // Patch messages.stream (separate context-manager streaming API)
71
+ if (originalStream) {
72
+ messages.stream = function (...args) {
73
+ const kwargs = args.length === 1 && typeof args[0] === "object" && args[0] !== null
74
+ ? args[0]
75
+ : {};
76
+ const { runId } = self.startAnthropicTrace(kwargs);
77
+ try {
78
+ const streamManager = originalStream(...args);
79
+ // Wrap the stream manager to capture the final message
80
+ return wrapStreamManager(streamManager, self, runId);
81
+ }
82
+ catch (err) {
83
+ self.endRun(runId, null, "ERROR", err instanceof Error ? err.message : String(err));
84
+ throw err;
85
+ }
86
+ };
87
+ }
88
+ }
89
+ /** Restore the original methods. */
90
+ uninstrument(client) {
91
+ const entry = this.patchedTargets.get(client);
92
+ if (!entry)
93
+ return;
94
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
+ const messages = entry.messages;
96
+ messages.create = entry.originalCreate;
97
+ if (entry.originalStream) {
98
+ messages.stream = entry.originalStream;
99
+ }
100
+ this.patchedTargets.delete(client);
101
+ }
102
+ /** Start a trace for an Anthropic messages call. */
103
+ startAnthropicTrace(kwargs) {
104
+ const runId = generateId();
105
+ const model = kwargs.model;
106
+ const inputData = {
107
+ messages: jsonSerializable(kwargs.messages ?? []),
108
+ };
109
+ if (model)
110
+ inputData.model = model;
111
+ if (kwargs.system)
112
+ inputData.system = jsonSerializable(kwargs.system);
113
+ if (kwargs.tools)
114
+ inputData.tools = jsonSerializable(kwargs.tools);
115
+ if (kwargs.tool_choice)
116
+ inputData.tool_choice = jsonSerializable(kwargs.tool_choice);
117
+ const modelParams = {};
118
+ for (const key of ["temperature", "max_tokens", "top_p", "top_k", "stop_sequences"]) {
119
+ if (kwargs[key] !== undefined)
120
+ modelParams[key] = kwargs[key];
121
+ }
122
+ this.registerRun(runId, undefined, {
123
+ type: "generation",
124
+ name: model ?? "anthropic",
125
+ startTime: new Date(),
126
+ input: inputData,
127
+ model,
128
+ modelParameters: Object.keys(modelParams).length > 0 ? modelParams : undefined,
129
+ });
130
+ return { runId };
131
+ }
132
+ }
133
+ // -- Helpers ----------------------------------------------------------------
134
+ function extractOutput(response) {
135
+ if (!response || typeof response !== "object")
136
+ return response;
137
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
138
+ const r = response;
139
+ const content = r.content;
140
+ if (!Array.isArray(content))
141
+ return jsonSerializable(response);
142
+ const blocks = content.map((block) => {
143
+ if (block.type === "text") {
144
+ return { type: "text", text: block.text ?? "" };
145
+ }
146
+ if (block.type === "tool_use") {
147
+ return {
148
+ type: "tool_use",
149
+ id: block.id ?? "",
150
+ name: block.name ?? "",
151
+ input: jsonSerializable(block.input ?? {}),
152
+ };
153
+ }
154
+ return jsonSerializable(block);
155
+ });
156
+ const result = {
157
+ role: r.role ?? "assistant",
158
+ content: blocks,
159
+ };
160
+ if (r.stop_reason)
161
+ result.stop_reason = r.stop_reason;
162
+ return result;
163
+ }
164
+ function extractUsage(response) {
165
+ if (!response || typeof response !== "object")
166
+ return null;
167
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
168
+ const usage = response.usage;
169
+ if (!usage)
170
+ return null;
171
+ const raw = {};
172
+ if (usage.input_tokens !== undefined)
173
+ raw.promptTokens = usage.input_tokens;
174
+ if (usage.output_tokens !== undefined)
175
+ raw.completionTokens = usage.output_tokens;
176
+ if (raw.promptTokens !== undefined && raw.completionTokens !== undefined) {
177
+ raw.totalTokens = raw.promptTokens + raw.completionTokens;
178
+ }
179
+ return Object.keys(raw).length > 0 ? raw : null;
180
+ }
181
+ /**
182
+ * Wrap a stream manager (from `messages.stream()`) to capture the final
183
+ * message when the stream ends.
184
+ */
185
+ function wrapStreamManager(manager, instrumentor, runId) {
186
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
187
+ const m = manager;
188
+ // For async stream managers (most common in Node.js)
189
+ if (typeof m[Symbol.asyncIterator] === "function" || typeof m.then === "function") {
190
+ return {
191
+ ...m,
192
+ async *[Symbol.asyncIterator]() {
193
+ let finalMessage = null;
194
+ try {
195
+ for await (const event of m) {
196
+ if (event?.type === "message_stop") {
197
+ finalMessage = event.message ?? m.currentMessageSnapshot ?? null;
198
+ }
199
+ yield event;
200
+ }
201
+ }
202
+ finally {
203
+ const msg = finalMessage ?? m.currentMessageSnapshot ?? m.finalMessage ?? null;
204
+ if (msg) {
205
+ const output = extractOutput(msg);
206
+ const usage = extractUsage(msg);
207
+ instrumentor.endRun(runId, output, "DEFAULT", null, usage ?? undefined);
208
+ }
209
+ else {
210
+ instrumentor.endRun(runId, null);
211
+ }
212
+ }
213
+ },
214
+ // Forward method calls
215
+ on: m.on?.bind(m),
216
+ off: m.off?.bind(m),
217
+ get finalMessage() {
218
+ return m.finalMessage;
219
+ },
220
+ get currentMessageSnapshot() {
221
+ return m.currentMessageSnapshot;
222
+ },
223
+ };
224
+ }
225
+ // Fallback: return as-is and end the span
226
+ instrumentor.endRun(runId, null);
227
+ return manager;
228
+ }
229
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/integrations/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { TracingMixin, type TracingMixinOptions } from "./_base.js";
2
+ export declare class LightraceLlamaIndexHandler extends TracingMixin {
3
+ private traceRunId;
4
+ constructor(opts?: TracingMixinOptions);
5
+ /** Called when a LlamaIndex trace begins. */
6
+ startTrace(traceId?: string): void;
7
+ /** Called when a LlamaIndex trace ends. */
8
+ endTrace(): void;
9
+ /** Called when a LlamaIndex event starts. */
10
+ onEventStart(eventType: string, payload?: Record<string, unknown> | null, eventId?: string, parentId?: string): string;
11
+ /** Called when a LlamaIndex event ends. */
12
+ onEventEnd(eventType: string, payload?: Record<string, unknown> | null, eventId?: string): void;
13
+ }
14
+ //# sourceMappingURL=llamaindex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llamaindex.d.ts","sourceRoot":"","sources":["../../src/integrations/llamaindex.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAkB,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAkBpF,qBAAa,0BAA2B,SAAQ,YAAY;IAC1D,OAAO,CAAC,UAAU,CAAuB;gBAE7B,IAAI,CAAC,EAAE,mBAAmB;IAItC,6CAA6C;IAC7C,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAelC,2CAA2C;IAC3C,QAAQ,IAAI,IAAI;IAWhB,6CAA6C;IAC7C,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACxC,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM;IAmCT,2CAA2C;IAC3C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAmBhG"}