@osohq/langchain 0.1.0 → 0.1.2-rc

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.
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @osohq/langchain
2
2
 
3
- Oso observability integration for LangChain agents.
3
+ Oso integration for LangChain 0.x agents.
4
4
 
5
- Callback handler that automatically captures and sends all LangChain agent events to Oso's observability platform for monitoring, debugging, and security analysis.
5
+ Callback handler that automatically captures and sends all LangChain agent events to Oso for monitoring, debugging, and security analysis.
6
6
 
7
7
  ## Installation
8
8
 
@@ -19,138 +19,61 @@ yarn add @osohq/langchain
19
19
  ## Quick Start
20
20
 
21
21
  ```typescript
22
- import { OsoObservabilityCallback } from "@osohq/langchain";
23
- import { createOpenAIToolsAgent, AgentExecutor } from "langchain/agents";
22
+ import { OsoCallback } from "@osohq/langchain";
23
+ import { createReactAgent } from "@langchain/langgraph/prebuilt";
24
24
  import { ChatOpenAI } from "@langchain/openai";
25
25
 
26
- // Create the callback (reads OSO_AUTH_TOKEN from environment)
27
- const callback = new OsoObservabilityCallback({
26
+ // Create the callback (reads API key from OSO_AUTH environment variable)
27
+ const callback = new OsoCallback({
28
28
  agentId: "my-support-agent",
29
29
  });
30
30
 
31
- // Add to your agent
31
+ // Create your agent
32
32
  const llm = new ChatOpenAI({ model: "gpt-4" });
33
- const agent = await createOpenAIToolsAgent({ llm, tools, prompt });
34
- const agentExecutor = new AgentExecutor({
35
- agent,
36
- tools,
33
+ const tools = [tool1, tool2, tool3];
34
+ const prompt = "You help.";
35
+ const agent = await createReactAgent({ llm, tools, prompt });
36
+
37
+ // Use your agent -- NOTE: make sure you pass the callback into
38
+ // the `invoke` method, rather than attaching it to a particular
39
+ // LangGraph node, so that all events are captured.
40
+ const result = await agent.invoke({
41
+ input: "help!",
42
+ }, {
37
43
  callbacks: [callback],
38
44
  });
39
-
40
- // Use your agent - all events are automatically captured
41
- const result = await agentExecutor.invoke({
42
- input: "Hello, how can I help?",
43
- });
44
-
45
- // Clean up
46
- await callback.close();
47
45
  ```
48
46
 
49
47
  ## Configuration
50
48
 
51
49
  ### Environment Variables
52
50
 
53
- Set these in your environment or `.env` file:
51
+ Set these in your environment:
54
52
 
55
53
  ```bash
56
- # Required: Your Oso authentication token
57
- OSO_AUTH_TOKEN=your-token-here
58
-
59
- # Optional: Custom Oso endpoint (defaults to https://cloud.osohq.com/api/events)
60
- OSO_ENDPOINT=https://cloud.osohq.com/api/events
54
+ # Required: Your Oso API key
55
+ OSO_AUTH=your-oso-api-key
61
56
 
62
- # Optional: Enable/disable observability (defaults to true)
63
- OSO_OBSERVABILITY_ENABLED=true
57
+ # Optional: Custom Oso endpoint (defaults to https://cloud.osohq.com)
58
+ OSO_URL=https://cloud.osohq.com
64
59
  ```
65
60
 
66
61
  ### Constructor Parameters
67
62
 
68
63
  ```typescript
69
- new OsoObservabilityCallback({
70
- endpoint: "https://cloud.osohq.com/api/events", // Oso endpoint URL
71
- authToken: "your-token", // Oso auth token
72
- enabled: true, // Enable/disable sending events
73
- sessionId: "unique-session-id", // Group related conversations
74
- metadata: { userId: "123", env: "prod" }, // Custom metadata for all events
75
- agentId: "my-agent", // Agent identifier
64
+ new OsoCallback({
65
+ url: "https://cloud.osohq.com", // Oso API URL (default: OSO_URL env var or https://cloud.osohq.com)
66
+ apiKey: "your-api-key", // Oso API key (default: OSO_AUTH env var)
67
+ agentId: "my-agent", // Agent identifier for tracking (default: "default-agent")
68
+ sessionId: "unique-session-uuid", // Session ID to group related conversations (default: auto-generated UUID)
69
+ users: [{ type: "User", id: "user-123" }], // Users associated with this session
70
+ metadata: { environment: "production" }, // Additional metadata to attach to all events
71
+ logger: (level, message, metadata) => console.log(level, message, metadata), // Custom logging function
76
72
  });
77
73
  ```
78
74
 
79
75
  All parameters are optional and fall back to environment variables or defaults.
80
76
 
