@librechat/agents 3.6.9 → 3.6.10

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 (141) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +46 -39
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/agents/projection.cjs +2 -2
  4. package/dist/cjs/agents/projection.cjs.map +1 -1
  5. package/dist/cjs/graphs/Graph.cjs +28 -18
  6. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  7. package/dist/cjs/graphs/MultiAgentGraph.cjs +87 -16
  8. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  9. package/dist/cjs/llm/openai/index.cjs +10 -0
  10. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  11. package/dist/cjs/main.cjs +14 -0
  12. package/dist/cjs/messages/alternation.cjs +125 -20
  13. package/dist/cjs/messages/alternation.cjs.map +1 -1
  14. package/dist/cjs/messages/core.cjs +195 -18
  15. package/dist/cjs/messages/core.cjs.map +1 -1
  16. package/dist/cjs/messages/format.cjs +488 -118
  17. package/dist/cjs/messages/format.cjs.map +1 -1
  18. package/dist/cjs/messages/handoffCue.cjs +3 -2
  19. package/dist/cjs/messages/handoffCue.cjs.map +1 -1
  20. package/dist/cjs/messages/index.cjs +1 -0
  21. package/dist/cjs/messages/injected.cjs +5 -2
  22. package/dist/cjs/messages/injected.cjs.map +1 -1
  23. package/dist/cjs/messages/provenance.cjs +411 -0
  24. package/dist/cjs/messages/provenance.cjs.map +1 -0
  25. package/dist/cjs/messages/prune.cjs +18 -13
  26. package/dist/cjs/messages/prune.cjs.map +1 -1
  27. package/dist/cjs/messages/toolResultTypes.cjs +663 -0
  28. package/dist/cjs/messages/toolResultTypes.cjs.map +1 -0
  29. package/dist/cjs/run.cjs +7 -4
  30. package/dist/cjs/run.cjs.map +1 -1
  31. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +21 -4
  32. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -1
  33. package/dist/cjs/tools/CallerCapabilities.cjs +48 -0
  34. package/dist/cjs/tools/CallerCapabilities.cjs.map +1 -0
  35. package/dist/cjs/tools/ProgrammaticCallerPolicy.cjs +34 -0
  36. package/dist/cjs/tools/ProgrammaticCallerPolicy.cjs.map +1 -0
  37. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +21 -4
  38. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  39. package/dist/cjs/tools/ToolNode.cjs +25 -24
  40. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  41. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs +12 -4
  42. package/dist/cjs/tools/cloudflare/CloudflareProgrammaticToolCalling.cjs.map +1 -1
  43. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs +13 -4
  44. package/dist/cjs/tools/local/LocalProgrammaticToolCalling.cjs.map +1 -1
  45. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs +47 -11
  46. package/dist/cjs/tools/local/resolveLocalExecutionTools.cjs.map +1 -1
  47. package/dist/cjs/tools/ptcTimeout.cjs.map +1 -1
  48. package/dist/cjs/utils/toolContent.cjs +2 -2
  49. package/dist/cjs/utils/toolContent.cjs.map +1 -1
  50. package/dist/esm/agents/AgentContext.mjs +46 -39
  51. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  52. package/dist/esm/agents/projection.mjs +2 -2
  53. package/dist/esm/agents/projection.mjs.map +1 -1
  54. package/dist/esm/graphs/Graph.mjs +30 -20
  55. package/dist/esm/graphs/Graph.mjs.map +1 -1
  56. package/dist/esm/graphs/MultiAgentGraph.mjs +87 -16
  57. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  58. package/dist/esm/llm/openai/index.mjs +10 -0
  59. package/dist/esm/llm/openai/index.mjs.map +1 -1
  60. package/dist/esm/main.mjs +4 -3
  61. package/dist/esm/messages/alternation.mjs +125 -20
  62. package/dist/esm/messages/alternation.mjs.map +1 -1
  63. package/dist/esm/messages/core.mjs +196 -19
  64. package/dist/esm/messages/core.mjs.map +1 -1
  65. package/dist/esm/messages/format.mjs +488 -119
  66. package/dist/esm/messages/format.mjs.map +1 -1
  67. package/dist/esm/messages/handoffCue.mjs +3 -2
  68. package/dist/esm/messages/handoffCue.mjs.map +1 -1
  69. package/dist/esm/messages/index.mjs +1 -0
  70. package/dist/esm/messages/injected.mjs +5 -2
  71. package/dist/esm/messages/injected.mjs.map +1 -1
  72. package/dist/esm/messages/provenance.mjs +401 -0
  73. package/dist/esm/messages/provenance.mjs.map +1 -0
  74. package/dist/esm/messages/prune.mjs +18 -13
  75. package/dist/esm/messages/prune.mjs.map +1 -1
  76. package/dist/esm/messages/toolResultTypes.mjs +657 -0
  77. package/dist/esm/messages/toolResultTypes.mjs.map +1 -0
  78. package/dist/esm/run.mjs +7 -4
  79. package/dist/esm/run.mjs.map +1 -1
  80. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +21 -4
  81. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -1
  82. package/dist/esm/tools/CallerCapabilities.mjs +45 -0
  83. package/dist/esm/tools/CallerCapabilities.mjs.map +1 -0
  84. package/dist/esm/tools/ProgrammaticCallerPolicy.mjs +32 -0
  85. package/dist/esm/tools/ProgrammaticCallerPolicy.mjs.map +1 -0
  86. package/dist/esm/tools/ProgrammaticToolCalling.mjs +21 -4
  87. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  88. package/dist/esm/tools/ToolNode.mjs +25 -24
  89. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  90. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs +14 -6
  91. package/dist/esm/tools/cloudflare/CloudflareProgrammaticToolCalling.mjs.map +1 -1
  92. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs +15 -6
  93. package/dist/esm/tools/local/LocalProgrammaticToolCalling.mjs.map +1 -1
  94. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs +47 -12
  95. package/dist/esm/tools/local/resolveLocalExecutionTools.mjs.map +1 -1
  96. package/dist/esm/tools/ptcTimeout.mjs.map +1 -1
  97. package/dist/esm/utils/toolContent.mjs +2 -2
  98. package/dist/esm/utils/toolContent.mjs.map +1 -1
  99. package/dist/types/agents/AgentContext.d.ts +8 -13
  100. package/dist/types/agents/projection.d.ts +3 -1
  101. package/dist/types/graphs/Graph.d.ts +1 -1
  102. package/dist/types/llm/openai/index.d.ts +20 -0
  103. package/dist/types/messages/format.d.ts +5 -0
  104. package/dist/types/messages/index.d.ts +1 -0
  105. package/dist/types/messages/provenance.d.ts +85 -0
  106. package/dist/types/messages/toolResultTypes.d.ts +33 -0
  107. package/dist/types/tools/CallerCapabilities.d.ts +12 -0
  108. package/dist/types/tools/ProgrammaticCallerPolicy.d.ts +20 -0
  109. package/dist/types/tools/ToolNode.d.ts +4 -7
  110. package/dist/types/tools/local/resolveLocalExecutionTools.d.ts +4 -0
  111. package/dist/types/tools/ptcTimeout.d.ts +8 -0
  112. package/dist/types/types/graph.d.ts +3 -1
  113. package/dist/types/types/tools.d.ts +13 -2
  114. package/package.json +1 -1
  115. package/src/agents/AgentContext.ts +109 -67
  116. package/src/agents/projection.ts +9 -1
  117. package/src/graphs/Graph.ts +56 -23
  118. package/src/graphs/MultiAgentGraph.ts +175 -33
  119. package/src/llm/openai/index.ts +43 -0
  120. package/src/messages/alternation.ts +217 -34
  121. package/src/messages/core.ts +358 -38
  122. package/src/messages/format.ts +958 -137
  123. package/src/messages/handoffCue.ts +7 -4
  124. package/src/messages/index.ts +1 -0
  125. package/src/messages/injected.ts +9 -6
  126. package/src/messages/provenance.ts +897 -0
  127. package/src/messages/prune.ts +28 -10
  128. package/src/messages/toolResultTypes.ts +1174 -0
  129. package/src/run.ts +9 -4
  130. package/src/tools/BashProgrammaticToolCalling.ts +46 -12
  131. package/src/tools/CallerCapabilities.ts +78 -0
  132. package/src/tools/ProgrammaticCallerPolicy.ts +97 -0
  133. package/src/tools/ProgrammaticToolCalling.ts +41 -7
  134. package/src/tools/ToolNode.ts +70 -52
  135. package/src/tools/cloudflare/CloudflareProgrammaticToolCalling.ts +24 -26
  136. package/src/tools/local/LocalProgrammaticToolCalling.ts +28 -23
  137. package/src/tools/local/resolveLocalExecutionTools.ts +132 -13
  138. package/src/tools/ptcTimeout.ts +6 -0
  139. package/src/types/graph.ts +3 -0
  140. package/src/types/tools.ts +14 -3
  141. package/src/utils/toolContent.ts +2 -2
