honeyhive 1.0.4 → 1.0.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "honeyhive",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "author": "HoneyHive",
5
5
  "main": "./index.js",
6
6
  "sideEffects": false,
@@ -22,17 +22,18 @@ declare class HoneyHiveLangChainTracer extends BaseCallbackHandler {
22
22
  source: string;
23
23
  userProperties?: Record<string, any> | undefined;
24
24
  verbose: boolean;
25
+ private sdk;
25
26
  private headers;
26
27
  private metrics?;
27
28
  private sessionMetadata?;
28
29
  private config?;
29
30
  private baseUrl;
30
31
  private sessionId;
31
- private logStack;
32
+ private logMap;
33
+ private rootLogs;
32
34
  constructor(input: HoneyHiveTracerInput);
33
35
  private createLog;
34
- private pushLog;
35
- private popLog;
36
+ private addLogToParent;
36
37
  handleLLMStart(llm: Serialized, prompts: string[], runId: string, parentstring?: string, extraParams?: Record<string, unknown>, tags?: string[], metadata?: Record<string, unknown>): Promise<void>;
37
38
  handleLLMEnd(output: LLMResult, runId: string, parentstring?: string): Promise<void>;
38
39
  handleChainStart(chain: Serialized, inputs: ChainValues, runId: string, parentstring?: string, tags?: string[], metadata?: Record<string, unknown>): Promise<void>;
@@ -49,6 +50,10 @@ declare class HoneyHiveLangChainTracer extends BaseCallbackHandler {
49
50
  handleRetrieverStart(retriever: Serialized, query: string, runId: string, parentstring?: string, tags?: string[], metadata?: Record<string, unknown>): Promise<void>;
50
51
  handleRetrieverEnd(documents: DocumentInterface[], runId: string, parentstring?: string): Promise<void>;
51
52
  handleRetrieverError(error: Error, runId: string, parentstring?: string): Promise<void>;
53
+ setFeedback(feedback: Record<string, any>): Promise<void>;
54
+ setMetric(metrics: Record<string, any>): Promise<void>;
55
+ setMetadata(metadata: Record<string, any>): Promise<void>;
56
+ setUserProperties(userProperties: Record<string, any>): Promise<void>;
52
57
  startNewSession(): Promise<void>;
53
58
  }
54
59
  export { HoneyHiveLangChainTracer };
@@ -1 +1 @@
1
- {"version":3,"file":"lc_tracer.d.ts","sourceRoot":"","sources":["../src/sdk/lc_tracer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lc_tracer.d.ts","sourceRoot":"","sources":["../src/sdk/lc_tracer.ts"],"names":[],"mappings":"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"}
package/sdk/lc_tracer.js CHANGED
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HoneyHiveLangChainTracer = void 0;
4
+ const sdk_1 = require("./sdk");
4
5
  const base_1 = require("@langchain/core/callbacks/base");
5
6
  const uuid_1 = require("uuid");
6
7
  class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
7
8
  constructor(input) {
8
9
  super();
9
- this.logStack = [];
10
+ this.logMap = {}; // Store logs by their event_id
11
+ this.rootLogs = []; // Keep track of top-level logs
10
12
  this.project = input.project;
11
13
  this.name = input.sessionName;
12
14
  this.source = input.source || 'langchain';
@@ -25,11 +27,15 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
25
27
  'Content-Type': 'application/json',
26
28
  'Authorization': `Bearer ${apiKey}`,
27
29
  };
30
+ this.sdk = new sdk_1.HoneyHive({
31
+ bearerAuth: apiKey,
32
+ serverURL: this.baseUrl,
33
+ });
28
34
  }
29
- createLog(event_type, event_name, inputs, outputs, config, start_time, end_time, metadata, error, parent_id, user_properties, metrics, feedback) {
35
+ createLog(event_id, event_type, event_name, inputs, outputs, config, start_time, end_time, metadata, error, parent_id, user_properties, metrics, feedback) {
30
36
  return {
31
37
  project: this.project,
32
- event_id: (0, uuid_1.v4)(),
38
+ event_id: event_id,
33
39
  parent_id,
34
40
  event_type,
35
41
  event_name: event_name || "Event",
@@ -42,40 +48,38 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
42
48
  start_time: start_time,
43
49
  end_time: end_time,
44
50
  duration: (end_time - start_time) / 1000,
45
- metadata: metadata,
51
+ metadata: metadata || {},
46
52
  source: this.source,
47
53
  error,
48
54
  children: []
49
55
  };
50
56
  }
51
- pushLog(log) {
57
+ addLogToParent(log) {
52
58
  var _a;
53
- if (this.logStack.length > 0) {
54
- const parentLog = this.logStack[this.logStack.length - 1];
55
- log.parent_id = parentLog === null || parentLog === void 0 ? void 0 : parentLog.event_id;
56
- (_a = parentLog === null || parentLog === void 0 ? void 0 : parentLog.children) === null || _a === void 0 ? void 0 : _a.push(log);
59
+ if (log.parent_id) {
60
+ const parentLog = this.logMap[log.parent_id];
61
+ if (parentLog) {
62
+ (_a = parentLog.children) === null || _a === void 0 ? void 0 : _a.push(log); // Add log as a child of its parent
63
+ }
57
64
  }
58
- this.logStack.push(log);
59
- }
60
- popLog() {
61
- return this.logStack.pop();
65
+ else {
66
+ // If there's no parent, it's a top-level log
67
+ this.rootLogs.push(log);
68
+ }
69
+ this.logMap[log.event_id] = log; // Store in the logMap by event_id
62
70
  }
63
- async handleLLMStart(llm, prompts,
64
- // @ts-expect-error: Not used
65
- runId, parentstring, extraParams,
71
+ async handleLLMStart(llm, prompts, runId, parentstring, extraParams,
66
72
  // @ts-expect-error: Not used
67
73
  tags, metadata) {
68
74
  const startTime = 1000 * Date.now();
69
- const log = this.createLog('model', llm.id[llm.id.length - 1], { prompts }, null, this.convertToModelConfig(llm, extraParams), startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
70
- this.pushLog(log);
75
+ const log = this.createLog(runId, 'model', llm.id[llm.id.length - 1], { prompts }, null, this.convertToModelConfig(llm, extraParams), startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
76
+ this.addLogToParent(log);
71
77
  }
72
- async handleLLMEnd(output,
73
- // @ts-expect-error: Not used
74
- runId,
78
+ async handleLLMEnd(output, runId,
75
79
  // @ts-expect-error: Not used
76
80
  parentstring) {
77
81
  const endTime = 1000 * Date.now();
78
- const log = this.popLog();
82
+ const log = this.logMap[runId];
79
83
  if (log) {
80
84
  log.end_time = endTime;
81
85
  log.duration = (endTime - log.start_time) / 1000;
@@ -96,85 +100,83 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
96
100
  log.metadata['generationInfo'] = metadata;
97
101
  }
98
102
  // If this is the top-level chain, post the entire log structure
99
- if (this.logStack.length === 0) {
100
- await this.postTrace([log]);
103
+ if (log.parent_id === undefined) {
104
+ await this.postTrace(this.rootLogs);
101
105
  }
102
106
  }
103
107
  }
104
- async handleChainStart(chain, inputs,
105
- // @ts-expect-error: Not used
106
- runId, parentstring,
108
+ async handleChainStart(chain, inputs, runId, parentstring,
107
109
  // @ts-expect-error: Not used
108
110
  tags, metadata) {
109
111
  const startTime = 1000 * Date.now();
110
- const log = this.createLog('chain', chain.id[chain.id.length - 1], inputs, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
111
- this.pushLog(log);
112
+ const log = this.createLog(runId, 'chain', chain.id[chain.id.length - 1], inputs, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
113
+ this.addLogToParent(log);
112
114
  }
113
- async handleChainEnd(outputs,
114
- // @ts-expect-error: Not used
115
- runId,
115
+ async handleChainEnd(outputs, runId,
116
116
  // @ts-expect-error: Not used
117
117
  parentstring) {
118
118
  const endTime = 1000 * Date.now();
119
- const log = this.popLog();
119
+ const log = this.logMap[runId];
120
120
  if (log) {
121
121
  log.end_time = endTime;
122
122
  log.duration = (endTime - log.start_time) / 1000;
123
123
  log.outputs = outputs;
124
124
  // If this is the top-level chain, post the entire log structure
125
- if (this.logStack.length === 0) {
126
- await this.postTrace([log]);
125
+ if (log.parent_id === undefined) {
126
+ await this.postTrace(this.rootLogs);
127
127
  }
128
128
  }
129
129
  }
130
- async handleToolStart(tool, input,
131
- // @ts-expect-error: Not used
132
- runId, parentstring,
130
+ async handleToolStart(tool, input, runId, parentstring,
133
131
  // @ts-expect-error: Not used
134
132
  tags, metadata) {
135
133
  const startTime = 1000 * Date.now();
136
- const log = this.createLog('tool', tool.id[tool.id.length - 1], { input }, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
137
- this.pushLog(log);
134
+ const log = this.createLog(runId, 'tool', tool.id[tool.id.length - 1], { input }, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
135
+ this.addLogToParent(log);
138
136
  }
139
- async handleToolEnd(output,
140
- // @ts-expect-error: Not used
141
- runId,
137
+ async handleToolEnd(output, runId,
142
138
  // @ts-expect-error: Not used
143
139
  parentstring) {
144
140
  const endTime = 1000 * Date.now();
145
- const log = this.popLog();
141
+ const log = this.logMap[runId];
146
142
  if (log) {
147
143
  log.end_time = endTime;
148
144
  log.duration = (endTime - log.start_time) / 1000;
149
145
  log.outputs = { output: output };
150
146
  // If this is the top-level chain, post the entire log structure
151
- if (this.logStack.length === 0) {
152
- await this.postTrace([log]);
147
+ if (log.parent_id === undefined) {
148
+ await this.postTrace(this.rootLogs);
153
149
  }
154
150
  }
155
151
  }
156
- async handleAgentAction(action,
157
- // @ts-expect-error: Not used
158
- runId, parentstring) {
152
+ async handleAgentAction(action, runId, parentstring) {
159
153
  const startTime = 1000 * Date.now();
160
- const log = this.createLog('tool', 'Agent Action', { action: action.tool, input: action.toolInput, log: action.log }, null, {}, startTime, startTime, undefined, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
161
- this.pushLog(log);
162
- this.popLog();
154
+ const log = this.createLog(runId, 'tool', 'Agent Action', { action: action.tool, input: action.toolInput, log: action.log }, null, {}, startTime, startTime, undefined, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
155
+ this.addLogToParent(log);
163
156
  // If this is the top-level chain, post the entire log structure
164
- if (this.logStack.length === 0) {
165
- await this.postTrace([log]);
157
+ if (log.parent_id === undefined) {
158
+ await this.postTrace(this.rootLogs);
166
159
  }
167
160
  }
168
- async handleAgentEnd(finish,
169
- // @ts-expect-error: Not used
170
- runId, parentstring) {
161
+ async handleAgentEnd(finish, runId, parentstring) {
171
162
  const endTime = 1000 * Date.now();
172
- const log = this.createLog('tool', 'Agent Finish', { output: finish.returnValues, log: finish.log }, { output: finish.returnValues, log: finish.log }, {}, endTime, endTime, undefined, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
173
- this.pushLog(log);
174
- this.popLog();
175
- // If this is the top-level chain, post the entire log structure
176
- if (this.logStack.length === 0) {
177
- await this.postTrace([log]);
163
+ const log = this.logMap[runId];
164
+ if (log) {
165
+ log.end_time = endTime;
166
+ log.duration = (endTime - log.start_time) / 1000;
167
+ log.outputs = { output: finish.returnValues, log: finish.log };
168
+ // If this is the top-level chain, post the entire log structure
169
+ if (log.parent_id === undefined) {
170
+ await this.postTrace(this.rootLogs);
171
+ }
172
+ }
173
+ else {
174
+ const log = this.createLog(runId, 'tool', 'Agent Finish', { output: finish.returnValues, log: finish.log }, { output: finish.returnValues, log: finish.log }, {}, endTime, endTime, undefined, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
175
+ this.addLogToParent(log);
176
+ // If this is the top-level chain, post the entire log structure
177
+ if (log.parent_id === undefined) {
178
+ await this.postTrace(this.rootLogs);
179
+ }
178
180
  }
179
181
  }
180
182
  convertToModelConfig(llm, extraParams) {
@@ -195,6 +197,10 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
195
197
  if (!response.ok) {
196
198
  throw new Error(`Failed to post trace: ${response.statusText}`);
197
199
  }
200
+ else {
201
+ this.rootLogs = [];
202
+ this.logMap = {};
203
+ }
198
204
  }
199
205
  catch (error) {
200
206
  console.error('Error posting trace:', error);
@@ -203,99 +209,152 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
203
209
  }
204
210
  }
205
211
  }
206
- async handleChainError(error,
207
- // @ts-expect-error: Not used
208
- runId,
212
+ async handleChainError(error, runId,
209
213
  // @ts-expect-error: Not used
210
214
  parentstring) {
211
215
  const endTime = 1000 * Date.now();
212
- const log = this.popLog();
216
+ const log = this.logMap[runId];
213
217
  if (log) {
214
218
  log.end_time = endTime;
215
219
  log.duration = (endTime - log.start_time) / 1000;
216
220
  log.error = error.message;
217
221
  // If this is the top-level chain, post the entire log structure
218
- if (this.logStack.length === 0) {
219
- await this.postTrace([log]);
222
+ if (log.parent_id === undefined) {
223
+ await this.postTrace(this.rootLogs);
220
224
  }
221
225
  }
222
226
  }
223
- async handleLLMError(error,
224
- // @ts-expect-error: Not used
225
- runId,
227
+ async handleLLMError(error, runId,
226
228
  // @ts-expect-error: Not used
227
229
  parentstring) {
228
230
  const endTime = 1000 * Date.now();
229
- const log = this.popLog();
231
+ const log = this.logMap[runId];
230
232
  if (log) {
231
233
  log.end_time = endTime;
232
234
  log.duration = (endTime - log.start_time) / 1000;
233
235
  log.error = error.message;
234
236
  // If this is the top-level chain, post the entire log structure
235
- if (this.logStack.length === 0) {
236
- await this.postTrace([log]);
237
+ if (log.parent_id === undefined) {
238
+ await this.postTrace(this.rootLogs);
237
239
  }
238
240
  }
239
241
  }
240
- async handleToolError(error,
241
- // @ts-expect-error: Not used
242
- runId,
242
+ async handleToolError(error, runId,
243
243
  // @ts-expect-error: Not used
244
244
  parentstring) {
245
245
  const endTime = 1000 * Date.now();
246
- const log = this.popLog();
246
+ const log = this.logMap[runId];
247
247
  if (log) {
248
248
  log.end_time = endTime;
249
249
  log.duration = (endTime - log.start_time) / 1000;
250
250
  log.error = error.message;
251
251
  // If this is the top-level chain, post the entire log structure
252
- if (this.logStack.length === 0) {
253
- await this.postTrace([log]);
252
+ if (log.parent_id === undefined) {
253
+ await this.postTrace(this.rootLogs);
254
254
  }
255
255
  }
256
256
  }
257
- async handleRetrieverStart(retriever, query,
258
- // @ts-expect-error: Not used
259
- runId, parentstring,
257
+ async handleRetrieverStart(retriever, query, runId, parentstring,
260
258
  // @ts-expect-error: Not used
261
259
  tags, metadata) {
262
260
  const startTime = 1000 * Date.now();
263
- const log = this.createLog('tool', retriever.id[retriever.id.length - 1], { query }, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
264
- this.pushLog(log);
261
+ const log = this.createLog(runId, 'tool', retriever.id[retriever.id.length - 1], { query }, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
262
+ this.addLogToParent(log);
265
263
  }
266
- async handleRetrieverEnd(documents,
267
- // @ts-expect-error: Not used
268
- runId,
264
+ async handleRetrieverEnd(documents, runId,
269
265
  // @ts-expect-error: Not used
270
266
  parentstring) {
271
267
  const endTime = 1000 * Date.now();
272
- const log = this.popLog();
268
+ const log = this.logMap[runId];
269
+ // const log = this.popLog();
273
270
  if (log) {
274
271
  log.end_time = endTime;
275
272
  log.duration = (endTime - log.start_time) / 1000;
276
273
  log.outputs = { documents };
277
274
  // If this is the top-level chain, post the entire log structure
278
- if (this.logStack.length === 0) {
279
- await this.postTrace([log]);
275
+ if (log.parent_id === undefined) {
276
+ await this.postTrace(this.rootLogs);
280
277
  }
281
278
  }
282
279
  }
283
- async handleRetrieverError(error,
284
- // @ts-expect-error: Not used
285
- runId,
280
+ async handleRetrieverError(error, runId,
286
281
  // @ts-expect-error: Not used
287
282
  parentstring) {
288
283
  const endTime = 1000 * Date.now();
289
- const log = this.popLog();
284
+ const log = this.logMap[runId];
290
285
  if (log) {
291
286
  log.end_time = endTime;
292
287
  log.duration = (endTime - log.start_time) / 1000;
293
288
  log.error = error.message;
294
289
  // If this is the top-level chain, post the entire log structure
295
- if (this.logStack.length === 0) {
296
- await this.postTrace([log]);
290
+ if (log.parent_id === undefined) {
291
+ await this.postTrace(this.rootLogs);
292
+ }
293
+ }
294
+ }
295
+ async setFeedback(feedback) {
296
+ if (this.sessionId) {
297
+ try {
298
+ await this.sdk.events.updateEvent({
299
+ eventId: this.sessionId,
300
+ feedback: feedback,
301
+ });
302
+ }
303
+ catch (error) {
304
+ console.error("Failed to set feedback:", error);
305
+ }
306
+ }
307
+ else {
308
+ console.error("Session ID is not initialized");
309
+ }
310
+ }
311
+ async setMetric(metrics) {
312
+ if (this.sessionId) {
313
+ try {
314
+ await this.sdk.events.updateEvent({
315
+ eventId: this.sessionId,
316
+ metrics: metrics,
317
+ });
318
+ }
319
+ catch (error) {
320
+ console.error("Failed to set metric:", error);
297
321
  }
298
322
  }
323
+ else {
324
+ console.error("Session ID is not initialized");
325
+ }
326
+ }
327
+ async setMetadata(metadata) {
328
+ if (this.sessionId) {
329
+ try {
330
+ await this.sdk.events.updateEvent({
331
+ eventId: this.sessionId,
332
+ metadata: metadata,
333
+ });
334
+ }
335
+ catch (error) {
336
+ console.error("Failed to set metadata:", error);
337
+ }
338
+ }
339
+ else {
340
+ console.error("Session ID is not initialized");
341
+ }
342
+ }
343
+ async setUserProperties(userProperties) {
344
+ if (this.sessionId) {
345
+ try {
346
+ await this.sdk.events.updateEvent({
347
+ eventId: this.sessionId,
348
+ userProperties: userProperties,
349
+ });
350
+ }
351
+ catch (error) {
352
+ console.error("Failed to set metadata:", error);
353
+ }
354
+ }
355
+ else {
356
+ console.error("Session ID is not initialized");
357
+ }
299
358
  }
300
359
  async startNewSession() {
301
360
  const sessionBody = {
@@ -315,9 +374,7 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
315
374
  body: JSON.stringify(sessionBody),
316
375
  });
317
376
  const text = await response.text();
318
- // Parse the JSON response
319
377
  const jsonResponse = JSON.parse(text);
320
- // Extract the session_id
321
378
  const sessionId = jsonResponse.session_id;
322
379
  this.sessionId = sessionId;
323
380
  if (!response.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"lc_tracer.js","sourceRoot":"","sources":["../src/sdk/lc_tracer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lc_tracer.js","sourceRoot":"","sources":["../src/sdk/lc_tracer.ts"],"names":[],"mappings":";;;AAAA,+BAAkC;AAElC,yDAAqE;AAKrE,+BAAoC;AAoCpC,MAAM,wBAAyB,SAAQ,0BAAmB;IAgBxD,YAAY,KAA2B;QACrC,KAAK,EAAE,CAAC;QAJF,WAAM,GAAwB,EAAE,CAAC,CAAE,+BAA+B;QAClE,aAAQ,GAAU,EAAE,CAAC,CAAE,+BAA+B;QAI5D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,0BAA0B,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,IAAA,SAAM,GAAE,CAAC;QAE1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG;YACb,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,UAAU,MAAM,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC,GAAG,GAAG,IAAI,eAAS,CAAC;YACvB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CACf,QAAgB,EAChB,UAAkB,EAClB,UAA8B,EAC9B,MAA2B,EAC3B,OAAmC,EACnC,MAAW,EACX,UAAkB,EAClB,QAAgB,EAChB,QAA8C,EAC9C,KAAc,EACd,SAAkB,EAClB,eAA4C,EAC5C,OAAoC,EACpC,QAAqC;QAErC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,QAAQ;YAClB,SAAS;YACT,UAAU;YACV,UAAU,EAAE,UAAU,IAAI,OAAO;YACjC,MAAM;YACN,MAAM;YACN,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,eAAe,EAAE,eAAe,IAAI,EAAE;YACtC,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,QAAQ,EAAE,QAAQ,IAAI,EAAE;YACxB,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,IAAI;YACxC,QAAQ,EAAE,QAAQ,IAAI,EAAE;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK;YACL,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,GAAQ;;QAC7B,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC7C,IAAI,SAAS,EAAE,CAAC;gBACd,MAAA,SAAS,CAAC,QAAQ,0CAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC;YACpE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,6CAA6C;YAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,kCAAkC;IACrE,CAAC;IAEQ,KAAK,CAAC,cAAc,CAC3B,GAAe,EACf,OAAiB,EACjB,KAAa,EACb,YAAqB,EACrB,WAAqC;IACrC,6BAA6B;IAC7B,IAAe,EACf,QAAkC;QAElC,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CACxB,KAAK,EACL,OAAO,EACP,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EACzB,EAAE,OAAO,EAAE,EACX,IAAI,EACJ,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,EAC3C,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,EAAE,CACzB,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEQ,KAAK,CAAC,YAAY,CACzB,MAAiB,EACjB,KAAa;IACb,6BAA6B;IAC7B,YAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACjD,kDAAkD;YAClD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YAEvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,0DAA0D;YAC1D,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;gBACzD,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBAClB,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAA6B,CAAC,CAAC;YAClC,GAAG,CAAC,OAAO,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;YAC5C,CAAC;YACD,gEAAgE;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,gBAAgB,CAC7B,KAAiB,EACjB,MAAmB,EACnB,KAAa,EACb,YAAqB;IACrB,6BAA6B;IAC7B,IAAe,EACf,QAAkC;QAElC,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CACxB,KAAK,EACL,OAAO,EACP,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAC7B,MAAM,EACN,IAAI,EACJ,EAAE,EACF,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,EAAE,CACzB,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEQ,KAAK,CAAC,cAAc,CAC3B,OAAoB,EACpB,KAAa;IACb,6BAA6B;IAC7B,YAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACjD,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;YAEtB,gEAAgE;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,eAAe,CAC5B,IAAgB,EAChB,KAAa,EACb,KAAa,EACb,YAAqB;IACrB,6BAA6B;IAC7B,IAAe,EACf,QAAkC;QAElC,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CACxB,KAAK,EACL,MAAM,EACN,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAC3B,EAAE,KAAK,EAAE,EACT,IAAI,EACJ,EAAE,EACF,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,EAAE,CACzB,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEQ,KAAK,CAAC,aAAa,CAC1B,MAAc,EACd,KAAa;IACb,6BAA6B;IAC7B,YAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACjD,GAAG,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACjC,gEAAgE;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,iBAAiB,CAC9B,MAAmB,EACnB,KAAa,EACb,YAAqB;QAErB,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CACxB,KAAK,EACL,MAAM,EACN,cAAc,EACd,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EACjE,IAAI,EACJ,EAAE,EACF,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,EAAE,CACzB,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACzB,gEAAgE;QAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,cAAc,CAC3B,MAAmB,EACnB,KAAa,EACb,YAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACjD,GAAG,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YAC/D,gEAAgE;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CACxB,KAAK,EACL,MAAM,EACN,cAAc,EACd,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAChD,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAChD,EAAE,EACF,OAAO,EACP,OAAO,EACP,SAAS,EACT,SAAS,EACT,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,EAAE,CACzB,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACzB,gEAAgE;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB,CAC1B,GAAe,EACf,WAAqC;QAErC,oHAAoH;QACpH,OAAO;YACL,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAChC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,8DAA8D;YACnF,GAAG,WAAW;SACf,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAW;QACjC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,YAAY,IAAI,CAAC,SAAS,SAAS,EAAE;gBAC/E,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;aAC/B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,gBAAgB,CAC7B,KAAY,EACZ,KAAa;IACb,6BAA6B;IAC7B,YAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACjD,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,gEAAgE;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,cAAc,CAC3B,KAAY,EACZ,KAAa;IACb,6BAA6B;IAC7B,YAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACjD,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,gEAAgE;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,eAAe,CAC5B,KAAY,EACZ,KAAa;IACb,6BAA6B;IAC7B,YAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACjD,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,gEAAgE;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,oBAAoB,CACjC,SAAqB,EACrB,KAAa,EACb,KAAa,EACb,YAAqB;IACrB,6BAA6B;IAC7B,IAAe,EACf,QAAkC;QAElC,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CACxB,KAAK,EACL,MAAM,EACN,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EACrC,EAAE,KAAK,EAAE,EACT,IAAI,EACJ,EAAE,EACF,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,EAAE,CACzB,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEQ,KAAK,CAAC,kBAAkB,CAC/B,SAA8B,EAC9B,KAAa;IACb,6BAA6B;IAC7B,YAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,6BAA6B;QAC7B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACjD,GAAG,CAAC,OAAO,GAAG,EAAE,SAAS,EAAE,CAAC;YAC5B,gEAAgE;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,oBAAoB,CACjC,KAAY,EACZ,KAAa;IACb,6BAA6B;IAC7B,YAAqB;QAErB,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,GAAG,CAAC,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACjD,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,gEAAgE;YAChE,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,QAA6B;QACpD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;oBAChC,OAAO,EAAE,IAAI,CAAC,SAAS;oBACvB,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,OAA4B;QACjD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;oBAChC,OAAO,EAAE,IAAI,CAAC,SAAS;oBACvB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,QAA6B;QACpD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;oBAChC,OAAO,EAAE,IAAI,CAAC,SAAS;oBACvB,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,cAAmC;QAChE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;oBAChC,OAAO,EAAE,IAAI,CAAC,SAAS;oBACvB,cAAc,EAAE,cAAc;iBAC/B,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,YAAY,EAAE,IAAI,CAAC,IAAI;YACvB,eAAe,EAAE,IAAI,CAAC,cAAc;YACpC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,eAAe;SAC/B,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,gBAAgB,EAAE;gBAC5D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;aAClC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC;YAC1C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAE3B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAEQ,4DAAwB"}
@@ -1,3 +1,4 @@
1
+ import { HoneyHive } from "./sdk";
1
2
  import { DocumentInterface } from '@langchain/core/documents';
2
3
  import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
3
4
  import { AgentAction, AgentFinish } from '@langchain/core/agents';
@@ -46,13 +47,15 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
46
47
  source: string;
47
48
  userProperties?: Record<string, any> | undefined;
48
49
  verbose: boolean;
50
+ private sdk: HoneyHive;
49
51
  private headers: Record<string, string>;
50
52
  private metrics?: Record<string, any> | undefined;
51
53
  private sessionMetadata?: Record<string, any> | undefined;
52
54
  private config?: Record<string, any> | undefined;
53
55
  private baseUrl: string;
54
56
  private sessionId: string;
55
- private logStack: Log[] = [];
57
+ private logMap: Record<string, Log> = {}; // Store logs by their event_id
58
+ private rootLogs: Log[] = []; // Keep track of top-level logs
56
59
 
57
60
  constructor(input: HoneyHiveTracerInput) {
58
61
  super();
@@ -76,9 +79,15 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
76
79
  'Content-Type': 'application/json',
77
80
  'Authorization': `Bearer ${apiKey}`,
78
81
  };
82
+
83
+ this.sdk = new HoneyHive({
84
+ bearerAuth: apiKey,
85
+ serverURL: this.baseUrl,
86
+ });
79
87
  }
80
88
 
81
89
  private createLog(
90
+ event_id: string,
82
91
  event_type: string,
83
92
  event_name: string | undefined,
84
93
  inputs: Record<string, any>,
@@ -95,7 +104,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
95
104
  ): Log {
96
105
  return {
97
106
  project: this.project,
98
- event_id: uuidv4(),
107
+ event_id: event_id,
99
108
  parent_id,
100
109
  event_type,
101
110
  event_name: event_name || "Event",
@@ -108,30 +117,29 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
108
117
  start_time: start_time,
109
118
  end_time: end_time,
110
119
  duration: (end_time - start_time) / 1000,
111
- metadata: metadata,
120
+ metadata: metadata || {},
112
121
  source: this.source,
113
122
  error,
114
123
  children: []
115
124
  };
116
125
  }
117
126
 
118
- private pushLog(log: Log): void {
119
- if (this.logStack.length > 0) {
120
- const parentLog = this.logStack[this.logStack.length - 1];
121
- log.parent_id = parentLog?.event_id;
122
- parentLog?.children?.push(log);
127
+ private addLogToParent(log: Log): void {
128
+ if (log.parent_id) {
129
+ const parentLog = this.logMap[log.parent_id];
130
+ if (parentLog) {
131
+ parentLog.children?.push(log); // Add log as a child of its parent
132
+ }
133
+ } else {
134
+ // If there's no parent, it's a top-level log
135
+ this.rootLogs.push(log);
123
136
  }
124
- this.logStack.push(log);
125
- }
126
-
127
- private popLog(): Log | undefined {
128
- return this.logStack.pop();
137
+ this.logMap[log.event_id] = log; // Store in the logMap by event_id
129
138
  }
130
139
 
131
140
  override async handleLLMStart(
132
141
  llm: Serialized,
133
142
  prompts: string[],
134
- // @ts-expect-error: Not used
135
143
  runId: string,
136
144
  parentstring?: string,
137
145
  extraParams?: Record<string, unknown>,
@@ -141,6 +149,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
141
149
  ): Promise<void> {
142
150
  const startTime = 1000 * Date.now();
143
151
  const log = this.createLog(
152
+ runId,
144
153
  'model',
145
154
  llm.id[llm.id.length - 1],
146
155
  { prompts },
@@ -152,18 +161,17 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
152
161
  undefined,
153
162
  parentstring?.toString()
154
163
  );
155
- this.pushLog(log);
164
+ this.addLogToParent(log);
156
165
  }
157
166
 
158
167
  override async handleLLMEnd(
159
168
  output: LLMResult,
160
- // @ts-expect-error: Not used
161
169
  runId: string,
162
170
  // @ts-expect-error: Not used
163
171
  parentstring?: string
164
172
  ): Promise<void> {
165
173
  const endTime = 1000 * Date.now();
166
- const log = this.popLog();
174
+ const log = this.logMap[runId];
167
175
  if (log) {
168
176
  log.end_time = endTime;
169
177
  log.duration = (endTime - log.start_time) / 1000;
@@ -186,8 +194,8 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
186
194
  log.metadata['generationInfo'] = metadata;
187
195
  }
188
196
  // If this is the top-level chain, post the entire log structure
189
- if (this.logStack.length === 0) {
190
- await this.postTrace([log]);
197
+ if (log.parent_id === undefined) {
198
+ await this.postTrace(this.rootLogs);
191
199
  }
192
200
  }
193
201
  }
@@ -195,7 +203,6 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
195
203
  override async handleChainStart(
196
204
  chain: Serialized,
197
205
  inputs: ChainValues,
198
- // @ts-expect-error: Not used
199
206
  runId: string,
200
207
  parentstring?: string,
201
208
  // @ts-expect-error: Not used
@@ -204,6 +211,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
204
211
  ): Promise<void> {
205
212
  const startTime = 1000 * Date.now();
206
213
  const log = this.createLog(
214
+ runId,
207
215
  'chain',
208
216
  chain.id[chain.id.length - 1],
209
217
  inputs,
@@ -215,26 +223,25 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
215
223
  undefined,
216
224
  parentstring?.toString()
217
225
  );
218
- this.pushLog(log);
226
+ this.addLogToParent(log);
219
227
  }
220
228
 
221
229
  override async handleChainEnd(
222
230
  outputs: ChainValues,
223
- // @ts-expect-error: Not used
224
231
  runId: string,
225
232
  // @ts-expect-error: Not used
226
233
  parentstring?: string
227
234
  ): Promise<void> {
228
235
  const endTime = 1000 * Date.now();
229
- const log = this.popLog();
236
+ const log = this.logMap[runId];
230
237
  if (log) {
231
238
  log.end_time = endTime;
232
239
  log.duration = (endTime - log.start_time) / 1000;
233
240
  log.outputs = outputs;
234
241
 
235
242
  // If this is the top-level chain, post the entire log structure
236
- if (this.logStack.length === 0) {
237
- await this.postTrace([log]);
243
+ if (log.parent_id === undefined) {
244
+ await this.postTrace(this.rootLogs);
238
245
  }
239
246
  }
240
247
  }
@@ -242,7 +249,6 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
242
249
  override async handleToolStart(
243
250
  tool: Serialized,
244
251
  input: string,
245
- // @ts-expect-error: Not used
246
252
  runId: string,
247
253
  parentstring?: string,
248
254
  // @ts-expect-error: Not used
@@ -251,6 +257,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
251
257
  ): Promise<void> {
252
258
  const startTime = 1000 * Date.now();
253
259
  const log = this.createLog(
260
+ runId,
254
261
  'tool',
255
262
  tool.id[tool.id.length - 1],
256
263
  { input },
@@ -262,37 +269,36 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
262
269
  undefined,
263
270
  parentstring?.toString()
264
271
  );
265
- this.pushLog(log);
272
+ this.addLogToParent(log);
266
273
  }
267
274
 
268
275
  override async handleToolEnd(
269
276
  output: string,
270
- // @ts-expect-error: Not used
271
277
  runId: string,
272
278
  // @ts-expect-error: Not used
273
279
  parentstring?: string
274
280
  ): Promise<void> {
275
281
  const endTime = 1000 * Date.now();
276
- const log = this.popLog();
282
+ const log = this.logMap[runId];
277
283
  if (log) {
278
284
  log.end_time = endTime;
279
285
  log.duration = (endTime - log.start_time) / 1000;
280
286
  log.outputs = { output: output };
281
287
  // If this is the top-level chain, post the entire log structure
282
- if (this.logStack.length === 0) {
283
- await this.postTrace([log]);
288
+ if (log.parent_id === undefined) {
289
+ await this.postTrace(this.rootLogs);
284
290
  }
285
291
  }
286
292
  }
287
293
 
288
294
  override async handleAgentAction(
289
295
  action: AgentAction,
290
- // @ts-expect-error: Not used
291
296
  runId: string,
292
297
  parentstring?: string
293
298
  ): Promise<void> {
294
299
  const startTime = 1000 * Date.now();
295
300
  const log = this.createLog(
301
+ runId,
296
302
  'tool',
297
303
  'Agent Action',
298
304
  { action: action.tool, input: action.toolInput, log: action.log },
@@ -304,38 +310,47 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
304
310
  undefined,
305
311
  parentstring?.toString()
306
312
  );
307
- this.pushLog(log);
308
- this.popLog();
313
+ this.addLogToParent(log);
309
314
  // If this is the top-level chain, post the entire log structure
310
- if (this.logStack.length === 0) {
311
- await this.postTrace([log]);
315
+ if (log.parent_id === undefined) {
316
+ await this.postTrace(this.rootLogs);
312
317
  }
313
318
  }
314
319
 
315
320
  override async handleAgentEnd(
316
321
  finish: AgentFinish,
317
- // @ts-expect-error: Not used
318
322
  runId: string,
319
323
  parentstring?: string
320
324
  ): Promise<void> {
321
325
  const endTime = 1000 * Date.now();
322
- const log = this.createLog(
323
- 'tool',
324
- 'Agent Finish',
325
- { output: finish.returnValues, log: finish.log },
326
- { output: finish.returnValues, log: finish.log },
327
- {},
328
- endTime,
329
- endTime,
330
- undefined,
331
- undefined,
332
- parentstring?.toString()
333
- );
334
- this.pushLog(log);
335
- this.popLog();
336
- // If this is the top-level chain, post the entire log structure
337
- if (this.logStack.length === 0) {
338
- await this.postTrace([log]);
326
+ const log = this.logMap[runId];
327
+ if (log) {
328
+ log.end_time = endTime;
329
+ log.duration = (endTime - log.start_time) / 1000;
330
+ log.outputs = { output: finish.returnValues, log: finish.log };
331
+ // If this is the top-level chain, post the entire log structure
332
+ if (log.parent_id === undefined) {
333
+ await this.postTrace(this.rootLogs);
334
+ }
335
+ } else {
336
+ const log = this.createLog(
337
+ runId,
338
+ 'tool',
339
+ 'Agent Finish',
340
+ { output: finish.returnValues, log: finish.log },
341
+ { output: finish.returnValues, log: finish.log },
342
+ {},
343
+ endTime,
344
+ endTime,
345
+ undefined,
346
+ undefined,
347
+ parentstring?.toString()
348
+ );
349
+ this.addLogToParent(log);
350
+ // If this is the top-level chain, post the entire log structure
351
+ if (log.parent_id === undefined) {
352
+ await this.postTrace(this.rootLogs);
353
+ }
339
354
  }
340
355
  }
341
356
 
@@ -361,6 +376,9 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
361
376
 
362
377
  if (!response.ok) {
363
378
  throw new Error(`Failed to post trace: ${response.statusText}`);
379
+ } else {
380
+ this.rootLogs = [];
381
+ this.logMap = {};
364
382
  }
365
383
  } catch (error) {
366
384
  console.error('Error posting trace:', error);
@@ -372,61 +390,57 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
372
390
 
373
391
  override async handleChainError(
374
392
  error: Error,
375
- // @ts-expect-error: Not used
376
393
  runId: string,
377
394
  // @ts-expect-error: Not used
378
395
  parentstring?: string
379
396
  ): Promise<void> {
380
397
  const endTime = 1000 * Date.now();
381
- const log = this.popLog();
398
+ const log = this.logMap[runId];
382
399
  if (log) {
383
400
  log.end_time = endTime;
384
401
  log.duration = (endTime - log.start_time) / 1000;
385
402
  log.error = error.message;
386
-
387
403
  // If this is the top-level chain, post the entire log structure
388
- if (this.logStack.length === 0) {
389
- await this.postTrace([log]);
404
+ if (log.parent_id === undefined) {
405
+ await this.postTrace(this.rootLogs);
390
406
  }
391
407
  }
392
408
  }
393
409
 
394
410
  override async handleLLMError(
395
411
  error: Error,
396
- // @ts-expect-error: Not used
397
412
  runId: string,
398
413
  // @ts-expect-error: Not used
399
414
  parentstring?: string
400
415
  ): Promise<void> {
401
416
  const endTime = 1000 * Date.now();
402
- const log = this.popLog();
417
+ const log = this.logMap[runId];
403
418
  if (log) {
404
419
  log.end_time = endTime;
405
420
  log.duration = (endTime - log.start_time) / 1000;
406
421
  log.error = error.message;
407
422
  // If this is the top-level chain, post the entire log structure
408
- if (this.logStack.length === 0) {
409
- await this.postTrace([log]);
423
+ if (log.parent_id === undefined) {
424
+ await this.postTrace(this.rootLogs);
410
425
  }
411
426
  }
412
427
  }
413
428
 
414
429
  override async handleToolError(
415
430
  error: Error,
416
- // @ts-expect-error: Not used
417
431
  runId: string,
418
432
  // @ts-expect-error: Not used
419
433
  parentstring?: string
420
434
  ): Promise<void> {
421
435
  const endTime = 1000 * Date.now();
422
- const log = this.popLog();
436
+ const log = this.logMap[runId];
423
437
  if (log) {
424
438
  log.end_time = endTime;
425
439
  log.duration = (endTime - log.start_time) / 1000;
426
440
  log.error = error.message;
427
441
  // If this is the top-level chain, post the entire log structure
428
- if (this.logStack.length === 0) {
429
- await this.postTrace([log]);
442
+ if (log.parent_id === undefined) {
443
+ await this.postTrace(this.rootLogs);
430
444
  }
431
445
  }
432
446
  }
@@ -434,7 +448,6 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
434
448
  override async handleRetrieverStart(
435
449
  retriever: Serialized,
436
450
  query: string,
437
- // @ts-expect-error: Not used
438
451
  runId: string,
439
452
  parentstring?: string,
440
453
  // @ts-expect-error: Not used
@@ -443,6 +456,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
443
456
  ): Promise<void> {
444
457
  const startTime = 1000 * Date.now();
445
458
  const log = this.createLog(
459
+ runId,
446
460
  'tool',
447
461
  retriever.id[retriever.id.length - 1],
448
462
  { query },
@@ -454,49 +468,107 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
454
468
  undefined,
455
469
  parentstring?.toString()
456
470
  );
457
- this.pushLog(log);
471
+ this.addLogToParent(log);
458
472
  }
459
473
 
460
474
  override async handleRetrieverEnd(
461
475
  documents: DocumentInterface[],
462
- // @ts-expect-error: Not used
463
476
  runId: string,
464
477
  // @ts-expect-error: Not used
465
478
  parentstring?: string
466
479
  ): Promise<void> {
467
480
  const endTime = 1000 * Date.now();
468
- const log = this.popLog();
481
+ const log = this.logMap[runId];
482
+ // const log = this.popLog();
469
483
  if (log) {
470
484
  log.end_time = endTime;
471
485
  log.duration = (endTime - log.start_time) / 1000;
472
486
  log.outputs = { documents };
473
487
  // If this is the top-level chain, post the entire log structure
474
- if (this.logStack.length === 0) {
475
- await this.postTrace([log]);
488
+ if (log.parent_id === undefined) {
489
+ await this.postTrace(this.rootLogs);
476
490
  }
477
491
  }
478
492
  }
479
493
 
480
494
  override async handleRetrieverError(
481
495
  error: Error,
482
- // @ts-expect-error: Not used
483
496
  runId: string,
484
497
  // @ts-expect-error: Not used
485
498
  parentstring?: string
486
499
  ): Promise<void> {
487
500
  const endTime = 1000 * Date.now();
488
- const log = this.popLog();
501
+ const log = this.logMap[runId];
489
502
  if (log) {
490
503
  log.end_time = endTime;
491
504
  log.duration = (endTime - log.start_time) / 1000;
492
505
  log.error = error.message;
493
506
  // If this is the top-level chain, post the entire log structure
494
- if (this.logStack.length === 0) {
495
- await this.postTrace([log]);
507
+ if (log.parent_id === undefined) {
508
+ await this.postTrace(this.rootLogs);
496
509
  }
497
510
  }
498
511
  }
499
512
 
513
+ public async setFeedback(feedback: Record<string, any>): Promise<void> {
514
+ if (this.sessionId) {
515
+ try {
516
+ await this.sdk.events.updateEvent({
517
+ eventId: this.sessionId,
518
+ feedback: feedback,
519
+ });
520
+ } catch (error) {
521
+ console.error("Failed to set feedback:", error);
522
+ }
523
+ } else {
524
+ console.error("Session ID is not initialized");
525
+ }
526
+ }
527
+
528
+ public async setMetric(metrics: Record<string, any>): Promise<void> {
529
+ if (this.sessionId) {
530
+ try {
531
+ await this.sdk.events.updateEvent({
532
+ eventId: this.sessionId,
533
+ metrics: metrics,
534
+ });
535
+ } catch (error) {
536
+ console.error("Failed to set metric:", error);
537
+ }
538
+ } else {
539
+ console.error("Session ID is not initialized");
540
+ }
541
+ }
542
+
543
+ public async setMetadata(metadata: Record<string, any>): Promise<void> {
544
+ if (this.sessionId) {
545
+ try {
546
+ await this.sdk.events.updateEvent({
547
+ eventId: this.sessionId,
548
+ metadata: metadata,
549
+ });
550
+ } catch (error) {
551
+ console.error("Failed to set metadata:", error);
552
+ }
553
+ } else {
554
+ console.error("Session ID is not initialized");
555
+ }
556
+ }
557
+
558
+ public async setUserProperties(userProperties: Record<string, any>): Promise<void> {
559
+ if (this.sessionId) {
560
+ try {
561
+ await this.sdk.events.updateEvent({
562
+ eventId: this.sessionId,
563
+ userProperties: userProperties,
564
+ });
565
+ } catch (error) {
566
+ console.error("Failed to set metadata:", error);
567
+ }
568
+ } else {
569
+ console.error("Session ID is not initialized");
570
+ }
571
+ }
500
572
 
501
573
  async startNewSession(): Promise<void> {
502
574
  const sessionBody = {
@@ -518,10 +590,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
518
590
  });
519
591
 
520
592
  const text = await response.text();
521
- // Parse the JSON response
522
593
  const jsonResponse = JSON.parse(text);
523
-
524
- // Extract the session_id
525
594
  const sessionId = jsonResponse.session_id;
526
595
  this.sessionId = sessionId;
527
596