@illuma-ai/observability-langchain 0.1.0 → 0.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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=callback-handler.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback-handler.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/callback-handler.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,415 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { ObservabilityCallbackHandler, } from '../callback-handler.js';
3
+ function createMockClient() {
4
+ const events = [];
5
+ return {
6
+ events,
7
+ enqueue: (event) => events.push(event),
8
+ flush: vi.fn().mockResolvedValue(undefined),
9
+ shutdown: vi.fn().mockResolvedValue(undefined),
10
+ };
11
+ }
12
+ // ---------------------------------------------------------------------------
13
+ // Helpers
14
+ // ---------------------------------------------------------------------------
15
+ /** Create a minimal Serialized descriptor that LangChain passes to callbacks. */
16
+ function serialized(name) {
17
+ return { lc: 1, type: 'not_implemented', id: ['langchain', name] };
18
+ }
19
+ /** Find all events of a given type from the mock client's event log. */
20
+ function eventsOfType(client, type) {
21
+ return client.events.filter((e) => e.type === type);
22
+ }
23
+ /** Return the body of the first event of the given type, or undefined. */
24
+ function firstBody(client, type) {
25
+ return eventsOfType(client, type)[0]?.body;
26
+ }
27
+ // ---------------------------------------------------------------------------
28
+ // Tests
29
+ // ---------------------------------------------------------------------------
30
+ describe('ObservabilityCallbackHandler', () => {
31
+ let client;
32
+ beforeEach(() => {
33
+ client = createMockClient();
34
+ });
35
+ // =========================================================================
36
+ // Constructor & Initialization
37
+ // =========================================================================
38
+ describe('Constructor & Initialization', () => {
39
+ it('1. creates handler with a client instance', () => {
40
+ const handler = new ObservabilityCallbackHandler({ client });
41
+ expect(handler).toBeInstanceOf(ObservabilityCallbackHandler);
42
+ });
43
+ it('2. creates handler with clientOptions (lazy construction)', () => {
44
+ // We can't actually construct because @illuma-ai/observability-node
45
+ // may not be installed, so we expect the error about the missing package
46
+ // (which proves it attempted the dynamic require path).
47
+ expect(() => new ObservabilityCallbackHandler({
48
+ clientOptions: { publicKey: 'pk-test', secretKey: 'sk-test' },
49
+ })).toThrow('@illuma-ai/observability-node');
50
+ });
51
+ it('3. throws if neither client nor clientOptions provided', () => {
52
+ expect(() => new ObservabilityCallbackHandler({})).toThrow('requires either a `client` or `clientOptions`');
53
+ });
54
+ it('4. uses custom traceName when provided', async () => {
55
+ const handler = new ObservabilityCallbackHandler({
56
+ client,
57
+ traceName: 'my-custom-trace',
58
+ });
59
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
60
+ const traceBody = firstBody(client, 'trace-create');
61
+ expect(traceBody?.name).toBe('my-custom-trace');
62
+ });
63
+ it('5. uses default traceName when not provided', async () => {
64
+ const handler = new ObservabilityCallbackHandler({ client });
65
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
66
+ const traceBody = firstBody(client, 'trace-create');
67
+ expect(traceBody?.name).toBe('langchain-run');
68
+ });
69
+ });
70
+ // =========================================================================
71
+ // Trace Creation
72
+ // =========================================================================
73
+ describe('Trace Creation', () => {
74
+ it('6. first LLM call creates a trace-create event', async () => {
75
+ const handler = new ObservabilityCallbackHandler({ client });
76
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
77
+ const traceEvents = eventsOfType(client, 'trace-create');
78
+ expect(traceEvents).toHaveLength(1);
79
+ });
80
+ it('7. trace includes userId when set in options', async () => {
81
+ const handler = new ObservabilityCallbackHandler({
82
+ client,
83
+ userId: 'user-42',
84
+ });
85
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
86
+ const traceBody = firstBody(client, 'trace-create');
87
+ expect(traceBody?.userId).toBe('user-42');
88
+ });
89
+ it('8. trace includes sessionId when set in options', async () => {
90
+ const handler = new ObservabilityCallbackHandler({
91
+ client,
92
+ sessionId: 'sess-99',
93
+ });
94
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
95
+ const traceBody = firstBody(client, 'trace-create');
96
+ expect(traceBody?.sessionId).toBe('sess-99');
97
+ });
98
+ it('9. trace includes environment when set in options', async () => {
99
+ const handler = new ObservabilityCallbackHandler({
100
+ client,
101
+ environment: 'staging',
102
+ });
103
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
104
+ const traceBody = firstBody(client, 'trace-create');
105
+ expect(traceBody?.environment).toBe('staging');
106
+ });
107
+ it('10. trace includes metadata when set in options', async () => {
108
+ const handler = new ObservabilityCallbackHandler({
109
+ client,
110
+ metadata: { team: 'platform', version: '2.1' },
111
+ });
112
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
113
+ const traceBody = firstBody(client, 'trace-create');
114
+ expect(traceBody?.metadata).toEqual({ team: 'platform', version: '2.1' });
115
+ });
116
+ });
117
+ // =========================================================================
118
+ // LLM Handling
119
+ // =========================================================================
120
+ describe('LLM Handling', () => {
121
+ it('11. handleLLMStart creates a generation-create event', async () => {
122
+ const handler = new ObservabilityCallbackHandler({ client });
123
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
124
+ const genEvents = eventsOfType(client, 'generation-create');
125
+ expect(genEvents).toHaveLength(1);
126
+ expect(genEvents[0].body.input).toEqual(['prompt']);
127
+ });
128
+ it('12. handleLLMStart extracts model from invocationParams (via metadata)', async () => {
129
+ const handler = new ObservabilityCallbackHandler({ client });
130
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1', undefined, undefined, undefined, { ls_model_name: 'gpt-4o' });
131
+ const genBody = firstBody(client, 'generation-create');
132
+ expect(genBody?.model).toBe('gpt-4o');
133
+ });
134
+ it('13. handleLLMStart extracts model from metadata.ls_model_name', async () => {
135
+ const handler = new ObservabilityCallbackHandler({ client });
136
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1', undefined, undefined, undefined, { ls_model_name: 'claude-sonnet-4-20250514' });
137
+ const genBody = firstBody(client, 'generation-create');
138
+ expect(genBody?.model).toBe('claude-sonnet-4-20250514');
139
+ });
140
+ it('14. handleLLMStart extracts provider from metadata.ls_provider', async () => {
141
+ const handler = new ObservabilityCallbackHandler({ client });
142
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1', undefined, undefined, undefined, { ls_provider: 'openai' });
143
+ const genBody = firstBody(client, 'generation-create');
144
+ expect(genBody?.provider).toBe('openai');
145
+ });
146
+ it('15. handleLLMEnd creates a generation-update event with output', async () => {
147
+ const handler = new ObservabilityCallbackHandler({ client });
148
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
149
+ const llmResult = {
150
+ generations: [[{ text: 'Hello world', generationInfo: {} }]],
151
+ llmOutput: {},
152
+ };
153
+ await handler.handleLLMEnd(llmResult, 'run-1');
154
+ const updateBody = firstBody(client, 'generation-update');
155
+ expect(updateBody).toBeDefined();
156
+ expect(updateBody?.output).toBe('Hello world');
157
+ });
158
+ it('16. handleLLMEnd extracts token usage (tokenUsage field)', async () => {
159
+ const handler = new ObservabilityCallbackHandler({ client });
160
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
161
+ const llmResult = {
162
+ generations: [[{ text: 'response', generationInfo: {} }]],
163
+ llmOutput: {
164
+ tokenUsage: {
165
+ promptTokens: 10,
166
+ completionTokens: 20,
167
+ totalTokens: 30,
168
+ },
169
+ },
170
+ };
171
+ await handler.handleLLMEnd(llmResult, 'run-1');
172
+ const updateBody = firstBody(client, 'generation-update');
173
+ const usage = updateBody?.usage;
174
+ expect(usage.promptTokens).toBe(10);
175
+ expect(usage.completionTokens).toBe(20);
176
+ expect(usage.totalTokens).toBe(30);
177
+ });
178
+ it('17. handleLLMEnd maps snake_case tokenUsage fields correctly', async () => {
179
+ const handler = new ObservabilityCallbackHandler({ client });
180
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
181
+ // Some providers use snake_case token usage
182
+ const llmResult = {
183
+ generations: [[{ text: 'response', generationInfo: {} }]],
184
+ llmOutput: {
185
+ tokenUsage: {
186
+ prompt_tokens: 15,
187
+ completion_tokens: 25,
188
+ total_tokens: 40,
189
+ },
190
+ },
191
+ };
192
+ await handler.handleLLMEnd(llmResult, 'run-1');
193
+ const updateBody = firstBody(client, 'generation-update');
194
+ const usage = updateBody?.usage;
195
+ // The handler maps both camelCase and snake_case variants
196
+ expect(usage.promptTokens).toBe(15);
197
+ expect(usage.completionTokens).toBe(25);
198
+ expect(usage.totalTokens).toBe(40);
199
+ });
200
+ it('18. handleLLMError creates a generation-update with ERROR level', async () => {
201
+ const handler = new ObservabilityCallbackHandler({ client });
202
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
203
+ await handler.handleLLMError(new Error('Rate limited'), 'run-1');
204
+ const updateBody = firstBody(client, 'generation-update');
205
+ expect(updateBody).toBeDefined();
206
+ expect(updateBody?.level).toBe('ERROR');
207
+ });
208
+ it('19. handleLLMError includes error message in statusMessage', async () => {
209
+ const handler = new ObservabilityCallbackHandler({ client });
210
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
211
+ await handler.handleLLMError(new Error('Rate limited'), 'run-1');
212
+ const updateBody = firstBody(client, 'generation-update');
213
+ expect(updateBody?.statusMessage).toBe('Rate limited');
214
+ });
215
+ });
216
+ // =========================================================================
217
+ // Chain Handling
218
+ // =========================================================================
219
+ describe('Chain Handling', () => {
220
+ it('20. handleChainStart creates a chain-create event (not span-create)', async () => {
221
+ const handler = new ObservabilityCallbackHandler({ client });
222
+ await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
223
+ expect(eventsOfType(client, 'chain-create')).toHaveLength(1);
224
+ expect(eventsOfType(client, 'span-create')).toHaveLength(0);
225
+ });
226
+ it('21. handleChainEnd creates a span-update event', async () => {
227
+ const handler = new ObservabilityCallbackHandler({ client });
228
+ await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
229
+ await handler.handleChainEnd({ result: 'done' }, 'chain-1');
230
+ const updateBody = firstBody(client, 'span-update');
231
+ expect(updateBody).toBeDefined();
232
+ expect(updateBody?.output).toEqual({ result: 'done' });
233
+ });
234
+ it('22. handleChainError creates a span-update with ERROR level', async () => {
235
+ const handler = new ObservabilityCallbackHandler({ client });
236
+ await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
237
+ await handler.handleChainError(new Error('Chain failed'), 'chain-1');
238
+ const updateBody = firstBody(client, 'span-update');
239
+ expect(updateBody?.level).toBe('ERROR');
240
+ expect(updateBody?.statusMessage).toBe('Chain failed');
241
+ });
242
+ });
243
+ // =========================================================================
244
+ // Tool Handling
245
+ // =========================================================================
246
+ describe('Tool Handling', () => {
247
+ it('23. handleToolStart creates a tool-create event (not span-create)', async () => {
248
+ const handler = new ObservabilityCallbackHandler({ client });
249
+ await handler.handleToolStart(serialized('Calculator'), 'input', 'tool-1');
250
+ expect(eventsOfType(client, 'tool-create')).toHaveLength(1);
251
+ expect(eventsOfType(client, 'span-create')).toHaveLength(0);
252
+ });
253
+ it('24. handleToolEnd creates a span-update event with output', async () => {
254
+ const handler = new ObservabilityCallbackHandler({ client });
255
+ await handler.handleToolStart(serialized('Calculator'), '2+2', 'tool-1');
256
+ await handler.handleToolEnd('4', 'tool-1');
257
+ const updateBody = firstBody(client, 'span-update');
258
+ expect(updateBody).toBeDefined();
259
+ expect(updateBody?.output).toBe('4');
260
+ });
261
+ it('25. handleToolError creates a span-update with ERROR level', async () => {
262
+ const handler = new ObservabilityCallbackHandler({ client });
263
+ await handler.handleToolStart(serialized('Calculator'), 'invalid', 'tool-1');
264
+ await handler.handleToolError(new Error('Parse error'), 'tool-1');
265
+ const updateBody = firstBody(client, 'span-update');
266
+ expect(updateBody?.level).toBe('ERROR');
267
+ expect(updateBody?.statusMessage).toBe('Parse error');
268
+ });
269
+ });
270
+ // =========================================================================
271
+ // Retriever Handling
272
+ // =========================================================================
273
+ describe('Retriever Handling', () => {
274
+ it('26. handleRetrieverStart creates a retriever-create event (not span-create)', async () => {
275
+ const handler = new ObservabilityCallbackHandler({ client });
276
+ await handler.handleRetrieverStart(serialized('VectorStoreRetriever'), 'search query', 'ret-1');
277
+ expect(eventsOfType(client, 'retriever-create')).toHaveLength(1);
278
+ expect(eventsOfType(client, 'span-create')).toHaveLength(0);
279
+ });
280
+ it('27. handleRetrieverEnd creates a span-update event with documents', async () => {
281
+ const handler = new ObservabilityCallbackHandler({ client });
282
+ await handler.handleRetrieverStart(serialized('VectorStoreRetriever'), 'search query', 'ret-1');
283
+ const docs = [
284
+ { pageContent: 'doc1 content', metadata: { source: 'a.pdf' } },
285
+ { pageContent: 'doc2 content', metadata: { source: 'b.pdf' } },
286
+ ];
287
+ await handler.handleRetrieverEnd(docs, 'ret-1');
288
+ const updateBody = firstBody(client, 'span-update');
289
+ expect(updateBody).toBeDefined();
290
+ const output = updateBody?.output;
291
+ expect(output).toHaveLength(2);
292
+ expect(output[0].pageContent).toBe('doc1 content');
293
+ expect(output[1].metadata).toEqual({ source: 'b.pdf' });
294
+ // Also check documentCount in metadata
295
+ const meta = updateBody?.metadata;
296
+ expect(meta?.documentCount).toBe(2);
297
+ });
298
+ it('28. handleRetrieverError creates a span-update with ERROR level', async () => {
299
+ const handler = new ObservabilityCallbackHandler({ client });
300
+ await handler.handleRetrieverStart(serialized('VectorStoreRetriever'), 'search query', 'ret-1');
301
+ await handler.handleRetrieverError(new Error('Connection timeout'), 'ret-1');
302
+ const updateBody = firstBody(client, 'span-update');
303
+ expect(updateBody?.level).toBe('ERROR');
304
+ expect(updateBody?.statusMessage).toBe('Connection timeout');
305
+ });
306
+ });
307
+ // =========================================================================
308
+ // Parent-Child Relationships
309
+ // =========================================================================
310
+ describe('Parent-Child Relationships', () => {
311
+ it('29. nested runs preserve parentObservationId', async () => {
312
+ const handler = new ObservabilityCallbackHandler({ client });
313
+ // Chain is root
314
+ await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
315
+ // LLM is child of chain
316
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'llm-1', 'chain-1');
317
+ const genBody = firstBody(client, 'generation-create');
318
+ expect(genBody?.parentObservationId).toBeDefined();
319
+ });
320
+ it('30. root run has no parentObservationId', async () => {
321
+ const handler = new ObservabilityCallbackHandler({ client });
322
+ await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
323
+ const chainBody = firstBody(client, 'chain-create');
324
+ expect(chainBody?.parentObservationId).toBeUndefined();
325
+ });
326
+ it('31. child LLM run under a chain references the chain observationId', async () => {
327
+ const handler = new ObservabilityCallbackHandler({ client });
328
+ await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
329
+ const chainBody = firstBody(client, 'chain-create');
330
+ const chainObsId = chainBody?.id;
331
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'llm-1', 'chain-1');
332
+ const genBody = firstBody(client, 'generation-create');
333
+ expect(genBody?.parentObservationId).toBe(chainObsId);
334
+ });
335
+ });
336
+ // =========================================================================
337
+ // Flush & Shutdown
338
+ // =========================================================================
339
+ describe('Flush & Shutdown', () => {
340
+ it('32. flushAsync calls client.flush()', async () => {
341
+ const handler = new ObservabilityCallbackHandler({ client });
342
+ await handler.flushAsync();
343
+ expect(client.flush).toHaveBeenCalledOnce();
344
+ });
345
+ it('33. handler can be used across multiple sequential calls', async () => {
346
+ const handler = new ObservabilityCallbackHandler({ client });
347
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['p1'], 'run-1');
348
+ await handler.handleLLMEnd({
349
+ generations: [[{ text: 'r1', generationInfo: {} }]],
350
+ llmOutput: {},
351
+ }, 'run-1');
352
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['p2'], 'run-2');
353
+ await handler.handleLLMEnd({
354
+ generations: [[{ text: 'r2', generationInfo: {} }]],
355
+ llmOutput: {},
356
+ }, 'run-2');
357
+ // Should have: 1 trace-create, 2 generation-create, 2 generation-update
358
+ expect(eventsOfType(client, 'trace-create')).toHaveLength(1);
359
+ expect(eventsOfType(client, 'generation-create')).toHaveLength(2);
360
+ expect(eventsOfType(client, 'generation-update')).toHaveLength(2);
361
+ });
362
+ it('34. multiple LLM calls create separate generation events under the same trace', async () => {
363
+ const handler = new ObservabilityCallbackHandler({ client });
364
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['p1'], 'run-1');
365
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['p2'], 'run-2');
366
+ const genEvents = eventsOfType(client, 'generation-create');
367
+ expect(genEvents).toHaveLength(2);
368
+ // Both should share the same traceId
369
+ const traceId1 = genEvents[0].body.traceId;
370
+ const traceId2 = genEvents[1].body.traceId;
371
+ expect(traceId1).toBe(traceId2);
372
+ // But have different observation IDs
373
+ expect(genEvents[0].body.id).not.toBe(genEvents[1].body.id);
374
+ });
375
+ });
376
+ // =========================================================================
377
+ // Edge Cases
378
+ // =========================================================================
379
+ describe('Edge Cases', () => {
380
+ it('35. handles empty/undefined inputs gracefully', async () => {
381
+ const handler = new ObservabilityCallbackHandler({ client });
382
+ // Empty prompts array
383
+ await handler.handleLLMStart(serialized('ChatOpenAI'), [], 'run-1');
384
+ const genBody = firstBody(client, 'generation-create');
385
+ expect(genBody?.input).toEqual([]);
386
+ // handleLLMEnd with no generations
387
+ const llmResult = {
388
+ generations: [],
389
+ llmOutput: undefined,
390
+ };
391
+ await handler.handleLLMEnd(llmResult, 'run-1');
392
+ const updateBody = firstBody(client, 'generation-update');
393
+ expect(updateBody).toBeDefined();
394
+ // Output falls back to the full generations array when no text is found
395
+ expect(updateBody?.output).toEqual([]);
396
+ });
397
+ it('36. handles missing token usage gracefully (no usage in generation-update)', async () => {
398
+ const handler = new ObservabilityCallbackHandler({ client });
399
+ await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
400
+ const llmResult = {
401
+ generations: [[{ text: 'response', generationInfo: {} }]],
402
+ llmOutput: {}, // No tokenUsage at all
403
+ };
404
+ await handler.handleLLMEnd(llmResult, 'run-1');
405
+ const updateBody = firstBody(client, 'generation-update');
406
+ expect(updateBody).toBeDefined();
407
+ // Usage object exists but all fields are undefined
408
+ const usage = updateBody?.usage;
409
+ expect(usage.promptTokens).toBeUndefined();
410
+ expect(usage.completionTokens).toBeUndefined();
411
+ expect(usage.totalTokens).toBeUndefined();
412
+ });
413
+ });
414
+ });
415
+ //# sourceMappingURL=callback-handler.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback-handler.test.js","sourceRoot":"","sources":["../../src/__tests__/callback-handler.test.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,36 @@ import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
2
2
  import type { Serialized } from '@langchain/core/load/serializable';