81
- ## What Gets Captured
82
-
83
- The callback automatically captures all LangChain events:
84
-
85
- ### LLM Events
86
-
87
- - Model name and configuration
88
- - Prompts sent to the LLM
89
- - Generated responses
90
- - Token usage (prompt, completion, total)
91
- - Errors and failures
92
-
93
- ### Tool Events
94
-
95
- - Tool name and description
96
- - Input parameters
97
- - Output/results
98
- - Execution duration (milliseconds)
99
- - Errors and stack traces
100
-
101
- ### Agent Events
102
-
103
- - Agent reasoning and thought process
104
- - Tool selection decisions
105
- - Tool input parameters
106
- - Final outputs
107
- - Complete execution flow
108
-
109
- ### Chain Events
110
-
111
- - Chain type and name
112
- - Input parameters
113
- - Output values
114
- - Nested chain execution
115
-
116
- ### Execution Summary
117
-
118
- At the end of each agent execution, a summary event is sent with:
119
-
120
- - Total execution duration
121
- - Number of LLM calls, tool calls, and agent steps
122
- - Total token usage
123
- - Error count
124
- - Complete execution trace
125
-
126
- ## Event Structure
127
-
128
- Every event sent to Oso has this structure:
129
-
130
- ```json
131
- {
132
- "event_type": "tool.completed",
133
- "execution_id": "unique-execution-id",
134
- "session_id": "conversation-session-id",
135
- "timestamp": "2024-02-15T10:30:45.123Z",
136
- "agent_id": "my-agent",
137
- "data": {
138
- /* event-specific data */
139
- },
140
- "metadata": {
141
- /* your custom metadata */
142
- }
143
- }
144
- ```
145
-
146
- ### Event Types
147
-
148
- - `llm.started` / `llm.completed` / `llm.error`
149
- - `tool.started` / `tool.completed` / `tool.error`
150
- - `agent.action` / `agent.finished`
151
- - `chain.started` / `chain.completed` / `chain.error`
152
- - `execution.summary` - Final summary with all accumulated data
153
-
154
77
  ## Error Handling
155
78
 
156
79
  The callback is designed to fail gracefully:
@@ -161,22 +84,32 @@ The callback is designed to fail gracefully:
161
84
 
162
85
  ## Logging
163
86
 
164
- The callback uses Node.js console logging. You can configure it in your application or use a custom logger:
87
+ The callback supports custom logging through the `logger` configuration option:
165
88
 
166
89
  ```typescript
167
- // Set NODE_DEBUG environment variable to see debug logs
168
- process.env.NODE_DEBUG = "langchain-oso";
90
+ const callback = new OsoCallback({
91
+ agentId: "my-agent",
92
+ logger: (level, message, metadata) => {
93
+ console.log(`[${level.toUpperCase()}] ${message}`, metadata);
94
+ },
95
+ });
169
96
  ```
170
97
 
98
+ The logger function receives three parameters:
99
+ - `level`: One of "error", "warn", "info", or "debug"
100
+ - `message`: The log message string
101
+ - `metadata`: Optional additional context (object)
102
+
171
103
  ## Examples
172
104
 
173
105
  ### Basic Agent with Tools
174
106
 
175
107
  ```typescript
176
- import { OsoObservabilityCallback } from "@osohq/langchain";
108
+ import { OsoCallback } from "@osohq/langchain";
177
109
  import { createOpenAIToolsAgent, AgentExecutor } from "langchain/agents";
178
110
  import { ChatOpenAI } from "@langchain/openai";
179
111
  import { tool } from "@langchain/core/tools";
112
+ import { z } from "zod";
180
113
 
181
114
  const searchOrders = tool(
182
115
  async ({ customerId }: { customerId: string }) => {
@@ -192,36 +125,31 @@ const searchOrders = tool(
192
125
  );
193
126
 
194
127
  async function main() {
195
- const callback = new OsoObservabilityCallback({ agentId: "support-agent" });
128
+ const callback = new OsoCallback({ agentId: "support-agent" });
196
129
 
197
130
  const llm = new ChatOpenAI({ model: "gpt-4o-mini" });
198
131
  const tools = [searchOrders];
199
132
 
200
133
  const agent = await createOpenAIToolsAgent({ llm, tools, prompt });
201
- const agentExecutor = new AgentExecutor({
202
- agent,
203
- tools,
204
- callbacks: [callback],
205
- });
206
-
207
- const result = await agentExecutor.invoke({
208
- input: "Find orders for customer CUST001",
209
- });
134
+ const agentExecutor = new AgentExecutor({ agent, tools });
210
135
 
211
- console.log(result.output);
136
+ const result = await agentExecutor.invoke(
137
+ { input: "Find orders for customer CUST001" },
138
+ { callbacks: [callback] }
139
+ );
212
140
 
213
- await callback.close();
141
+ console.log(result);
214
142
  }
215
143
  ```
216
144
 
217
- ### With Custom Metadata
145
+ ### With Custom Metadata and Users
218
146
 
219
147
  ```typescript
220
- const callback = new OsoObservabilityCallback({
148
+ const callback = new OsoCallback({
221
149
  agentId: "support-agent",
222
150
  sessionId: "user-session-123",
151
+ users: [{ type: "User", id: "user-456" }],
223
152
  metadata: {
224
- userId: "user-456",
225
153
  environment: "production",
226
154
  version: "1.2.3",
227
155
  },
@@ -236,20 +164,24 @@ import { randomUUID } from "crypto";
236
164
  const sessionId = randomUUID();
237
165
 
238
166
  // Agent 1
239
- const callback1 = new OsoObservabilityCallback({
167
+ const callback1 = new OsoCallback({
240
168
  agentId: "agent-1",
241
169
  sessionId,
242
170
  });
243
- const result1 = await agent1Executor.invoke({ input: "..." });
244
- await callback1.close();
171
+ const result1 = await agent1Executor.invoke(
172
+ { input: "..." },
173
+ { callbacks: [callback1] }
174
+ );
245
175
 
246
176
  // Agent 2 - same session
247
- const callback2 = new OsoObservabilityCallback({
177
+ const callback2 = new OsoCallback({
248
178
  agentId: "agent-2",
249
179
  sessionId,
250
180
  });
251
- const result2 = await agent2Executor.invoke({ input: "..." });
252
- await callback2.close();
181
+ const result2 = await agent2Executor.invoke(
182
+ { input: "..." },
183
+ { callbacks: [callback2] }
184
+ );
253
185
  ```
