@langchain/core 0.3.23 → 0.3.24

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.
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.isBaseCallbackHandler = exports.BaseCallbackHandler = void 0;
26
+ exports.isBaseCallbackHandler = exports.BaseCallbackHandler = exports.callbackHandlerPrefersStreaming = void 0;
27
27
  const uuid = __importStar(require("uuid"));
28
28
  const serializable_js_1 = require("../load/serializable.cjs");
29
29
  const env_js_1 = require("../utils/env.cjs");
@@ -34,6 +34,10 @@ const env_js_1 = require("../utils/env.cjs");
34
34
  */
35
35
  class BaseCallbackHandlerMethodsClass {
36
36
  }
37
+ function callbackHandlerPrefersStreaming(x) {
38
+ return "lc_prefer_streaming" in x && x.lc_prefer_streaming;
39
+ }
40
+ exports.callbackHandlerPrefersStreaming = callbackHandlerPrefersStreaming;
37
41
  /**
38
42
  * Abstract base class for creating callback handlers in the LangChain
39
43
  * framework. It provides a set of optional methods that can be overridden
@@ -137,6 +137,15 @@ declare abstract class BaseCallbackHandlerMethodsClass {
137
137
  * @interface
138
138
  */
139
139
  export type CallbackHandlerMethods = BaseCallbackHandlerMethodsClass;
140
+ /**
141
+ * Interface for handlers that can indicate a preference for streaming responses.
142
+ * When implemented, this allows the handler to signal whether it prefers to receive
143
+ * streaming responses from language models rather than complete responses.
144
+ */
145
+ export interface CallbackHandlerPrefersStreaming {
146
+ readonly lc_prefer_streaming: boolean;
147
+ }
148
+ export declare function callbackHandlerPrefersStreaming(x: BaseCallbackHandler): unknown;
140
149
  /**
141
150
  * Abstract base class for creating callback handlers in the LangChain
142
151
  * framework. It provides a set of optional methods that can be overridden
@@ -8,6 +8,9 @@ import { getEnvironmentVariable } from "../utils/env.js";
8
8
  */
9
9
  class BaseCallbackHandlerMethodsClass {
10
10
  }