3
3
  import type { LLMResult } from '@langchain/core/outputs';
4
4
  import type { Document } from '@langchain/core/documents';
5
- import type { ObserveClient, ObserveClientOptions } from '@illuma-ai/observe-sdk';
5
+ import type { IngestionEvent, ObservabilityClientConfig } from '@illuma-ai/observability-core';
6
+ /**
7
+ * Minimal interface that the callback handler requires from an observability client.
8
+ *
9
+ * Any concrete client that implements `enqueue`, `flush`, and `shutdown` is
10
+ * compatible — including `ObservabilityCoreClient` subclasses from
11
+ * `@illuma-ai/observability-node` or `@illuma-ai/observability-web`.
12
+ */
13
+ export interface ObservabilityClient {
14
+ /** Buffer an ingestion event for later flushing. */
15
+ enqueue(event: IngestionEvent): void;
16
+ /** Flush all buffered events to the server. */
17
+ flush(): Promise<void>;
18
+ /** Flush remaining events and release resources. */
19
+ shutdown(): Promise<void>;
20
+ }
6
21
  /**
7
22
  * Options for constructing the ObservabilityCallbackHandler.
8
23
  * Provide either a pre-configured `client` instance, or `clientOptions`
9
- * to have the handler create one internally.
24
+ * to have the handler create one internally (requires `@illuma-ai/observability-node`).
10
25
  */