254
186
 
255
187
  ## TypeScript Support
@@ -258,8 +190,8 @@ This package is written in TypeScript and includes full type definitions. All ty
258
190
 
259
191
  ## Requirements
260
192
 
261
- - Node.js 16.0.0 or higher
262
- - @langchain/core >= 0.1.0
193
+ - Node.js 20.0.0 or higher
194
+ - @langchain/core >=0.1.0, <1.0.0
263
195
 
264
196
  ## License
265
197
 
@@ -1,79 +1,64 @@
1
1
  /**
2
- * LangChain callback handler for Oso observability integration.
2
+ * LangChain callback handler for Oso integration.
3
3
  *
4
4
  * Example usage:
5
- * import { OsoObservabilityCallback } from '@osohq/langchain';
5
+ * import { OsoCallback } from '@osohq/langchain';
6
6
  *
7
- * const callback = new OsoObservabilityCallback({
8
- * authToken: "your-oso-auth-token",
9
- * agentId: "my-support-agent"
7
+ * const callback = new OsoCallback({
8
+ * apiKey: "your-oso-api-key",
9
+ * agentId: "my-support-agent",
10
+ * users: [{ type: "User", id: "user-123" }]
10
11
  * });
11
12
  *
12
- * const agent = createAgent({ callbacks: [callback] });
13
- * const result = await agent.invoke({ input: "Hello" });
14
- * await callback.close();
13
+ * const agent = createAgent({ llm, tools, prompt });
14
+ * const result = await agent.invoke({ input: "Hello" }, { callbacks: [callback] });
15
15
  */
16
16
  import { BaseCallbackHandler } from "@langchain/core/callbacks/base";
17
- import type { AgentAction, AgentFinish } from "@langchain/core/agents";
18
- import type { LLMResult } from "@langchain/core/outputs";
19
17
  import type { Serialized } from "@langchain/core/load/serializable";
