@posthog/ai 8.8.0 → 8.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,6 +7,15 @@ import { AgentAction, AgentFinish } from '@langchain/core/agents';
7
7
  import { DocumentInterface } from '@langchain/core/documents';
8
8
  import { BaseMessage } from '@langchain/core/messages';
9
9
 
10
+ interface LangChainCallbackHandlerOptions {
11
+ client: PostHog;
12
+ distinctId?: string | number;
13
+ traceId?: string | number;
14
+ properties?: Record<string, any>;
15
+ privacyMode?: boolean;
16
+ groups?: Record<string, any>;
17
+ debug?: boolean;
18
+ }
10
19
  declare class LangChainCallbackHandler extends BaseCallbackHandler {
11
20
  name: string;
12
21
  private client;
@@ -18,16 +27,8 @@ declare class LangChainCallbackHandler extends BaseCallbackHandler {
18
27
  private debug;
19
28
  private runs;
20
29
  private parentTree;
21
- constructor(options: {
22
- client: PostHog;
23
- distinctId?: string | number;
24
- traceId?: string | number;
25
- properties?: Record<string, any>;
26
- privacyMode?: boolean;
27
- groups?: Record<string, any>;
28
- debug?: boolean;
29
- });
30
- handleChainStart(chain: Serialized, inputs: ChainValues, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, unknown>, _runType?: string, runName?: string): void;
30
+ constructor(options: LangChainCallbackHandlerOptions);
31
+ handleChainStart(chain: Serialized, inputs: ChainValues, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, unknown>, _runType?: string, runName?: string, extra?: Record<string, unknown>): void;
31
32
  handleChainEnd(outputs: ChainValues, runId: string, parentRunId?: string, tags?: string[], _kwargs?: {
32
33
  inputs?: Record<string, unknown>;
33
34
  }): void;
@@ -56,7 +57,7 @@ declare class LangChainCallbackHandler extends BaseCallbackHandler {
56
57
  private _setLLMMetadata;
57
58
  private _popRunMetadata;
58
59
  private _getTraceId;
59
- private _getParentRunId;
60
+ protected _getParentRunId(traceId: string, _runId: string, parentRunId?: string): string | undefined;
60
61
  private _safeCapture;
61
62
  private _popRunAndCaptureTraceOrSpan;
62
63
  private _captureTraceOrSpan;
@@ -75,3 +76,4 @@ declare class LangChainCallbackHandler extends BaseCallbackHandler {
75
76
  }
76
77
 
77
78
  export { LangChainCallbackHandler };
79
+ export type { LangChainCallbackHandlerOptions };
@@ -245,7 +245,7 @@ function sanitizeValues(obj) {
245
245
  return jsonSafe;
246
246
  }
247
247
 
248
- var version = "8.8.0";
248
+ var version = "8.9.0";
249
249
 
250
250
  const DEFAULT_MAX_DEPTH = 3;
251
251
  const MAX_STACK_LINES = 20;
@@ -367,13 +367,16 @@ class LangChainCallbackHandler extends BaseCallbackHandler {
367
367
 
368
368
  // ===== CALLBACK METHODS =====
369
369
 
370
- handleChainStart(chain, inputs, runId, parentRunId, tags, metadata, _runType, runName) {
370
+ handleChainStart(chain, inputs, runId, parentRunId, tags, metadata, _runType, runName, extra) {
371
371
  this._logDebugEvent('on_chain_start', runId, parentRunId, {
372
372
  inputs,
373
373
  tags
374
374
  });
375
375
  this._setParentOfRun(runId, parentRunId);
376
376
  this._setTraceOrSpanMetadata(chain, inputs, runId, parentRunId, metadata, tags, runName);
377
+ if (typeof extra?.posthogStartTime === 'number' && Number.isFinite(extra.posthogStartTime)) {
378
+ this.runs[runId].startTime = extra.posthogStartTime;
379
+ }
377
380
  }
378
381
  handleChainEnd(outputs, runId, parentRunId, tags, _kwargs) {
379
382
  this._logAndPopTraceOrSpan('on_chain_end', runId, parentRunId, {
@@ -568,6 +571,7 @@ class LangChainCallbackHandler extends BaseCallbackHandler {
568
571
  }
569
572
  _popRunAndCaptureTraceOrSpan(runId, parentRunId, outputs) {
570
573
  const traceId = this._getTraceId(runId);
574
+ const isSpan = Boolean(parentRunId || this.parentTree[runId]);
571
575
  this._popParentOfRun(runId);
572
576
  const run = this._popRunMetadata(runId);
573
577
  if (!run) {
@@ -578,10 +582,10 @@ class LangChainCallbackHandler extends BaseCallbackHandler {
578
582
  return;
579
583
  }
580
584
  const actualParentRunId = this._getParentRunId(traceId, runId, parentRunId);
581
- this._captureTraceOrSpan(traceId, runId, run, outputs, actualParentRunId);
585
+ this._captureTraceOrSpan(traceId, runId, run, outputs, isSpan, actualParentRunId);
582
586
  }
583
- _captureTraceOrSpan(traceId, runId, run, outputs, parentRunId) {
584
- const eventName = parentRunId ? '$ai_span' : '$ai_trace';
587
+ _captureTraceOrSpan(traceId, runId, run, outputs, isSpan, parentRunId) {
588
+ const eventName = isSpan ? '$ai_span' : '$ai_trace';
585
589
  const latency = run.endTime ? (run.endTime - run.startTime) / 1000 : 0;
586
590
  const eventProperties = {
587
591
  $ai_lib: 'posthog-ai',
@@ -645,7 +649,6 @@ class LangChainCallbackHandler extends BaseCallbackHandler {
645
649
  $ai_trace_id: traceId,
646
650
  $ai_span_id: runId,
647
651
  $ai_span_name: run.name,
648
- $ai_parent_id: parentRunId,
649
652
  $ai_provider: run.provider,
650
653
  $ai_model: run.model,
651
654
  $ai_model_parameters: run.modelParams,
@@ -655,6 +658,9 @@ class LangChainCallbackHandler extends BaseCallbackHandler {
655
658
  $ai_base_url: run.baseUrl,
656
659
  $ai_framework: 'langchain'
657
660
  };
661
+ if (parentRunId) {
662
+ eventProperties['$ai_parent_id'] = parentRunId;
663
+ }
658
664
  if (run.tools) {
659
665
  eventProperties['$ai_tools'] = run.tools;
660
666
  }