11
26
  export interface ObservabilityCallbackHandlerOptions {
12
- /** Pre-configured ObserveClient instance */
13
- client?: ObserveClient;
14
- /** Options to construct an ObserveClient (used if `client` is not provided) */
15
- clientOptions?: ObserveClientOptions;
27
+ /** Pre-configured client instance implementing the ObservabilityClient interface */
28
+ client?: ObservabilityClient;
29
+ /**
30
+ * Options to construct an observability client.
31
+ * When provided without `client`, the handler will attempt to dynamically
32
+ * import `@illuma-ai/observability-node` and construct an `Observability` instance.
33
+ */
34
+ clientOptions?: ObservabilityClientConfig;
16
35
  /** Optional trace name override (default: "langchain-run") */
17
36
  traceName?: string;
18
37
  /** Optional user ID to associate with the trace */
@@ -23,6 +42,8 @@ export interface ObservabilityCallbackHandlerOptions {
23
42
  tags?: string[];
24
43
  /** Optional metadata for the trace */
25
44
  metadata?: Record<string, unknown>;
45
+ /** Optional environment name (e.g., 'production', 'staging') */
46
+ environment?: string;
26
47
  }
27
48
  /**
28
49
  * LangChain callback handler that sends trace data to Illuma Observe.
@@ -30,15 +51,17 @@ export interface ObservabilityCallbackHandlerOptions {
30
51
  * The handler maps LangChain's run hierarchy to Illuma Observe's trace model:
31
52
  * - The first (root) run lazily creates a **trace**
32
53
  * - LLM runs create **generation** observations (with updates on end/error)
33
- * - Chain, tool, and retriever runs create **span** observations (with updates on end/error)
54
+ * - Chain runs create **chain** observations (with updates on end/error)
55
+ * - Tool runs create **tool** observations (with updates on end/error)
56
+ * - Retriever runs create **retriever** observations (with updates on end/error)
34
57
  * - Parent/child relationships are preserved via `parentObservationId`
35
58
  *
36
59
  * @example
37
60
  * ```ts
38
61
  * import { ObservabilityCallbackHandler } from '@illuma-ai/observability-langchain';
39
- * import { ObserveClient } from '@illuma-ai/observe-sdk';
62
+ * import { Observability } from '@illuma-ai/observability-node';
40
63
  *
41
- * const client = new ObserveClient({
64
+ * const client = new Observability({
42
65
  * publicKey: 'pk-...',
43
66
  * secretKey: 'sk-...',
44
67
  * baseUrl: 'https://observe.illuma.ai',
@@ -60,6 +83,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
60
83
  private sessionId?;
61
84
  private traceTags?;
62
85
  private traceMetadata?;
86
+ private environment?;
63
87
  /**
64
88
  * Maps LangChain runId -> internal run state.
65
89
  * Used to correlate start/end/error callbacks for the same run.
@@ -93,7 +117,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
93
117
  */
94
118
  handleLLMError(err: Error, runId: string): Promise<void>;
95
119
  /**
96
- * Called when a chain starts. Creates a span-create event.
120
+ * Called when a chain starts. Creates a chain-create event.
97
121
  * If this is the first callback, the root trace is also created.
98
122
  * @param chain - Serialized chain descriptor
99
123
  * @param inputs - The input object passed to the chain
@@ -114,7 +138,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
114
138
  */
115
139
  handleChainError(err: Error, runId: string): Promise<void>;
116
140
  /**
117
- * Called when a tool invocation starts. Creates a span-create event
141
+ * Called when a tool invocation starts. Creates a tool-create event
118
142
  * with the tool name and input.
119
143
  * @param tool - Serialized tool descriptor
120
144
  * @param input - The input string passed to the tool
@@ -135,7 +159,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
135
159
  */
136
160
  handleToolError(err: Error, runId: string): Promise<void>;
137
161
  /**
138
- * Called when a retriever query starts. Creates a span-create event
162
+ * Called when a retriever query starts. Creates a retriever-create event
139
163
  * for the retrieval operation.
140
164
  * @param retriever - Serialized retriever descriptor
141
165
  * @param query - The search query string
@@ -163,7 +187,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
163
187
  getTraceId(): string | null;
164
188
  /**
165
189
  * Flush all pending events to the Illuma Observe API.
166
- * Delegates to the underlying ObserveClient.flush().
190
+ * Delegates to the underlying client's flush().
167
191
  */
168
192
  flushAsync(): Promise<void>;
169
193
  /**
@@ -181,16 +205,14 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
181
205
  */
182
206
  private ensureTrace;
183
207
  /**
184
- * Push a raw ingestion event into the ObserveClient's internal queue.
208
+ * Create an ingestion event and enqueue it via the client's public API.
185
209
  *
186
- * The SDK's public API (TraceClient.generation/span) only supports *-create
187
- * events, but our callback handler needs *-update events as well.
188
- * Since both packages are owned by Illuma, we access the client's internal
189
- * queue directly. The queue is a simple array that gets drained on flush.
210
+ * Uses `client.enqueue()` which handles auto-flush internally when the
211
+ * queue reaches the configured `flushAt` threshold.
190
212
  *
191
213
  * @param type - The ingestion event type (e.g., 'generation-create', 'span-update')
192
214
  * @param body - The event body payload
193
215
  */
194
- private pushEvent;
216
+ private enqueueEvent;
195
217
  }
