{"version":3,"sources":["../../../../../src/agents/react/runners/default/runner.spec.ts"],"names":["vi","mock","UnconstrainedMemory","TokenMemory","describe","beforeEach","useRealTimers","it","useFakeTimers","setSystemTime","Date","createMemory","memory","addMany","UserMessage","AssistantMessage","createInstance","prompt","instance","DefaultRunner","llm","expect","any","Function","tools","templates","RunContext","init","memory2","add","createdAt","instance2","messages","toEqual","each","ReActAgentUserPrompt","fork","old","functions","formatMeta","template","user","a","b","zip","filter","msg","role","Role","USER","render","input","text","meta","undefined","toStrictEqual"],"mappings":"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","file":"runner.spec.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DefaultRunner } from \"@/agents/react/runners/default/runner.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { AssistantMessage, Role, UserMessage } from \"@/backend/message.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { ReActAgentUserPrompt } from \"@/agents/react/prompts.js\";\nimport { zip } from \"remeda\";\nimport { RunContext } from \"@/context.js\";\nimport { ReActAgent } from \"@/agents/react/agent.js\";\n\nvi.mock(\"@/memory/tokenMemory.js\", async () => {\n  const { UnconstrainedMemory } = await import(\"@/memory/unconstrainedMemory.js\");\n  class TokenMemory extends UnconstrainedMemory {}\n  return { TokenMemory };\n});\n\nvi.mock(\"@/context.js\");\n\ndescribe(\"ReAct Agent Runner\", () => {\n  beforeEach(() => {\n    vi.useRealTimers();\n  });\n\n  it(\"Handles different prompt input source\", async () => {\n    vi.useFakeTimers();\n    vi.setSystemTime(new Date(\"2024-09-10T19:51:46.954Z\"));\n\n    const createMemory = async () => {\n      const memory = new UnconstrainedMemory();\n      await memory.addMany([\n        new UserMessage(\"What is your name?\"),\n        new AssistantMessage(\"I am Bee\"),\n      ]);\n      return memory;\n    };\n\n    const createInstance = async (memory: BaseMemory, prompt: string | null) => {\n      const instance = new DefaultRunner(\n        {\n          llm: expect.any(Function),\n          memory,\n          tools: [],\n          templates: {},\n        },\n        {},\n        new RunContext<ReActAgent, any>({} as any, {} as any),\n      );\n      await instance.init({ prompt });\n      return instance;\n    };\n\n    const memory = await createMemory();\n    const prompt = \"What can you do for me?\";\n    const instance = await createInstance(memory, prompt);\n\n    const memory2 = await createMemory();\n    await memory2.add(new UserMessage(prompt, { createdAt: new Date() }));\n    const instance2 = await createInstance(memory2, null);\n    expect(instance.memory.messages).toEqual(instance2.memory.messages);\n  });\n\n  it.each([\n    ReActAgentUserPrompt.fork((old) => ({\n      ...old,\n      functions: { ...old.functions, formatMeta: () => \"\" },\n    })),\n    ReActAgentUserPrompt.fork((old) => ({ ...old, template: `{{input}}` })),\n    ReActAgentUserPrompt.fork((old) => ({ ...old, template: `User: {{input}}` })),\n    ReActAgentUserPrompt.fork((old) => ({ ...old, template: `` })),\n  ])(\"Correctly formats user input\", async (template: typeof ReActAgentUserPrompt) => {\n    const memory = new UnconstrainedMemory();\n    await memory.addMany([\n      new UserMessage(\"What is your name?\"),\n      new AssistantMessage(\"Bee\"),\n      new UserMessage(\"Who are you?\"),\n      new AssistantMessage(\"I am a helpful assistant.\"),\n    ]);\n\n    const prompt = \"What can you do for me?\";\n    const instance = new DefaultRunner(\n      {\n        llm: expect.any(Function),\n        memory,\n        tools: [],\n        templates: {\n          user: template,\n        },\n      },\n      {},\n      new RunContext<ReActAgent, any>({} as any, {} as any),\n    );\n    await instance.init({ prompt });\n\n    for (const [a, b] of zip(\n      [...memory.messages.filter((msg) => msg.role === Role.USER), new UserMessage(prompt)],\n      instance.memory.messages.filter((msg) => msg.role === Role.USER),\n    )) {\n      expect(template.render({ input: a.text, meta: undefined })).toStrictEqual(b.text);\n    }\n  });\n});\n"]}