langchain 0.0.4

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 (217) hide show
  1. package/dist/cjs/agents/agent.d.ts +42 -0
  2. package/dist/cjs/agents/agent.js +129 -0
  3. package/dist/cjs/agents/agent.js.map +1 -0
  4. package/dist/cjs/agents/executor.d.ts +27 -0
  5. package/dist/cjs/agents/executor.js +105 -0
  6. package/dist/cjs/agents/executor.js.map +1 -0
  7. package/dist/cjs/agents/helpers.d.ts +3 -0
  8. package/dist/cjs/agents/helpers.js +30 -0
  9. package/dist/cjs/agents/helpers.js.map +1 -0
  10. package/dist/cjs/agents/index.d.ts +6 -0
  11. package/dist/cjs/agents/index.js +13 -0
  12. package/dist/cjs/agents/index.js.map +1 -0
  13. package/dist/cjs/agents/load.d.ts +6 -0
  14. package/dist/cjs/agents/load.js +28 -0
  15. package/dist/cjs/agents/load.js.map +1 -0
  16. package/dist/cjs/agents/mrkl/index.d.ts +33 -0
  17. package/dist/cjs/agents/mrkl/index.js +109 -0
  18. package/dist/cjs/agents/mrkl/index.js.map +1 -0
  19. package/dist/cjs/agents/mrkl/prompt.d.ts +3 -0
  20. package/dist/cjs/agents/mrkl/prompt.js +21 -0
  21. package/dist/cjs/agents/mrkl/prompt.js.map +1 -0
  22. package/dist/cjs/agents/tests/agent.test.d.ts +1 -0
  23. package/dist/cjs/agents/tests/agent.test.js +31 -0
  24. package/dist/cjs/agents/tests/agent.test.js.map +1 -0
  25. package/dist/cjs/agents/tools/index.d.ts +7 -0
  26. package/dist/cjs/agents/tools/index.js +6 -0
  27. package/dist/cjs/agents/tools/index.js.map +1 -0
  28. package/dist/cjs/agents/tools/llm-math.d.ts +0 -0
  29. package/dist/cjs/agents/tools/llm-math.js +2 -0
  30. package/dist/cjs/agents/tools/llm-math.js.map +1 -0
  31. package/dist/cjs/agents/tools/serpapi.d.ts +3 -0
  32. package/dist/cjs/agents/tools/serpapi.js +50 -0
  33. package/dist/cjs/agents/tools/serpapi.js.map +1 -0
  34. package/dist/cjs/agents/types.d.ts +25 -0
  35. package/dist/cjs/agents/types.js +3 -0
  36. package/dist/cjs/agents/types.js.map +1 -0
  37. package/dist/cjs/cache.d.ts +11 -0
  38. package/dist/cjs/cache.js +27 -0
  39. package/dist/cjs/cache.js.map +1 -0
  40. package/dist/cjs/chains/base.d.ts +12 -0
  41. package/dist/cjs/chains/base.js +23 -0
  42. package/dist/cjs/chains/base.js.map +1 -0
  43. package/dist/cjs/chains/index.d.ts +3 -0
  44. package/dist/cjs/chains/index.js +10 -0
  45. package/dist/cjs/chains/index.js.map +1 -0
  46. package/dist/cjs/chains/llm_chain.d.ts +30 -0
  47. package/dist/cjs/chains/llm_chain.js +83 -0
  48. package/dist/cjs/chains/llm_chain.js.map +1 -0
  49. package/dist/cjs/chains/llm_math_chain.d.ts +0 -0
  50. package/dist/cjs/chains/llm_math_chain.js +129 -0
  51. package/dist/cjs/chains/llm_math_chain.js.map +1 -0
  52. package/dist/cjs/chains/load.d.ts +2 -0
  53. package/dist/cjs/chains/load.js +29 -0
  54. package/dist/cjs/chains/load.js.map +1 -0
  55. package/dist/cjs/chains/tests/llm_chain.test.d.ts +1 -0
  56. package/dist/cjs/chains/tests/llm_chain.test.js +32 -0
  57. package/dist/cjs/chains/tests/llm_chain.test.js.map +1 -0
  58. package/dist/cjs/index.d.ts +3 -0
  59. package/dist/cjs/index.js +12 -0
  60. package/dist/cjs/index.js.map +1 -0
  61. package/dist/cjs/llms/base.d.ts +23 -0
  62. package/dist/cjs/llms/base.js +159 -0
  63. package/dist/cjs/llms/base.js.map +1 -0
  64. package/dist/cjs/llms/index.d.ts +18 -0
  65. package/dist/cjs/llms/index.js +11 -0
  66. package/dist/cjs/llms/index.js.map +1 -0
  67. package/dist/cjs/llms/load.d.ts +3 -0
  68. package/dist/cjs/llms/load.js +9 -0
  69. package/dist/cjs/llms/load.js.map +1 -0
  70. package/dist/cjs/llms/openai.d.ts +63 -0
  71. package/dist/cjs/llms/openai.js +202 -0
  72. package/dist/cjs/llms/openai.js.map +1 -0
  73. package/dist/cjs/llms/tests/openai.test.d.ts +1 -0
  74. package/dist/cjs/llms/tests/openai.test.js +19 -0
  75. package/dist/cjs/llms/tests/openai.test.js.map +1 -0
  76. package/dist/cjs/prompt/base.d.ts +19 -0
  77. package/dist/cjs/prompt/base.js +54 -0
  78. package/dist/cjs/prompt/base.js.map +1 -0
  79. package/dist/cjs/prompt/few_shot.d.ts +47 -0
  80. package/dist/cjs/prompt/few_shot.js +143 -0
  81. package/dist/cjs/prompt/few_shot.js.map +1 -0
  82. package/dist/cjs/prompt/index.d.ts +3 -0
  83. package/dist/cjs/prompt/index.js +10 -0
  84. package/dist/cjs/prompt/index.js.map +1 -0
  85. package/dist/cjs/prompt/load.d.ts +2 -0
  86. package/dist/cjs/prompt/load.js +25 -0
  87. package/dist/cjs/prompt/load.js.map +1 -0
  88. package/dist/cjs/prompt/parser.d.ts +40 -0
  89. package/dist/cjs/prompt/parser.js +93 -0
  90. package/dist/cjs/prompt/parser.js.map +1 -0
  91. package/dist/cjs/prompt/prompt.d.ts +28 -0
  92. package/dist/cjs/prompt/prompt.js +91 -0
  93. package/dist/cjs/prompt/prompt.js.map +1 -0
  94. package/dist/cjs/prompt/template.d.ts +16 -0
  95. package/dist/cjs/prompt/template.js +87 -0
  96. package/dist/cjs/prompt/template.js.map +1 -0
  97. package/dist/cjs/prompt/tests/load.test.d.ts +1 -0
  98. package/dist/cjs/prompt/tests/load.test.js +30 -0
  99. package/dist/cjs/prompt/tests/load.test.js.map +1 -0
  100. package/dist/cjs/prompt/tests/template.test.d.ts +1 -0
  101. package/dist/cjs/prompt/tests/template.test.js +27 -0
  102. package/dist/cjs/prompt/tests/template.test.js.map +1 -0
  103. package/dist/cjs/util/hub.d.ts +1 -0
  104. package/dist/cjs/util/hub.js +50 -0
  105. package/dist/cjs/util/hub.js.map +1 -0
  106. package/dist/cjs/util/index.d.ts +12 -0
  107. package/dist/cjs/util/index.js +107 -0
  108. package/dist/cjs/util/index.js.map +1 -0
  109. package/dist/esm/agents/agent.d.ts +42 -0
  110. package/dist/esm/agents/agent.js +124 -0
  111. package/dist/esm/agents/agent.js.map +1 -0
  112. package/dist/esm/agents/executor.d.ts +27 -0
  113. package/dist/esm/agents/executor.js +101 -0
  114. package/dist/esm/agents/executor.js.map +1 -0
  115. package/dist/esm/agents/helpers.d.ts +3 -0
  116. package/dist/esm/agents/helpers.js +26 -0
  117. package/dist/esm/agents/helpers.js.map +1 -0
  118. package/dist/esm/agents/index.d.ts +6 -0
  119. package/dist/esm/agents/index.js +5 -0
  120. package/dist/esm/agents/index.js.map +1 -0
  121. package/dist/esm/agents/load.d.ts +6 -0
  122. package/dist/esm/agents/load.js +24 -0
  123. package/dist/esm/agents/load.js.map +1 -0
  124. package/dist/esm/agents/mrkl/index.d.ts +33 -0
  125. package/dist/esm/agents/mrkl/index.js +106 -0
  126. package/dist/esm/agents/mrkl/index.js.map +1 -0
  127. package/dist/esm/agents/mrkl/prompt.d.ts +3 -0
  128. package/dist/esm/agents/mrkl/prompt.js +17 -0
  129. package/dist/esm/agents/mrkl/prompt.js.map +1 -0
  130. package/dist/esm/agents/tests/agent.test.d.ts +1 -0
  131. package/dist/esm/agents/tests/agent.test.js +29 -0
  132. package/dist/esm/agents/tests/agent.test.js.map +1 -0
  133. package/dist/esm/agents/tools/index.d.ts +7 -0
  134. package/dist/esm/agents/tools/index.js +2 -0
  135. package/dist/esm/agents/tools/index.js.map +1 -0
  136. package/dist/esm/agents/tools/llm-math.d.ts +0 -0
  137. package/dist/esm/agents/tools/llm-math.js +2 -0
  138. package/dist/esm/agents/tools/llm-math.js.map +1 -0
  139. package/dist/esm/agents/tools/serpapi.d.ts +3 -0
  140. package/dist/esm/agents/tools/serpapi.js +46 -0
  141. package/dist/esm/agents/tools/serpapi.js.map +1 -0
  142. package/dist/esm/agents/types.d.ts +25 -0
  143. package/dist/esm/agents/types.js +2 -0
  144. package/dist/esm/agents/types.js.map +1 -0
  145. package/dist/esm/cache.d.ts +11 -0
  146. package/dist/esm/cache.js +22 -0
  147. package/dist/esm/cache.js.map +1 -0
  148. package/dist/esm/chains/base.d.ts +12 -0
  149. package/dist/esm/chains/base.js +19 -0
  150. package/dist/esm/chains/base.js.map +1 -0
  151. package/dist/esm/chains/index.d.ts +3 -0
  152. package/dist/esm/chains/index.js +4 -0
  153. package/dist/esm/chains/index.js.map +1 -0
  154. package/dist/esm/chains/llm_chain.d.ts +30 -0
  155. package/dist/esm/chains/llm_chain.js +79 -0
  156. package/dist/esm/chains/llm_chain.js.map +1 -0
  157. package/dist/esm/chains/llm_math_chain.d.ts +0 -0
  158. package/dist/esm/chains/llm_math_chain.js +129 -0
  159. package/dist/esm/chains/llm_math_chain.js.map +1 -0
  160. package/dist/esm/chains/load.d.ts +2 -0
  161. package/dist/esm/chains/load.js +25 -0
  162. package/dist/esm/chains/load.js.map +1 -0
  163. package/dist/esm/chains/tests/llm_chain.test.d.ts +1 -0
  164. package/dist/esm/chains/tests/llm_chain.test.js +30 -0
  165. package/dist/esm/chains/tests/llm_chain.test.js.map +1 -0
  166. package/dist/esm/index.d.ts +3 -0
  167. package/dist/esm/index.js +4 -0
  168. package/dist/esm/index.js.map +1 -0
  169. package/dist/esm/llms/base.d.ts +23 -0
  170. package/dist/esm/llms/base.js +154 -0
  171. package/dist/esm/llms/base.js.map +1 -0
  172. package/dist/esm/llms/index.d.ts +18 -0
  173. package/dist/esm/llms/index.js +4 -0
  174. package/dist/esm/llms/index.js.map +1 -0
  175. package/dist/esm/llms/load.d.ts +3 -0
  176. package/dist/esm/llms/load.js +5 -0
  177. package/dist/esm/llms/load.js.map +1 -0
  178. package/dist/esm/llms/openai.d.ts +63 -0
  179. package/dist/esm/llms/openai.js +198 -0
  180. package/dist/esm/llms/openai.js.map +1 -0
  181. package/dist/esm/llms/tests/openai.test.d.ts +1 -0
  182. package/dist/esm/llms/tests/openai.test.js +17 -0
  183. package/dist/esm/llms/tests/openai.test.js.map +1 -0
  184. package/dist/esm/prompt/base.d.ts +19 -0
  185. package/dist/esm/prompt/base.js +50 -0
  186. package/dist/esm/prompt/base.js.map +1 -0
  187. package/dist/esm/prompt/few_shot.d.ts +47 -0
  188. package/dist/esm/prompt/few_shot.js +139 -0
  189. package/dist/esm/prompt/few_shot.js.map +1 -0
  190. package/dist/esm/prompt/index.d.ts +3 -0
  191. package/dist/esm/prompt/index.js +4 -0
  192. package/dist/esm/prompt/index.js.map +1 -0
  193. package/dist/esm/prompt/load.d.ts +2 -0
  194. package/dist/esm/prompt/load.js +21 -0
  195. package/dist/esm/prompt/load.js.map +1 -0
  196. package/dist/esm/prompt/parser.d.ts +40 -0
  197. package/dist/esm/prompt/parser.js +86 -0
  198. package/dist/esm/prompt/parser.js.map +1 -0
  199. package/dist/esm/prompt/prompt.d.ts +28 -0
  200. package/dist/esm/prompt/prompt.js +87 -0
  201. package/dist/esm/prompt/prompt.js.map +1 -0
  202. package/dist/esm/prompt/template.d.ts +16 -0
  203. package/dist/esm/prompt/template.js +80 -0
  204. package/dist/esm/prompt/template.js.map +1 -0
  205. package/dist/esm/prompt/tests/load.test.d.ts +1 -0
  206. package/dist/esm/prompt/tests/load.test.js +25 -0
  207. package/dist/esm/prompt/tests/load.test.js.map +1 -0
  208. package/dist/esm/prompt/tests/template.test.d.ts +1 -0
  209. package/dist/esm/prompt/tests/template.test.js +25 -0
  210. package/dist/esm/prompt/tests/template.test.js.map +1 -0
  211. package/dist/esm/util/hub.d.ts +1 -0
  212. package/dist/esm/util/hub.js +43 -0
  213. package/dist/esm/util/hub.js.map +1 -0
  214. package/dist/esm/util/index.d.ts +12 -0
  215. package/dist/esm/util/index.js +74 -0
  216. package/dist/esm/util/index.js.map +1 -0
  217. package/package.json +97 -0