11
+ export function callbackHandlerPrefersStreaming(x) {
12
+ return "lc_prefer_streaming" in x && x.lc_prefer_streaming;
13
+ }
11
14
  /**
12
15
  * Abstract base class for creating callback handlers in the LangChain
13
16
  * framework. It provides a set of optional methods that can be overridden
@@ -766,18 +766,6 @@ class CallbackManager extends BaseCallbackManager {
766
766
  }
767
767
  }
768
768
  }
769
- if (inheritableTags || localTags) {
770
- if (callbackManager) {
771
- callbackManager.addTags(inheritableTags ?? []);
772
- callbackManager.addTags(localTags ?? [], false);
773
- }
774
- }
775
- if (inheritableMetadata || localMetadata) {
776
- if (callbackManager) {
777
- callbackManager.addMetadata(inheritableMetadata ?? {});
778
- callbackManager.addMetadata(localMetadata ?? {}, false);
779
- }
780
- }
781
769
  for (const { contextVar, inheritable = true, handlerClass, envVar, } of (0, context_js_1._getConfigureHooks)()) {
782
770
  const createIfNotInContext = envVar && (0, env_js_1.getEnvironmentVariable)(envVar) === "true" && handlerClass;
783
771
  let handler;
@@ -790,11 +778,26 @@ class CallbackManager extends BaseCallbackManager {
790
778
  handler = new handlerClass({});
791
779
  }
792
780
  if (handler !== undefined) {
793
- if (!callbackManager?.handlers.some((h) => h.name === handler.name)) {
794
- callbackManager?.addHandler(handler, inheritable);
781
+ if (!callbackManager) {
782
+ callbackManager = new CallbackManager();
783
+ }
784
+ if (!callbackManager.handlers.some((h) => h.name === handler.name)) {
785
+ callbackManager.addHandler(handler, inheritable);
795
786
  }
796
787
  }
797
788
  }
789
+ if (inheritableTags || localTags) {
790
+ if (callbackManager) {
791
+ callbackManager.addTags(inheritableTags ?? []);
792
+ callbackManager.addTags(localTags ?? [], false);
793
+ }
794
+ }
795
+ if (inheritableMetadata || localMetadata) {
796
+ if (callbackManager) {
797
+ callbackManager.addMetadata(inheritableMetadata ?? {});
798
+ callbackManager.addMetadata(localMetadata ?? {}, false);
799
+ }
800
+ }
798
801
  return callbackManager;
799
802
  }
800
803
  }
@@ -756,18 +756,6 @@ export class CallbackManager extends BaseCallbackManager {
756
756
  }
757
757
  }
758
758
  }
759
- if (inheritableTags || localTags) {
760
- if (callbackManager) {
761
- callbackManager.addTags(inheritableTags ?? []);
762
- callbackManager.addTags(localTags ?? [], false);
763
- }
764
- }
765
- if (inheritableMetadata || localMetadata) {
766
- if (callbackManager) {
767
- callbackManager.addMetadata(inheritableMetadata ?? {});
768
- callbackManager.addMetadata(localMetadata ?? {}, false);
769
- }
770
- }
771
759
  for (const { contextVar, inheritable = true, handlerClass, envVar, } of _getConfigureHooks()) {
772
760
  const createIfNotInContext = envVar && getEnvironmentVariable(envVar) === "true" && handlerClass;
773
761
  let handler;
@@ -780,11 +768,26 @@ export class CallbackManager extends BaseCallbackManager {
780
768
  handler = new handlerClass({});
781
769
  }
782
770
  if (handler !== undefined) {
783
- if (!callbackManager?.handlers.some((h) => h.name === handler.name)) {
784
- callbackManager?.addHandler(handler, inheritable);
771
+ if (!callbackManager) {
772
+ callbackManager = new CallbackManager();
773
+ }
774
+ if (!callbackManager.handlers.some((h) => h.name === handler.name)) {
775
+ callbackManager.addHandler(handler, inheritable);
785
776
  }
786
777
  }
787
778
  }
779
+ if (inheritableTags || localTags) {
780
+ if (callbackManager) {
781
+ callbackManager.addTags(inheritableTags ?? []);
782
+ callbackManager.addTags(localTags ?? [], false);
783
+ }
784
+ }
785
+ if (inheritableMetadata || localMetadata) {
786
+ if (callbackManager) {
787
+ callbackManager.addMetadata(inheritableMetadata ?? {});
788
+ callbackManager.addMetadata(localMetadata ?? {}, false);
789
+ }
790
+ }
788
791
  return callbackManager;
789
792
  }
790
793
  }
@@ -7,11 +7,10 @@ const outputs_js_1 = require("../outputs.cjs");
7
7
  const base_js_1 = require("./base.cjs");
8
8
  const manager_js_1 = require("../callbacks/manager.cjs");
9
9
  const base_js_2 = require("../runnables/base.cjs");
10
- const event_stream_js_1 = require("../tracers/event_stream.cjs");
11
- const log_stream_js_1 = require("../tracers/log_stream.cjs");
12
10
  const stream_js_1 = require("../utils/stream.cjs");
13
11
  const passthrough_js_1 = require("../runnables/passthrough.cjs");
14
12
  const is_zod_schema_js_1 = require("../utils/types/is_zod_schema.cjs");
13
+ const base_js_3 = require("../callbacks/base.cjs");
15
14
  /**
16
15
  * Creates a transform stream for encoding chat message chunks.
17
16
  * @deprecated Use {@link BytesOutputParser} instead
@@ -161,9 +160,7 @@ class BaseChatModel extends base_js_1.BaseLanguageModel {
161
160
  // Even if stream is not explicitly called, check if model is implicitly
162
161
  // called from streamEvents() or streamLog() to get all streamed events.
163
162
  // Bail out if _streamResponseChunks not overridden
164
- const hasStreamingHandler = !!runManagers?.[0].handlers.find((handler) => {
165
- return (0, event_stream_js_1.isStreamEventsHandler)(handler) || (0, log_stream_js_1.isLogStreamHandler)(handler);
166
- });
163
+ const hasStreamingHandler = !!runManagers?.[0].handlers.find(base_js_3.callbackHandlerPrefersStreaming);
167
164
  if (hasStreamingHandler &&
168
165
  baseMessages.length === 1 &&
169
166
  this._streamResponseChunks !==
@@ -4,11 +4,10 @@ import { RUN_KEY, } from "../outputs.js";
4
4
  import { BaseLanguageModel, } from "./base.js";
5
5
  import { CallbackManager, } from "../callbacks/manager.js";
6
6
  import { RunnableLambda, RunnableSequence, } from "../runnables/base.js";
7
- import { isStreamEventsHandler } from "../tracers/event_stream.js";
8
- import { isLogStreamHandler } from "../tracers/log_stream.js";
9
7
  import { concat } from "../utils/stream.js";
10
8
  import { RunnablePassthrough } from "../runnables/passthrough.js";
11
9
  import { isZodSchema } from "../utils/types/is_zod_schema.js";
10
+ import { callbackHandlerPrefersStreaming } from "../callbacks/base.js";
12
11
  /**
13
12
  * Creates a transform stream for encoding chat message chunks.
14
13
  * @deprecated Use {@link BytesOutputParser} instead
@@ -157,9 +156,7 @@ export class BaseChatModel extends BaseLanguageModel {
157
156
  // Even if stream is not explicitly called, check if model is implicitly
158
157
  // called from streamEvents() or streamLog() to get all streamed events.
159
158
  // Bail out if _streamResponseChunks not overridden
160
- const hasStreamingHandler = !!runManagers?.[0].handlers.find((handler) => {
161
- return isStreamEventsHandler(handler) || isLogStreamHandler(handler);
162
- });
159
+ const hasStreamingHandler = !!runManagers?.[0].handlers.find(callbackHandlerPrefersStreaming);
163
160
  if (hasStreamingHandler &&
164
161
  baseMessages.length === 1 &&
165
162
  this._streamResponseChunks !==
@@ -5,9 +5,8 @@ const index_js_1 = require("../messages/index.cjs");
5
5
  const outputs_js_1 = require("../outputs.cjs");
6
6
  const manager_js_1 = require("../callbacks/manager.cjs");
7
7
  const base_js_1 = require("./base.cjs");
8
- const event_stream_js_1 = require("../tracers/event_stream.cjs");
9
- const log_stream_js_1 = require("../tracers/log_stream.cjs");
10
8
  const stream_js_1 = require("../utils/stream.cjs");
9
+ const base_js_2 = require("../callbacks/base.cjs");
11
10
  /**
12
11
  * LLM Wrapper. Takes in a prompt (or prompts) and returns a string.
13
12
  */
