@langchain/core 0.3.6 → 0.3.7

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.
@@ -84,6 +84,10 @@ class BaseMessage extends serializable_js_1.Serializable {
84
84
  get text() {
85
85
  return typeof this.content === "string" ? this.content : "";
86
86
  }
87
+ /** The type of the message. */
88
+ getType() {
89
+ return this._getType();
90
+ }
87
91
  constructor(fields,
88
92
  /** @deprecated */
89
93
  kwargs) {
@@ -1,4 +1,4 @@
1
- import { Serializable } from "../load/serializable.js";
1
+ import { Serializable, SerializedConstructor } from "../load/serializable.js";
2
2
  import { StringWithAutocomplete } from "../utils/types/index.js";
3
3
  export interface StoredMessageData {
4
4
  content: string;
@@ -114,8 +114,20 @@ export declare abstract class BaseMessage extends Serializable implements BaseMe
114
114
  * provided by the provider/model which created the message.
115
115
  */
116
116
  id?: string;
117
- /** The type of the message. */
117
+ /**
118
+ * @deprecated Use .getType() instead or import the proper typeguard.
119
+ * For example:
120
+ *
121
+ * ```ts
122
+ * import { isAIMessage } from "@langchain/core/messages";
123
+ *
124
+ * const message = new AIMessage("Hello!");
125
+ * isAIMessage(message); // true
126
+ * ```
127
+ */
118
128
  abstract _getType(): MessageType;
129
+ /** The type of the message. */
130
+ getType(): MessageType;
119
131
  constructor(fields: string | BaseMessageFields,
120
132
  /** @deprecated */
121
133
  kwargs?: Record<string, unknown>);
@@ -172,6 +184,6 @@ export type BaseMessageLike = BaseMessage | MessageFieldWithRole | [
172
184
  */
173
185
  | ({
174
186
  type: MessageType | "user" | "assistant" | "placeholder";
175
- } & BaseMessageFields & Record<string, unknown>);
187
+ } & BaseMessageFields & Record<string, unknown>) | SerializedConstructor;
176
188
  export declare function isBaseMessage(messageLike?: unknown): messageLike is BaseMessage;
177
189
  export declare function isBaseMessageChunk(messageLike?: unknown): messageLike is BaseMessageChunk;
@@ -79,6 +79,10 @@ export class BaseMessage extends Serializable {
79
79
  get text() {
80
80
  return typeof this.content === "string" ? this.content : "";
81
81
  }
82
+ /** The type of the message. */
83
+ getType() {
84
+ return this._getType();
85
+ }
82
86
  constructor(fields,
83
87
  /** @deprecated */
84
88
  kwargs) {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChatMessageChunk = exports.ChatMessage = void 0;
3
+ exports.isChatMessageChunk = exports.isChatMessage = exports.ChatMessageChunk = exports.ChatMessage = void 0;
4
4
  const base_js_1 = require("./base.cjs");
5
5
  /**
6
6
  * Represents a chat message in a conversation.
@@ -82,3 +82,11 @@ class ChatMessageChunk extends base_js_1.BaseMessageChunk {
82
82
  }
83
83
  }
84
84
  exports.ChatMessageChunk = ChatMessageChunk;
85
+ function isChatMessage(x) {
86
+ return x._getType() === "generic";
87
+ }
88
+ exports.isChatMessage = isChatMessage;
89
+ function isChatMessageChunk(x) {
90
+ return x._getType() === "generic";
91
+ }
92
+ exports.isChatMessageChunk = isChatMessageChunk;
@@ -28,3 +28,5 @@ export declare class ChatMessageChunk extends BaseMessageChunk {
28
28
  concat(chunk: ChatMessageChunk): ChatMessageChunk;
29
29
  get _printableFields(): Record<string, unknown>;
30
30
  }
31
+ export declare function isChatMessage(x: BaseMessage): x is ChatMessage;
32
+ export declare function isChatMessageChunk(x: BaseMessageChunk): x is ChatMessageChunk;
@@ -77,3 +77,9 @@ export class ChatMessageChunk extends BaseMessageChunk {
77
77
  };
78
78
  }
79
79
  }
80
+ export function isChatMessage(x) {
81
+ return x._getType() === "generic";
82
+ }
83
+ export function isChatMessageChunk(x) {
84
+ return x._getType() === "generic";
85
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FunctionMessageChunk = exports.FunctionMessage = void 0;
3
+ exports.isFunctionMessageChunk = exports.isFunctionMessage = exports.FunctionMessageChunk = exports.FunctionMessage = void 0;
4
4
  const base_js_1 = require("./base.cjs");
5
5
  /**
6
6
  * Represents a function message in a conversation.
@@ -45,3 +45,11 @@ class FunctionMessageChunk extends base_js_1.BaseMessageChunk {
45
45
  }
46
46
  }
47
47
  exports.FunctionMessageChunk = FunctionMessageChunk;
48
+ function isFunctionMessage(x) {
49
+ return x._getType() === "function";
50
+ }
51
+ exports.isFunctionMessage = isFunctionMessage;
52
+ function isFunctionMessageChunk(x) {
53
+ return x._getType() === "function";
54
+ }
55
+ exports.isFunctionMessageChunk = isFunctionMessageChunk;
@@ -22,3 +22,5 @@ export declare class FunctionMessageChunk extends BaseMessageChunk {
22
22
  _getType(): MessageType;
23
23
  concat(chunk: FunctionMessageChunk): FunctionMessageChunk;
24
24
  }
25
+ export declare function isFunctionMessage(x: BaseMessage): x is FunctionMessage;
26
+ export declare function isFunctionMessageChunk(x: BaseMessageChunk): x is FunctionMessageChunk;
@@ -40,3 +40,9 @@ export class FunctionMessageChunk extends BaseMessageChunk {
40
40
  });
41
41
  }
42
42
  }
43
+ export function isFunctionMessage(x) {
44
+ return x._getType() === "function";
45
+ }
46
+ export function isFunctionMessageChunk(x) {
47
+ return x._getType() === "function";
48
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HumanMessageChunk = exports.HumanMessage = void 0;
3
+ exports.isHumanMessageChunk = exports.isHumanMessage = exports.HumanMessageChunk = exports.HumanMessage = void 0;
4
4
  const base_js_1 = require("./base.cjs");
5
5
  /**
6
6
  * Represents a human message in a conversation.
@@ -35,3 +35,11 @@ class HumanMessageChunk extends base_js_1.BaseMessageChunk {
35
35
  }
36
36
  }
37
37
  exports.HumanMessageChunk = HumanMessageChunk;
38
+ function isHumanMessage(x) {
39
+ return x.getType() === "human";
40
+ }
41
+ exports.isHumanMessage = isHumanMessage;
42
+ function isHumanMessageChunk(x) {
43
+ return x.getType() === "human";
44
+ }
45
+ exports.isHumanMessageChunk = isHumanMessageChunk;
@@ -15,3 +15,5 @@ export declare class HumanMessageChunk extends BaseMessageChunk {
15
15
  _getType(): MessageType;
16
16
  concat(chunk: HumanMessageChunk): HumanMessageChunk;
17
17
  }
18
+ export declare function isHumanMessage(x: BaseMessage): x is HumanMessage;
19
+ export declare function isHumanMessageChunk(x: BaseMessageChunk): x is HumanMessageChunk;
@@ -30,3 +30,9 @@ export class HumanMessageChunk extends BaseMessageChunk {
30
30
  });
31
31
  }
32
32
  }
33
+ export function isHumanMessage(x) {
34
+ return x.getType() === "human";
35
+ }
36
+ export function isHumanMessageChunk(x) {
37
+ return x.getType() === "human";
38
+ }
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ToolMessageChunk = exports.ToolMessage = void 0;
17
+ exports.isToolMessageChunk = exports.isToolMessage = exports.ToolMessageChunk = exports.ToolMessage = void 0;
18
18
  __exportStar(require("./ai.cjs"), exports);
19
19
  __exportStar(require("./base.cjs"), exports);
20
20
  __exportStar(require("./chat.cjs"), exports);
@@ -29,3 +29,5 @@ __exportStar(require("./modifier.cjs"), exports);
29
29
  var tool_js_1 = require("./tool.cjs");
30
30
  Object.defineProperty(exports, "ToolMessage", { enumerable: true, get: function () { return tool_js_1.ToolMessage; } });
31
31
  Object.defineProperty(exports, "ToolMessageChunk", { enumerable: true, get: function () { return tool_js_1.ToolMessageChunk; } });
32
+ Object.defineProperty(exports, "isToolMessage", { enumerable: true, get: function () { return tool_js_1.isToolMessage; } });
33
+ Object.defineProperty(exports, "isToolMessageChunk", { enumerable: true, get: function () { return tool_js_1.isToolMessageChunk; } });
@@ -7,4 +7,4 @@ export * from "./system.js";
7
7
  export * from "./utils.js";
8
8
  export * from "./transformers.js";
9
9
  export * from "./modifier.js";
10
- export { type ToolMessageFieldsWithToolCallId, ToolMessage, ToolMessageChunk, type InvalidToolCall, } from "./tool.js";
10
+ export { type ToolMessageFieldsWithToolCallId, ToolMessage, ToolMessageChunk, type InvalidToolCall, isToolMessage, isToolMessageChunk, } from "./tool.js";
@@ -9,4 +9,4 @@ export * from "./transformers.js";
9
9
  export * from "./modifier.js";
10
10
  // TODO: Use a star export when we deprecate the
11
11
  // existing "ToolCall" type in "base.js".
12
- export { ToolMessage, ToolMessageChunk, } from "./tool.js";
12
+ export { ToolMessage, ToolMessageChunk, isToolMessage, isToolMessageChunk, } from "./tool.js";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SystemMessageChunk = exports.SystemMessage = void 0;
3
+ exports.isSystemMessageChunk = exports.isSystemMessage = exports.SystemMessageChunk = exports.SystemMessage = void 0;
4
4
  const base_js_1 = require("./base.cjs");
5
5
  /**
6
6
  * Represents a system message in a conversation.
@@ -35,3 +35,11 @@ class SystemMessageChunk extends base_js_1.BaseMessageChunk {
35
35
  }
36
36
  }
37
37
  exports.SystemMessageChunk = SystemMessageChunk;
38
+ function isSystemMessage(x) {
39
+ return x._getType() === "system";
40
+ }
41
+ exports.isSystemMessage = isSystemMessage;
42
+ function isSystemMessageChunk(x) {
43
+ return x._getType() === "system";
44
+ }
45
+ exports.isSystemMessageChunk = isSystemMessageChunk;
@@ -15,3 +15,5 @@ export declare class SystemMessageChunk extends BaseMessageChunk {
15
15
  _getType(): MessageType;
16
16
  concat(chunk: SystemMessageChunk): SystemMessageChunk;
17
17
  }
18
+ export declare function isSystemMessage(x: BaseMessage): x is SystemMessage;
19
+ export declare function isSystemMessageChunk(x: BaseMessageChunk): x is SystemMessageChunk;
@@ -30,3 +30,9 @@ export class SystemMessageChunk extends BaseMessageChunk {
30
30
  });
31
31
  }
32
32
  }
33
+ export function isSystemMessage(x) {
34
+ return x._getType() === "system";
35
+ }
36
+ export function isSystemMessageChunk(x) {
37
+ return x._getType() === "system";
38
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaultToolCallParser = exports.ToolMessageChunk = exports.ToolMessage = void 0;
3
+ exports.isToolMessageChunk = exports.isToolMessage = exports.defaultToolCallParser = exports.ToolMessageChunk = exports.ToolMessage = void 0;
4
4
  const base_js_1 = require("./base.cjs");
5
5
  /**
6
6
  * Represents a tool message in a conversation.
@@ -168,3 +168,11 @@ rawToolCalls) {
168
168
  return [toolCalls, invalidToolCalls];
169
169
  }
170
170
  exports.defaultToolCallParser = defaultToolCallParser;
171
+ function isToolMessage(x) {
172
+ return x._getType() === "tool";
173
+ }
174
+ exports.isToolMessage = isToolMessage;
175
+ function isToolMessageChunk(x) {
176
+ return x._getType() === "tool";
177
+ }
178
+ exports.isToolMessageChunk = isToolMessageChunk;
@@ -143,3 +143,5 @@ export type InvalidToolCall = {
143
143
  type?: "invalid_tool_call";
144
144
  };
145
145
  export declare function defaultToolCallParser(rawToolCalls: Record<string, any>[]): [ToolCall[], InvalidToolCall[]];
146
+ export declare function isToolMessage(x: BaseMessage): x is ToolMessage;
147
+ export declare function isToolMessageChunk(x: BaseMessageChunk): x is ToolMessageChunk;
@@ -162,3 +162,9 @@ rawToolCalls) {
162
162
  }
163
163
  return [toolCalls, invalidToolCalls];
164
164
  }
165
+ export function isToolMessage(x) {
166
+ return x._getType() === "tool";
167
+ }
168
+ export function isToolMessageChunk(x) {
169
+ return x._getType() === "tool";
170
+ }
@@ -34,8 +34,40 @@ function _coerceToolCall(toolCall) {
34
34
  return toolCall;
35
35
  }
36
36
  }
37
+ function isSerializedConstructor(x) {
38
+ return (typeof x === "object" &&
39
+ x != null &&
40
+ x.lc === 1 &&
41
+ Array.isArray(x.id) &&
42
+ x.kwargs != null &&
43
+ typeof x.kwargs === "object");
44
+ }
37
45
  function _constructMessageFromParams(params) {
38
- const { type, ...rest } = params;
46
+ let type;
47
+ let rest;
48
+ // Support serialized messages
49
+ if (isSerializedConstructor(params)) {
50
+ const className = params.id.at(-1);
51
+ if (className === "HumanMessage" || className === "HumanMessageChunk") {
52
+ type = "user";
53
+ }
54
+ else if (className === "AIMessage" || className === "AIMessageChunk") {
55
+ type = "assistant";
56
+ }
57
+ else if (className === "SystemMessage" ||
58
+ className === "SystemMessageChunk") {
59
+ type = "system";
60
+ }
61
+ else {
62
+ type = "unknown";
63
+ }
64
+ rest = params.kwargs;
65
+ }
66
+ else {
67
+ const { type: extractedType, ...otherParams } = params;
68
+ type = extractedType;
69
+ rest = otherParams;
70
+ }
39
71
  if (type === "human" || type === "user") {
40
72
  return new human_js_1.HumanMessage(rest);
41
73
  }
@@ -59,7 +91,7 @@ function _constructMessageFromParams(params) {
59
91
  });
60
92
  }
61
93
  else {
62
- throw new Error(`Unable to coerce message from array: only human, AI, or system message coercion is currently supported.`);
94
+ throw new Error(`Unable to coerce message from array: only human, AI, or system message coercion is currently supported.\n\nReceived:${params}`);
63
95
  }
64
96
  }
65
97
  function coerceMessageLikeToMessage(messageLike) {
@@ -31,8 +31,40 @@ function _coerceToolCall(toolCall) {
31
31
  return toolCall;
32
32
  }
33
33
  }
34
+ function isSerializedConstructor(x) {
35
+ return (typeof x === "object" &&
36
+ x != null &&
37
+ x.lc === 1 &&
38
+ Array.isArray(x.id) &&
39
+ x.kwargs != null &&
40
+ typeof x.kwargs === "object");
41
+ }
34
42
  function _constructMessageFromParams(params) {
35
- const { type, ...rest } = params;
43
+ let type;
44
+ let rest;
45
+ // Support serialized messages
46
+ if (isSerializedConstructor(params)) {
47
+ const className = params.id.at(-1);
48
+ if (className === "HumanMessage" || className === "HumanMessageChunk") {
49
+ type = "user";
50
+ }
51
+ else if (className === "AIMessage" || className === "AIMessageChunk") {
52
+ type = "assistant";
53
+ }
54
+ else if (className === "SystemMessage" ||
55
+ className === "SystemMessageChunk") {
56
+ type = "system";
57
+ }
58
+ else {
59
+ type = "unknown";
60
+ }
61
+ rest = params.kwargs;
62
+ }
63
+ else {
64
+ const { type: extractedType, ...otherParams } = params;
65
+ type = extractedType;
66
+ rest = otherParams;
67
+ }
36
68
  if (type === "human" || type === "user") {
37
69
  return new HumanMessage(rest);
38
70
  }
@@ -56,7 +88,7 @@ function _constructMessageFromParams(params) {
56
88
  });
57
89
  }
58
90
  else {
59
- throw new Error(`Unable to coerce message from array: only human, AI, or system message coercion is currently supported.`);
91
+ throw new Error(`Unable to coerce message from array: only human, AI, or system message coercion is currently supported.\n\nReceived:${params}`);
60
92
  }
61
93
  }
62
94
  export function coerceMessageLikeToMessage(messageLike) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/core",
3
- "version": "0.3.6",
3
+ "version": "0.3.7",
4
4
  "description": "Core LangChain.js abstractions and schemas",
5
5
  "type": "module",
6
6
  "engines": {