20
- interface OsoObservabilityCallbackConfig {
21
- /** Oso observability endpoint URL (default: OSO_ENDPOINT env var or https://cloud.osohq.com/api/events) */
22
- endpoint?: string;
23
- /** Oso authentication token (default: OSO_AUTH_TOKEN env var) */
24
- authToken?: string;
25
- /** Whether to send events (default: OSO_OBSERVABILITY_ENABLED env var or true) */
26
- enabled?: boolean;
18
+ import type { ChainValues } from "@langchain/core/utils/types";
19
+ export type LogLevel = "error" | "warn" | "info" | "debug";
20
+ export type LoggingFn = (level: LogLevel, message: string, metadata?: Record<string, any>) => void;
21
+ export type Value = {
22
+ type: string;
23
+ id: string;
24
+ };
25
+ export interface OsoCallbackConfig {
26
+ /** Oso API URL (default: OSO_URL env var or https://cloud.osohq.com) */
27
+ url?: string;
28
+ /** Oso API key (default: OSO_AUTH env var) */
29
+ apiKey?: string;
27
30
  /** Session ID to group related conversations (default: auto-generated UUID) */
28
31
  sessionId?: string;
29
32
  /** Additional metadata to attach to all events */
30
33
  metadata?: Record<string, any>;
31
34
  /** Agent identifier for tracking (default: "default-agent") */
32
35
  agentId?: string;
36
+ /** Users associated with this session */
37
+ users?: Value[];
38
+ logger?: LoggingFn;
33
39
  }
34
40
  /**
35
- * LangChain callback handler that sends agent events to Oso observability.
36
- *
37
- * Automatically captures:
38
- * - LLM calls (model, prompts, responses, token usage)
39
- * - Tool executions (name, inputs, outputs, duration, errors)
40
- * - Agent reasoning (decisions, thoughts, intermediate steps)
41
- * - Chain executions (starts, ends, inputs, outputs)
42
- * - Errors at any stage
41
+ * LangChain callback handler that sends agent events to Oso.
43
42
  */
44
- export declare class OsoObservabilityCallback extends BaseCallbackHandler {
43
+ export declare class OsoCallback extends BaseCallbackHandler {
45
44
  name: string;
46
- private endpoint;
47
- private authToken?;
48
- private enabled;
45
+ private url;
46
+ private apiKey?;
49
47
  private sessionId;
50
48
  private metadata;
51
49
  private agentId;
52
- private executionId;
53
- private executionStartTime;
54
- private toolStartTimes;
55
- private llmCalls;
56
- private toolCalls;
57
- private agentSteps;
58
- private errors;
59
- constructor(config?: OsoObservabilityCallbackConfig);
60
- handleLLMStart(llm: Serialized, prompts: string[], runId: string, parentRunId?: string, extraParams?: Record<string, any>, tags?: string[], metadata?: Record<string, any>): Promise<void>;
61
- handleLLMEnd(output: LLMResult, runId: string, parentRunId?: string): Promise<void>;
62
- handleLLMError(error: Error, runId: string, parentRunId?: string): Promise<void>;
63
- handleToolStart(tool: Serialized, input: string, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, any>): Promise<void>;
50
+ private users;
51
+ private logger;
52
+ private rootRunId?;
53
+ private toolNames;
54
+ constructor(config?: OsoCallbackConfig);
55
+ private getEventBase;
56
+ handleToolStart(tool: Serialized, input: string, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, any>, runName?: string): Promise<void>;
64
57
  handleToolEnd(output: string, runId: string, parentRunId?: string): Promise<void>;
65
58
  handleToolError(error: Error, runId: string, parentRunId?: string): Promise<void>;
66
- handleAgentAction(action: AgentAction, runId: string, parentRunId?: string): Promise<void>;
67
- handleAgentEnd(action: AgentFinish, runId: string, parentRunId?: string): Promise<void>;
68
- handleChainStart(chain: Serialized, inputs: Record<string, any>, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, any>): Promise<void>;
69
- handleChainEnd(outputs: Record<string, any>, runId: string, parentRunId?: string): Promise<void>;
59
+ handleChainStart(chain: Serialized, inputs: ChainValues, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, any>): Promise<void>;
60
+ handleChainEnd(outputs: ChainValues, runId: string, parentRunId?: string): Promise<void>;
70
61
  handleChainError(error: Error, runId: string, parentRunId?: string): Promise<void>;
71
62
  private sendEvent;
72
- private sendExecutionSummary;
73
- /**
74
- * Clean up resources. Call this when you're done using the callback.
75
- */
76
- close(): Promise<void>;
77
63
  }
78
- export {};
79
64
  //# sourceMappingURL=callbacks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../src/callbacks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../src/callbacks.ts"],"names":[],"mappings":"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"}
package/dist/callbacks.js CHANGED
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  /**
3
- * LangChain callback handler for Oso observability integration.
3
+ * LangChain callback handler for Oso integration.
4
4
  *
5
5
  * Example usage:
6
- * import { OsoObservabilityCallback } from '@osohq/langchain';
6
+ * import { OsoCallback } from '@osohq/langchain';
7
7
  *
8
- * const callback = new OsoObservabilityCallback({
9
- * authToken: "your-oso-auth-token",
10
- * agentId: "my-support-agent"
8
+ * const callback = new OsoCallback({
9
+ * apiKey: "your-oso-api-key",
10
+ * agentId: "my-support-agent",
11
+ * users: [{ type: "User", id: "user-123" }]
11
12
  * });
12
13
  *
13
- * const agent = createAgent({ callbacks: [callback] });
14
- * const result = await agent.invoke({ input: "Hello" });
15
- * await callback.close();
14
+ * const agent = createAgent({ llm, tools, prompt });
15
+ * const result = await agent.invoke({ input: "Hello" }, { callbacks: [callback] });
16
16
  */
17
17
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
18
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
@@ -27,271 +27,258 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  return (mod && mod.__esModule) ? mod : { "default": mod };
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.OsoObservabilityCallback = void 0;
30
+ exports.OsoCallback = void 0;
31
31
  const base_1 = require("@langchain/core/callbacks/base");
32
32
  const cross_fetch_1 = __importDefault(require("cross-fetch"));
33
33
  const crypto_1 = require("crypto");
34
+ const helpers_1 = require("./helpers");
34
35
  /**
35
- * LangChain callback handler that sends agent events to Oso observability.
36
- *
37
- * Automatically captures:
38
- * - LLM calls (model, prompts, responses, token usage)
39
- * - Tool executions (name, inputs, outputs, duration, errors)
40
- * - Agent reasoning (decisions, thoughts, intermediate steps)
41
- * - Chain executions (starts, ends, inputs, outputs)
42
- * - Errors at any stage
36
+ * LangChain callback handler that sends agent events to Oso.
43
37
  */
44
- class OsoObservabilityCallback extends base_1.BaseCallbackHandler {
38
+ class OsoCallback extends base_1.BaseCallbackHandler {
45
39
  constructor(config = {}) {
46
40
  super();
47
- this.name = "OsoObservabilityCallback";
48
- // Accumulate data for summary event
49
- this.llmCalls = [];
50
- this.toolCalls = [];
51
- this.agentSteps = [];
52
- this.errors = [];
53
- this.endpoint =
54
- config.endpoint ||
55
- process.env.OSO_ENDPOINT ||
56
- "https://cloud.osohq.com/api/events";
57
- this.authToken = config.authToken || process.env.OSO_AUTH_TOKEN;
58
- this.enabled =
59
- config.enabled !== undefined
60
- ? config.enabled
61
- : (process.env.OSO_OBSERVABILITY_ENABLED || "true").toLowerCase() ===
62
- "true";
63
- this.sessionId = config.sessionId || (0, crypto_1.randomUUID)();
41
+ this.name = "OsoCallback";
42
+ this.logger = config.logger || (() => { });
43
+ this.url = new URL("api/agents/event", config.url || process.env.OSO_URL || "https://cloud.osohq.com");
44
+ this.apiKey = config.apiKey || process.env.OSO_AUTH;
45
+ if (!this.apiKey) {
46
+ this.logger("warn", "No API key provided for OsoCallback -- no events will be sent.");
47
+ }
48
+ const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
49
+ if (config.sessionId && uuidRegex.test(config.sessionId)) {
50
+ this.sessionId = config.sessionId;
51
+ }
52
+ else {
53
+ if (config.sessionId) {
54
+ this.logger("warn", `Invalid UUID provided for sessionId: ${config.sessionId}. Generating a new one.`);
55
+ }
56
+ this.sessionId = (0, crypto_1.randomUUID)();
57
+ }
64
58
  this.metadata = config.metadata || {};
65
59
  this.agentId = config.agentId || "default-agent";
66
- this.executionId = (0, crypto_1.randomUUID)();
67
- this.executionStartTime = Date.now();
68
- this.toolStartTimes = new Map();
69
- console.debug(`OsoObservabilityCallback initialized: endpoint=${this.endpoint}, ` +
70
- `agentId=${this.agentId}, sessionId=${this.sessionId}, enabled=${this.enabled}`);
60
+ this.users = config.users || [];
61
+ this.toolNames = new Map();
62
+ this.logger("debug", `OsoCallback initialized: url=${this.url}, ` +
63
+ `agentId=${this.agentId}, sessionId=${this.sessionId}`);
71
64
  }
72
- // LLM callbacks
73
- handleLLMStart(llm, prompts, runId, parentRunId, extraParams, tags, metadata) {
74
- return __awaiter(this, void 0, void 0, function* () {
75
- var _a;
76
- const modelName = (llm === null || llm === void 0 ? void 0 : llm.name) || ((_a = llm === null || llm === void 0 ? void 0 : llm.id) === null || _a === void 0 ? void 0 : _a[llm.id.length - 1]) || "unknown";
77
- yield this.sendEvent("llm.started", {
78
- model: modelName,
79
- prompts,
80
- num_prompts: prompts.length,
81
- });
82
- });
65
+ getEventBase() {
66
+ return Object.assign({ agent_id: this.agentId, session_id: this.sessionId, users: this.users, timestamp: new Date().toISOString() }, this.metadata);
83
67
  }
84
- handleLLMEnd(output, runId, parentRunId) {
68
+ // Tool callbacks
69
+ handleToolStart(tool, input, runId, parentRunId, tags, metadata, runName) {
85
70
  return __awaiter(this, void 0, void 0, function* () {
71
+ const toolName = (tool === null || tool === void 0 ? void 0 : tool.name) || runName || "unknown";
72
+ this.toolNames.set(runId, toolName);
73
+ let toolParameters;
86
74
  try {
87
- const llmOutput = output.llmOutput || {};
88
- const tokenUsage = llmOutput.tokenUsage || {};
89
- const generations = [];
90
- if (output.generations) {
91
- for (const genList of output.generations) {
92
- for (const gen of genList) {
93
- generations.push({
94
- text: gen.text || String(gen),
95
- metadata: gen.generationInfo || {},
96
- });
97
- }
98
- }
99
- }
100
- const callData = {
101
- model: llmOutput.modelName || "unknown",
102
- generations,
103
- token_usage: {
104
- prompt_tokens: tokenUsage.promptTokens || 0,
105
- completion_tokens: tokenUsage.completionTokens || 0,
106
- total_tokens: tokenUsage.totalTokens || 0,
107
- },
108
- };
109
- this.llmCalls.push(callData);
110
- yield this.sendEvent("llm.completed", callData);
75
+ toolParameters = JSON.parse(input);
111
76
  }
112
- catch (error) {
113
- console.error(`Error in handleLLMEnd: ${error}`);
114
- yield this.sendEvent("llm.error", { error: String(error) });
77
+ catch (_a) {
78
+ toolParameters = { input };
115
79
  }
116
- });
117
- }
118
- handleLLMError(error, runId, parentRunId) {
119
- return __awaiter(this, void 0, void 0, function* () {
120
- const errorData = {
121
- error_type: error.constructor.name,
122
- error_message: error.message,
123
- };
124
- this.errors.push(Object.assign({ type: "llm_error" }, errorData));
125
- yield this.sendEvent("llm.error", errorData);
126
- });
127
- }
128
- // Tool callbacks
129
- handleToolStart(tool, input, runId, parentRunId, tags, metadata) {
130
- return __awaiter(this, void 0, void 0, function* () {
131
- const toolName = (tool === null || tool === void 0 ? void 0 : tool.name) || "unknown";
132
- const toolDescription = (tool === null || tool === void 0 ? void 0 : tool.description) || "";
133
- this.toolStartTimes.set(runId, Date.now());
134
- yield this.sendEvent("tool.started", {
135
- tool_name: toolName,
136
- tool_description: toolDescription,
137
- input,
138
- run_id: runId,
139
- });
80
+ yield this.sendEvent("tool_call_request", Object.assign(Object.assign({}, this.getEventBase()), { tool_name: toolName, tool_parameters: toolParameters }));
140
81
  });
141
82
  }
142
83
  handleToolEnd(output, runId, parentRunId) {
143
84
  return __awaiter(this, void 0, void 0, function* () {
144
- const startTime = this.toolStartTimes.get(runId);
145
- const durationMs = startTime ? Date.now() - startTime : null;
146
- const toolData = {
147
- output,
148
- duration_ms: durationMs,
149
- run_id: runId,
150
- };
151
- this.toolCalls.push(toolData);
152
- yield this.sendEvent("tool.completed", toolData);
153
- this.toolStartTimes.delete(runId);
85
+ const toolName = this.toolNames.get(runId) || "unknown";
86
+ let toolResult;
87
+ try {
88
+ toolResult = JSON.parse(output);
89
+ }
90
+ catch (_a) {
91
+ toolResult = output;
92
+ }
93
+ yield this.sendEvent("tool_call_response", Object.assign(Object.assign({}, this.getEventBase()), { tool_name: toolName, tool_result: toolResult }));
94
+ this.toolNames.delete(runId);
154
95
  });
155
96
  }
156
97
  handleToolError(error, runId, parentRunId) {
157
98
  return __awaiter(this, void 0, void 0, function* () {
158
- const startTime = this.toolStartTimes.get(runId);
159
- const durationMs = startTime ? Date.now() - startTime : null;
160
- const errorData = {
161
- error_type: error.constructor.name,
162
- error_message: error.message,
163
- duration_ms: durationMs,
164
- run_id: runId,
165
- };
166
- this.errors.push(Object.assign({ type: "tool_error" }, errorData));
167
- yield this.sendEvent("tool.error", errorData);
168
- this.toolStartTimes.delete(runId);
169
- });
170
- }
171
- // Agent callbacks
172
- handleAgentAction(action, runId, parentRunId) {
173
- return __awaiter(this, void 0, void 0, function* () {
174
- const stepData = {
175
- step_type: "action",
176
- tool: action.tool,
177
- tool_input: action.toolInput,
178
- reasoning: action.log,
179
- };
180
- this.agentSteps.push(stepData);
181
- yield this.sendEvent("agent.action", stepData);
182
- });
183
- }
184
- handleAgentEnd(action, runId, parentRunId) {
185
- return __awaiter(this, void 0, void 0, function* () {
186
- const finishData = {
187
- return_values: action.returnValues,
188
- final_reasoning: action.log || null,
189
- };
190
- yield this.sendEvent("agent.finished", finishData);
191
- yield this.sendExecutionSummary();
99
+ const toolName = this.toolNames.get(runId) || "unknown";
100
+ yield this.sendEvent("tool_call_error", Object.assign(Object.assign({}, this.getEventBase()), { tool_name: toolName, error: error.message }));
101
+ this.toolNames.delete(runId);
192
102
  });
193
103
  }
194
104
  // Chain callbacks
195
105
  handleChainStart(chain, inputs, runId, parentRunId, tags, metadata) {
196
106
  return __awaiter(this, void 0, void 0, function* () {
197
- var _a;
198
- const chainName = (chain === null || chain === void 0 ? void 0 : chain.name) || ((_a = chain === null || chain === void 0 ? void 0 : chain.id) === null || _a === void 0 ? void 0 : _a[chain.id.length - 1]) || "unknown";
199
- yield this.sendEvent("chain.started", {
200
- chain_name: chainName,
201
- inputs,
202
- });
107
+ if (!parentRunId) {
108
+ this.rootRunId = runId;
109
+ let message = "";
110
+ if (typeof inputs === "string") {
111
+ message = inputs;
112
+ }
113
+ else if (inputs.input) {
114
+ message =
115
+ typeof inputs.input === "string"
116
+ ? inputs.input
117
+ : JSON.stringify(inputs.input);
118
+ }
119
+ else if (inputs.question) {
120
+ message =
121
+ typeof inputs.question === "string"
122
+ ? inputs.question
123
+ : JSON.stringify(inputs.question);
124
+ }
125
+ else if (inputs.messages && Array.isArray(inputs.messages)) {
126
+ const lastMessage = inputs.messages[inputs.messages.length - 1];
127
+ message = (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.content) || JSON.stringify(lastMessage);
128
+ }
129
+ else if (inputs.message && typeof inputs.message === "string") {
130
+ // Webflow-specific logic
131
+ // webflow sends an event with a `message` field that is a stringified JSON object
132
+ const messageObject = (0, helpers_1.parseSerializedObject)(inputs.message);
133
+ if (messageObject !== null && typeof messageObject === "object") {
134
+ if ("userInput" in messageObject &&
135
+ messageObject.userInput !== null &&
136
+ typeof messageObject.userInput === "object") {
137
+ // if there is no `text` field, then it is not a user prompt event
138
+ // Webflow has events for tool call completions that come in as `userInput` with no `text` field
139
+ if (!("text" in messageObject.userInput)) {
140
+ return;
141
+ }
142
+ message =
143
+ typeof messageObject.userInput.text === "string"
144
+ ? messageObject.userInput.text
145
+ : JSON.stringify(messageObject.userInput.text);
146
+ }
147
+ }
148
+ }
149
+ else {
150
+ message = JSON.stringify(inputs);
151
+ }
152
+ yield this.sendEvent("message_from_user", Object.assign(Object.assign({}, this.getEventBase()), { message }));
153
+ }
203
154
  });
204
155
  }
205
156
  handleChainEnd(outputs, runId, parentRunId) {
206
157
  return __awaiter(this, void 0, void 0, function* () {
207
- yield this.sendEvent("chain.completed", { outputs });
158
+ if (runId === this.rootRunId) {
159
+ let message = "";
160
+ if (typeof outputs === "string") {
161
+ message = outputs;
162
+ }
163
+ else if (outputs.output) {
164
+ message =
165
+ typeof outputs.output === "string"
166
+ ? outputs.output
167
+ : JSON.stringify(outputs.output);
168
+ }
169
+ else if (outputs.text) {
170
+ message =
171
+ typeof outputs.text === "string"
172
+ ? outputs.text
173
+ : JSON.stringify(outputs.text);
174
+ }
175
+ else if (outputs.response) {
176
+ message =
177
+ typeof outputs.response === "string"
178
+ ? outputs.response
179
+ : JSON.stringify(outputs.response);
180
+ }
181
+ else if (outputs.messages && Array.isArray(outputs.messages)) {
182
+ const lastMessage = outputs.messages[outputs.messages.length - 1];
183
+ message = (lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.content) || JSON.stringify(lastMessage);
184
+ }
185
+ else if (outputs.message && typeof outputs.message === "string") {
186
+ // Webflow-specific logic
187
+ // webflow sends an event with a `message` field that is a stringified JSON object
188
+ const messageObject = (0, helpers_1.parseSerializedObject)(outputs.message);
189
+ if (messageObject !== null && typeof messageObject === "object") {
190
+ // check for tool call events
191
+ if ("messageHistory" in messageObject &&
192
+ Array.isArray(messageObject.messageHistory) &&
193
+ "userInput" in messageObject &&
194
+ messageObject.userInput !== null &&
195
+ typeof messageObject.userInput === "object" &&
196
+ "toolCallId" in messageObject.userInput &&
197
+ messageObject.userInput.toolCallId &&
198
+ messageObject.userInput.toolCallId !== null) {
199
+ const toolCallId = messageObject.userInput.toolCallId;
200
+ const toolCallMessage = messageObject.messageHistory.find((message) => "toolCalls" in message &&
201
+ Array.isArray(message.toolCalls) &&
202
+ message.toolCalls.find((toolCall) => "id" in toolCall && toolCall.id === toolCallId));
203
+ if (toolCallMessage) {
204
+ const toolCall = toolCallMessage.toolCalls.find((toolCall) => "id" in toolCall && toolCall.id === toolCallId);
205
+ if (toolCall && "name" in toolCall && "input" in toolCall) {
206
+ yield this.sendEvent("tool_call_request", Object.assign(Object.assign({}, this.getEventBase()), { tool_name: toolCall.name, tool_parameters: toolCall.input }));
207
+ if ("content" in messageObject.userInput) {
208
+ yield this.sendEvent("tool_call_response", Object.assign(Object.assign({}, this.getEventBase()), { tool_name: toolCall.name, tool_result: typeof messageObject.userInput.content === "string" ? JSON.parse(messageObject.userInput.content) : messageObject.userInput.content }));
209
+ }
210
+ }
211
+ }
212
+ }
213
+ // check for LLM response events
214
+ if ("finalResult" in messageObject) {
215
+ if (messageObject.finalResult === null) {
216
+ // null `finalResult` means there is no LLM response event
217
+ return;
218
+ }
219
+ message =
220
+ typeof messageObject.finalResult === "string"
221
+ ? messageObject.finalResult
222
+ : JSON.stringify(messageObject.finalResult);
223
+ }
224
+ }
225
+ }
226
+ else {
227
+ message = JSON.stringify(outputs);
228
+ }
229
+ yield this.sendEvent("message_to_user", Object.assign(Object.assign({}, this.getEventBase()), { message }));
230
+ this.rootRunId = undefined;
231
+ }
208
232
  });
209
233
  }
210
234
  handleChainError(error, runId, parentRunId) {
211
235
  return __awaiter(this, void 0, void 0, function* () {
212
- const errorData = {
213
- error_type: error.constructor.name,
214
- error_message: error.message,
215
- };
216
- this.errors.push(Object.assign({ type: "chain_error" }, errorData));
217
- yield this.sendEvent("chain.error", errorData);
236
+ if (runId === this.rootRunId) {
237
+ this.rootRunId = undefined;
238
+ }
218
239
  });
219
240
  }
220
241
  // Internal methods
221
- sendEvent(eventType, data) {
242
+ sendEvent(path, payload) {
222
243
  return __awaiter(this, void 0, void 0, function* () {
223
- if (!this.enabled) {
244
+ if (!this.apiKey) {
245
+ this.logger("warn", "Not sending event because no API key is set", {
246
+ path,
247
+ payload,
248
+ });
224
249
  return;
225
250
  }
251
+ const url = `${this.url}/${path}`;
226
252
  try {
227
- const payload = {
228
- event_type: eventType,
229
- execution_id: this.executionId,
230
- session_id: this.sessionId,
231
- timestamp: new Date().toISOString().replace("+00:00", "Z"),
232
- data,
233
- metadata: this.metadata,
234
- agent_id: this.agentId,
235
- };
236
- console.debug(`Sending event: ${eventType}`);
253
+ this.logger("debug", `Sending event to ${path}`);
237
254
  const headers = {
238
255
  "Content-Type": "application/json",
256
+ Authorization: `Bearer ${this.apiKey}`,
239
257
  };
240
- if (this.authToken) {
241
- headers["Authorization"] = `Bearer ${this.authToken}`;
242
- }
243
- const response = yield (0, cross_fetch_1.default)(this.endpoint, {
258
+ const response = yield (0, cross_fetch_1.default)(url, {
244
259
  method: "POST",
245
260
  headers,
246
261
  body: JSON.stringify(payload),
247
262
  });
248
263
  if (![200, 201, 202].includes(response.status)) {
249
- console.warn(`Oso backend returned ${response.status} for event ${eventType}`);
264
+ this.logger("warn", `Oso backend returned ${response.status} for ${path}`);
265
+ const text = yield response.text();
266
+ this.logger("error", `Response body: ${text}`);
250
267
  }
251
268
  else {
252
- console.debug(`Event ${eventType} sent successfully`);
269
+ this.logger("debug", `Event sent successfully to ${path}`);
253
270
  }
254
271
  }
255
272
  catch (error) {
256
273
  if (error instanceof Error) {
257
- console.warn(`Error sending event ${eventType}: ${error.constructor.name}: ${error.message}`);
274
+ this.logger("error", `Error sending event to ${path}: ${error.constructor.name}: ${error.message}`);
258
275
  }
259
276
  else {
260
- console.error(`Error sending event ${eventType}:`, error);
277
+ this.logger("error", `Error sending event to ${path}: ${error}`);
261
278
  }
262
279
  }
263
280
  });
264
281
  }
265
- sendExecutionSummary() {
266
- return __awaiter(this, void 0, void 0, function* () {
267
- const durationMs = Date.now() - this.executionStartTime;
268
- const totalTokens = this.llmCalls.reduce((sum, call) => sum + (call.token_usage.total_tokens || 0), 0);
269
- const summary = {
270
- execution_id: this.executionId,
271
- session_id: this.sessionId,
272
- duration_ms: durationMs,
273
- llm_calls_count: this.llmCalls.length,
274
- tool_calls_count: this.toolCalls.length,
275
- agent_steps_count: this.agentSteps.length,
276
- errors_count: this.errors.length,
277
- total_tokens: totalTokens,
278
- llm_calls: this.llmCalls,
279
- tool_calls: this.toolCalls,
280
- agent_steps: this.agentSteps,
281
- errors: this.errors,
282
- };
283
- yield this.sendEvent("execution.summary", summary);
284
- });
285
- }
286
- /**
287
- * Clean up resources. Call this when you're done using the callback.
288
- */
289
- close() {
290
- return __awaiter(this, void 0, void 0, function* () {
291
- console.debug("OsoObservabilityCallback closed");
292
- // No persistent connections to close in this implementation
293
- });
294
- }
295
282
  }
296
- exports.OsoObservabilityCallback = OsoObservabilityCallback;
283
+ exports.OsoCallback = OsoCallback;
297
284
  //# sourceMappingURL=callbacks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../src/callbacks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../src/callbacks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function parseSerializedObject(str: string): object | null;
2
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMhE"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSerializedObject = parseSerializedObject;
4
+ function parseSerializedObject(str) {
5
+ try {
6
+ return JSON.parse(str);
7
+ }
8
+ catch (_a) {
9
+ return null;
10
+ }
11
+ }
12
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;AAAA,sDAMC;AAND,SAAgB,qBAAqB,CAAC,GAAW;IAC/C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Oso observability integration for LangChain.
3
3
  */
4
- export { OsoObservabilityCallback } from "./callbacks";
4
+ export { OsoCallback } from "./callbacks";
5
5
  export { VERSION } from "./version";
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -3,9 +3,9 @@
3
3
  * Oso observability integration for LangChain.
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.VERSION = exports.OsoObservabilityCallback = void 0;
6
+ exports.VERSION = exports.OsoCallback = void 0;
7
7
  var callbacks_1 = require("./callbacks");
8
- Object.defineProperty(exports, "OsoObservabilityCallback", { enumerable: true, get: function () { return callbacks_1.OsoObservabilityCallback; } });
8
+ Object.defineProperty(exports, "OsoCallback", { enumerable: true, get: function () { return callbacks_1.OsoCallback; } });
9
9
  var version_1 = require("./version");
10
10
  Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_1.VERSION; } });
11
11
  //# 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;;GAEG;;;AAEH,yCAAuD;AAA9C,qHAAA,wBAAwB,OAAA;AACjC,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yCAA0C;AAAjC,wGAAA,WAAW,OAAA;AACpB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.0";
1
+ export declare const VERSION = "0.1.2-rc";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,aAAa,CAAC"}
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "0.1.0";
4
+ exports.VERSION = "0.1.2-rc";
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@osohq/langchain",
3
- "version": "0.1.0",
4
- "description": "Oso observability integration for LangChain agents",
3
+ "version": "0.1.2-rc",
4
+ "description": "Oso integration for LangChain agents",
5
5
  "engines": {
6
- "node": ">=16.0.0"
6
+ "node": ">=20.0.0"
7
7
  },
8
8
  "keywords": [
9
9
  "langchain",
@@ -37,10 +37,11 @@
37
37
  "prepublish": "yarn build"
38
38
  },
39
39
  "dependencies": {
40
- "@langchain/core": ">=0.1.0",
40
+ "@langchain/core": "<1.0.0",
41
41
  "cross-fetch": "^4.1.0"
42
42
  },
43
43
  "devDependencies": {
44
+ "@langchain/langgraph": "<1.0.0",
44
45
  "@types/jest": "^29.5.12",
45
46
  "@types/node": "^20.0.0",
46
47
  "eslint": "^8.0.1",
@@ -53,9 +54,10 @@
53
54
  "prettier": "^3.2.5",
54
55
  "rimraf": "^3.0.2",
55
56
  "ts-jest": "^29.1.4",
56
- "typescript": "^5.4.5"
57
+ "typescript": "^5.4.5",
58
+ "zod": "^3.0.0"
57
59
  },
58
60
  "peerDependencies": {
59
- "@langchain/core": ">=0.1.0"
61
+ "@langchain/core": "<1.0.0"
60
62
  }
61
63
  }