@@ -138,9 +137,7 @@ class BaseLLM extends base_js_1.BaseLanguageModel {
138
137
  // Even if stream is not explicitly called, check if model is implicitly
139
138
  // called from streamEvents() or streamLog() to get all streamed events.
140
139
  // Bail out if _streamResponseChunks not overridden
141
- const hasStreamingHandler = !!runManagers?.[0].handlers.find((handler) => {
142
- return (0, event_stream_js_1.isStreamEventsHandler)(handler) || (0, log_stream_js_1.isLogStreamHandler)(handler);
143
- });
140
+ const hasStreamingHandler = !!runManagers?.[0].handlers.find(base_js_2.callbackHandlerPrefersStreaming);
144
141
  let output;
145
142
  if (hasStreamingHandler &&
146
143
  prompts.length === 1 &&
@@ -2,9 +2,8 @@ import { AIMessage, getBufferString, } from "../messages/index.js";
2
2
  import { RUN_KEY, GenerationChunk, } from "../outputs.js";
3
3
  import { CallbackManager, } from "../callbacks/manager.js";
4
4
  import { BaseLanguageModel, } from "./base.js";
5
- import { isStreamEventsHandler } from "../tracers/event_stream.js";
6
- import { isLogStreamHandler } from "../tracers/log_stream.js";
7
5
  import { concat } from "../utils/stream.js";
6
+ import { callbackHandlerPrefersStreaming } from "../callbacks/base.js";
8
7
  /**
9
8
  * LLM Wrapper. Takes in a prompt (or prompts) and returns a string.
10
9
  */
@@ -135,9 +134,7 @@ export class BaseLLM extends BaseLanguageModel {
135
134
  // Even if stream is not explicitly called, check if model is implicitly
136
135
  // called from streamEvents() or streamLog() to get all streamed events.
137
136
  // Bail out if _streamResponseChunks not overridden
138
- const hasStreamingHandler = !!runManagers?.[0].handlers.find((handler) => {
139
- return isStreamEventsHandler(handler) || isLogStreamHandler(handler);
140
- });
137
+ const hasStreamingHandler = !!runManagers?.[0].handlers.find(callbackHandlerPrefersStreaming);
141
138
  let output;
142
139
  if (hasStreamingHandler &&
143
140
  prompts.length === 1 &&
@@ -106,6 +106,12 @@ class EventStreamCallbackHandler extends base_js_1.BaseTracer {
106
106
  writable: true,
107
107
  value: "event_stream_tracer"
108
108
  });
109
+ Object.defineProperty(this, "lc_prefer_streaming", {
110
+ enumerable: true,
111
+ configurable: true,
112
+ writable: true,
113
+ value: true
114
+ });
109
115
  this.autoClose = fields?.autoClose ?? true;
110
116
  this.includeNames = fields?.includeNames;
111
117
  this.includeTypes = fields?.includeTypes;
@@ -1,5 +1,5 @@
1
1
  import { BaseTracer, type Run } from "./base.js";
2
- import { BaseCallbackHandler, BaseCallbackHandlerInput } from "../callbacks/base.js";
2
+ import { BaseCallbackHandler, BaseCallbackHandlerInput, CallbackHandlerPrefersStreaming } from "../callbacks/base.js";
3
3
  import { IterableReadableStream } from "../utils/stream.js";
4
4
  /**
5
5
  * Data associated with a StreamEvent.
@@ -101,7 +101,7 @@ export declare const isStreamEventsHandler: (handler: BaseCallbackHandler) => ha
101
101
  * handler that logs the execution of runs and emits `RunLog` instances to a
102
102
  * `RunLogStream`.
103
103
  */
104
- export declare class EventStreamCallbackHandler extends BaseTracer {
104
+ export declare class EventStreamCallbackHandler extends BaseTracer implements CallbackHandlerPrefersStreaming {
105
105
  protected autoClose: boolean;
106
106
  protected includeNames?: string[];
107
107
  protected includeTypes?: string[];
@@ -115,6 +115,7 @@ export declare class EventStreamCallbackHandler extends BaseTracer {
115
115
  writer: WritableStreamDefaultWriter;
116
116
  receiveStream: IterableReadableStream<StreamEvent>;
117
117
  name: string;
118
+ lc_prefer_streaming: boolean;
118
119
  constructor(fields?: EventStreamCallbackHandlerInput);
119
120
  [Symbol.asyncIterator](): IterableReadableStream<StreamEvent>;
120
121
  protected persistRun(_run: Run): Promise<void>;
@@ -102,6 +102,12 @@ export class EventStreamCallbackHandler extends BaseTracer {
102
102
  writable: true,
103
103
  value: "event_stream_tracer"
104
104
  });
105
+ Object.defineProperty(this, "lc_prefer_streaming", {
106
+ enumerable: true,
107
+ configurable: true,
108
+ writable: true,
109
+ value: true
110
+ });
105
111
  this.autoClose = fields?.autoClose ?? true;
106
112
  this.includeNames = fields?.includeNames;
107
113
  this.includeTypes = fields?.includeTypes;
@@ -213,6 +213,12 @@ class LogStreamCallbackHandler extends base_js_1.BaseTracer {
213
213
  writable: true,
214
214
  value: "log_stream_tracer"
215
215
  });
216
+ Object.defineProperty(this, "lc_prefer_streaming", {
217
+ enumerable: true,
218
+ configurable: true,
219
+ writable: true,
220
+ value: true
221
+ });
216
222
  this.autoClose = fields?.autoClose ?? true;
217
223
  this.includeNames = fields?.includeNames;
218
224
  this.includeTypes = fields?.includeTypes;
@@ -1,6 +1,6 @@
1
1
  import { type Operation as JSONPatchOperation } from "../utils/fast-json-patch/index.js";
2
2
  import { BaseTracer, type Run } from "./base.js";
3
- import { BaseCallbackHandler, BaseCallbackHandlerInput, HandleLLMNewTokenCallbackFields } from "../callbacks/base.js";
3
+ import { BaseCallbackHandler, BaseCallbackHandlerInput, CallbackHandlerPrefersStreaming, HandleLLMNewTokenCallbackFields } from "../callbacks/base.js";
4
4
  import { IterableReadableStream } from "../utils/stream.js";
5
5
  import type { StreamEvent, StreamEventData } from "./event_stream.js";
6
6
  export type { StreamEvent, StreamEventData };
@@ -90,7 +90,7 @@ export declare const isLogStreamHandler: (handler: BaseCallbackHandler) => handl
90
90
  * handler that logs the execution of runs and emits `RunLog` instances to a
91
91
  * `RunLogStream`.
92
92
  */
93
- export declare class LogStreamCallbackHandler extends BaseTracer {
93
+ export declare class LogStreamCallbackHandler extends BaseTracer implements CallbackHandlerPrefersStreaming {
94
94
  protected autoClose: boolean;
95
95
  protected includeNames?: string[];
96
96
  protected includeTypes?: string[];
@@ -106,6 +106,7 @@ export declare class LogStreamCallbackHandler extends BaseTracer {
106
106
  writer: WritableStreamDefaultWriter;
107
107
  receiveStream: IterableReadableStream<RunLogPatch>;
108
108
  name: string;
109
+ lc_prefer_streaming: boolean;
109
110
  constructor(fields?: LogStreamCallbackHandlerInput);
110
111
  [Symbol.asyncIterator](): IterableReadableStream<RunLogPatch>;
111
112
  protected persistRun(_run: Run): Promise<void>;
@@ -207,6 +207,12 @@ export class LogStreamCallbackHandler extends BaseTracer {
207
207
  writable: true,
208
208
  value: "log_stream_tracer"
209
209
  });
210
+ Object.defineProperty(this, "lc_prefer_streaming", {
211
+ enumerable: true,
212
+ configurable: true,
213
+ writable: true,
214
+ value: true
215
+ });
210
216
  this.autoClose = fields?.autoClose ?? true;
211
217
  this.includeNames = fields?.includeNames;
212
218
  this.includeTypes = fields?.includeTypes;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/core",
3
- "version": "0.3.23",
3
+ "version": "0.3.24",
4
4
  "description": "Core LangChain.js abstractions and schemas",
5
5
  "type": "module",
6
6
  "engines": {