@illuma-ai/observability-langchain 0.1.0 → 0.2.1

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.
@@ -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,72 @@ 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;
47
+ /** Enable debug logging for trace routing diagnostics */
48
+ debug?: boolean;
49
+ }
50
+ /**
51
+ * Guardrail outcome from ranger's GuardrailTrackingMetadata.
52
+ *
53
+ * - `passed` — No violations detected, content passes through unchanged
54
+ * - `blocked` — Policy violation, content rejected with block message
55
+ * - `anonymized`— PII detected and masked (e.g., emails → [EMAIL])
56
+ * - `intervened`— Guardrail modified content without explicit BLOCKED action
57
+ */
58
+ export type GuardrailOutcome = 'passed' | 'blocked' | 'anonymized' | 'intervened';
59
+ /**
60
+ * Data needed to trace a guardrail execution.
61
+ * Designed to be populated from ranger's GuardrailTrackingMetadata.
62
+ *
63
+ * Every guardrail invocation should be traced — not just blocked ones.
64
+ * The `outcome` field captures what actually happened, and `actionApplied`
65
+ * captures whether the outcome was enforced in the UI (action flags can
66
+ * disable enforcement while still recording the detection for audit).
67
+ */
68
+ export interface GuardrailTraceData {
69
+ /** Human-readable name (e.g., "Input Moderation", "Output Moderation") */
70
+ name?: string;
71
+ /** The guardrail ID from the provider (e.g., AWS Bedrock guardrailId) */
72
+ guardrailId?: string;
73
+ /** Guardrail version */
74
+ guardrailVersion?: string;
75
+ /**
76
+ * What the guardrail decided.
77
+ * Maps directly to ranger's GuardrailOutcome type.
78
+ */
79
+ outcome: GuardrailOutcome;
80
+ /**
81
+ * Whether the outcome was actually enforced in the UI.
82
+ * When false, the guardrail detected something but the action flag
83
+ * (e.g., GUARDRAILS_BLOCK_ENABLED=false) prevented enforcement.
84
+ * The detection is still recorded for audit/compliance.
85
+ */
86
+ actionApplied: boolean;
87
+ /** AWS Bedrock top-level action: 'GUARDRAIL_INTERVENED' | 'NONE' */
88
+ action?: string;
89
+ /** Reason code from the guardrail service (e.g., 'policy_violation', 'anonymized', 'passed') */
90
+ reason?: string;
91
+ /** Source: 'INPUT' for input moderation, 'OUTPUT' for output moderation */
92
+ source: 'INPUT' | 'OUTPUT';
93
+ /** The text that was checked */
94
+ input?: unknown;
95
+ /** The guardrail output (e.g., block message, anonymized text, modified content) */
96
+ output?: unknown;
97
+ /** Original content before modification (for anonymized/intervened outcomes) */
98
+ originalContent?: string;
99
+ /** Modified content after guardrail processing */
100
+ modifiedContent?: string;
101
+ /** Violation details — array of { type, category, confidence?, action? } */
102
+ violations?: unknown[];
103
+ /** Raw AWS Bedrock assessment data (contentPolicy, topicPolicy, wordPolicy, sensitiveInformationPolicy) */
104
+ assessments?: unknown[];
105
+ /** Additional metadata */
106
+ metadata?: Record<string, unknown>;
107
+ /** When the guardrail check started */
108
+ startTime?: string;
109
+ /** When the guardrail check ended */
110
+ endTime?: string;
26
111
  }
27
112
  /**
28
113
  * LangChain callback handler that sends trace data to Illuma Observe.
@@ -30,15 +115,17 @@ export interface ObservabilityCallbackHandlerOptions {
30
115
  * The handler maps LangChain's run hierarchy to Illuma Observe's trace model:
31
116
  * - The first (root) run lazily creates a **trace**
32
117
  * - LLM runs create **generation** observations (with updates on end/error)
33
- * - Chain, tool, and retriever runs create **span** observations (with updates on end/error)
118
+ * - Chain runs create **chain** observations (with updates on end/error)
119
+ * - Tool runs create **tool** observations (with updates on end/error)
120
+ * - Retriever runs create **retriever** observations (with updates on end/error)
34
121
  * - Parent/child relationships are preserved via `parentObservationId`
35
122
  *
36
123
  * @example
37
124
  * ```ts
38
125
  * import { ObservabilityCallbackHandler } from '@illuma-ai/observability-langchain';
39
- * import { ObserveClient } from '@illuma-ai/observe-sdk';
126
+ * import { Observability } from '@illuma-ai/observability-node';
40
127
  *
41
- * const client = new ObserveClient({
128
+ * const client = new Observability({
42
129
  * publicKey: 'pk-...',
43
130
  * secretKey: 'sk-...',
44
131
  * baseUrl: 'https://observe.illuma.ai',
@@ -60,6 +147,8 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
60
147
  private sessionId?;
61
148
  private traceTags?;
62
149
  private traceMetadata?;
150
+ private environment?;
151
+ private debug;
63
152
  /**
64
153
  * Maps LangChain runId -> internal run state.
65
154
  * Used to correlate start/end/error callbacks for the same run.
@@ -93,14 +182,23 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
93
182
  */
