@librechat/agents 3.1.68 → 3.1.70

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 (170) hide show
  1. package/dist/cjs/agents/AgentContext.cjs +23 -3
  2. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  3. package/dist/cjs/common/enum.cjs +16 -1
  4. package/dist/cjs/common/enum.cjs.map +1 -1
  5. package/dist/cjs/graphs/Graph.cjs +91 -0
  6. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  7. package/dist/cjs/hooks/HookRegistry.cjs +162 -0
  8. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -0
  9. package/dist/cjs/hooks/executeHooks.cjs +276 -0
  10. package/dist/cjs/hooks/executeHooks.cjs.map +1 -0
  11. package/dist/cjs/hooks/matchers.cjs +256 -0
  12. package/dist/cjs/hooks/matchers.cjs.map +1 -0
  13. package/dist/cjs/hooks/types.cjs +27 -0
  14. package/dist/cjs/hooks/types.cjs.map +1 -0
  15. package/dist/cjs/main.cjs +53 -0
  16. package/dist/cjs/main.cjs.map +1 -1
  17. package/dist/cjs/messages/format.cjs +74 -12
  18. package/dist/cjs/messages/format.cjs.map +1 -1
  19. package/dist/cjs/run.cjs +111 -0
  20. package/dist/cjs/run.cjs.map +1 -1
  21. package/dist/cjs/summarization/node.cjs +44 -0
  22. package/dist/cjs/summarization/node.cjs.map +1 -1
  23. package/dist/cjs/tools/BashExecutor.cjs +165 -0
  24. package/dist/cjs/tools/BashExecutor.cjs.map +1 -0
  25. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs +287 -0
  26. package/dist/cjs/tools/BashProgrammaticToolCalling.cjs.map +1 -0
  27. package/dist/cjs/tools/CodeExecutor.cjs +0 -9
  28. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  29. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +7 -23
  30. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  31. package/dist/cjs/tools/ReadFile.cjs +43 -0
  32. package/dist/cjs/tools/ReadFile.cjs.map +1 -0
  33. package/dist/cjs/tools/SkillTool.cjs +50 -0
  34. package/dist/cjs/tools/SkillTool.cjs.map +1 -0
  35. package/dist/cjs/tools/SubagentTool.cjs +92 -0
  36. package/dist/cjs/tools/SubagentTool.cjs.map +1 -0
  37. package/dist/cjs/tools/ToolNode.cjs +304 -140
  38. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  39. package/dist/cjs/tools/ToolSearch.cjs +2 -13
  40. package/dist/cjs/tools/ToolSearch.cjs.map +1 -1
  41. package/dist/cjs/tools/skillCatalog.cjs +84 -0
  42. package/dist/cjs/tools/skillCatalog.cjs.map +1 -0
  43. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +511 -0
  44. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -0
  45. package/dist/esm/agents/AgentContext.mjs +23 -3
  46. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  47. package/dist/esm/common/enum.mjs +15 -2
  48. package/dist/esm/common/enum.mjs.map +1 -1
  49. package/dist/esm/graphs/Graph.mjs +91 -0
  50. package/dist/esm/graphs/Graph.mjs.map +1 -1
  51. package/dist/esm/hooks/HookRegistry.mjs +160 -0
  52. package/dist/esm/hooks/HookRegistry.mjs.map +1 -0
  53. package/dist/esm/hooks/executeHooks.mjs +273 -0
  54. package/dist/esm/hooks/executeHooks.mjs.map +1 -0
  55. package/dist/esm/hooks/matchers.mjs +251 -0
  56. package/dist/esm/hooks/matchers.mjs.map +1 -0
  57. package/dist/esm/hooks/types.mjs +25 -0
  58. package/dist/esm/hooks/types.mjs.map +1 -0
  59. package/dist/esm/main.mjs +12 -1
  60. package/dist/esm/main.mjs.map +1 -1
  61. package/dist/esm/messages/format.mjs +66 -4
  62. package/dist/esm/messages/format.mjs.map +1 -1
  63. package/dist/esm/run.mjs +111 -0
  64. package/dist/esm/run.mjs.map +1 -1
  65. package/dist/esm/summarization/node.mjs +44 -0
  66. package/dist/esm/summarization/node.mjs.map +1 -1
  67. package/dist/esm/tools/BashExecutor.mjs +159 -0
  68. package/dist/esm/tools/BashExecutor.mjs.map +1 -0
  69. package/dist/esm/tools/BashProgrammaticToolCalling.mjs +278 -0
  70. package/dist/esm/tools/BashProgrammaticToolCalling.mjs.map +1 -0
  71. package/dist/esm/tools/CodeExecutor.mjs +0 -9
  72. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  73. package/dist/esm/tools/ProgrammaticToolCalling.mjs +8 -24
  74. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  75. package/dist/esm/tools/ReadFile.mjs +38 -0
  76. package/dist/esm/tools/ReadFile.mjs.map +1 -0
  77. package/dist/esm/tools/SkillTool.mjs +45 -0
  78. package/dist/esm/tools/SkillTool.mjs.map +1 -0
  79. package/dist/esm/tools/SubagentTool.mjs +85 -0
  80. package/dist/esm/tools/SubagentTool.mjs.map +1 -0
  81. package/dist/esm/tools/ToolNode.mjs +306 -142
  82. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  83. package/dist/esm/tools/ToolSearch.mjs +3 -14
  84. package/dist/esm/tools/ToolSearch.mjs.map +1 -1
  85. package/dist/esm/tools/skillCatalog.mjs +82 -0
  86. package/dist/esm/tools/skillCatalog.mjs.map +1 -0
  87. package/dist/esm/tools/subagent/SubagentExecutor.mjs +505 -0
  88. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -0
  89. package/dist/types/agents/AgentContext.d.ts +6 -0
  90. package/dist/types/common/enum.d.ts +10 -2
  91. package/dist/types/graphs/Graph.d.ts +2 -0
  92. package/dist/types/hooks/HookRegistry.d.ts +56 -0
  93. package/dist/types/hooks/executeHooks.d.ts +79 -0
  94. package/dist/types/hooks/index.d.ts +6 -0
  95. package/dist/types/hooks/matchers.d.ts +95 -0
  96. package/dist/types/hooks/types.d.ts +320 -0
  97. package/dist/types/index.d.ts +8 -0
  98. package/dist/types/messages/format.d.ts +2 -1
  99. package/dist/types/run.d.ts +1 -0
  100. package/dist/types/summarization/node.d.ts +2 -0
  101. package/dist/types/tools/BashExecutor.d.ts +45 -0
  102. package/dist/types/tools/BashProgrammaticToolCalling.d.ts +72 -0
  103. package/dist/types/tools/ProgrammaticToolCalling.d.ts +4 -9
  104. package/dist/types/tools/ReadFile.d.ts +28 -0
  105. package/dist/types/tools/SkillTool.d.ts +40 -0
  106. package/dist/types/tools/SubagentTool.d.ts +36 -0
  107. package/dist/types/tools/ToolNode.d.ts +24 -2
  108. package/dist/types/tools/ToolSearch.d.ts +2 -2
  109. package/dist/types/tools/skillCatalog.d.ts +19 -0
  110. package/dist/types/tools/subagent/SubagentExecutor.d.ts +137 -0
  111. package/dist/types/tools/subagent/index.d.ts +2 -0
  112. package/dist/types/types/graph.d.ts +61 -2
  113. package/dist/types/types/index.d.ts +1 -0
  114. package/dist/types/types/run.d.ts +20 -0
  115. package/dist/types/types/skill.d.ts +9 -0
  116. package/dist/types/types/tools.d.ts +38 -10
  117. package/package.json +5 -1
  118. package/src/agents/AgentContext.ts +26 -2
  119. package/src/common/enum.ts +15 -1
  120. package/src/graphs/Graph.ts +113 -0
  121. package/src/hooks/HookRegistry.ts +208 -0
  122. package/src/hooks/__tests__/HookRegistry.test.ts +190 -0
  123. package/src/hooks/__tests__/compactHooks.test.ts +214 -0
  124. package/src/hooks/__tests__/executeHooks.test.ts +1013 -0
  125. package/src/hooks/__tests__/integration.test.ts +337 -0
  126. package/src/hooks/__tests__/matchers.test.ts +238 -0
  127. package/src/hooks/__tests__/toolHooks.test.ts +669 -0
  128. package/src/hooks/executeHooks.ts +375 -0
  129. package/src/hooks/index.ts +57 -0
  130. package/src/hooks/matchers.ts +280 -0
  131. package/src/hooks/types.ts +404 -0
  132. package/src/index.ts +10 -0
  133. package/src/messages/format.ts +74 -4
  134. package/src/messages/formatAgentMessages.skills.test.ts +334 -0
  135. package/src/run.ts +126 -0
  136. package/src/scripts/multi-agent-subagent.ts +246 -0
  137. package/src/scripts/programmatic_exec.ts +1 -10
  138. package/src/scripts/subagent-event-driven-debug.ts +190 -0
  139. package/src/scripts/subagent-tools-debug.ts +160 -0
  140. package/src/scripts/test_code_api.ts +0 -7
  141. package/src/scripts/tool_search.ts +1 -10
  142. package/src/specs/subagent.test.ts +305 -0
  143. package/src/summarization/node.ts +53 -0
  144. package/src/tools/BashExecutor.ts +193 -0
  145. package/src/tools/BashProgrammaticToolCalling.ts +381 -0
  146. package/src/tools/CodeExecutor.ts +0 -11
  147. package/src/tools/ProgrammaticToolCalling.ts +4 -29
  148. package/src/tools/ReadFile.ts +39 -0
  149. package/src/tools/SkillTool.ts +46 -0
  150. package/src/tools/SubagentTool.ts +100 -0
  151. package/src/tools/ToolNode.ts +391 -169
  152. package/src/tools/ToolSearch.ts +3 -19
  153. package/src/tools/__tests__/ProgrammaticToolCalling.integration.test.ts +7 -8
  154. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -1
  155. package/src/tools/__tests__/ReadFile.test.ts +44 -0
  156. package/src/tools/__tests__/SkillTool.test.ts +442 -0
  157. package/src/tools/__tests__/SubagentExecutor.test.ts +1148 -0
  158. package/src/tools/__tests__/SubagentTool.test.ts +149 -0
  159. package/src/tools/__tests__/ToolNode.session.test.ts +12 -12
  160. package/src/tools/__tests__/ToolSearch.integration.test.ts +7 -8
  161. package/src/tools/__tests__/skillCatalog.test.ts +161 -0
  162. package/src/tools/__tests__/subagentHooks.test.ts +215 -0
  163. package/src/tools/skillCatalog.ts +126 -0
  164. package/src/tools/subagent/SubagentExecutor.ts +676 -0
  165. package/src/tools/subagent/index.ts +13 -0
  166. package/src/types/graph.ts +80 -1
  167. package/src/types/index.ts +1 -0
  168. package/src/types/run.ts +20 -0
  169. package/src/types/skill.ts +11 -0
  170. package/src/types/tools.ts +41 -10
