@langchain/core 1.0.0-alpha.2 → 1.0.0-alpha.3

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.
Files changed (164) hide show
  1. package/dist/agents.d.ts.map +1 -1
  2. package/dist/caches/base.cjs +5 -18
  3. package/dist/caches/base.cjs.map +1 -1
  4. package/dist/caches/base.d.cts +4 -20
  5. package/dist/caches/base.d.cts.map +1 -1
  6. package/dist/caches/base.d.ts +4 -20
  7. package/dist/caches/base.d.ts.map +1 -1
  8. package/dist/caches/base.js +5 -18
  9. package/dist/caches/base.js.map +1 -1
  10. package/dist/callbacks/base.d.cts +3 -2
  11. package/dist/callbacks/base.d.cts.map +1 -1
  12. package/dist/callbacks/base.d.ts +3 -2
  13. package/dist/callbacks/base.d.ts.map +1 -1
  14. package/dist/callbacks/manager.d.cts +1 -1
  15. package/dist/callbacks/manager.d.ts +1 -1
  16. package/dist/language_models/base.d.cts +1 -1
  17. package/dist/language_models/base.d.ts +1 -1
  18. package/dist/language_models/chat_models.cjs +1 -0
  19. package/dist/language_models/chat_models.cjs.map +1 -1
  20. package/dist/language_models/chat_models.d.cts +2 -1
  21. package/dist/language_models/chat_models.d.cts.map +1 -1
  22. package/dist/language_models/chat_models.d.ts +2 -1
  23. package/dist/language_models/chat_models.d.ts.map +1 -1
  24. package/dist/language_models/chat_models.js +2 -1
  25. package/dist/language_models/chat_models.js.map +1 -1
  26. package/dist/messages/ai.cjs +32 -60
  27. package/dist/messages/ai.cjs.map +1 -1
  28. package/dist/messages/ai.d.cts +26 -119
  29. package/dist/messages/ai.d.cts.map +1 -1
  30. package/dist/messages/ai.d.ts +26 -119
  31. package/dist/messages/ai.d.ts.map +1 -1
  32. package/dist/messages/ai.js +32 -60
  33. package/dist/messages/ai.js.map +1 -1
  34. package/dist/messages/base.cjs +48 -28
  35. package/dist/messages/base.cjs.map +1 -1
  36. package/dist/messages/base.d.cts +37 -39
  37. package/dist/messages/base.d.cts.map +1 -1
  38. package/dist/messages/base.d.ts +37 -39
  39. package/dist/messages/base.d.ts.map +1 -1
  40. package/dist/messages/base.js +48 -28
  41. package/dist/messages/base.js.map +1 -1
  42. package/dist/messages/chat.cjs +18 -12
  43. package/dist/messages/chat.cjs.map +1 -1
  44. package/dist/messages/chat.d.cts +21 -13
  45. package/dist/messages/chat.d.cts.map +1 -1
  46. package/dist/messages/chat.d.ts +21 -13
  47. package/dist/messages/chat.d.ts.map +1 -1
  48. package/dist/messages/chat.js +18 -12
  49. package/dist/messages/chat.js.map +1 -1
  50. package/dist/messages/content/index.cjs.map +1 -1
  51. package/dist/messages/content/index.d.cts +1 -1
  52. package/dist/messages/content/index.d.cts.map +1 -1
  53. package/dist/messages/content/index.d.ts +1 -1
  54. package/dist/messages/content/index.d.ts.map +1 -1
  55. package/dist/messages/content/index.js.map +1 -1
  56. package/dist/messages/function.cjs +8 -13
  57. package/dist/messages/function.cjs.map +1 -1
  58. package/dist/messages/function.d.cts +11 -11
  59. package/dist/messages/function.d.cts.map +1 -1
  60. package/dist/messages/function.d.ts +11 -11
  61. package/dist/messages/function.d.ts.map +1 -1
  62. package/dist/messages/function.js +8 -13
  63. package/dist/messages/function.js.map +1 -1
  64. package/dist/messages/human.cjs +20 -11
  65. package/dist/messages/human.cjs.map +1 -1
  66. package/dist/messages/human.d.cts +20 -15
  67. package/dist/messages/human.d.cts.map +1 -1
  68. package/dist/messages/human.d.ts +20 -15
  69. package/dist/messages/human.d.ts.map +1 -1
  70. package/dist/messages/human.js +20 -11
  71. package/dist/messages/human.js.map +1 -1
  72. package/dist/messages/index.cjs +10 -0
  73. package/dist/messages/index.cjs.map +1 -1
  74. package/dist/messages/index.d.cts +9 -7
  75. package/dist/messages/index.d.ts +9 -7
  76. package/dist/messages/index.js +8 -2
  77. package/dist/messages/index.js.map +1 -1
  78. package/dist/messages/message.cjs +15 -0
  79. package/dist/messages/message.cjs.map +1 -0
  80. package/dist/messages/message.d.cts +598 -0
  81. package/dist/messages/message.d.cts.map +1 -0
  82. package/dist/messages/message.d.ts +598 -0
  83. package/dist/messages/message.d.ts.map +1 -0
  84. package/dist/messages/message.js +14 -0
  85. package/dist/messages/message.js.map +1 -0
  86. package/dist/messages/metadata.cjs +41 -0
  87. package/dist/messages/metadata.cjs.map +1 -0
  88. package/dist/messages/metadata.d.cts +98 -0
  89. package/dist/messages/metadata.d.cts.map +1 -0
  90. package/dist/messages/metadata.d.ts +98 -0
  91. package/dist/messages/metadata.d.ts.map +1 -0
  92. package/dist/messages/metadata.js +40 -0
  93. package/dist/messages/metadata.js.map +1 -0
  94. package/dist/messages/modifier.cjs +5 -7
  95. package/dist/messages/modifier.cjs.map +1 -1
  96. package/dist/messages/modifier.d.cts +7 -5
  97. package/dist/messages/modifier.d.cts.map +1 -1
  98. package/dist/messages/modifier.d.ts +7 -5
  99. package/dist/messages/modifier.d.ts.map +1 -1
  100. package/dist/messages/modifier.js +5 -7
  101. package/dist/messages/modifier.js.map +1 -1
  102. package/dist/messages/system.cjs +20 -11
  103. package/dist/messages/system.cjs.map +1 -1
  104. package/dist/messages/system.d.cts +20 -15
  105. package/dist/messages/system.d.cts.map +1 -1
  106. package/dist/messages/system.d.ts +20 -15
  107. package/dist/messages/system.d.ts.map +1 -1
  108. package/dist/messages/system.js +20 -11
  109. package/dist/messages/system.js.map +1 -1
  110. package/dist/messages/tool.cjs +15 -13
  111. package/dist/messages/tool.cjs.map +1 -1
  112. package/dist/messages/tool.d.cts +72 -46
  113. package/dist/messages/tool.d.cts.map +1 -1
  114. package/dist/messages/tool.d.ts +72 -46
  115. package/dist/messages/tool.d.ts.map +1 -1
  116. package/dist/messages/tool.js +15 -13
  117. package/dist/messages/tool.js.map +1 -1
  118. package/dist/messages/transformers.cjs.map +1 -1
  119. package/dist/messages/transformers.d.cts +2 -1
  120. package/dist/messages/transformers.d.cts.map +1 -1
  121. package/dist/messages/transformers.d.ts +2 -1
  122. package/dist/messages/transformers.d.ts.map +1 -1
  123. package/dist/messages/transformers.js.map +1 -1
  124. package/dist/messages/utils.cjs +8 -1
  125. package/dist/messages/utils.cjs.map +1 -1
  126. package/dist/messages/utils.d.cts +83 -3
  127. package/dist/messages/utils.d.cts.map +1 -1
  128. package/dist/messages/utils.d.ts +83 -3
  129. package/dist/messages/utils.d.ts.map +1 -1
  130. package/dist/messages/utils.js +8 -2
  131. package/dist/messages/utils.js.map +1 -1
  132. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.cts +1 -1
  133. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.ts +1 -1
  134. package/dist/prompt_values.d.cts +4 -3
  135. package/dist/prompt_values.d.cts.map +1 -1
  136. package/dist/prompt_values.d.ts +4 -3
  137. package/dist/prompt_values.d.ts.map +1 -1
  138. package/dist/prompts/chat.d.cts +3 -3
  139. package/dist/prompts/chat.d.cts.map +1 -1
  140. package/dist/prompts/chat.d.ts +3 -3
  141. package/dist/prompts/chat.d.ts.map +1 -1
  142. package/dist/prompts/few_shot.d.cts +1 -1
  143. package/dist/prompts/few_shot.d.ts +1 -1
  144. package/dist/prompts/image.d.cts +1 -1
  145. package/dist/prompts/image.d.ts +1 -1
  146. package/dist/prompts/prompt.d.cts +1 -1
  147. package/dist/prompts/prompt.d.ts +1 -1
  148. package/dist/prompts/template.d.cts +1 -1
  149. package/dist/prompts/template.d.ts +1 -1
  150. package/dist/runnables/base.d.cts +1 -1
  151. package/dist/runnables/base.d.ts +1 -1
  152. package/dist/tools/index.d.cts +1 -1
  153. package/dist/tools/index.d.ts +1 -1
  154. package/dist/tools/types.d.cts +1 -1
  155. package/dist/tools/types.d.ts +1 -1
  156. package/dist/tracers/base.d.cts +1 -1
  157. package/dist/tracers/base.d.ts +1 -1
  158. package/dist/tracers/tracer_langchain_v1.d.cts +1 -1
  159. package/dist/tracers/tracer_langchain_v1.d.ts +1 -1
  160. package/dist/utils/testing/index.d.cts +4 -3
  161. package/dist/utils/testing/index.d.cts.map +1 -1
  162. package/dist/utils/testing/index.d.ts +4 -3
  163. package/dist/utils/testing/index.d.ts.map +1 -1
  164. package/package.json +1 -1
