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
package/dist/client.d.ts CHANGED
@@ -2,14 +2,13 @@
2
2
  * Main Lightrace SDK client.
3
3
  */
4
4
  import { LightraceOtelExporter } from "./otel-exporter.js";
5
+ import { DevServer } from "./dev-server.js";
5
6
  import { Observation } from "./observation.js";
6
7
  import type { UsageDetails } from "./types.js";
7
8
  export interface LightraceOptions {
8
9
  publicKey?: string;
9
10
  secretKey?: string;
10
11
  host?: string;
11
- /** WebSocket host for tool connections (defaults to host if not set). */
12
- wsHost?: string;
13
12
  flushAt?: number;
14
13
  flushInterval?: number;
15
14
  timeout?: number;
@@ -18,48 +17,34 @@ export interface LightraceOptions {
18
17
  userId?: string;
19
18
  /** Default session ID for all traces. */
20
19
  sessionId?: string;
20
+ /**
21
+ * Start the embedded dev server for tool invocation from the dashboard.
22
+ * Default: true. Set to false in production environments.
23
+ */
24
+ devServer?: boolean;
25
+ /** Port for the dev server (0 = auto-discover free port). Default: 0. */
26
+ devServerPort?: number;
21
27
  }
22
28
  export declare class Lightrace {
23
29
  private static instance;
24
30
  private otelExporter;
25
- private toolClient;
26
- private toolConnectTimer;
31
+ private _devServer;
27
32
  private enabled;
28
33
  private host;
29
- private wsHost;
30
34
  private publicKey;
31
35
  private secretKey;
32
- /** Default user ID for all traces. */
36
+ private devServerEnabled;
37
+ private devServerPort;
33
38
  readonly userId: string | undefined;
34
- /** Default session ID for all traces. */
35
39
  readonly sessionId: string | undefined;
36
40
  constructor(options?: LightraceOptions);
37
41
  static getInstance(): Lightrace | null;
38
- /** Get the OTel exporter (used by Observation). */
39
42
  getOtelExporter(): LightraceOtelExporter | null;
40
- private autoConnectTools;
41
- private startToolClient;
42
- /**
43
- * Explicitly start the tool WebSocket client.
44
- * Call this after all tools have been registered (via trace() or registerTools).
45
- * Cancels the deferred auto-connect timer if still pending.
46
- */
47
- connectTools(): void;
48
- /**
49
- * Register tools for remote invocation.
50
- *
51
- * @param tools - Array of tool descriptors with name, fn, and optional inputSchema.
52
- */
53
- registerTools(...tools: Array<{
54
- name: string;
55
- fn: (...args: unknown[]) => unknown;
56
- inputSchema?: Record<string, unknown> | null;
57
- }>): void;
43
+ getDevServer(): DevServer | null;
44
+ private startDevServer;
45
+ private registerToolsHttp;
58
46
  flush(): void;
59
47
  shutdown(): Promise<void>;
60
- /**
61
- * Create a span observation imperatively.
62
- */
63
48
  span(opts: {
64
49
  name: string;
65
50
  input?: unknown;
@@ -67,9 +52,6 @@ export declare class Lightrace {
67
52
  traceId?: string;
68
53
  parentObservationId?: string;
69
54
  }): Observation;
70
- /**
71
- * Create a generation observation imperatively.
72
- */
73
55
  generation(opts: {
74
56
  name: string;
75
57
  input?: unknown;
@@ -79,9 +61,6 @@ export declare class Lightrace {
79
61
  traceId?: string;
80
62
  parentObservationId?: string;
81
63
  }): Observation;
82
- /**
83
- * Create an event observation imperatively (auto-ended).
84
- */
85
64
  event(opts: {
86
65
  name: string;
87
66
  input?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAS3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0B;IAEjD,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAU;IAClC,OAAO,CAAC,aAAa,CAAS;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE3B,OAAO,GAAE,gBAAqB;IAgC1C,MAAM,CAAC,WAAW,IAAI,SAAS,GAAG,IAAI;IAItC,eAAe,IAAI,qBAAqB,GAAG,IAAI;IAI/C,YAAY,IAAI,SAAS,GAAG,IAAI;IAMhC,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,iBAAiB;IAiCzB,KAAK,IAAI,IAAI;IAIP,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAe/B,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,GAAG,WAAW;IAIf,UAAU,CAAC,IAAI,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,KAAK,CAAC,EAAE,YAAY,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,GAAG,WAAW;IAIf,KAAK,CAAC,IAAI,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,GAAG,WAAW;IAMf,OAAO,CAAC,kBAAkB;CA2C3B"}
package/dist/client.js CHANGED
@@ -2,34 +2,32 @@
2
2
  * Main Lightrace SDK client.
3
3
  */
4
4
  import { LightraceOtelExporter } from "./otel-exporter.js";
5
- import * as attrs from "./otel-exporter.js";
5
+ import { AS_ROOT, TRACE_NAME } from "./otel-exporter.js";
6
6
  import { _setOtelExporter, _setClientDefaults, _getTraceContext, _getToolRegistry, } from "./trace.js";
7
- import { ToolClient } from "./tool-client.js";
7
+ import { DevServer } from "./dev-server.js";
8
8
  import { Observation } from "./observation.js";
9
9
  import { generateId } from "./utils.js";
10
10
  export class Lightrace {
11
11
  static instance = null;
12
12
  otelExporter = null;
13
- toolClient = null;
14
- toolConnectTimer = null;
13
+ _devServer = null;
15
14
  enabled;
16
15
  host;
17
- wsHost;
18
16
  publicKey;
19
17
  secretKey;
20
- /** Default user ID for all traces. */
18
+ devServerEnabled;
19
+ devServerPort;
21
20
  userId;
22
- /** Default session ID for all traces. */
23
21
  sessionId;
24
22
  constructor(options = {}) {
25
23
  this.publicKey = options.publicKey ?? process.env.LIGHTRACE_PUBLIC_KEY ?? "";
26
24
  this.secretKey = options.secretKey ?? process.env.LIGHTRACE_SECRET_KEY ?? "";
27
25
  this.host = (options.host ?? process.env.LIGHTRACE_HOST ?? "http://localhost:3002").replace(/\/$/, "");
28
- this.wsHost =
29
- (options.wsHost ?? process.env.LIGHTRACE_WS_HOST ?? "").replace(/\/$/, "") || null;
30
26
  this.enabled = options.enabled !== false;
31
27
  this.userId = options.userId;
32
28
  this.sessionId = options.sessionId;
29
+ this.devServerEnabled = options.devServer !== false;
30
+ this.devServerPort = options.devServerPort ?? 0;
33
31
  if (!this.enabled)
34
32
  return;
35
33
  this.otelExporter = new LightraceOtelExporter({
@@ -42,106 +40,87 @@ export class Lightrace {
42
40
  _setOtelExporter(this.otelExporter);
43
41
  _setClientDefaults({ userId: this.userId, sessionId: this.sessionId });
44
42
  Lightrace.instance = this;
45
- // Deferred tool client start -- gives trace() decorators time to register
46
- this.toolConnectTimer = setTimeout(() => this.autoConnectTools(), 2000);
43
+ if (this.devServerEnabled) {
44
+ this.startDevServer();
45
+ }
47
46
  }
48
47
  static getInstance() {
49
48
  return Lightrace.instance;
50
49
  }
51
- /** Get the OTel exporter (used by Observation). */
52
50
  getOtelExporter() {
53
51
  return this.otelExporter;
54
52
  }
55
- // -- Tool registration -------------------------------------------------------
56
- autoConnectTools() {
57
- this.toolConnectTimer = null;
58
- if (!this.enabled || this.toolClient)
59
- return;
60
- const registry = _getToolRegistry();
61
- if (registry.size === 0)
62
- return;
63
- this.startToolClient();
53
+ getDevServer() {
54
+ return this._devServer;
64
55
  }
65
- startToolClient() {
66
- if (this.toolClient)
67
- return;
68
- this.toolClient = new ToolClient({
69
- host: this.wsHost ?? this.host,
56
+ // -- Dev server + tool registration -----------------------------------------
57
+ startDevServer() {
58
+ this._devServer = new DevServer({
59
+ port: this.devServerPort,
70
60
  publicKey: this.publicKey,
71
- secretKey: this.secretKey,
72
61
  });
73
- this.toolClient.start();
74
- }
75
- /**
76
- * Explicitly start the tool WebSocket client.
77
- * Call this after all tools have been registered (via trace() or registerTools).
78
- * Cancels the deferred auto-connect timer if still pending.
79
- */
80
- connectTools() {
81
- if (this.toolConnectTimer) {
82
- clearTimeout(this.toolConnectTimer);
83
- this.toolConnectTimer = null;
84
- }
85
- if (!this.enabled)
86
- return;
87
- this.startToolClient();
62
+ this._devServer
63
+ .start()
64
+ .then((port) => {
65
+ console.log(`[lightrace] Dev server listening on http://127.0.0.1:${port}`);
66
+ this.registerToolsHttp();
67
+ })
68
+ .catch((err) => {
69
+ console.error("[lightrace] Failed to start dev server:", err);
70
+ });
88
71
  }
89
- /**
90
- * Register tools for remote invocation.
91
- *
92
- * @param tools - Array of tool descriptors with name, fn, and optional inputSchema.
93
- */
94
- registerTools(...tools) {
72
+ registerToolsHttp() {
95
73
  const registry = _getToolRegistry();
96
- for (const tool of tools) {
97
- registry.set(tool.name, {
98
- fn: tool.fn,
99
- inputSchema: tool.inputSchema ?? null,
100
- });
101
- }
102
- if (registry.size > 0 && this.enabled) {
103
- if (this.toolConnectTimer) {
104
- clearTimeout(this.toolConnectTimer);
105
- this.toolConnectTimer = null;
106
- }
107
- this.startToolClient();
108
- }
74
+ if (registry.size === 0)
75
+ return;
76
+ const callbackUrl = this._devServer?.getCallbackUrl();
77
+ if (!callbackUrl)
78
+ return;
79
+ const tools = Array.from(registry.entries()).map(([name, entry]) => ({
80
+ name,
81
+ inputSchema: entry.inputSchema,
82
+ description: entry.description ?? null,
83
+ }));
84
+ const auth = Buffer.from(`${this.publicKey}:${this.secretKey}`).toString("base64");
85
+ fetch(`${this.host}/api/public/tools/register`, {
86
+ method: "POST",
87
+ headers: {
88
+ "Content-Type": "application/json",
89
+ Authorization: `Basic ${auth}`,
90
+ },
91
+ body: JSON.stringify({ callbackUrl, tools }),
92
+ })
93
+ .then((res) => {
94
+ if (!res.ok)
95
+ console.warn(`[lightrace] Tool registration returned ${res.status}`);
96
+ })
97
+ .catch((err) => {
98
+ console.error("[lightrace] Failed to register tools:", err.message);
99
+ });
109
100
  }
110
101
  // -- Flush / shutdown --------------------------------------------------------
111
102
  flush() {
112
103
  this.otelExporter?.flush();
113
104
  }
114
105
  async shutdown() {
115
- if (this.toolConnectTimer) {
116
- clearTimeout(this.toolConnectTimer);
117
- this.toolConnectTimer = null;
118
- }
119
- if (this.toolClient) {
120
- this.toolClient.stop();
121
- this.toolClient = null;
106
+ if (this._devServer) {
107
+ await this._devServer.stop();
108
+ this._devServer = null;
122
109
  }
123
110
  if (this.otelExporter) {
124
111
  await this.otelExporter.shutdown();
112
+ this.otelExporter = null;
125
113
  _setOtelExporter(null);
126
114
  }
127
115
  Lightrace.instance = null;
128
116
  }
129
117
  // -- Imperative observation API ----------------------------------------------
130
- /**
131
- * Create a span observation imperatively.
132
- */
133
118
  span(opts) {
134
119
  return this._createObservation("span", opts);
135
120
  }
136
- /**
137
- * Create a generation observation imperatively.
138
- */
139
121
  generation(opts) {
140
122
  return this._createObservation("generation", opts);
141
123
  }
142
- /**
143
- * Create an event observation imperatively (auto-ended).
144
- */
145
124
  event(opts) {
146
125
  const obs = this._createObservation("event", opts);
147
126
  obs.end();
@@ -149,23 +128,21 @@ export class Lightrace {
149
128
  }
150
129
  _createObservation(type, opts) {
151
130
  const otelExporter = this.otelExporter;
152
- // Resolve trace context: explicit > OTel active span > create new root trace
153
131
  const ctx = _getTraceContext();
154
132
  let traceId = opts.traceId ?? ctx?.traceId;
155
- const parentObservationId = opts.parentObservationId ?? ctx?.observationId ?? undefined;
156
- // If no trace context, create an implicit root trace via OTel span
133
+ const parentObservationId = opts.parentObservationId ?? ctx?.observationId;
157
134
  if (!traceId && otelExporter) {
158
135
  const tracer = otelExporter.tracer;
159
136
  const rootSpan = tracer.startSpan(opts.name);
160
- rootSpan.setAttribute(attrs.AS_ROOT, "true");
161
- rootSpan.setAttribute(attrs.TRACE_NAME, opts.name);
137
+ rootSpan.setAttribute(AS_ROOT, "true");
138
+ rootSpan.setAttribute(TRACE_NAME, opts.name);
162
139
  traceId = rootSpan.spanContext().traceId;
163
140
  rootSpan.end();
164
141
  }
165
142
  if (!traceId) {
166
143
  traceId = generateId();
167
144
  }
168
- const obs = new Observation({
145
+ return new Observation({
169
146
  traceId,
170
147
  type,
171
148
  name: opts.name,
@@ -176,7 +153,6 @@ export class Lightrace {
176
153
  usage: opts.usage,
177
154
  parentObservationId: parentObservationId ?? undefined,
178
155
  });
179
- return obs;
180
156
  }
181
157
  }
182
158
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface DevServerOptions {
2
+ /** Port to bind (0 = auto-discover free port). Default: 0. */
3
+ port?: number;
4
+ /** Public key for request authentication. */
5
+ publicKey?: string;
6
+ }
7
+ export declare class DevServer {
8
+ private server;
9
+ private publicKey;
10
+ private assignedPort;
11
+ private requestedPort;
12
+ constructor(options?: DevServerOptions);
13
+ start(): Promise<number>;
14
+ stop(): Promise<void>;
15
+ getPort(): number | null;
16
+ getCallbackUrl(): string | null;
17
+ }
18
+ //# sourceMappingURL=dev-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../src/dev-server.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,aAAa,CAAS;gBAElB,OAAO,GAAE,gBAAqB;IAKpC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAkExB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB,cAAc,IAAI,MAAM,GAAG,IAAI;CAIhC"}
@@ -0,0 +1,95 @@
1
+ import { Hono } from "hono";
2
+ import { cors } from "hono/cors";
3
+ import { bodyLimit } from "hono/body-limit";
4
+ import { serve } from "@hono/node-server";
5
+ import { _getToolRegistry } from "./trace.js";
6
+ import { jsonSerializable } from "./utils.js";
7
+ function apiResponse(c, code, message, response = null) {
8
+ return c.json({ code, message, response }, code);
9
+ }
10
+ export class DevServer {
11
+ server = null;
12
+ publicKey;
13
+ assignedPort = null;
14
+ requestedPort;
15
+ constructor(options = {}) {
16
+ this.requestedPort = options.port ?? 0;
17
+ this.publicKey = options.publicKey ?? "";
18
+ }
19
+ async start() {
20
+ if (this.server)
21
+ return this.assignedPort;
22
+ const app = new Hono();
23
+ const publicKey = this.publicKey;
24
+ app.use("*", cors());
25
+ app.use("/invoke", bodyLimit({ maxSize: 1024 * 1024 }));
26
+ app.get("/health", (c) => apiResponse(c, 200, "OK", { status: "ok" }));
27
+ app.post("/invoke", async (c) => {
28
+ if (publicKey && c.req.header("Authorization") !== `Bearer ${publicKey}`) {
29
+ return apiResponse(c, 401, "Unauthorized");
30
+ }
31
+ const body = await c.req.json().catch(() => null);
32
+ if (!body || typeof body !== "object") {
33
+ return apiResponse(c, 400, "Invalid JSON body");
34
+ }
35
+ const { tool, input } = body;
36
+ const registry = _getToolRegistry();
37
+ const entry = registry.get(tool);
38
+ if (!entry) {
39
+ return apiResponse(c, 404, `Tool not found: ${tool}`);
40
+ }
41
+ const start = performance.now();
42
+ try {
43
+ let result;
44
+ if (input && typeof input === "object" && !Array.isArray(input)) {
45
+ result = await entry.fn(input);
46
+ }
47
+ else {
48
+ result = input != null ? await entry.fn(input) : await entry.fn();
49
+ }
50
+ const durationMs = Math.round(performance.now() - start);
51
+ return apiResponse(c, 200, "OK", { output: jsonSerializable(result), durationMs });
52
+ }
53
+ catch (err) {
54
+ const durationMs = Math.round(performance.now() - start);
55
+ return apiResponse(c, 200, "OK", {
56
+ output: null,
57
+ error: err instanceof Error ? err.message : String(err),
58
+ durationMs,
59
+ });
60
+ }
61
+ });
62
+ return new Promise((resolve, reject) => {
63
+ try {
64
+ const server = serve({ fetch: app.fetch, port: this.requestedPort, hostname: "127.0.0.1" }, (info) => {
65
+ this.assignedPort = info.port;
66
+ this.server = server;
67
+ resolve(info.port);
68
+ });
69
+ }
70
+ catch (err) {
71
+ reject(err);
72
+ }
73
+ });
74
+ }
75
+ async stop() {
76
+ if (!this.server)
77
+ return;
78
+ return new Promise((resolve) => {
79
+ this.server.close(() => {
80
+ this.server = null;
81
+ this.assignedPort = null;
82
+ resolve();
83
+ });
84
+ });
85
+ }
86
+ getPort() {
87
+ return this.assignedPort;
88
+ }
89
+ getCallbackUrl() {
90
+ if (!this.assignedPort)
91
+ return null;
92
+ return `http://127.0.0.1:${this.assignedPort}`;
93
+ }
94
+ }
95
+ //# sourceMappingURL=dev-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../src/dev-server.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export type { LightraceOptions } from "./client.js";
3
3
  export { trace } from "./trace.js";
4
4
  export { Observation } from "./observation.js";
5
5
  export { LightraceOtelExporter } from "./otel-exporter.js";
6
- export { ToolClient, getInvokeState } from "./tool-client.js";
6
+ export { DevServer } from "./dev-server.js";
7
7
  export { registerContext, captureContext, restoreContext } from "./context.js";
8
8
  export type { TraceOptions, ObservationType, UsageDetails } from "./types.js";
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,6 @@ export { Lightrace } from "./client.js";
2
2
  export { trace } from "./trace.js";
3
3
  export { Observation } from "./observation.js";
4
4
  export { LightraceOtelExporter } from "./otel-exporter.js";
5
- export { ToolClient, getInvokeState } from "./tool-client.js";
5
+ export { DevServer } from "./dev-server.js";
6
6
  export { registerContext, captureContext, restoreContext } from "./context.js";
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Shared tracing infrastructure for framework integrations.
3
+ *
4
+ * Provides `TracingMixin` with `registerRun` / `endRun` to manage OTel spans
5
+ * with `lightrace.*` attributes, and `normalizeUsage` for multi-provider
6
+ * token usage extraction.
7
+ */
8
+ import type { Span } from "@opentelemetry/api";
9
+ import type { LightraceOtelExporter } from "../otel-exporter.js";
10
+ import { Lightrace } from "../client.js";
11
+ /** State tracked for each in-flight observation. */
12
+ export interface ObsRunInfo {
13
+ observationId: string;
14
+ type: "span" | "generation" | "event" | "tool" | "chain";
15
+ name: string;
16
+ startTime: Date;
17
+ input: unknown;
18
+ parentRunId?: string;
19
+ model?: string;
20
+ metadata?: Record<string, unknown>;
21
+ modelParameters?: Record<string, unknown>;
22
+ span: Span;
23
+ }
24
+ export interface TracingMixinOptions {
25
+ /** User ID to attach to the root trace. */
26
+ userId?: string;
27
+ /** Session ID to attach to the root trace. */
28
+ sessionId?: string;
29
+ /** Override name for the root trace. */
30
+ traceName?: string;
31
+ /** Additional metadata to attach to the root trace. */
32
+ metadata?: Record<string, unknown>;
33
+ /** Provide a Lightrace client instance. If omitted, uses Lightrace.getInstance(). */
34
+ client?: Lightrace;
35
+ }
36
+ /**
37
+ * Normalize token usage from any provider format to a canonical form.
38
+ *
39
+ * Supports OpenAI (`prompt_tokens`/`completion_tokens`), Anthropic
40
+ * (`input_tokens`/`output_tokens`), and camelCase variants.
41
+ */
42
+ export declare function normalizeUsage(raw: Record<string, unknown>): Record<string, number> | null;
43
+ /**
44
+ * Base class providing shared OTel tracing infrastructure for framework
45
+ * integrations. Manages span lifecycle, run-state tracking, and
46
+ * `lightrace.*` attribute setting.
47
+ */
48
+ export declare class TracingMixin {
49
+ protected runs: Map<string, ObsRunInfo>;
50
+ protected runParents: Map<string, string | undefined>;
51
+ protected completionStartTimes: Map<string, Date>;
52
+ protected rootRunId: string | null;
53
+ protected _traceId: string | null;
54
+ protected userId?: string;
55
+ protected sessionId?: string;
56
+ protected traceName?: string;
57
+ protected rootMetadata?: Record<string, unknown>;
58
+ protected otelExporter: LightraceOtelExporter | null;
59
+ /** Root span for the current trace. */
60
+ protected rootSpan: Span | null;
61
+ /** The trace ID from the most recently completed root run. */
62
+ lastTraceId: string | null;
63
+ constructor(opts?: TracingMixinOptions);
64
+ /** Get the current active trace ID (null if no run is active). */
65
+ get traceId(): string | null;
66
+ protected registerRun(runId: string, parentRunId: string | undefined, info: Omit<ObsRunInfo, "observationId" | "parentRunId" | "span">): ObsRunInfo;
67
+ protected endObservationSpan(run: ObsRunInfo, output: unknown, level: string, statusMessage: string | null, extra?: Record<string, unknown>): void;
68
+ endRun(runId: string, output: unknown, level?: string, statusMessage?: string | null, extra?: Record<string, unknown>): void;
69
+ }
70
+ //# sourceMappingURL=_base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_base.d.ts","sourceRoot":"","sources":["../../src/integrations/_base.ts"],"names":[],"mappings":"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"}