@librechat/agents 3.0.0-rc11 → 3.0.0-rc12

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 (42) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +6 -2
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/graphs/Graph.cjs +16 -1
  4. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  5. package/dist/cjs/main.cjs +4 -1
  6. package/dist/cjs/main.cjs.map +1 -1
  7. package/dist/cjs/messages/cache.cjs +49 -0
  8. package/dist/cjs/messages/cache.cjs.map +1 -0
  9. package/dist/cjs/messages/content.cjs +53 -0
  10. package/dist/cjs/messages/content.cjs.map +1 -0
  11. package/dist/cjs/messages/format.cjs +0 -27
  12. package/dist/cjs/messages/format.cjs.map +1 -1
  13. package/dist/esm/agents/AgentContext.mjs +6 -2
  14. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  15. package/dist/esm/graphs/Graph.mjs +16 -1
  16. package/dist/esm/graphs/Graph.mjs.map +1 -1
  17. package/dist/esm/main.mjs +3 -1
  18. package/dist/esm/main.mjs.map +1 -1
  19. package/dist/esm/messages/cache.mjs +47 -0
  20. package/dist/esm/messages/cache.mjs.map +1 -0
  21. package/dist/esm/messages/content.mjs +51 -0
  22. package/dist/esm/messages/content.mjs.map +1 -0
  23. package/dist/esm/messages/format.mjs +1 -27
  24. package/dist/esm/messages/format.mjs.map +1 -1
  25. package/dist/types/agents/AgentContext.d.ts +4 -1
  26. package/dist/types/messages/cache.d.ts +8 -0
  27. package/dist/types/messages/content.d.ts +7 -0
  28. package/dist/types/messages/format.d.ts +1 -7
  29. package/dist/types/messages/index.d.ts +2 -0
  30. package/dist/types/types/graph.d.ts +2 -0
  31. package/dist/types/types/messages.d.ts +4 -0
  32. package/package.json +1 -1
  33. package/src/agents/AgentContext.ts +8 -0
  34. package/src/graphs/Graph.ts +23 -1
  35. package/src/messages/cache.test.ts +262 -0
  36. package/src/messages/cache.ts +56 -0
  37. package/src/messages/content.test.ts +362 -0
  38. package/src/messages/content.ts +63 -0
  39. package/src/messages/format.ts +0 -34
  40. package/src/messages/index.ts +2 -0
  41. package/src/types/graph.ts +2 -0
  42. package/src/types/messages.ts +4 -0
@@ -0,0 +1,63 @@
1
+ import { ContentTypes } from '@/common';
2
+ import type { BaseMessage } from '@langchain/core/messages';
3
+
4
+ /**
5
+ * Formats an array of messages for LangChain, making sure all content fields are strings
6
+ * @param {Array<HumanMessage | AIMessage | SystemMessage | ToolMessage>} payload - The array of messages to format.
7
+ * @returns {Array<HumanMessage | AIMessage | SystemMessage | ToolMessage>} - The array of formatted LangChain messages, including ToolMessages for tool calls.
8
+ */
9
+ export const formatContentStrings = (
10
+ payload: Array<BaseMessage>
11
+ ): Array<BaseMessage> => {
12
+ // Create a new array to store the processed messages
13
+ const result: Array<BaseMessage> = [];
14
+
15
+ for (const message of payload) {
16
+ const messageType = message.getType();
17
+ const isValidMessage =
18
+ messageType === 'human' ||
19
+ messageType === 'ai' ||
20
+ messageType === 'system';
21
+
22
+ if (!isValidMessage) {
23
+ result.push(message);
24
+ continue;
25
+ }
26
+
27
+ // If content is already a string, add as-is
28
+ if (typeof message.content === 'string') {
29
+ result.push(message);
30
+ continue;
31
+ }
32
+
33
+ // If content is not an array, add as-is
34
+ if (!Array.isArray(message.content)) {
35
+ result.push(message);
36
+ continue;
37
+ }
38
+
39
+ // Check if all content blocks are text type
40
+ const allTextBlocks = message.content.every(
41
+ (block) => block.type === ContentTypes.TEXT
42
+ );
43
+
44
+ // Only convert to string if all blocks are text type
45
+ if (!allTextBlocks) {
46
+ result.push(message);
47
+ continue;
48
+ }
49
+
50
+ // Reduce text types to a single string
51
+ const content = message.content.reduce((acc, curr) => {
52
+ if (curr.type === ContentTypes.TEXT) {
53
+ return `${acc}${curr[ContentTypes.TEXT] || ''}\n`;
54
+ }
55
+ return acc;
56
+ }, '');
57
+
58
+ message.content = content.trim();
59
+ result.push(message);
60
+ }
61
+
62
+ return result;
63
+ };
@@ -565,40 +565,6 @@ export const formatAgentMessages = (
565
565
  };
566
566
  };
567
567
 
568
- /**
569
- * Formats an array of messages for LangChain, making sure all content fields are strings
570
- * @param payload - The array of messages to format.
571
- * @returns - The array of formatted LangChain messages, including ToolMessages for tool calls.
572
- */
573
- export const formatContentStrings = (
574
- payload: Array<BaseMessage>
575
- ): Array<BaseMessage> => {
576
- // Create a copy of the payload to avoid modifying the original
577
- const result = [...payload];
578
-
579
- for (const message of result) {
580
- if (typeof message.content === 'string') {
581
- continue;
582
- }
583
-
584
- if (!Array.isArray(message.content)) {
585
- continue;
586
- }
587
-
588
- // Reduce text types to a single string, ignore all other types
589
- const content = message.content.reduce((acc, curr) => {
590
- if (curr.type === ContentTypes.TEXT) {
591
- return `${acc}${curr[ContentTypes.TEXT] || ''}\n`;
592
- }
593
- return acc;
594
- }, '');
595
-
596
- message.content = content.trim();
597
- }
598
-
599
- return result;
600
- };
601
-
602
568
  /**
603
569
  * Adds a value at key 0 for system messages and shifts all key indices by one in an indexTokenCountMap.
604
570
  * This is useful when adding a system message at the beginning of a conversation.
@@ -2,3 +2,5 @@ export * from './core';
2
2
  export * from './ids';
3
3
  export * from './prune';
4
4
  export * from './format';
5
+ export * from './cache';
6
+ export * from './content';
@@ -367,4 +367,6 @@ export interface AgentInputs {
367
367
  clientOptions?: ClientOptions;
368
368
  additional_instructions?: string;
369
369
  reasoningKey?: 'reasoning_content' | 'reasoning';
370
+ /** Format content blocks as strings (for legacy compatibility i.e. Ollama/Azure Serverless) */
371
+ useLegacyContent?: boolean;
370
372
  }
@@ -0,0 +1,4 @@
1
+ import type Anthropic from '@anthropic-ai/sdk';
2
+ import type { BaseMessage } from '@langchain/core/messages';
3
+ export type AnthropicMessages = Array<AnthropicMessage | BaseMessage>;
4
+ export type AnthropicMessage = Anthropic.MessageParam;