{"version":3,"sources":["../../../src/agents/bee/agent.ts"],"names":["BeeAgent","BaseAgent","emitter","runner","constructor","input","Emitter","root","child","namespace","creator","duplicate","tools","find","a","i","arr","b","j","name","toUpperCase","ValueError","modelId","llm","toLowerCase","tag","GraniteRunner","DeepThinkRunner","includes","DefaultRunner","register","memory","meta","slice","description","length","extraDescription","map","tool","join","_run","options","run","console","log","execution","maxRetriesPerStep","totalMaxRetries","maxIterations","init","finalMessage","state","signal","createIteration","tool_name","tool_input","output","success","add","BaseMessage","of","role","Role","ASSISTANT","text","templates","assistant","render","thought","filter","R","isTruthy","toolName","toolInput","call","JSON","stringify","toolOutput","finalAnswer","final_answer","assign","tool_output","key","emit","data","update","value","parsedValue","createdAt","Date","iterations","prompt","USER","result","createSnapshot"],"mappings":"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","file":"agent.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseAgent } from \"@/agents/base.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { ChatLLM, ChatLLMOutput } from \"@/llms/chat.js\";\nimport { BaseMessage, Role } from \"@/llms/primitives/message.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n  BeeAgentExecutionConfig,\n  BeeAgentTemplates,\n  BeeCallbacks,\n  BeeRunInput,\n  BeeRunOptions,\n  BeeRunOutput,\n} from \"@/agents/bee/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { assign } from \"@/internals/helpers/object.js\";\nimport * as R from \"remeda\";\nimport { BaseRunner } from \"@/agents/bee/runners/base.js\";\nimport { GraniteRunner } from \"@/agents/bee/runners/granite/runner.js\";\nimport { DeepThinkRunner } from \"@/agents/bee/runners/deep-think/runner.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { DefaultRunner } from \"@/agents/bee/runners/default/runner.js\";\n\nexport type BeeTemplateFactory<K extends keyof BeeAgentTemplates> = (\n  template: BeeAgentTemplates[K],\n) => BeeAgentTemplates[K];\n\nexport interface BeeInput {\n  llm: ChatLLM<ChatLLMOutput>;\n  tools: AnyTool[];\n  memory: BaseMemory;\n  meta?: Omit<AgentMeta, \"tools\">;\n  templates?: Partial<{\n    [K in keyof BeeAgentTemplates]: BeeAgentTemplates[K] | BeeTemplateFactory<K>;\n  }>;\n  execution?: BeeAgentExecutionConfig;\n}\n\nexport class BeeAgent extends BaseAgent<BeeRunInput, BeeRunOutput, BeeRunOptions> {\n  public readonly emitter = Emitter.root.child<BeeCallbacks>({\n    namespace: [\"agent\", \"bee\"],\n    creator: this,\n  });\n\n  protected runner: new (...args: ConstructorParameters<typeof BaseRunner>) => BaseRunner;\n\n  constructor(protected readonly input: BeeInput) {\n    super();\n\n    const duplicate = input.tools.find((a, i, arr) =>\n      arr.find((b, j) => i !== j && a.name.toUpperCase() === b.name.toUpperCase()),\n    );\n    if (duplicate) {\n      throw new ValueError(\n        `Agent's tools must all have different names. Conflicting tool: ${duplicate.name}.`,\n      );\n    }\n\n    const modelId = this.input.llm.modelId.toLowerCase();\n    this.runner =\n      [\n        { tag: \"granite\", runner: GraniteRunner },\n        { tag: \"deepseek-r1\", runner: DeepThinkRunner },\n      ].find(({ tag }) => modelId.includes(tag))?.runner ?? DefaultRunner;\n  }\n\n  static {\n    this.register();\n  }\n\n  set memory(memory: BaseMemory) {\n    this.input.memory = memory;\n  }\n\n  get memory() {\n    return this.input.memory;\n  }\n\n  get meta(): AgentMeta {\n    const tools = this.input.tools.slice();\n\n    if (this.input.meta) {\n      return { ...this.input.meta, tools };\n    }\n\n    return {\n      name: \"Bee\",\n      tools,\n      description:\n        \"The Bee framework demonstrates its ability to auto-correct and adapt in real-time, improving the overall reliability and resilience of the system.\",\n      ...(tools.length > 0 && {\n        extraDescription: [\n          `Tools that I can use to accomplish given task.`,\n          ...tools.map((tool) => `Tool '${tool.name}': ${tool.description}.`),\n        ].join(\"\\n\"),\n      }),\n    };\n  }\n\n  protected async _run(\n    input: BeeRunInput,\n    options: BeeRunOptions = {},\n    run: GetRunContext<typeof this>,\n  ): Promise<BeeRunOutput> {\n    console.log('Starting BeeAgent._run with input:', input);\n    console.log('Runner options:', options);\n    \n    const runner = new this.runner(\n      this.input,\n      {\n        ...options,\n        execution: this.input.execution ??\n          options?.execution ?? {\n            maxRetriesPerStep: 3,\n            totalMaxRetries: 20,\n            maxIterations: 10,\n          },\n      },\n      run,\n    );\n    console.log('Created runner instance:', runner.constructor.name);\n    \n    await runner.init(input);\n    console.log('Runner initialized');\n\n    let finalMessage: BaseMessage | undefined;\n    while (!finalMessage) {\n      console.log('Starting new iteration');\n      const { state, meta, emitter, signal } = await runner.createIteration();\n      console.log('Iteration state:', state);\n      console.log('Iteration meta:', meta);\n\n      if (state.tool_name && state.tool_input) {\n        console.log('Tool execution requested:', {\n          name: state.tool_name,\n          input: state.tool_input\n        });\n        const { output, success } = await runner.tool({\n          state,\n          emitter,\n          meta,\n          signal,\n        });\n        console.log('Tool execution result:', output);\n        await runner.memory.add(\n          BaseMessage.of({\n            role: Role.ASSISTANT,\n            text: runner.templates.assistant.render({\n              thought: [state.thought].filter(R.isTruthy),\n              toolName: [state.tool_name].filter(R.isTruthy),\n              toolInput: [state.tool_input].filter(R.isTruthy).map((call) => JSON.stringify(call)),\n              toolOutput: [output],\n              finalAnswer: [state.final_answer].filter(R.isTruthy),\n            }),\n            meta: { success },\n          }),\n        );\n        assign(state, { tool_output: output });\n\n        for (const key of [\"partialUpdate\", \"update\"] as const) {\n          await emitter.emit(key, {\n            data: state,\n            update: { key: \"tool_output\", value: output, parsedValue: output },\n            meta: { success, ...meta },\n            memory: runner.memory,\n          });\n        }\n      }\n      if (state.final_answer) {\n        finalMessage = BaseMessage.of({\n          role: Role.ASSISTANT,\n          text: state.final_answer,\n          meta: {\n            createdAt: new Date(),\n          },\n        });\n        console.log('Final answer generated:', finalMessage);\n        await runner.memory.add(finalMessage);\n        await emitter.emit(\"success\", {\n          data: finalMessage,\n          iterations: runner.iterations,\n          memory: runner.memory,\n          meta,\n        });\n      }\n    }\n\n    if (input.prompt !== null) {\n      await this.input.memory.add(\n        BaseMessage.of({\n          role: Role.USER,\n          text: input.prompt,\n          meta: {\n            createdAt: run.createdAt,\n          },\n        }),\n      );\n    }\n\n    await this.input.memory.add(finalMessage);\n    console.log('Run completed with result:', finalMessage);\n    return { result: finalMessage, iterations: runner.iterations, memory: runner.memory };\n  }\n\n  createSnapshot() {\n    return {\n      ...super.createSnapshot(),\n      input: this.input,\n      emitter: this.emitter,\n      runner: this.runner,\n    };\n  }\n}\n"]}