94
183
  handleLLMError(err: Error, runId: string): Promise<void>;
95
184
  /**
96
- * Called when a chain starts. Creates a span-create event.
185
+ * Called when a chain starts. Creates a chain-create or agent-create event.
97
186
  * If this is the first callback, the root trace is also created.
187
+ *
188
+ * Agent detection: emits `agent-create` instead of `chain-create` when:
189
+ * - The `_metadata.langgraph_node` value starts with `agent=` (LangGraph convention)
190
+ * - The chain name matches known agent patterns (AgentExecutor, Agent, etc.)
191
+ *
98
192
  * @param chain - Serialized chain descriptor
99
193
  * @param inputs - The input object passed to the chain
100
194
  * @param runId - Unique ID for this LangChain run
101
195
  * @param parentRunId - Parent run ID if this is a nested call
196
+ * @param tags - Tags from LangChain run config
197
+ * @param metadata - Metadata from LangChain run config (may contain langgraph_node)
198
+ * @param runType - LangChain run type hint
199
+ * @param runName - LangChain run name override
102
200
  */
103
- handleChainStart(chain: Serialized, inputs: Record<string, unknown>, runId: string, parentRunId?: string): Promise<void>;
201
+ handleChainStart(chain: Serialized, inputs: Record<string, unknown>, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, unknown>, runType?: string, runName?: string): Promise<void>;
104
202
  /**
105
203
  * Called when a chain completes. Creates a span-update with the outputs.
106
204
  * @param outputs - The output object returned by the chain
@@ -114,7 +212,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
114
212
  */
115
213
  handleChainError(err: Error, runId: string): Promise<void>;
116
214
  /**
117
- * Called when a tool invocation starts. Creates a span-create event
215
+ * Called when a tool invocation starts. Creates a tool-create event
118
216
  * with the tool name and input.
119
217
  * @param tool - Serialized tool descriptor
120
218
  * @param input - The input string passed to the tool
@@ -135,7 +233,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
135
233
  */
136
234
  handleToolError(err: Error, runId: string): Promise<void>;
137
235
  /**
138
- * Called when a retriever query starts. Creates a span-create event
236
+ * Called when a retriever query starts. Creates a retriever-create event
139
237
  * for the retrieval operation.
140
238
  * @param retriever - Serialized retriever descriptor
141
239
  * @param query - The search query string
@@ -161,9 +259,20 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
161
259
  * has been created yet (i.e., no callbacks have fired).
162
260
  */
163
261
  getTraceId(): string | null;
262
+ /**
263
+ * Trace a guardrail execution as a child observation of the current trace.
264
+ *
265
+ * This is designed to be called externally (e.g., from ranger) to attach
266
+ * guardrail results to the trace, since LangChain has no native guardrail
267
+ * callback. Works for both input and output guardrails.
268
+ *
269
+ * @param result - The guardrail execution result
270
+ * @returns The observation ID of the created guardrail span, or null if no trace exists
271
+ */
272
+ traceGuardrail(result: GuardrailTraceData): string | null;
164
273
  /**
165
274
  * Flush all pending events to the Illuma Observe API.
166
- * Delegates to the underlying ObserveClient.flush().
275
+ * Delegates to the underlying client's flush().
167
276
  */
168
277
  flushAsync(): Promise<void>;
169
278
  /**
@@ -181,16 +290,33 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
181
290
  */
182
291
  private ensureTrace;
183
292
  /**
184
- * Push a raw ingestion event into the ObserveClient's internal queue.
293
+ * Detect whether a chain is actually an agent execution.
294
+ * Uses two heuristics:
295
+ * 1. LangGraph metadata: `langgraph_node` starts with `agent=` (illuma-agents convention)
296
+ * 2. Chain name patterns: names like `AgentExecutor`, `Agent`, `OpenAIAgent`, etc.
297
+ *
298
+ * @param chainName - The chain's serialized name
299
+ * @param metadata - LangChain run metadata (may contain langgraph_node)
300
+ * @returns true if this chain should be treated as an agent
301
+ */
302
+ private detectAgent;
303
+ /**
304
+ * Extract the agent ID from LangGraph metadata.
305
+ * The `langgraph_node` value uses the format `agent=<agentId>`.
306
+ *
307
+ * @param metadata - LangChain run metadata
308
+ * @returns The extracted agent ID, or undefined if not present
309
+ */
310
+ private extractAgentId;
311
+ /**
312
+ * Create an ingestion event and enqueue it via the client's public API.
185
313
  *
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.
314
+ * Uses `client.enqueue()` which handles auto-flush internally when the
315
+ * queue reaches the configured `flushAt` threshold.
190
316
  *
191
317
  * @param type - The ingestion event type (e.g., 'generation-create', 'span-update')
192
318
  * @param body - The event body payload
193
319
  */
194
- private pushEvent;
320
+ private enqueueEvent;
195
321
  }
196
322
  //# sourceMappingURL=callback-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"callback-handler.d.ts","sourceRoot":"","sources":["../src/callback-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callback-handler.d.ts","sourceRoot":"","sources":["../src/callback-handler.ts"],"names":[],"mappings":"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"}