@@ -0,0 +1,100 @@
1
+ import { Constants } from '@/common';
2
+ import type { SubagentConfig } from '@/types';
3
+ import type { JsonSchemaType, LCTool } from '@/types/tools';
4
+
5
+ export const SubagentToolName = Constants.SUBAGENT;
6
+
7
+ export const SubagentToolDescription = `Delegate a task to a specialized subagent that runs in an isolated context window. The subagent executes independently and returns only its final text result — all intermediate tool calls, reasoning, and context stay isolated.
8
+
9
+ WHEN TO USE:
10
+ - The task is self-contained and can be described in a single prompt.
11
+ - You want to offload verbose or exploratory work without bloating your own context.
12
+ - A specialized subagent is available for the task domain.
13
+
14
+ WHAT HAPPENS:
15
+ - A fresh agent is created with the task description as its only input.
16
+ - The subagent runs to completion using its own tools and context.
17
+ - Only the final text response is returned to you.
18
+
19
+ CONSTRAINTS:
20
+ - subagent_type must match one of the available types listed below.
21
+ - The subagent cannot see your conversation history.`;
22
+
23
+ const DESCRIPTION_PROP_DESCRIPTION =
24
+ 'Complete task description for the subagent. This is the ONLY information it receives — include all necessary context, requirements, and constraints.';
25
+
26
+ const SUBAGENT_TYPE_PROP_DESCRIPTION =
27
+ 'Which subagent type to delegate to. Must be one of the available types.';
28
+
29
+ export const SubagentToolSchema = {
30
+ type: 'object',
31
+ properties: {
32
+ description: {
33
+ type: 'string',
34
+ description: DESCRIPTION_PROP_DESCRIPTION,
35
+ },
36
+ subagent_type: {
37
+ type: 'string',
38
+ description: SUBAGENT_TYPE_PROP_DESCRIPTION,
39
+ },
40
+ },
41
+ required: ['description', 'subagent_type'] as string[],
42
+ } as const;
43
+
44
+ export const SubagentToolDefinition: LCTool = {
45
+ name: SubagentToolName,
46
+ description: SubagentToolDescription,
47
+ parameters: SubagentToolSchema,
48
+ };
49
+
50
+ /**
51
+ * Build the name, schema, and description params for `tool()` from available configs.
52
+ * Used by `Graph.createAgentNode()` when constructing the runtime tool instance.
53
+ * Extends `SubagentToolSchema` by populating `subagent_type.enum` dynamically.
54
+ */
55
+ export function buildSubagentToolParams(configs: SubagentConfig[]): {
56
+ name: string;
57
+ schema: JsonSchemaType;
58
+ description: string;
59
+ } {
60
+ const types = configs.map((c) => c.type);
61
+ const typeDescriptions = configs
62
+ .map((c) => `- "${c.type}" (${c.name}): ${c.description}`)
63
+ .join('\n');
64
+
65
+ return {
66
+ name: SubagentToolName,
67
+ schema: {
68
+ type: 'object',
69
+ properties: {
70
+ description: {
71
+ type: 'string',
72
+ description: DESCRIPTION_PROP_DESCRIPTION,
73
+ },
74
+ subagent_type: {
75
+ type: 'string',
76
+ enum: types,
77
+ description: `${SUBAGENT_TYPE_PROP_DESCRIPTION} Available: ${types.join(', ')}.`,
78
+ },
79
+ },
80
+ required: ['description', 'subagent_type'],
81
+ },
82
+ description: `${SubagentToolDescription}\n\nAvailable types:\n${typeDescriptions}`,
83
+ };
84
+ }
85
+
86
+ /**
87
+ * Create a SubagentTool LCTool definition with dynamic enum and description
88
+ * populated from the available subagent configs.
89
+ * Used for the tool registry in event-driven mode.
90
+ */
91
+ export function createSubagentToolDefinition(
92
+ configs: SubagentConfig[]
93
+ ): LCTool {
94
+ const params = buildSubagentToolParams(configs);
95
+ return {
96
+ name: params.name,
97
+ description: params.description,
98
+ parameters: params.schema,
99
+ };
100
+ }