196
218
  //# sourceMappingURL=callback-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"callback-handler.d.ts","sourceRoot":"","sources":["../src/callback-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EAGrB,MAAM,wBAAwB,CAAC;AAqBhC;;;;GAIG;AACH,MAAM,WAAW,mCAAmC;IAClD,4CAA4C;IAC5C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,4BAA6B,SAAQ,mBAAmB;IACnE,IAAI,SAAkC;IAEtC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAU;IAE5B,gCAAgC;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,aAAa,CAAC,CAA0B;IAEhD;;;OAGG;IACH,OAAO,CAAC,IAAI,CAA+B;IAE3C;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAuB;gBAE9B,OAAO,EAAE,mCAAmC;IA4BxD;;;;;;OAMG;IACG,cAAc,CAClB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,KAAK,CAAC,EAAE,MAAM,EAAE,EAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC;IA6BhB;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BnE;;;;OAIG;IACG,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB9D;;;;;;;OAOG;IACG,gBAAgB,CACpB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IA4BhB;;;;OAIG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAchB;;;;OAIG;IACG,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBhE;;;;;;;OAOG;IACG,eAAe,CACnB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IA6BhB;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcjE;;;;OAIG;IACG,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB/D;;;;;;;OAOG;IACG,oBAAoB,CACxB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IA6BhB;;;;;OAKG;IACG,kBAAkB,CACtB,SAAS,EAAE,QAAQ,EAAE,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAuBhB;;;;OAIG;IACG,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpE;;;OAGG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/B;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAoBnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,SAAS;CAuBlB"}