@@ -0,0 +1,42 @@
1
+ import { ChainValues } from "../chains";
2
+ import { SerializedZeroShotAgent, AgentAction, AgentFinish, AgentStep, StoppingMethod, Tool } from "./index";
3
+ import { BaseLLM } from "../llms";
4
+ import { LLMChain } from "../chains/llm_chain";
5
+ import { BasePromptTemplate } from "../prompt";
6
+ export interface StaticAgent {
7
+ createPrompt(tools: Tool[], fields?: Record<string, any>): BasePromptTemplate;
8
+ fromLLMAndTools(llm: BaseLLM, tools: Tool[], args?: Record<string, any>): Agent;
9
+ validateTools(_: Tool[]): void;
10
+ }
11
+ export declare const staticImplements: <T>(_: T) => void;
12
+ type SerializedAgent = SerializedZeroShotAgent;
13
+ export interface AgentInput {
14
+ llmChain: LLMChain;
15
+ allowedTools?: string[];
16
+ }
17
+ export declare abstract class Agent {
18
+ llmChain: LLMChain;
19
+ allowedTools?: string[];
20
+ returnValues: string[];
21
+ constructor(input: AgentInput);
22
+ abstract extractToolAndInput(input: string): {
23
+ tool: string;
24
+ input: string;
25
+ } | null;
26
+ abstract observationPrefix(): string;
27
+ abstract llmPrefix(): string;
28
+ abstract _agentType(): string;
29
+ prepareForNewCall(): void;
30
+ static validateTools(_: Tool[]): void;
31
+ _stop(): string[];
32
+ finishToolName(): string;
33
+ private constructScratchPad;
34
+ private _plan;
35
+ plan(steps: AgentStep[], inputs: ChainValues): Promise<AgentAction | AgentFinish>;
36
+ returnStoppedResponse(earlyStoppingMethod: StoppingMethod, steps: AgentStep[], inputs: ChainValues): Promise<AgentFinish>;
37
+ static deserialize(data: SerializedAgent & {
38
+ llm?: BaseLLM;
39
+ tools?: Tool[];
40
+ }): Promise<Agent>;
41
+ }
42
+ export {};
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Agent = exports.staticImplements = void 0;
13
+ const index_1 = require("./index");
14
+ class ParseError extends Error {
15
+ constructor(msg, output) {
16
+ super(msg);
17
+ Object.defineProperty(this, "output", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: void 0
22
+ });
23
+ this.output = output;
24
+ }
25
+ }
26
+ const staticImplements = (_) => { };
27
+ exports.staticImplements = staticImplements;
28
+ class Agent {
29
+ constructor(input) {
30
+ Object.defineProperty(this, "llmChain", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: void 0
35
+ });
36
+ Object.defineProperty(this, "allowedTools", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: undefined
41
+ });
42
+ Object.defineProperty(this, "returnValues", {
43
+ enumerable: true,
44
+ configurable: true,
45
+ writable: true,
46
+ value: ["output"]
47
+ });
48
+ this.llmChain = input.llmChain;
49
+ this.allowedTools = input.allowedTools;
50
+ }
51
+ prepareForNewCall() { }
52
+ // eslint-disable-next-line no-unused-vars
53
+ static validateTools(_) { }
54
+ _stop() {
55
+ return [`\n${this.observationPrefix()}`];
56
+ }
57
+ finishToolName() {
58
+ return "Final Answer";
59
+ }
60
+ constructScratchPad(steps) {
61
+ return steps.reduce((thoughts, { action, observation }) => thoughts +
62
+ [
63
+ action.log,
64
+ `${this.observationPrefix()}${observation}`,
65
+ this.llmPrefix(),
66
+ ].join("\n"), "");
67
+ }
68
+ _plan(steps, inputs, suffix) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const thoughts = this.constructScratchPad(steps);
71
+ const newInputs = Object.assign(Object.assign({}, inputs), { agent_scratchpad: suffix ? `${thoughts}${suffix}` : thoughts, stop: this._stop() });
72
+ const output = yield this.llmChain.predict(newInputs);
73
+ const parsed = this.extractToolAndInput(output);
74
+ if (!parsed) {
75
+ throw new ParseError(`Invalid output: ${output}`, output);
76
+ }
77
+ const action = {
78
+ tool: parsed.tool,
79
+ toolInput: parsed.input,
80
+ log: output,
81
+ };
82
+ if (action.tool === this.finishToolName()) {
83
+ return { returnValues: { output: action.toolInput }, log: action.log };
84
+ }
85
+ return action;
86
+ });
87
+ }
88
+ plan(steps, inputs) {
89
+ return this._plan(steps, inputs);
90
+ }
91
+ returnStoppedResponse(earlyStoppingMethod, steps, inputs) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ if (earlyStoppingMethod === "force") {
94
+ return {
95
+ returnValues: { output: "Agent stopped due to max iterations." },
96
+ log: "",
97
+ };
98
+ }
99
+ if (earlyStoppingMethod === "generate") {
100
+ try {
101
+ const action = yield this._plan(steps, inputs, "\n\nI now need to return a final answer based on the previous steps:");
102
+ if ("returnValues" in action) {
103
+ return action;
104
+ }
105
+ return { returnValues: { output: action.log }, log: action.log };
106
+ }
107
+ catch (err) {
108
+ if (!(err instanceof ParseError)) {
109
+ throw err;
110
+ }
111
+ return { returnValues: { output: err.output }, log: err.output };
112
+ }
113
+ }
114
+ throw new Error(`Invalid stopping method: ${earlyStoppingMethod}`);
115
+ });
116
+ }
117
+ static deserialize(data) {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ switch (data._type) {
120
+ case "zero-shot-react-description":
121
+ return index_1.ZeroShotAgent.deserialize(data);
122
+ default:
123
+ throw new Error("Unknown agent type");
124
+ }
125
+ });
126
+ }
127
+ }
128
+ exports.Agent = Agent;
129
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../agents/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { ChainValues, BaseChain } from "../chains";
2
+ import { Agent, Tool, StoppingMethod } from "./index";
3
+ import { SerializedLLMChain } from "../chains/llm_chain";
4
+ type AgentExecutorInput = {
5
+ agent: Agent;
6
+ tools: Tool[];
7
+ returnIntermediateSteps?: boolean;
8
+ maxIterations?: number;
9
+ earlyStoppingMethod?: StoppingMethod;
10
+ };
11
+ export declare class AgentExecutor extends BaseChain {
12
+ agent: Agent;
13
+ tools: Tool[];
14
+ returnIntermediateSteps: boolean;
15
+ maxIterations?: number;
16
+ earlyStoppingMethod: StoppingMethod;
17
+ constructor(input: AgentExecutorInput);
18
+ static fromAgentAndTools(fields: {
19
+ agent: Agent;
20
+ tools: Tool[];
21
+ } & Record<string, any>): AgentExecutor;
22
+ private shouldContinue;
23
+ _call(inputs: ChainValues): Promise<ChainValues>;
24
+ _chainType(): "agent_executor";
25
+ serialize(): SerializedLLMChain;
26
+ }
27
+ export {};
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AgentExecutor = void 0;
13
+ const chains_1 = require("../chains");
14
+ class AgentExecutor extends chains_1.BaseChain {
15
+ constructor(input) {
16
+ var _a, _b, _c;
17
+ super();
18
+ Object.defineProperty(this, "agent", {
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true,
22
+ value: void 0
23
+ });
24
+ Object.defineProperty(this, "tools", {
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true,
28
+ value: void 0
29
+ });
30
+ Object.defineProperty(this, "returnIntermediateSteps", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: false
35
+ });
36
+ Object.defineProperty(this, "maxIterations", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: 15
41
+ });
42
+ Object.defineProperty(this, "earlyStoppingMethod", {
43
+ enumerable: true,
44
+ configurable: true,
45
+ writable: true,
46
+ value: "force"
47
+ });
48
+ this.agent = input.agent;
49
+ this.tools = input.tools;
50
+ this.returnIntermediateSteps =
51
+ (_a = input.returnIntermediateSteps) !== null && _a !== void 0 ? _a : this.returnIntermediateSteps;
52
+ this.maxIterations = (_b = input.maxIterations) !== null && _b !== void 0 ? _b : this.maxIterations;
53
+ this.earlyStoppingMethod =
54
+ (_c = input.earlyStoppingMethod) !== null && _c !== void 0 ? _c : this.earlyStoppingMethod;
55
+ }
56
+ static fromAgentAndTools(fields) {
57
+ return new AgentExecutor(fields);
58
+ }
59
+ shouldContinue(iterations) {
60
+ return this.maxIterations === undefined || iterations < this.maxIterations;
61
+ }
62
+ _call(inputs) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ this.agent.prepareForNewCall();
65
+ const toolsByName = Object.fromEntries(this.tools.map((t) => [t.name, t]));
66
+ const steps = [];
67
+ let iterations = 0;
68
+ const getOutput = (finishStep) => {
69
+ const { returnValues } = finishStep;
70
+ if (this.returnIntermediateSteps) {
71
+ return Object.assign(Object.assign({}, returnValues), { intermediateSteps: steps });
72
+ }
73
+ return returnValues;
74
+ };
75
+ while (this.shouldContinue(iterations)) {
76
+ const action = yield this.agent.plan(steps, inputs);
77
+ if ("returnValues" in action) {
78
+ return getOutput(action);
79
+ }
80
+ const tool = toolsByName[action.tool];
81
+ const observation = tool
82
+ ? yield tool.call(action.toolInput)
83
+ : `${action.tool} is not a valid tool, try another one.`;
84
+ steps.push({ action, observation });
85
+ if (tool === null || tool === void 0 ? void 0 : tool.returnDirect) {
86
+ return getOutput({
87
+ returnValues: { [this.agent.returnValues[0]]: observation },
88
+ log: "",
89
+ });
90
+ }
91
+ iterations += 1;
92
+ }
93
+ const finish = yield this.agent.returnStoppedResponse(this.earlyStoppingMethod, steps, inputs);
94
+ return getOutput(finish);
95
+ });
96
+ }
97
+ _chainType() {
98
+ return "agent_executor";
99
+ }
100
+ serialize() {
101
+ throw new Error("Cannot serialize an AgentExecutor");
102
+ }
103
+ }
104
+ exports.AgentExecutor = AgentExecutor;
105
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../agents/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { SerializedAgentT, Tool, AgentInput } from "./index";
2
+ import { BaseLLM } from "../llms";
3
+ export declare const deserializeHelper: <T extends string, U, V extends AgentInput, Z>(llm: BaseLLM | undefined, tools: Tool[] | undefined, data: SerializedAgentT<T, U, V>, fromLLMAndTools: (llm: BaseLLM, tools: Tool[], args: U) => Z, fromConstructor: (args: V) => Z) => Promise<Z>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.deserializeHelper = void 0;
13
+ const chains_1 = require("../chains");
14
+ const util_1 = require("../util");
15
+ const deserializeHelper = (llm, tools, data, fromLLMAndTools, fromConstructor) => __awaiter(void 0, void 0, void 0, function* () {
16
+ if (data.load_from_llm_and_tools) {
17
+ if (!llm) {
18
+ throw new Error("Loading from llm and tools, llm must be provided.");
19
+ }
20
+ if (!tools) {
21
+ throw new Error("Loading from llm and tools, tools must be provided.");
22
+ }
23
+ return fromLLMAndTools(llm, tools, data);
24
+ }
25
+ const serializedLLMChain = (0, util_1.resolveConfigFromFile)("llm_chain", data);
26
+ const llmChain = yield chains_1.LLMChain.deserialize(serializedLLMChain);
27
+ return fromConstructor(Object.assign(Object.assign({}, data), { llmChain }));
28
+ });
29
+ exports.deserializeHelper = deserializeHelper;
30
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../agents/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,sCAAyD;AACzD,kCAAgD;AAEzC,MAAM,iBAAiB,GAAG,CAM/B,GAAwB,EACxB,KAAyB,EACzB,IAA+B,EAC/B,eAA4D,EAC5D,eAA+B,EACnB,EAAE;IACd,IAAI,IAAI,CAAC,uBAAuB,EAAE;QAChC,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACtE;QAED,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;SACxE;QAED,OAAO,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;KAC1C;IAED,MAAM,kBAAkB,GAAG,IAAA,4BAAqB,EAG9C,WAAW,EAAE,IAAI,CAAC,CAAC;IACrB,MAAM,QAAQ,GAAG,MAAM,iBAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAChE,OAAO,eAAe,iCAAM,IAAI,KAAE,QAAQ,IAAG,CAAC;AAChD,CAAC,CAAA,CAAC;AA9BW,QAAA,iBAAiB,qBA8B5B"}
@@ -0,0 +1,6 @@
1
+ export { AgentAction, AgentFinish, AgentStep, StoppingMethod, SerializedAgentT, } from "./types";
2
+ export { Agent, StaticAgent, staticImplements, AgentInput } from "./agent";
3
+ export { AgentExecutor } from "./executor";
4
+ export { ZeroShotAgent, SerializedZeroShotAgent } from "./mrkl";
5
+ export { Tool } from "./tools";
6
+ export { loadAgent } from "./load";
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadAgent = exports.ZeroShotAgent = exports.AgentExecutor = exports.staticImplements = exports.Agent = void 0;
4
+ var agent_1 = require("./agent");
5
+ Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return agent_1.Agent; } });
6
+ Object.defineProperty(exports, "staticImplements", { enumerable: true, get: function () { return agent_1.staticImplements; } });
7
+ var executor_1 = require("./executor");
8
+ Object.defineProperty(exports, "AgentExecutor", { enumerable: true, get: function () { return executor_1.AgentExecutor; } });
9
+ var mrkl_1 = require("./mrkl");
10
+ Object.defineProperty(exports, "ZeroShotAgent", { enumerable: true, get: function () { return mrkl_1.ZeroShotAgent; } });
11
+ var load_1 = require("./load");
12
+ Object.defineProperty(exports, "loadAgent", { enumerable: true, get: function () { return load_1.loadAgent; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../agents/index.ts"],"names":[],"mappings":";;;AAOA,iCAA2E;AAAlE,8FAAA,KAAK,OAAA;AAAe,yGAAA,gBAAgB,OAAA;AAC7C,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AACtB,+BAAgE;AAAvD,qGAAA,aAAa,OAAA;AAGtB,+BAAmC;AAA1B,iGAAA,SAAS,OAAA"}
@@ -0,0 +1,6 @@
1
+ import { Agent, Tool } from ".";
2
+ import { BaseLLM } from "../llms";
3
+ export declare const loadAgent: (uri: string, llmAndTools?: {
4
+ llm?: BaseLLM;
5
+ tools?: Tool[];
6
+ }) => Promise<Agent>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.loadAgent = void 0;
13
+ const _1 = require(".");
14
+ const hub_1 = require("../util/hub");
15
+ const util_1 = require("../util");
16
+ const loadAgentFromFile = (file, llmAndTools) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const serialized = (0, util_1.parseFileConfig)(file);
18
+ return _1.Agent.deserialize(Object.assign(Object.assign({}, serialized), llmAndTools));
19
+ });
20
+ const loadAgent = (uri, llmAndTools) => __awaiter(void 0, void 0, void 0, function* () {
21
+ const hubResult = yield (0, hub_1.loadFromHub)(uri, (u) => loadAgentFromFile(u, llmAndTools), "agents", new Set(["json", "yaml"]));
22
+ if (hubResult) {
23
+ return hubResult;
24
+ }
25
+ return loadAgentFromFile(uri, llmAndTools);
26
+ });
27
+ exports.loadAgent = loadAgent;
28
+ //# sourceMappingURL=load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../../agents/load.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wBAAgC;AAEhC,qCAA0C;AAC1C,kCAA0C;AAE1C,MAAM,iBAAiB,GAAG,CACxB,IAAY,EACZ,WAA+C,EAC/C,EAAE;IACF,MAAM,UAAU,GAAG,IAAA,sBAAe,EAAC,IAAI,CAAC,CAAC;IACzC,OAAO,QAAK,CAAC,WAAW,iCAAM,UAAU,GAAK,WAAW,EAAG,CAAC;AAC9D,CAAC,CAAA,CAAC;AAEK,MAAM,SAAS,GAAG,CACvB,GAAW,EACX,WAA+C,EAC/B,EAAE;IAClB,MAAM,SAAS,GAAG,MAAM,IAAA,iBAAW,EACjC,GAAG,EACH,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,WAAW,CAAC,EACxC,QAAQ,EACR,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAC1B,CAAC;IACF,IAAI,SAAS,EAAE;QACb,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC,CAAA,CAAC;AAfW,QAAA,SAAS,aAepB"}
@@ -0,0 +1,33 @@
1
+ import { BaseLLM } from "../../llms";
2
+ import { Agent, Tool, AgentInput, SerializedAgentT } from "../index";
3
+ import { PromptTemplate } from "../../prompt";
4
+ type SerializedFromLLMAndTools = {
5
+ suffix?: string;
6
+ prefix?: string;
7
+ input_variables?: string[];
8
+ };
9
+ export type SerializedZeroShotAgent = SerializedAgentT<"zero-shot-react-description", SerializedFromLLMAndTools, AgentInput>;
10
+ type CreatePromptArgs = {
11
+ suffix?: string;
12
+ prefix?: string;
13
+ inputVariables?: string[];
14
+ };
15
+ type ZeroShotAgentInput = AgentInput;
16
+ export declare class ZeroShotAgent extends Agent {
17
+ constructor(input: ZeroShotAgentInput);
18
+ _agentType(): "zero-shot-react-description";
19
+ observationPrefix(): string;
20
+ llmPrefix(): string;
21
+ static validateTools(tools: Tool[]): void;
22
+ static createPrompt(tools: Tool[], args?: CreatePromptArgs): PromptTemplate;
23
+ static fromLLMAndTools(llm: BaseLLM, tools: Tool[], args?: CreatePromptArgs): ZeroShotAgent;
24
+ extractToolAndInput(text: string): {
25
+ tool: string;
26
+ input: string;
27
+ } | null;
28
+ static deserialize(data: SerializedZeroShotAgent & {
29
+ llm?: BaseLLM;
30
+ tools?: Tool[];
31
+ }): Promise<ZeroShotAgent>;
32
+ }
33
+ export {};
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
17
+ var __rest = (this && this.__rest) || function (s, e) {
18
+ var t = {};
19
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
20
+ t[p] = s[p];
21
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
22
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
23
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
24
+ t[p[i]] = s[p[i]];
25
+ }
26
+ return t;
27
+ };
28
+ var ZeroShotAgent_1;
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.ZeroShotAgent = void 0;
31
+ const chains_1 = require("../../chains");
32
+ const index_1 = require("../index");
33
+ const prompt_1 = require("../../prompt");
34
+ const prompt_2 = require("./prompt");
35
+ const helpers_1 = require("../helpers");
36
+ const FINAL_ANSWER_ACTION = "Final Answer:";
37
+ let ZeroShotAgent = ZeroShotAgent_1 = class ZeroShotAgent extends index_1.Agent {
38
+ constructor(input) {
39
+ super(input);
40
+ }
41
+ _agentType() {
42
+ return "zero-shot-react-description";
43
+ }
44
+ observationPrefix() {
45
+ return "Observation: ";
46
+ }
47
+ llmPrefix() {
48
+ return "Thought:";
49
+ }
50
+ static validateTools(tools) {
51
+ const invalidTool = tools.find((tool) => !tool.description);
52
+ if (invalidTool) {
53
+ const msg = `Got a tool ${invalidTool.name} without a description.` +
54
+ ` This agent requires descriptions for all tools.`;
55
+ throw new Error(msg);
56
+ }
57
+ }
58
+ static createPrompt(tools, args) {
59
+ const { prefix = prompt_2.PREFIX, suffix = prompt_2.SUFFIX, inputVariables = ["input", "agent_scratchpad"], } = args !== null && args !== void 0 ? args : {};
60
+ const toolStrings = tools
61
+ .map((tool) => `${tool.name}: ${tool.description}`)
62
+ .join("\n");
63
+ const instructions = (0, prompt_2.formatInstructions)(toolStrings);
64
+ const template = [prefix, toolStrings, instructions, suffix].join("\n\n");
65
+ return new prompt_1.PromptTemplate({
66
+ template,
67
+ inputVariables,
68
+ });
69
+ }
70
+ static fromLLMAndTools(llm, tools, args) {
71
+ ZeroShotAgent_1.validateTools(tools);
72
+ const prompt = ZeroShotAgent_1.createPrompt(tools, args);
73
+ const chain = new chains_1.LLMChain({ prompt, llm });
74
+ return new ZeroShotAgent_1({
75
+ llmChain: chain,
76
+ allowedTools: tools.map((t) => t.name),
77
+ });
78
+ }
79
+ extractToolAndInput(text) {
80
+ if (text.includes(FINAL_ANSWER_ACTION)) {
81
+ const parts = text.split(FINAL_ANSWER_ACTION);
82
+ const input = parts[parts.length - 1].trim();
83
+ return { tool: "Final Answer", input };
84
+ }
85
+ const match = /Action: (.*)\nAction Input: (.*)/s.exec(text);
86
+ if (!match) {
87
+ throw new Error(`Could not parse LLM output: ${text}`);
88
+ }
89
+ return {
90
+ tool: match[1].trim(),
91
+ input: match[2].trim().replace(/^"+|"+$/g, ""),
92
+ };
93
+ }
94
+ static deserialize(data) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ const { llm, tools } = data, rest = __rest(data, ["llm", "tools"]);
97
+ return (0, helpers_1.deserializeHelper)(llm, tools, rest, (llm, tools, args) => ZeroShotAgent_1.fromLLMAndTools(llm, tools, {
98
+ prefix: args.prefix,
99
+ suffix: args.suffix,
100
+ inputVariables: args.input_variables,
101
+ }), (args) => new ZeroShotAgent_1(args));
102
+ });
103
+ }
104
+ };
105
+ ZeroShotAgent = ZeroShotAgent_1 = __decorate([
106
+ (index_1.staticImplements)
107
+ ], ZeroShotAgent);
108
+ exports.ZeroShotAgent = ZeroShotAgent;
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../agents/mrkl/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const PREFIX = "Answer the following questions as best you can. You have access to the following tools:";
2
+ export declare const formatInstructions: (toolNames: string) => string;
3
+ export declare const SUFFIX = "Begin!\n\nQuestion: {input}\nThought:{agent_scratchpad}";
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUFFIX = exports.formatInstructions = exports.PREFIX = void 0;
4
+ /* eslint-disable max-len */
5
+ exports.PREFIX = `Answer the following questions as best you can. You have access to the following tools:`;
6
+ const formatInstructions = (toolNames) => `Use the following format:
7
+
8
+ Question: the input question you must answer
9
+ Thought: you should always think about what to do
10
+ Action: the action to take, should be one of [${toolNames}]
11
+ Action Input: the input to the action
12
+ Observation: the result of the action
13
+ ... (this Thought/Action/Action Input/Observation can repeat N times)
14
+ Thought: I now know the final answer
15
+ Final Answer: the final answer to the original input question`;
16
+ exports.formatInstructions = formatInstructions;
17
+ exports.SUFFIX = `Begin!
18
+
19
+ Question: {input}
20
+ Thought:{agent_scratchpad}`;
21
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../../agents/mrkl/prompt.ts"],"names":[],"mappings":";;;AAAA,4BAA4B;AACf,QAAA,MAAM,GAAG,yFAAyF,CAAC;AACzG,MAAM,kBAAkB,GAAG,CAChC,SAAiB,EACjB,EAAE,CAAC;;;;gDAI2C,SAAS;;;;;8DAKK,CAAC;AAXlD,QAAA,kBAAkB,sBAWgC;AAClD,QAAA,MAAM,GAAG;;;2BAGK,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const globals_1 = require("@jest/globals");
13
+ const openai_1 = require("../../llms/openai");
14
+ const load_1 = require("../load");
15
+ const index_1 = require("../index");
16
+ const serpapi_1 = require("../tools/serpapi");
17
+ (0, globals_1.test)("Run agent from hub", () => __awaiter(void 0, void 0, void 0, function* () {
18
+ const model = new openai_1.OpenAI({});
19
+ const tools = [(0, serpapi_1.SerpAPI)()];
20
+ const agent = yield (0, load_1.loadAgent)("lc://agents/zero-shot-react-description/agent.json", { llm: model, tools });
21
+ const executor = index_1.AgentExecutor.fromAgentAndTools({
22
+ agent,
23
+ tools,
24
+ returnIntermediateSteps: true,
25
+ });
26
+ const res = yield executor.call({
27
+ input: "Who is Olivia Wilde's boyfriend? What is his current age raised to the 0.23 power?",
28
+ });
29
+ console.log(res);
30
+ }), 30000);
31
+ //# sourceMappingURL=agent.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.test.js","sourceRoot":"","sources":["../../../../agents/tests/agent.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAqC;AACrC,8CAA2C;AAC3C,kCAAoC;AACpC,oCAA+C;AAC/C,8CAA2C;AAE3C,IAAA,cAAI,EAAC,oBAAoB,EAAE,GAAS,EAAE;IACpC,MAAM,KAAK,GAAG,IAAI,eAAM,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAW,CAAC,IAAA,iBAAO,GAAE,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,IAAA,gBAAS,EAC3B,oDAAoD,EACpD,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CACtB,CAAC;IACF,MAAM,QAAQ,GAAG,qBAAa,CAAC,iBAAiB,CAAC;QAC/C,KAAK;QACL,KAAK;QACL,uBAAuB,EAAE,IAAI;KAC9B,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;QAC9B,KAAK,EACH,oFAAoF;KACvF,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAA,EAAE,KAAK,CAAC,CAAC"}