@@ -43,6 +43,28 @@ function sumTokenCounts(
43
43
  return total;
44
44
  }
45
45
 
46
+ function appendItems<T>(target: T[], source: readonly T[]): void {
47
+ for (const item of source) {
48
+ target.push(item);
49
+ }
50
+ }
51
+
52
+ /** Prepends in stable order without turning a large array into call arguments. */
53
+ function prependItems<T>(target: T[], prefix: readonly T[]): void {
54
+ const prefixLength = prefix.length;
55
+ if (prefixLength === 0) {
56
+ return;
57
+ }
58
+ const originalLength = target.length;
59
+ target.length = prefixLength + originalLength;
60
+ for (let index = originalLength - 1; index >= 0; index--) {
61
+ target[prefixLength + index] = target[index];
62
+ }
63
+ for (let index = 0; index < prefixLength; index++) {
64
+ target[index] = prefix[index];
65
+ }
66
+ }
67
+
46
68
  /** Default fraction of the token budget reserved as headroom (5 %). */
47
69
  export const DEFAULT_RESERVE_RATIO = 0.05;
48
70
 
@@ -953,7 +975,7 @@ export function getMessagesWithinTokenLimit({
953
975
  prunedMemory.reverse();
954
976
 
955
977
  if (messages.length > 0) {
956
- prunedMemory.unshift(...messages);
978
+ prependItems(prunedMemory, messages);
957
979
  }
958
980
 
959
981
  remainingContextTokens -= currentTokenCount;
@@ -1070,7 +1092,6 @@ export function getMessagesWithinTokenLimit({
1070
1092
  if (startType != null && startType.length > 0 && newContext.length > 0) {
1071
1093
  let requiredTypeIndex = -1;
1072
1094
 
1073
- let totalTokens = 0;
1074
1095
  for (let i = newContext.length - 1; i >= 0; i--) {
1075
1096
  const currentType = newContext[i]?.getType() ?? '';
1076
1097
  if (
@@ -1081,12 +1102,9 @@ export function getMessagesWithinTokenLimit({
1081
1102
  requiredTypeIndex = i + 1;
1082
1103
  break;
1083
1104
  }
1084
- const originalIndex = originalLength - 1 - i;
1085
- totalTokens += indexTokenCountMap[originalIndex] ?? 0;
1086
1105
  }
1087
1106
 
1088
1107
  if (requiredTypeIndex > 0) {
1089
- currentTokenCount -= totalTokens;
1090
1108
  newContext = newContext.slice(0, requiredTypeIndex);
1091
1109
  }
1092
1110
  }
@@ -2753,7 +2771,7 @@ export function createPruneMessages(factoryParams: PruneMessagesFactoryParams) {
2753
2771
  // tool results (otherwise the summary says "in progress" for a tool
2754
2772
  // call that already completed, causing the model to repeat it).
2755
2773
  if (droppedMessages.length > 0) {
2756
- messagesToRefine.push(...droppedMessages);
2774
+ appendItems(messagesToRefine, droppedMessages);
2757
2775
  }
2758
2776
 
2759
2777
  // ---------------------------------------------------------------
@@ -2828,9 +2846,9 @@ export function createPruneMessages(factoryParams: PruneMessagesFactoryParams) {
2828
2846
  if (fadingRepaired.context.length > 0) {
2829
2847
  context = fadingRepaired.context;
2830
2848
  reclaimedTokens = fadingRepaired.reclaimedTokens;
2831
- messagesToRefine.push(...fadingRetry.messagesToRefine);
2849
+ appendItems(messagesToRefine, fadingRetry.messagesToRefine);
2832
2850
  if (fadingRepaired.droppedMessages.length > 0) {
2833
- messagesToRefine.push(...fadingRepaired.droppedMessages);
2851
+ appendItems(messagesToRefine, fadingRepaired.droppedMessages);
2834
2852
  }
2835
2853
 
2836
2854
  factoryParams.log?.('debug', 'Fallback fading recovered context', {
@@ -2964,9 +2982,9 @@ export function createPruneMessages(factoryParams: PruneMessagesFactoryParams) {
2964
2982
 
2965
2983
  context = repaired.context;
2966
2984
  reclaimedTokens = repaired.reclaimedTokens;
2967
- messagesToRefine.push(...retryResult.messagesToRefine);
2985
+ appendItems(messagesToRefine, retryResult.messagesToRefine);
2968
2986
  if (repaired.droppedMessages.length > 0) {
2969
- messagesToRefine.push(...repaired.droppedMessages);
2987
+ appendItems(messagesToRefine, repaired.droppedMessages);
2970
2988
  }
2971
2989
 
2972
2990
  factoryParams.log?.('debug', 'Emergency truncation retry result', {