1
+ {"version":3,"file":"callback-handler.d.ts","sourceRoot":"","sources":["../src/callback-handler.ts"],"names":[],"mappings":"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"}
@@ -6,15 +6,17 @@ import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
6
6
  * The handler maps LangChain's run hierarchy to Illuma Observe's trace model:
7
7
  * - The first (root) run lazily creates a **trace**
8
8
  * - LLM runs create **generation** observations (with updates on end/error)
9
- * - Chain, tool, and retriever runs create **span** observations (with updates on end/error)
9
+ * - Chain runs create **chain** observations (with updates on end/error)
10
+ * - Tool runs create **tool** observations (with updates on end/error)
11
+ * - Retriever runs create **retriever** observations (with updates on end/error)
10
12
  * - Parent/child relationships are preserved via `parentObservationId`
11
13
  *
12
14
  * @example
13
15
  * ```ts
14
16
  * import { ObservabilityCallbackHandler } from '@illuma-ai/observability-langchain';
15
- * import { ObserveClient } from '@illuma-ai/observe-sdk';
17
+ * import { Observability } from '@illuma-ai/observability-node';
16
18
  *
17
- * const client = new ObserveClient({
19
+ * const client = new Observability({
18
20
  * publicKey: 'pk-...',
19
21
  * secretKey: 'sk-...',
20
22
  * baseUrl: 'https://observe.illuma.ai',
@@ -36,6 +38,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
36
38
  sessionId;
37
39
  traceTags;
38
40
  traceMetadata;
41
+ environment;
39
42
  /**
40
43
  * Maps LangChain runId -> internal run state.
41
44
  * Used to correlate start/end/error callbacks for the same run.
@@ -53,9 +56,19 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
53
56
  this.ownsClient = false;
54
57
  }
55
58
  else if (options.clientOptions) {
56
- // eslint-disable-next-line @typescript-eslint/no-require-imports
57
- const { ObserveClient: ClientCtor } = require('@illuma-ai/observe-sdk');
58
- this.client = new ClientCtor(options.clientOptions);
59
+ // Dynamically require observability-node to construct a client from options.
60
+ // This avoids a hard dependency — users who pass a pre-constructed client
61
+ // do not need observability-node installed.
62
+ try {
63
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
64
+ const { Observability } = require('@illuma-ai/observability-node');
65
+ this.client = new Observability(options.clientOptions);
66
+ }
67
+ catch {
68
+ throw new Error('ObservabilityCallbackHandler: when using `clientOptions`, ' +
69
+ '`@illuma-ai/observability-node` must be installed. ' +
70
+ 'Either install it or provide a pre-constructed `client` instance.');
71
+ }
59
72
  this.ownsClient = true;
60
73
  }
61
74
  else {
@@ -66,6 +79,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
66
79
  this.sessionId = options.sessionId;
67
80
  this.traceTags = options.tags;
68
81
  this.traceMetadata = options.metadata;
82
+ this.environment = options.environment;
69
83
  }
70
84
  // ---------------------------------------------------------------------------
71
85
  // LLM callbacks
@@ -90,13 +104,18 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
90
104
  type: 'generation',
91
105
  name,
92
106
  });
93
- this.pushEvent('generation-create', {
107
+ // Extract model and provider from LangChain metadata if available
108
+ const model = (_metadata?.ls_model_name ?? undefined);
109
+ const provider = (_metadata?.ls_provider ?? undefined);
110
+ this.enqueueEvent('generation-create', {
94
111
  id: observationId,
95
112
  traceId,
96
113
  parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
97
114
  name,
98
115
  startTime,
99
116
  input: prompts,
117
+ ...(model ? { model } : {}),
118
+ ...(provider ? { provider } : {}),
100
119
  metadata: {
101
120
  langchainRunId: runId,
102
121
  serializedLlm: llm,
@@ -119,12 +138,14 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
119
138
  // Different LLM providers place usage stats in different fields.
120
139
  const llmOutput = output.llmOutput;
121
140
  const tokenUsage = (llmOutput?.tokenUsage ?? llmOutput?.usage ?? {});
122
- this.pushEvent('generation-update', {
141
+ const provider = (llmOutput?.provider ?? llmOutput?.ls_provider ?? undefined);
142
+ this.enqueueEvent('generation-update', {
123
143
  id: run.observationId,
124
144
  traceId: run.traceId,
125
145
  endTime,
126
146
  output: generation?.text ?? output.generations,
127
147
  model: (llmOutput?.modelName ?? llmOutput?.model ?? undefined),
148
+ provider,
128
149
  usage: {
129
150
  promptTokens: (tokenUsage.promptTokens ?? tokenUsage.prompt_tokens),
130
151
  completionTokens: (tokenUsage.completionTokens ?? tokenUsage.completion_tokens),
@@ -142,7 +163,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
142
163
  const run = this.runs.get(runId);
143
164
  if (!run)
144
165
  return;
145
- this.pushEvent('generation-update', {
166
+ this.enqueueEvent('generation-update', {
146
167
  id: run.observationId,
147
168
  traceId: run.traceId,
148
169
  endTime: new Date().toISOString(),
@@ -156,7 +177,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
156
177
  // Chain callbacks
157
178
  // ---------------------------------------------------------------------------
158
179
  /**
159
- * Called when a chain starts. Creates a span-create event.
180
+ * Called when a chain starts. Creates a chain-create event.
160
181
  * If this is the first callback, the root trace is also created.
161
182
  * @param chain - Serialized chain descriptor
162
183
  * @param inputs - The input object passed to the chain
@@ -173,10 +194,10 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
173
194
  traceId,
174
195
  parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
175
196
  startTime,
176
- type: 'span',
197
+ type: 'chain',
177
198
  name,
178
199
  });
179
- this.pushEvent('span-create', {
200
+ this.enqueueEvent('chain-create', {
180
201
  id: observationId,
181
202
  traceId,
182
203
  parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
@@ -197,7 +218,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
197
218
  const run = this.runs.get(runId);
198
219
  if (!run)
199
220
  return;
200
- this.pushEvent('span-update', {
221
+ this.enqueueEvent('span-update', {
201
222
  id: run.observationId,
202
223
  traceId: run.traceId,
203
224
  endTime: new Date().toISOString(),
@@ -214,7 +235,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
214
235
  const run = this.runs.get(runId);
215
236
  if (!run)
216
237
  return;
217
- this.pushEvent('span-update', {
238
+ this.enqueueEvent('span-update', {
218
239
  id: run.observationId,
219
240
  traceId: run.traceId,
220
241
  endTime: new Date().toISOString(),
@@ -228,7 +249,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
228
249
  // Tool callbacks
229
250
  // ---------------------------------------------------------------------------
230
251
  /**
231
- * Called when a tool invocation starts. Creates a span-create event
252
+ * Called when a tool invocation starts. Creates a tool-create event
232
253
  * with the tool name and input.
233
254
  * @param tool - Serialized tool descriptor
234
255
  * @param input - The input string passed to the tool
@@ -245,10 +266,10 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
245
266
  traceId,
246
267
  parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
247
268
  startTime,
248
- type: 'span',
269
+ type: 'tool',
249
270
  name,
250
271
  });
251
- this.pushEvent('span-create', {
272
+ this.enqueueEvent('tool-create', {
252
273
  id: observationId,
253
274
  traceId,
254
275
  parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
@@ -257,7 +278,6 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
257
278
  input,
258
279
  metadata: {
259
280
  langchainRunId: runId,
260
- observationType: 'tool',
261
281
  },
262
282
  });
263
283
  }
@@ -270,7 +290,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
270
290
  const run = this.runs.get(runId);
271
291
  if (!run)
272
292
  return;
273
- this.pushEvent('span-update', {
293
+ this.enqueueEvent('span-update', {
274
294
  id: run.observationId,
275
295
  traceId: run.traceId,
276
296
  endTime: new Date().toISOString(),
@@ -287,7 +307,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
287
307
  const run = this.runs.get(runId);
288
308
  if (!run)
289
309
  return;
290
- this.pushEvent('span-update', {
310
+ this.enqueueEvent('span-update', {
291
311
  id: run.observationId,
292
312
  traceId: run.traceId,
293
313
  endTime: new Date().toISOString(),
@@ -301,7 +321,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
301
321
  // Retriever callbacks
302
322
  // ---------------------------------------------------------------------------
303
323
  /**
304
- * Called when a retriever query starts. Creates a span-create event
324
+ * Called when a retriever query starts. Creates a retriever-create event
305
325
  * for the retrieval operation.
306
326
  * @param retriever - Serialized retriever descriptor
307
327
  * @param query - The search query string
@@ -318,10 +338,10 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
318
338
  traceId,
319
339
  parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
320
340
  startTime,
321
- type: 'span',
341
+ type: 'retriever',
322
342
  name,
323
343
  });
324
- this.pushEvent('span-create', {
344
+ this.enqueueEvent('retriever-create', {
325
345
  id: observationId,
326
346
  traceId,
327
347
  parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
@@ -330,7 +350,6 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
330
350
  input: query,
331
351
  metadata: {
332
352
  langchainRunId: runId,
333
- observationType: 'retriever',
334
353
  },
335
354
  });
336
355
  }
@@ -349,7 +368,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
349
368
  pageContent: doc.pageContent,
350
369
  metadata: doc.metadata,
351
370
  }));
352
- this.pushEvent('span-update', {
371
+ this.enqueueEvent('span-update', {
353
372
  id: run.observationId,
354
373
  traceId: run.traceId,
355
374
  endTime: new Date().toISOString(),
@@ -369,7 +388,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
369
388
  const run = this.runs.get(runId);
370
389
  if (!run)
371
390
  return;
372
- this.pushEvent('span-update', {
391
+ this.enqueueEvent('span-update', {
373
392
  id: run.observationId,
374
393
  traceId: run.traceId,
375
394
  endTime: new Date().toISOString(),
@@ -391,7 +410,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
391
410
  }
392
411
  /**
393
412
  * Flush all pending events to the Illuma Observe API.
394
- * Delegates to the underlying ObserveClient.flush().
413
+ * Delegates to the underlying client's flush().
395
414
  */
396
415
  async flushAsync() {
397
416
  await this.client.flush();
@@ -424,7 +443,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
424
443
  return this.rootTraceId;
425
444
  }
426
445
  this.rootTraceId = randomUUID();
427
- this.pushEvent('trace-create', {
446
+ this.enqueueEvent('trace-create', {
428
447
  id: this.rootTraceId,
429
448
  name: this.traceName,
430
449
  userId: this.userId,
@@ -432,38 +451,29 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
432
451
  tags: this.traceTags,
433
452
  metadata: this.traceMetadata,
434
453
  input,
454
+ ...(this.environment ? { environment: this.environment } : {}),
435
455
  });
436
456
  return this.rootTraceId;
437
457
  }
438
458
  /**
439
- * Push a raw ingestion event into the ObserveClient's internal queue.
459
+ * Create an ingestion event and enqueue it via the client's public API.
440
460
  *
441
- * The SDK's public API (TraceClient.generation/span) only supports *-create
442
- * events, but our callback handler needs *-update events as well.
443
- * Since both packages are owned by Illuma, we access the client's internal
444
- * queue directly. The queue is a simple array that gets drained on flush.
461
+ * Uses `client.enqueue()` which handles auto-flush internally when the
462
+ * queue reaches the configured `flushAt` threshold.
445
463
  *
446
464
  * @param type - The ingestion event type (e.g., 'generation-create', 'span-update')
447
465
  * @param body - The event body payload
448
466
  */
449
- pushEvent(type, body) {
467
+ enqueueEvent(type, body) {
450
468
  const event = {
451
469
  id: randomUUID(),
452
470
  type,
453
471
  timestamp: new Date().toISOString(),
454
472
  body,
455
473
  };
456
- // Access the client's internal queue and flush threshold.
457
- // SCALE: This is O(1) per event - just an array push.
458
- const internal = this.client;
459
- if (internal.stopped) {
460
- return;
461
- }
462
- internal.queue.push(event);
463
- // Trigger auto-flush if batch size threshold is reached
464
- if (internal.queue.length >= internal.flushAt) {
465
- void internal.flush();
466
- }
474
+ // SCALE: O(1) per event — delegates to core client's enqueue which
475
+ // handles batching and auto-flush internally.
476
+ this.client.enqueue(event);
467
477
  }
468
478
  }
469
479
  //# sourceMappingURL=callback-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"callback-handler.js","sourceRoot":"","sources":["../src/callback-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callback-handler.js","sourceRoot":"","sources":["../src/callback-handler.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { ObservabilityCallbackHandler } from './callback-handler.js';
2
- export type { ObservabilityCallbackHandlerOptions } from './callback-handler.js';
2
+ export type { ObservabilityCallbackHandlerOptions, ObservabilityClient, } from './callback-handler.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EACV,mCAAmC,EACnC,mBAAmB,GACpB,MAAM,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,17 +1,43 @@
1
1
  {
2
2
  "name": "@illuma-ai/observability-langchain",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "LangChain callback handler for Illuma Observability",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
- "exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } },
9
- "files": ["dist"],
10
- "scripts": { "build": "tsc", "prepublishOnly": "npm run build" },
11
- "dependencies": { "@illuma-ai/observe-sdk": "^0.1.0" },
12
- "peerDependencies": { "@langchain/core": ">=0.1.0" },
13
- "devDependencies": { "typescript": "^5.4.5", "@types/node": "^20.14.2", "@langchain/core": "^0.3.0" },
14
- "publishConfig": { "access": "public" },
15
- "repository": { "type": "git", "url": "https://github.com/illuma-ai/observability.git", "directory": "packages/observability-langchain" },
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "test": "vitest run",
20
+ "prepublishOnly": "npm run build"
21
+ },
22
+ "dependencies": {
23
+ "@illuma-ai/observability-core": "^0.2.0"
24
+ },
25
+ "peerDependencies": {
26
+ "@langchain/core": ">=0.1.0"
27
+ },
28
+ "devDependencies": {
29
+ "typescript": "^5.4.5",
30
+ "@types/node": "^20.14.2",
31
+ "@langchain/core": "^0.3.0",
32
+ "vitest": "^3.0.0"
33
+ },
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/illuma-ai/observability.git",
40
+ "directory": "packages/observability-langchain"
41
+ },
16
42
  "license": "MIT"
17
43
  }