@@ -1,148 +1,55 @@
1
1
  import { ContentBlock } from "./content/index.cjs";
2
- import { BaseMessage, BaseMessageChunk, BaseMessageFields, MessageType } from "./base.cjs";
2
+ import { BaseMessage, BaseMessageChunk, BaseMessageFields } from "./base.cjs";
3
3
  import { InvalidToolCall, ToolCall, ToolCallChunk } from "./tool.cjs";
4
+ import { $InferMessageContent, $InferMessageProperty, MessageStructure } from "./message.cjs";
4
5
 
5
6
  //#region src/messages/ai.d.ts
6
- type AIMessageFields = BaseMessageFields & {
7
+ interface AIMessageFields<TStructure extends MessageStructure = MessageStructure> extends BaseMessageFields<TStructure, "ai"> {
7
8
  tool_calls?: ToolCall[];
8
9
  invalid_tool_calls?: InvalidToolCall[];
9
- usage_metadata?: UsageMetadata;
10
- };
11
- type ModalitiesTokenDetails = {
12
- /**
13
- * Text tokens.
14
- * Does not need to be reported, but some models will do so.
15
- */
16
- text?: number;
17
- /**
18
- * Image (non-video) tokens.
19
- */
20
- image?: number;
21
- /**
22
- * Audio tokens.
23
- */
24
- audio?: number;
25
- /**
26
- * Video tokens.
27
- */
28
- video?: number;
29
- /**
30
- * Document tokens.
31
- * e.g. PDF
32
- */
33
- document?: number;
34
- };
35
- /**
36
- * Breakdown of input token counts.
37
- *
38
- * Does not *need* to sum to full input token count. Does *not* need to have all keys.
39
- */
40
- type InputTokenDetails = ModalitiesTokenDetails & {
41
- /**
42
- * Input tokens that were cached and there was a cache hit.
43
- *
44
- * Since there was a cache hit, the tokens were read from the cache.
45
- * More precisely, the model state given these tokens was read from the cache.
46
- */
47
- cache_read?: number;
48
- /**
49
- * Input tokens that were cached and there was a cache miss.
50
- *
51
- * Since there was a cache miss, the cache was created from these tokens.
52
- */
53
- cache_creation?: number;
54
- };
55
- /**
56
- * Breakdown of output token counts.
57
- *
58
- * Does *not* need to sum to full output token count. Does *not* need to have all keys.
59
- */
60
- type OutputTokenDetails = ModalitiesTokenDetails & {
61
- /**
62
- * Reasoning output tokens.
63
- *
64
- * Tokens generated by the model in a chain of thought process (i.e. by
65
- * OpenAI's o1 models) that are not returned as part of model output.
66
- */
67
- reasoning?: number;
68
- };
69
- /**
70
- * Usage metadata for a message, such as token counts.
71
- */
72
- type UsageMetadata = {
73
- /**
74
- * Count of input (or prompt) tokens. Sum of all input token types.
75
- */
76
- input_tokens: number;
77
- /**
78
- * Count of output (or completion) tokens. Sum of all output token types.
79
- */
80
- output_tokens: number;
81
- /**
82
- * Total token count. Sum of input_tokens + output_tokens.
83
- */
84
- total_tokens: number;
85
- /**
86
- * Breakdown of input token counts.
87
- *
88
- * Does *not* need to sum to full input token count. Does *not* need to have all keys.
89
- */
90
- input_token_details?: InputTokenDetails;
91
- /**
92
- * Breakdown of output token counts.
93
- *
94
- * Does *not* need to sum to full output token count. Does *not* need to have all keys.
95
- */
96
- output_token_details?: OutputTokenDetails;
97
- };
98
- /**
99
- * Represents an AI message in a conversation.
100
- */
101
- declare class AIMessage extends BaseMessage implements AIMessageFields {
102
- // These are typed as optional to avoid breaking changes and allow for casting
103
- // from BaseMessage.
10
+ usage_metadata?: $InferMessageProperty<TStructure, "ai", "usage_metadata">;
11
+ }
12
+ declare class AIMessage<TStructure extends MessageStructure = MessageStructure> extends BaseMessage<TStructure, "ai"> implements AIMessageFields<TStructure> {
13
+ readonly type: "ai";
104
14
  tool_calls?: ToolCall[];
105
15
  invalid_tool_calls?: InvalidToolCall[];
106
- /**
107
- * If provided, token usage information associated with the message.
108
- */
109
- usage_metadata?: UsageMetadata;
16
+ usage_metadata?: AIMessageFields<TStructure>["usage_metadata"];
110
17
  get lc_aliases(): Record<string, string>;
111
- constructor(fields: string | AIMessageFields, /** @deprecated */
112
- kwargs?: Record<string, unknown>);
18
+ constructor(fields: $InferMessageContent<TStructure, "ai"> | AIMessageFields<TStructure>);
113
19
  static lc_name(): string;
114
- _getType(): MessageType;
115
20
  get contentBlocks(): Array<ContentBlock.Standard>;
116
21
  get _printableFields(): Record<string, unknown>;
22
+ static isInstance(obj: unknown): obj is AIMessage;
117
23
  }
118
- declare function isAIMessage(x: BaseMessage): x is AIMessage;
119
- declare function isAIMessageChunk(x: BaseMessageChunk): x is AIMessageChunk;
120
- type AIMessageChunkFields = AIMessageFields & {
24
+ /**
25
+ * @deprecated Use {@link AIMessage.isInstance} instead
26
+ */
27
+ declare function isAIMessage<TStructure extends MessageStructure>(x: BaseMessage): x is AIMessage<TStructure>;
28
+ /**
29
+ * @deprecated Use {@link AIMessageChunk.isInstance} instead
30
+ */
31
+ declare function isAIMessageChunk<TStructure extends MessageStructure>(x: BaseMessageChunk): x is AIMessageChunk<TStructure>;
32
+ type AIMessageChunkFields<TStructure extends MessageStructure = MessageStructure> = AIMessageFields<TStructure> & {
121
33
  tool_call_chunks?: ToolCallChunk[];
122
34
  };
123
35
  /**
124
36
  * Represents a chunk of an AI message, which can be concatenated with
125
37
  * other AI message chunks.
126
38
  */
127
- declare class AIMessageChunk extends BaseMessageChunk {
128
- // Must redeclare tool call fields since there is no multiple inheritance in JS.
129
- // These are typed as optional to avoid breaking changes and allow for casting
130
- // from BaseMessage.
39
+ declare class AIMessageChunk<TStructure extends MessageStructure = MessageStructure> extends BaseMessageChunk<TStructure, "ai"> implements AIMessage<TStructure>, AIMessageChunkFields<TStructure> {
40
+ readonly type: "ai";
131
41
  tool_calls?: ToolCall[];
132
42
  invalid_tool_calls?: InvalidToolCall[];
133
43
  tool_call_chunks?: ToolCallChunk[];
134
- /**
135
- * If provided, token usage information associated with the message.
136
- */
137
- usage_metadata?: UsageMetadata;
138
- constructor(fields: string | AIMessageChunkFields);
44
+ usage_metadata?: AIMessageChunkFields<TStructure>["usage_metadata"];
45
+ constructor(fields: $InferMessageContent<TStructure, "ai"> | AIMessageChunkFields<TStructure>);
139
46
  get lc_aliases(): Record<string, string>;
140
47
  static lc_name(): string;
141
- _getType(): MessageType;
142
48
  get contentBlocks(): Array<ContentBlock.Standard>;
143
49
  get _printableFields(): Record<string, unknown>;
144
- concat(chunk: AIMessageChunk): AIMessageChunk;
50
+ concat(chunk: AIMessageChunk<TStructure>): this;
51
+ static isInstance(obj: unknown): obj is AIMessageChunk;
145
52
  }
146
53
  //#endregion
147
- export { AIMessage, AIMessageChunk, AIMessageChunkFields, AIMessageFields, InputTokenDetails, ModalitiesTokenDetails, OutputTokenDetails, UsageMetadata, isAIMessage, isAIMessageChunk };
54
+ export { AIMessage, AIMessageChunk, AIMessageChunkFields, AIMessageFields, isAIMessage, isAIMessageChunk };
148
55
  //# sourceMappingURL=ai.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.cts","names":["BaseMessage","BaseMessageChunk","MessageType","BaseMessageFields","ContentBlock","InvalidToolCall","ToolCall","ToolCallChunk","AIMessageFields","UsageMetadata","ModalitiesTokenDetails","InputTokenDetails","OutputTokenDetails","AIMessage","Record","Standard","Array","isAIMessage","isAIMessageChunk","AIMessageChunk","AIMessageChunkFields"],"sources":["../../src/messages/ai.d.ts"],"sourcesContent":["import { BaseMessage, BaseMessageChunk, type MessageType, BaseMessageFields } from \"./base.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { InvalidToolCall, ToolCall, ToolCallChunk } from \"./tool.js\";\nexport type AIMessageFields = BaseMessageFields & {\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: UsageMetadata;\n};\nexport type ModalitiesTokenDetails = {\n /**\n * Text tokens.\n * Does not need to be reported, but some models will do so.\n */\n text?: number;\n /**\n * Image (non-video) tokens.\n */\n image?: number;\n /**\n * Audio tokens.\n */\n audio?: number;\n /**\n * Video tokens.\n */\n video?: number;\n /**\n * Document tokens.\n * e.g. PDF\n */\n document?: number;\n};\n/**\n * Breakdown of input token counts.\n *\n * Does not *need* to sum to full input token count. Does *not* need to have all keys.\n */\nexport type InputTokenDetails = ModalitiesTokenDetails & {\n /**\n * Input tokens that were cached and there was a cache hit.\n *\n * Since there was a cache hit, the tokens were read from the cache.\n * More precisely, the model state given these tokens was read from the cache.\n */\n cache_read?: number;\n /**\n * Input tokens that were cached and there was a cache miss.\n *\n * Since there was a cache miss, the cache was created from these tokens.\n */\n cache_creation?: number;\n};\n/**\n * Breakdown of output token counts.\n *\n * Does *not* need to sum to full output token count. Does *not* need to have all keys.\n */\nexport type OutputTokenDetails = ModalitiesTokenDetails & {\n /**\n * Reasoning output tokens.\n *\n * Tokens generated by the model in a chain of thought process (i.e. by\n * OpenAI's o1 models) that are not returned as part of model output.\n */\n reasoning?: number;\n};\n/**\n * Usage metadata for a message, such as token counts.\n */\nexport type UsageMetadata = {\n /**\n * Count of input (or prompt) tokens. Sum of all input token types.\n */\n input_tokens: number;\n /**\n * Count of output (or completion) tokens. Sum of all output token types.\n */\n output_tokens: number;\n /**\n * Total token count. Sum of input_tokens + output_tokens.\n */\n total_tokens: number;\n /**\n * Breakdown of input token counts.\n *\n * Does *not* need to sum to full input token count. Does *not* need to have all keys.\n */\n input_token_details?: InputTokenDetails;\n /**\n * Breakdown of output token counts.\n *\n * Does *not* need to sum to full output token count. Does *not* need to have all keys.\n */\n output_token_details?: OutputTokenDetails;\n};\n/**\n * Represents an AI message in a conversation.\n */\nexport declare class AIMessage extends BaseMessage implements AIMessageFields {\n // These are typed as optional to avoid breaking changes and allow for casting\n // from BaseMessage.\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n /**\n * If provided, token usage information associated with the message.\n */\n usage_metadata?: UsageMetadata;\n get lc_aliases(): Record<string, string>;\n constructor(fields: string | AIMessageFields, \n /** @deprecated */\n kwargs?: Record<string, unknown>);\n static lc_name(): string;\n _getType(): MessageType;\n get contentBlocks(): Array<ContentBlock.Standard>;\n get _printableFields(): Record<string, unknown>;\n}\nexport declare function isAIMessage(x: BaseMessage): x is AIMessage;\nexport declare function isAIMessageChunk(x: BaseMessageChunk): x is AIMessageChunk;\nexport type AIMessageChunkFields = AIMessageFields & {\n tool_call_chunks?: ToolCallChunk[];\n};\n/**\n * Represents a chunk of an AI message, which can be concatenated with\n * other AI message chunks.\n */\nexport declare class AIMessageChunk extends BaseMessageChunk {\n // Must redeclare tool call fields since there is no multiple inheritance in JS.\n // These are typed as optional to avoid breaking changes and allow for casting\n // from BaseMessage.\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n tool_call_chunks?: ToolCallChunk[];\n /**\n * If provided, token usage information associated with the message.\n */\n usage_metadata?: UsageMetadata;\n constructor(fields: string | AIMessageChunkFields);\n get lc_aliases(): Record<string, string>;\n static lc_name(): string;\n _getType(): MessageType;\n get contentBlocks(): Array<ContentBlock.Standard>;\n get _printableFields(): Record<string, unknown>;\n concat(chunk: AIMessageChunk): AIMessageChunk;\n}\n"],"mappings":";;;;;KAGYQ,eAAAA,GAAkBL;eACbG;EADLE,kBAAe,CAAA,EAEFH,eAFE,EAAA;EAAA,cAAA,CAAA,EAGNI,aAHM;CAAA;AACVH,KAILI,sBAAAA,GAJKJ;EAAQ;;AAES;AAElC;EA6BYK,IAAAA,CAAAA,EAAAA,MAAAA;EAoBAC;AAYZ;;EAAyB,KAkBCD,CAAAA,EAAAA,MAAAA;EAAiB;AAME;AAK7C;EAA8B,KAAA,CAAA,EAAA,MAAA;EAAA;;;EAQI,KACZG,CAAAA,EAAAA,MAAAA;EAAM;;;;EAMwB,QAA3BE,CAAAA,EAAAA,MAAAA;CAAK;;;AAf+C;AAkB7E;;AAAuChB,KA/E3BW,iBAAAA,GAAoBD,sBA+EOV,GAAAA;EAAW;AAAiB;AACnE;;;;EAAkF,UAAA,CAAA,EAAA,MAAA;EACtEoB;;;;AACwB;EAMfD,cAAAA,CAAAA,EAAc,MAAA;CAAA;;;;;;AAYbL,KAhFVF,kBAAAA,GAAqBF,sBAgFXI,GAAAA;EAAM;;;;;;EAKqB,SAjBLb,CAAAA,EAAAA,MAAAA;AAAgB,CAAA;;;;KAxDhDQ,aAAAA;;;;;;;;;;;;;;;;;;wBAkBcE;;;;;;yBAMCC;;;;;cAKNC,SAAAA,SAAkBb,WAAAA,YAAuBQ;;;eAG7CF;uBACQD;;;;mBAIJI;oBACCK;+BACWN;WAEpBM;;cAEGZ;uBACSc,MAAMZ,YAAAA,CAAaW;0BAChBD;;iBAEJG,WAAAA,IAAejB,mBAAmBa;iBAClCK,gBAAAA,IAAoBjB,wBAAwBkB;KACxDC,oBAAAA,GAAuBZ;qBACZD;;;;;;cAMFY,cAAAA,SAAuBlB,gBAAAA;;;;eAI3BK;uBACQD;qBACFE;;;;mBAIFE;+BACYW;oBACXN;;cAENZ;uBACSc,MAAMZ,YAAAA,CAAaW;0BAChBD;gBACVK,iBAAiBA"}
1
+ {"version":3,"file":"ai.d.cts","names":["BaseMessage","BaseMessageChunk","BaseMessageFields","ContentBlock","$InferMessageContent","$InferMessageProperty","MessageStructure","InvalidToolCall","ToolCall","ToolCallChunk","AIMessageFields","TStructure","AIMessage","Record","Standard","Array","isAIMessage","isAIMessageChunk","AIMessageChunk","AIMessageChunkFields"],"sources":["../../src/messages/ai.d.ts"],"sourcesContent":["import { BaseMessage, BaseMessageChunk, BaseMessageFields } from \"./base.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { $InferMessageContent, $InferMessageProperty, MessageStructure } from \"./message.js\";\nimport { InvalidToolCall, ToolCall, ToolCallChunk } from \"./tool.js\";\nexport interface AIMessageFields<TStructure extends MessageStructure = MessageStructure> extends BaseMessageFields<TStructure, \"ai\"> {\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: $InferMessageProperty<TStructure, \"ai\", \"usage_metadata\">;\n}\nexport declare class AIMessage<TStructure extends MessageStructure = MessageStructure> extends BaseMessage<TStructure, \"ai\"> implements AIMessageFields<TStructure> {\n readonly type: \"ai\";\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: AIMessageFields<TStructure>[\"usage_metadata\"];\n get lc_aliases(): Record<string, string>;\n constructor(fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageFields<TStructure>);\n static lc_name(): string;\n get contentBlocks(): Array<ContentBlock.Standard>;\n get _printableFields(): Record<string, unknown>;\n static isInstance(obj: unknown): obj is AIMessage;\n}\n/**\n * @deprecated Use {@link AIMessage.isInstance} instead\n */\nexport declare function isAIMessage<TStructure extends MessageStructure>(x: BaseMessage): x is AIMessage<TStructure>;\n/**\n * @deprecated Use {@link AIMessageChunk.isInstance} instead\n */\nexport declare function isAIMessageChunk<TStructure extends MessageStructure>(x: BaseMessageChunk): x is AIMessageChunk<TStructure>;\nexport type AIMessageChunkFields<TStructure extends MessageStructure = MessageStructure> = AIMessageFields<TStructure> & {\n tool_call_chunks?: ToolCallChunk[];\n};\n/**\n * Represents a chunk of an AI message, which can be concatenated with\n * other AI message chunks.\n */\nexport declare class AIMessageChunk<TStructure extends MessageStructure = MessageStructure> extends BaseMessageChunk<TStructure, \"ai\"> implements AIMessage<TStructure>, AIMessageChunkFields<TStructure> {\n readonly type: \"ai\";\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n tool_call_chunks?: ToolCallChunk[];\n usage_metadata?: AIMessageChunkFields<TStructure>[\"usage_metadata\"];\n constructor(fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageChunkFields<TStructure>);\n get lc_aliases(): Record<string, string>;\n static lc_name(): string;\n get contentBlocks(): Array<ContentBlock.Standard>;\n get _printableFields(): Record<string, unknown>;\n concat(chunk: AIMessageChunk<TStructure>): this;\n static isInstance(obj: unknown): obj is AIMessageChunk;\n}\n"],"mappings":"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"}
@@ -1,148 +1,55 @@
1
1
  import { ContentBlock } from "./content/index.js";
2
- import { BaseMessage, BaseMessageChunk, BaseMessageFields, MessageType } from "./base.js";
2
+ import { BaseMessage, BaseMessageChunk, BaseMessageFields } from "./base.js";
3
3
  import { InvalidToolCall, ToolCall, ToolCallChunk } from "./tool.js";
4
+ import { $InferMessageContent, $InferMessageProperty, MessageStructure } from "./message.js";
4
5
 
5
6
  //#region src/messages/ai.d.ts
6
- type AIMessageFields = BaseMessageFields & {
7
+ interface AIMessageFields<TStructure extends MessageStructure = MessageStructure> extends BaseMessageFields<TStructure, "ai"> {
7
8
  tool_calls?: ToolCall[];
8
9
  invalid_tool_calls?: InvalidToolCall[];
9
- usage_metadata?: UsageMetadata;
10
- };
11
- type ModalitiesTokenDetails = {
12
- /**
13
- * Text tokens.
14
- * Does not need to be reported, but some models will do so.
15
- */
16
- text?: number;
17
- /**
18
- * Image (non-video) tokens.
19
- */
20
- image?: number;
21
- /**
22
- * Audio tokens.
23
- */
24
- audio?: number;
25
- /**
26
- * Video tokens.
27
- */
28
- video?: number;
29
- /**
30
- * Document tokens.
31
- * e.g. PDF
32
- */
33
- document?: number;
34
- };
35
- /**
36
- * Breakdown of input token counts.
37
- *
38
- * Does not *need* to sum to full input token count. Does *not* need to have all keys.
39
- */
40
- type InputTokenDetails = ModalitiesTokenDetails & {
41
- /**
42
- * Input tokens that were cached and there was a cache hit.
43
- *
44
- * Since there was a cache hit, the tokens were read from the cache.
45
- * More precisely, the model state given these tokens was read from the cache.
46
- */
47
- cache_read?: number;
48
- /**
49
- * Input tokens that were cached and there was a cache miss.
50
- *
51
- * Since there was a cache miss, the cache was created from these tokens.
52
- */
53
- cache_creation?: number;
54
- };
55
- /**
56
- * Breakdown of output token counts.
57
- *
58
- * Does *not* need to sum to full output token count. Does *not* need to have all keys.
59
- */
60
- type OutputTokenDetails = ModalitiesTokenDetails & {
61
- /**
62
- * Reasoning output tokens.
63
- *
64
- * Tokens generated by the model in a chain of thought process (i.e. by
65
- * OpenAI's o1 models) that are not returned as part of model output.
66
- */
67
- reasoning?: number;
68
- };
69
- /**
70
- * Usage metadata for a message, such as token counts.
71
- */
72
- type UsageMetadata = {
73
- /**
74
- * Count of input (or prompt) tokens. Sum of all input token types.
75
- */
76
- input_tokens: number;
77
- /**
78
- * Count of output (or completion) tokens. Sum of all output token types.
79
- */
80
- output_tokens: number;
81
- /**
82
- * Total token count. Sum of input_tokens + output_tokens.
83
- */
84
- total_tokens: number;
85
- /**
86
- * Breakdown of input token counts.
87
- *
88
- * Does *not* need to sum to full input token count. Does *not* need to have all keys.
89
- */
90
- input_token_details?: InputTokenDetails;
91
- /**
92
- * Breakdown of output token counts.
93
- *
94
- * Does *not* need to sum to full output token count. Does *not* need to have all keys.
95
- */
96
- output_token_details?: OutputTokenDetails;
97
- };
98
- /**
99
- * Represents an AI message in a conversation.
100
- */
101
- declare class AIMessage extends BaseMessage implements AIMessageFields {
102
- // These are typed as optional to avoid breaking changes and allow for casting
103
- // from BaseMessage.
10
+ usage_metadata?: $InferMessageProperty<TStructure, "ai", "usage_metadata">;
11
+ }
12
+ declare class AIMessage<TStructure extends MessageStructure = MessageStructure> extends BaseMessage<TStructure, "ai"> implements AIMessageFields<TStructure> {
13
+ readonly type: "ai";
104
14
  tool_calls?: ToolCall[];
105
15
  invalid_tool_calls?: InvalidToolCall[];
106
- /**
107
- * If provided, token usage information associated with the message.
108
- */
109
- usage_metadata?: UsageMetadata;
16
+ usage_metadata?: AIMessageFields<TStructure>["usage_metadata"];
110
17
  get lc_aliases(): Record<string, string>;
111
- constructor(fields: string | AIMessageFields, /** @deprecated */
112
- kwargs?: Record<string, unknown>);
18
+ constructor(fields: $InferMessageContent<TStructure, "ai"> | AIMessageFields<TStructure>);
113
19
  static lc_name(): string;
114
- _getType(): MessageType;
115
20
  get contentBlocks(): Array<ContentBlock.Standard>;
116
21
  get _printableFields(): Record<string, unknown>;
22
+ static isInstance(obj: unknown): obj is AIMessage;
117
23
  }
118
- declare function isAIMessage(x: BaseMessage): x is AIMessage;
119
- declare function isAIMessageChunk(x: BaseMessageChunk): x is AIMessageChunk;
120
- type AIMessageChunkFields = AIMessageFields & {
24
+ /**
25
+ * @deprecated Use {@link AIMessage.isInstance} instead
26
+ */
27
+ declare function isAIMessage<TStructure extends MessageStructure>(x: BaseMessage): x is AIMessage<TStructure>;
28
+ /**
29
+ * @deprecated Use {@link AIMessageChunk.isInstance} instead
30
+ */
31
+ declare function isAIMessageChunk<TStructure extends MessageStructure>(x: BaseMessageChunk): x is AIMessageChunk<TStructure>;
32
+ type AIMessageChunkFields<TStructure extends MessageStructure = MessageStructure> = AIMessageFields<TStructure> & {
121
33
  tool_call_chunks?: ToolCallChunk[];
122
34
  };
123
35
  /**
124
36
  * Represents a chunk of an AI message, which can be concatenated with
125
37
  * other AI message chunks.
126
38
  */
127
- declare class AIMessageChunk extends BaseMessageChunk {
128
- // Must redeclare tool call fields since there is no multiple inheritance in JS.
129
- // These are typed as optional to avoid breaking changes and allow for casting
130
- // from BaseMessage.
39
+ declare class AIMessageChunk<TStructure extends MessageStructure = MessageStructure> extends BaseMessageChunk<TStructure, "ai"> implements AIMessage<TStructure>, AIMessageChunkFields<TStructure> {
40
+ readonly type: "ai";
131
41
  tool_calls?: ToolCall[];
132
42
  invalid_tool_calls?: InvalidToolCall[];
133
43
  tool_call_chunks?: ToolCallChunk[];
134
- /**
135
- * If provided, token usage information associated with the message.
136
- */
137
- usage_metadata?: UsageMetadata;
138
- constructor(fields: string | AIMessageChunkFields);
44
+ usage_metadata?: AIMessageChunkFields<TStructure>["usage_metadata"];
45
+ constructor(fields: $InferMessageContent<TStructure, "ai"> | AIMessageChunkFields<TStructure>);
139
46
  get lc_aliases(): Record<string, string>;
140
47
  static lc_name(): string;
141
- _getType(): MessageType;
142
48
  get contentBlocks(): Array<ContentBlock.Standard>;
143
49
  get _printableFields(): Record<string, unknown>;
144
- concat(chunk: AIMessageChunk): AIMessageChunk;
50
+ concat(chunk: AIMessageChunk<TStructure>): this;
51
+ static isInstance(obj: unknown): obj is AIMessageChunk;
145
52
  }
146
53
  //#endregion
147
- export { AIMessage, AIMessageChunk, AIMessageChunkFields, AIMessageFields, InputTokenDetails, ModalitiesTokenDetails, OutputTokenDetails, UsageMetadata, isAIMessage, isAIMessageChunk };
54
+ export { AIMessage, AIMessageChunk, AIMessageChunkFields, AIMessageFields, isAIMessage, isAIMessageChunk };
148
55
  //# sourceMappingURL=ai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","names":["BaseMessage","BaseMessageChunk","MessageType","BaseMessageFields","ContentBlock","InvalidToolCall","ToolCall","ToolCallChunk","AIMessageFields","UsageMetadata","ModalitiesTokenDetails","InputTokenDetails","OutputTokenDetails","AIMessage","Record","Standard","Array","isAIMessage","isAIMessageChunk","AIMessageChunk","AIMessageChunkFields"],"sources":["../../src/messages/ai.d.ts"],"sourcesContent":["import { BaseMessage, BaseMessageChunk, type MessageType, BaseMessageFields } from \"./base.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { InvalidToolCall, ToolCall, ToolCallChunk } from \"./tool.js\";\nexport type AIMessageFields = BaseMessageFields & {\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: UsageMetadata;\n};\nexport type ModalitiesTokenDetails = {\n /**\n * Text tokens.\n * Does not need to be reported, but some models will do so.\n */\n text?: number;\n /**\n * Image (non-video) tokens.\n */\n image?: number;\n /**\n * Audio tokens.\n */\n audio?: number;\n /**\n * Video tokens.\n */\n video?: number;\n /**\n * Document tokens.\n * e.g. PDF\n */\n document?: number;\n};\n/**\n * Breakdown of input token counts.\n *\n * Does not *need* to sum to full input token count. Does *not* need to have all keys.\n */\nexport type InputTokenDetails = ModalitiesTokenDetails & {\n /**\n * Input tokens that were cached and there was a cache hit.\n *\n * Since there was a cache hit, the tokens were read from the cache.\n * More precisely, the model state given these tokens was read from the cache.\n */\n cache_read?: number;\n /**\n * Input tokens that were cached and there was a cache miss.\n *\n * Since there was a cache miss, the cache was created from these tokens.\n */\n cache_creation?: number;\n};\n/**\n * Breakdown of output token counts.\n *\n * Does *not* need to sum to full output token count. Does *not* need to have all keys.\n */\nexport type OutputTokenDetails = ModalitiesTokenDetails & {\n /**\n * Reasoning output tokens.\n *\n * Tokens generated by the model in a chain of thought process (i.e. by\n * OpenAI's o1 models) that are not returned as part of model output.\n */\n reasoning?: number;\n};\n/**\n * Usage metadata for a message, such as token counts.\n */\nexport type UsageMetadata = {\n /**\n * Count of input (or prompt) tokens. Sum of all input token types.\n */\n input_tokens: number;\n /**\n * Count of output (or completion) tokens. Sum of all output token types.\n */\n output_tokens: number;\n /**\n * Total token count. Sum of input_tokens + output_tokens.\n */\n total_tokens: number;\n /**\n * Breakdown of input token counts.\n *\n * Does *not* need to sum to full input token count. Does *not* need to have all keys.\n */\n input_token_details?: InputTokenDetails;\n /**\n * Breakdown of output token counts.\n *\n * Does *not* need to sum to full output token count. Does *not* need to have all keys.\n */\n output_token_details?: OutputTokenDetails;\n};\n/**\n * Represents an AI message in a conversation.\n */\nexport declare class AIMessage extends BaseMessage implements AIMessageFields {\n // These are typed as optional to avoid breaking changes and allow for casting\n // from BaseMessage.\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n /**\n * If provided, token usage information associated with the message.\n */\n usage_metadata?: UsageMetadata;\n get lc_aliases(): Record<string, string>;\n constructor(fields: string | AIMessageFields, \n /** @deprecated */\n kwargs?: Record<string, unknown>);\n static lc_name(): string;\n _getType(): MessageType;\n get contentBlocks(): Array<ContentBlock.Standard>;\n get _printableFields(): Record<string, unknown>;\n}\nexport declare function isAIMessage(x: BaseMessage): x is AIMessage;\nexport declare function isAIMessageChunk(x: BaseMessageChunk): x is AIMessageChunk;\nexport type AIMessageChunkFields = AIMessageFields & {\n tool_call_chunks?: ToolCallChunk[];\n};\n/**\n * Represents a chunk of an AI message, which can be concatenated with\n * other AI message chunks.\n */\nexport declare class AIMessageChunk extends BaseMessageChunk {\n // Must redeclare tool call fields since there is no multiple inheritance in JS.\n // These are typed as optional to avoid breaking changes and allow for casting\n // from BaseMessage.\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n tool_call_chunks?: ToolCallChunk[];\n /**\n * If provided, token usage information associated with the message.\n */\n usage_metadata?: UsageMetadata;\n constructor(fields: string | AIMessageChunkFields);\n get lc_aliases(): Record<string, string>;\n static lc_name(): string;\n _getType(): MessageType;\n get contentBlocks(): Array<ContentBlock.Standard>;\n get _printableFields(): Record<string, unknown>;\n concat(chunk: AIMessageChunk): AIMessageChunk;\n}\n"],"mappings":";;;;;KAGYQ,eAAAA,GAAkBL;eACbG;EADLE,kBAAe,CAAA,EAEFH,eAFE,EAAA;EAAA,cAAA,CAAA,EAGNI,aAHM;CAAA;AACVH,KAILI,sBAAAA,GAJKJ;EAAQ;;AAES;AAElC;EA6BYK,IAAAA,CAAAA,EAAAA,MAAAA;EAoBAC;AAYZ;;EAAyB,KAkBCD,CAAAA,EAAAA,MAAAA;EAAiB;AAME;AAK7C;EAA8B,KAAA,CAAA,EAAA,MAAA;EAAA;;;EAQI,KACZG,CAAAA,EAAAA,MAAAA;EAAM;;;;EAMwB,QAA3BE,CAAAA,EAAAA,MAAAA;CAAK;;;AAf+C;AAkB7E;;AAAuChB,KA/E3BW,iBAAAA,GAAoBD,sBA+EOV,GAAAA;EAAW;AAAiB;AACnE;;;;EAAkF,UAAA,CAAA,EAAA,MAAA;EACtEoB;;;;AACwB;EAMfD,cAAAA,CAAAA,EAAc,MAAA;CAAA;;;;;;AAYbL,KAhFVF,kBAAAA,GAAqBF,sBAgFXI,GAAAA;EAAM;;;;;;EAKqB,SAjBLb,CAAAA,EAAAA,MAAAA;AAAgB,CAAA;;;;KAxDhDQ,aAAAA;;;;;;;;;;;;;;;;;;wBAkBcE;;;;;;yBAMCC;;;;;cAKNC,SAAAA,SAAkBb,WAAAA,YAAuBQ;;;eAG7CF;uBACQD;;;;mBAIJI;oBACCK;+BACWN;WAEpBM;;cAEGZ;uBACSc,MAAMZ,YAAAA,CAAaW;0BAChBD;;iBAEJG,WAAAA,IAAejB,mBAAmBa;iBAClCK,gBAAAA,IAAoBjB,wBAAwBkB;KACxDC,oBAAAA,GAAuBZ;qBACZD;;;;;;cAMFY,cAAAA,SAAuBlB,gBAAAA;;;;eAI3BK;uBACQD;qBACFE;;;;mBAIFE;+BACYW;oBACXN;;cAENZ;uBACSc,MAAMZ,YAAAA,CAAaW;0BAChBD;gBACVK,iBAAiBA"}
1
+ {"version":3,"file":"ai.d.ts","names":["BaseMessage","BaseMessageChunk","BaseMessageFields","ContentBlock","$InferMessageContent","$InferMessageProperty","MessageStructure","InvalidToolCall","ToolCall","ToolCallChunk","AIMessageFields","TStructure","AIMessage","Record","Standard","Array","isAIMessage","isAIMessageChunk","AIMessageChunk","AIMessageChunkFields"],"sources":["../../src/messages/ai.d.ts"],"sourcesContent":["import { BaseMessage, BaseMessageChunk, BaseMessageFields } from \"./base.js\";\nimport { ContentBlock } from \"./content/index.js\";\nimport { $InferMessageContent, $InferMessageProperty, MessageStructure } from \"./message.js\";\nimport { InvalidToolCall, ToolCall, ToolCallChunk } from \"./tool.js\";\nexport interface AIMessageFields<TStructure extends MessageStructure = MessageStructure> extends BaseMessageFields<TStructure, \"ai\"> {\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: $InferMessageProperty<TStructure, \"ai\", \"usage_metadata\">;\n}\nexport declare class AIMessage<TStructure extends MessageStructure = MessageStructure> extends BaseMessage<TStructure, \"ai\"> implements AIMessageFields<TStructure> {\n readonly type: \"ai\";\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n usage_metadata?: AIMessageFields<TStructure>[\"usage_metadata\"];\n get lc_aliases(): Record<string, string>;\n constructor(fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageFields<TStructure>);\n static lc_name(): string;\n get contentBlocks(): Array<ContentBlock.Standard>;\n get _printableFields(): Record<string, unknown>;\n static isInstance(obj: unknown): obj is AIMessage;\n}\n/**\n * @deprecated Use {@link AIMessage.isInstance} instead\n */\nexport declare function isAIMessage<TStructure extends MessageStructure>(x: BaseMessage): x is AIMessage<TStructure>;\n/**\n * @deprecated Use {@link AIMessageChunk.isInstance} instead\n */\nexport declare function isAIMessageChunk<TStructure extends MessageStructure>(x: BaseMessageChunk): x is AIMessageChunk<TStructure>;\nexport type AIMessageChunkFields<TStructure extends MessageStructure = MessageStructure> = AIMessageFields<TStructure> & {\n tool_call_chunks?: ToolCallChunk[];\n};\n/**\n * Represents a chunk of an AI message, which can be concatenated with\n * other AI message chunks.\n */\nexport declare class AIMessageChunk<TStructure extends MessageStructure = MessageStructure> extends BaseMessageChunk<TStructure, \"ai\"> implements AIMessage<TStructure>, AIMessageChunkFields<TStructure> {\n readonly type: \"ai\";\n tool_calls?: ToolCall[];\n invalid_tool_calls?: InvalidToolCall[];\n tool_call_chunks?: ToolCallChunk[];\n usage_metadata?: AIMessageChunkFields<TStructure>[\"usage_metadata\"];\n constructor(fields: $InferMessageContent<TStructure, \"ai\"> | AIMessageChunkFields<TStructure>);\n get lc_aliases(): Record<string, string>;\n static lc_name(): string;\n get contentBlocks(): Array<ContentBlock.Standard>;\n get _printableFields(): Record<string, unknown>;\n concat(chunk: AIMessageChunk<TStructure>): this;\n static isInstance(obj: unknown): obj is AIMessageChunk;\n}\n"],"mappings":"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"}
@@ -1,18 +1,14 @@
1
1
  import { parsePartialJson } from "../utils/json.js";
2
2
  import { BaseMessage, BaseMessageChunk, _mergeDicts, _mergeLists, mergeContent } from "./base.js";
3
3
  import { getTranslator } from "./block_translators/index.js";
4
+ import { mergeResponseMetadata, mergeUsageMetadata } from "./metadata.js";
4
5
  import { defaultToolCallParser } from "./tool.js";
5
6
 
6
7
  //#region src/messages/ai.ts
7
- /**
8
- * Represents an AI message in a conversation.
9
- */
10
8
  var AIMessage = class extends BaseMessage {
9
+ type = "ai";
11
10
  tool_calls = [];
12
11
  invalid_tool_calls = [];
13
- /**
14
- * If provided, token usage information associated with the message.
15
- */
16
12
  usage_metadata;
17
13
  get lc_aliases() {
18
14
  return {
@@ -21,13 +17,13 @@ var AIMessage = class extends BaseMessage {
21
17
  invalid_tool_calls: "invalid_tool_calls"
22
18
  };
23
19
  }
24
- constructor(fields, kwargs) {
20
+ constructor(fields) {
25
21
  let initParams;
26
- if (typeof fields === "string") initParams = {
22
+ if (typeof fields === "string" || Array.isArray(fields)) initParams = {
27
23
  content: fields,
28
24
  tool_calls: [],
29
25
  invalid_tool_calls: [],
30
- additional_kwargs: kwargs ?? {}
26
+ additional_kwargs: {}
31
27
  };
32
28
  else {
33
29
  initParams = fields;
@@ -61,6 +57,7 @@ var AIMessage = class extends BaseMessage {
61
57
  })));
62
58
  const missingToolCalls = initParams.contentBlocks.filter((block) => block.type === "tool_call").filter((block) => !initParams.tool_calls?.some((toolCall) => toolCall.id === block.id && toolCall.name === block.name));
63
59
  if (missingToolCalls.length > 0) initParams.tool_calls = missingToolCalls.map((block) => ({
60
+ type: "tool_call",
64
61
  id: block.id,
65
62
  name: block.name,
66
63
  args: block.args
@@ -77,14 +74,10 @@ var AIMessage = class extends BaseMessage {
77
74
  static lc_name() {
78
75
  return "AIMessage";
79
76
  }
80
- _getType() {
81
- return "ai";
82
- }
83
77
  get contentBlocks() {
84
- if (this.response_metadata?.output_version === "v1") return this.content;
85
- const modelProvider = this.response_metadata?.model_provider;
86
- if (modelProvider) {
87
- const translator = getTranslator(modelProvider);
78
+ if ("output_version" in this.response_metadata && this.response_metadata.output_version === "v1") return this.content;
79
+ if ("model_provider" in this.response_metadata && typeof this.response_metadata.model_provider === "string") {
80
+ const translator = getTranslator(this.response_metadata.model_provider);
88
81
  if (translator) return translator.translateContent(this);
89
82
  }
90
83
  const blocks = super.contentBlocks;
@@ -108,10 +101,19 @@ var AIMessage = class extends BaseMessage {
108
101
  usage_metadata: this.usage_metadata
109
102
  };
110
103
  }
104
+ static isInstance(obj) {
105
+ return super.isInstance(obj) && obj.type === "ai";
106
+ }
111
107
  };
108
+ /**
109
+ * @deprecated Use {@link AIMessage.isInstance} instead
110
+ */
112
111
  function isAIMessage(x) {
113
112
  return x._getType() === "ai";
114
113
  }
114
+ /**
115
+ * @deprecated Use {@link AIMessageChunk.isInstance} instead
116
+ */
115
117
  function isAIMessageChunk(x) {
116
118
  return x._getType() === "ai";
117
119
  }
@@ -119,17 +121,15 @@ function isAIMessageChunk(x) {
119
121
  * Represents a chunk of an AI message, which can be concatenated with
120
122
  * other AI message chunks.
121
123
  */
122
- var AIMessageChunk = class AIMessageChunk extends BaseMessageChunk {
124
+ var AIMessageChunk = class extends BaseMessageChunk {
125
+ type = "ai";
123
126
  tool_calls = [];
124
127
  invalid_tool_calls = [];
125
128
  tool_call_chunks = [];
126
- /**
127
- * If provided, token usage information associated with the message.
128
- */
129
129
  usage_metadata;
130
130
  constructor(fields) {
131
131
  let initParams;
132
- if (typeof fields === "string") initParams = {
132
+ if (typeof fields === "string" || Array.isArray(fields)) initParams = {
133
133
  content: fields,
134
134
  tool_calls: [],
135
135
  invalid_tool_calls: [],
@@ -152,7 +152,7 @@ var AIMessageChunk = class AIMessageChunk extends BaseMessageChunk {
152
152
  const toolCalls = [];
153
153
  const invalidToolCalls = [];
154
154
  for (const [id, chunks] of Object.entries(groupedToolCallChunk)) {
155
- let parsedArgs = {};
155
+ let parsedArgs = null;
156
156
  const name = chunks[0]?.name ?? "";
157
157
  const joinedArgs = chunks.map((c) => c.args || "").join("");
158
158
  const argsStr = joinedArgs.length ? joinedArgs : "{}";
@@ -200,14 +200,10 @@ var AIMessageChunk = class AIMessageChunk extends BaseMessageChunk {
200
200
  static lc_name() {
201
201
  return "AIMessageChunk";
202
202
  }
203
- _getType() {
204
- return "ai";
205
- }
206
203
  get contentBlocks() {
207
- if (this.response_metadata?.output_version === "v1") return this.content;
208
- const modelProvider = this.response_metadata?.model_provider;
209
- if (modelProvider) {
210
- const translator = getTranslator(modelProvider);
204
+ if ("output_version" in this.response_metadata && this.response_metadata.output_version === "v1") return this.content;
205
+ if ("model_provider" in this.response_metadata && typeof this.response_metadata.model_provider === "string") {
206
+ const translator = getTranslator(this.response_metadata.model_provider);
211
207
  if (translator) return translator.translateContent(this);
212
208
  }
213
209
  const blocks = super.contentBlocks;
@@ -238,7 +234,7 @@ var AIMessageChunk = class AIMessageChunk extends BaseMessageChunk {
238
234
  const combinedFields = {
239
235
  content: mergeContent(this.content, chunk.content),
240
236
  additional_kwargs: _mergeDicts(this.additional_kwargs, chunk.additional_kwargs),
241
- response_metadata: _mergeDicts(this.response_metadata, chunk.response_metadata),
237
+ response_metadata: mergeResponseMetadata(this.response_metadata, chunk.response_metadata),
242
238
  tool_call_chunks: [],
243
239
  id: this.id ?? chunk.id
244
240
  };
@@ -246,36 +242,12 @@ var AIMessageChunk = class AIMessageChunk extends BaseMessageChunk {
246
242
  const rawToolCalls = _mergeLists(this.tool_call_chunks, chunk.tool_call_chunks);
247
243
  if (rawToolCalls !== void 0 && rawToolCalls.length > 0) combinedFields.tool_call_chunks = rawToolCalls;
248
244
  }
249
- if (this.usage_metadata !== void 0 || chunk.usage_metadata !== void 0) {
250
- const inputTokenDetails = {
251
- ...(this.usage_metadata?.input_token_details?.audio !== void 0 || chunk.usage_metadata?.input_token_details?.audio !== void 0) && { audio: (this.usage_metadata?.input_token_details?.audio ?? 0) + (chunk.usage_metadata?.input_token_details?.audio ?? 0) },
252
- ...(this.usage_metadata?.input_token_details?.cache_read !== void 0 || chunk.usage_metadata?.input_token_details?.cache_read !== void 0) && { cache_read: (this.usage_metadata?.input_token_details?.cache_read ?? 0) + (chunk.usage_metadata?.input_token_details?.cache_read ?? 0) },
253
- ...(this.usage_metadata?.input_token_details?.cache_creation !== void 0 || chunk.usage_metadata?.input_token_details?.cache_creation !== void 0) && { cache_creation: (this.usage_metadata?.input_token_details?.cache_creation ?? 0) + (chunk.usage_metadata?.input_token_details?.cache_creation ?? 0) }
254
- };
255
- const outputTokenDetails = {
256
- ...(this.usage_metadata?.output_token_details?.audio !== void 0 || chunk.usage_metadata?.output_token_details?.audio !== void 0) && { audio: (this.usage_metadata?.output_token_details?.audio ?? 0) + (chunk.usage_metadata?.output_token_details?.audio ?? 0) },
257
- ...(this.usage_metadata?.output_token_details?.reasoning !== void 0 || chunk.usage_metadata?.output_token_details?.reasoning !== void 0) && { reasoning: (this.usage_metadata?.output_token_details?.reasoning ?? 0) + (chunk.usage_metadata?.output_token_details?.reasoning ?? 0) }
258
- };
259
- const left = this.usage_metadata ?? {
260
- input_tokens: 0,
261
- output_tokens: 0,
262
- total_tokens: 0
263
- };
264
- const right = chunk.usage_metadata ?? {
265
- input_tokens: 0,
266
- output_tokens: 0,
267
- total_tokens: 0
268
- };
269
- const usage_metadata = {
270
- input_tokens: left.input_tokens + right.input_tokens,
271
- output_tokens: left.output_tokens + right.output_tokens,
272
- total_tokens: left.total_tokens + right.total_tokens,
273
- ...Object.keys(inputTokenDetails).length > 0 && { input_token_details: inputTokenDetails },
274
- ...Object.keys(outputTokenDetails).length > 0 && { output_token_details: outputTokenDetails }
275
- };
276
- combinedFields.usage_metadata = usage_metadata;
277
- }
278
- return new AIMessageChunk(combinedFields);
245
+ if (this.usage_metadata !== void 0 || chunk.usage_metadata !== void 0) combinedFields.usage_metadata = mergeUsageMetadata(this.usage_metadata, chunk.usage_metadata);
246
+ const Cls = this.constructor;
247
+ return new Cls(combinedFields);
248
+ }
249
+ static isInstance(obj) {
250
+ return super.isInstance(obj) && obj.type === "ai";
279
251
  }
280
252
  };
281
253