{"version":3,"sources":["../../../../../src/agents/react/runners/default/runner.ts"],"names":["DefaultRunner","BaseRunner","useNativeToolCalling","defaultTemplates","system","ReActAgentSystemPrompt","assistant","ReActAgentAssistantPrompt","user","ReActAgentUserPrompt","schemaError","ReActAgentSchemaErrorPrompt","toolNotFoundError","ReActAgentToolNotFoundPrompt","toolError","ReActAgentToolErrorPrompt","toolInputError","ReActAgentToolInputErrorPrompt","userEmpty","ReActAgentUserEmptyPrompt","toolNoResultError","ReActAgentToolNoResultsPrompt","register","llm","signal","meta","emitter","tempMessageKey","Retryable","onRetry","emit","onError","error","failedAttemptsCounter","use","LinePrefixParserError","reason","Reason","NoDataReceived","memory","add","AssistantMessage","UserMessage","templates","render","executor","tools","input","slice","parser","createParser","raw","create","messages","undefined","abortSignal","stream","observe","llmEmitter","on","value","key","field","isDone","data","finalState","update","parsedValue","success","delta","callbacks","abort","getTextContent","partialState","tool_output","end","deleteMany","filter","msg","getProp","state","config","maxRetries","options","execution","maxRetriesPerStep","get","tool","find","name","trim","toUpperCase","tool_name","AgentError","context","output","iteration","tool_input","FrameworkError","ensure","toolOptions","shallowCopy","toolOutput","run","Tool","contextKeys","Memory","result","isEmpty","ToolInputValidationError","toString","ToolError","explain","renderers","self","message","prompt","variables","Promise","all","map","description","replaceAll","replace","concat","schema","JSON","stringify","getInputJsonSchema","ignoredKeys","Set","has","SystemMessage","instructions","createdAt","Date","toISOString","initMemory","history","prevConversation","isTruthy","role","Role","USER","text","TokenMemory","capacityThreshold","syncThreshold","handlers","removalSelector","curMessages","prevConversationMessage","includes","last","lastMessage","length","ASSISTANT","addMany","LinePrefixParser","thought","prefix","next","isStart","ZodParserField","z","string","min","pipeline","enum","isEnd","JSONParserField","object","passthrough","base","matchPair","final_answer","waitForStartNode","endOnRepeat","fallback","stash","enumerable"],"mappings":"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","file":"runner.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n  BaseRunner,\n  ReActAgentRunnerLLMInput,\n  ReActAgentRunnerToolInput,\n} from \"@/agents/react/runners/base.js\";\nimport type {\n  ReActAgentRunIteration,\n  ReActAgentParserInput,\n  ReActAgentRunInput,\n} from \"@/agents/react/types.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport { AgentError } from \"@/agents/base.js\";\nimport {\n  ReActAgentAssistantPrompt,\n  ReActAgentSchemaErrorPrompt,\n  ReActAgentSystemPrompt,\n  ReActAgentToolErrorPrompt,\n  ReActAgentToolInputErrorPrompt,\n  ReActAgentToolNoResultsPrompt,\n  ReActAgentToolNotFoundPrompt,\n  ReActAgentUserEmptyPrompt,\n  ReActAgentUserPrompt,\n} from \"@/agents/react/prompts.js\";\nimport { AnyTool, Tool, ToolError, ToolInputValidationError, ToolOutput } from \"@/tools/base.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { isTruthy, last } from \"remeda\";\nimport { LinePrefixParser, LinePrefixParserError } from \"@/parsers/linePrefix.js\";\nimport { JSONParserField, ZodParserField } from \"@/parsers/field.js\";\nimport { z } from \"zod\";\nimport { AssistantMessage, Role, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport { TokenMemory } from \"@/memory/tokenMemory.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport class DefaultRunner extends BaseRunner {\n  protected useNativeToolCalling = false;\n\n  @Cache({ enumerable: false })\n  public get defaultTemplates() {\n    return {\n      system: ReActAgentSystemPrompt,\n      assistant: ReActAgentAssistantPrompt,\n      user: ReActAgentUserPrompt,\n      schemaError: ReActAgentSchemaErrorPrompt,\n      toolNotFoundError: ReActAgentToolNotFoundPrompt,\n      toolError: ReActAgentToolErrorPrompt,\n      toolInputError: ReActAgentToolInputErrorPrompt,\n      userEmpty: ReActAgentUserEmptyPrompt,\n      toolNoResultError: ReActAgentToolNoResultsPrompt,\n    };\n  }\n\n  static {\n    this.register();\n  }\n\n  async llm({ signal, meta, emitter }: ReActAgentRunnerLLMInput): Promise<ReActAgentRunIteration> {\n    const tempMessageKey = \"tempMessage\" as const;\n\n    return new Retryable({\n      onRetry: () => emitter.emit(\"retry\", { meta }),\n      onError: async (error) => {\n        await emitter.emit(\"error\", { error, meta });\n        this.failedAttemptsCounter.use(error);\n\n        if (error instanceof LinePrefixParserError) {\n          // Prevent hanging on EOT\n          if (error.reason === LinePrefixParserError.Reason.NoDataReceived) {\n            await this.memory.add(\n              new AssistantMessage(\"\\n\", {\n                [tempMessageKey]: true,\n              }),\n            );\n          } else {\n            await this.memory.add(\n              new UserMessage(this.templates.schemaError.render({}), {\n                [tempMessageKey]: true,\n              }),\n            );\n          }\n        }\n      },\n      executor: async () => {\n        const tools = this.input.tools.slice();\n        await emitter.emit(\"start\", { meta, tools, memory: this.memory });\n\n        const { parser } = this.createParser(tools);\n        const raw = await this.input.llm\n          .create({\n            messages: this.memory.messages.slice(),\n            tools: this.useNativeToolCalling ? tools : undefined,\n            abortSignal: signal,\n            stream: this.input.stream !== false,\n          })\n          .observe((llmEmitter) => {\n            parser.emitter.on(\"update\", async ({ value, key, field }) => {\n              if (key === \"tool_output\" && parser.isDone) {\n                return;\n              }\n              await emitter.emit(\"update\", {\n                data: parser.finalState,\n                update: { key, value: field.raw, parsedValue: value },\n                meta: { success: true, ...meta },\n                memory: this.memory,\n              });\n            });\n            parser.emitter.on(\"partialUpdate\", async ({ key, delta, value }) => {\n              await emitter.emit(\"partialUpdate\", {\n                data: parser.finalState,\n                update: { key, value: delta, parsedValue: value },\n                meta: { success: true, ...meta },\n              });\n            });\n\n            llmEmitter.on(\"newToken\", async ({ value, callbacks }) => {\n              if (parser.isDone) {\n                callbacks.abort();\n                return;\n              }\n\n              await parser.add(value.getTextContent());\n              if (parser.partialState.tool_output !== undefined) {\n                callbacks.abort();\n              }\n            });\n          });\n\n        await parser.end();\n        await this.memory.deleteMany(\n          this.memory.messages.filter((msg) => getProp(msg.meta, [tempMessageKey]) === true),\n        );\n\n        return {\n          state: parser.finalState,\n          raw,\n        };\n      },\n      config: {\n        maxRetries: this.options.execution?.maxRetriesPerStep,\n        signal,\n      },\n    }).get();\n  }\n\n  async tool({ state, signal, meta, emitter }: ReActAgentRunnerToolInput) {\n    const tool = this.input.tools.find(\n      (tool) => tool.name.trim().toUpperCase() == state.tool_name?.trim()?.toUpperCase(),\n    );\n    if (!tool) {\n      this.failedAttemptsCounter.use(\n        new AgentError(`Agent was trying to use non-existing tool \"${state.tool_name}\"`, [], {\n          context: { state, meta },\n        }),\n      );\n\n      return {\n        success: false,\n        output: this.templates.toolNotFoundError.render({\n          tools: this.input.tools,\n        }),\n      };\n    }\n\n    return new Retryable({\n      config: {\n        signal,\n        maxRetries: this.options.execution?.maxRetriesPerStep,\n      },\n      onError: async (error) => {\n        await emitter.emit(\"toolError\", {\n          data: {\n            iteration: state,\n            tool,\n            input: state.tool_input,\n            options: this.options,\n            error: FrameworkError.ensure(error),\n          },\n          meta,\n        });\n        this.failedAttemptsCounter.use(error);\n      },\n      executor: async () => {\n        const toolOptions = shallowCopy(this.options);\n\n        try {\n          await emitter.emit(\"toolStart\", {\n            data: {\n              tool,\n              input: state.tool_input,\n              options: toolOptions,\n              iteration: state,\n            },\n            meta,\n          });\n          const toolOutput: ToolOutput = await tool.run(state.tool_input, toolOptions).context({\n            [Tool.contextKeys.Memory]: this.memory,\n          });\n          await emitter.emit(\"toolSuccess\", {\n            data: {\n              tool,\n              input: state.tool_input,\n              options: toolOptions,\n              result: toolOutput,\n              iteration: state,\n            },\n            meta,\n          });\n\n          if (toolOutput.isEmpty()) {\n            return { output: this.templates.toolNoResultError.render({}), success: true };\n          }\n\n          return {\n            success: true,\n            output: toolOutput.getTextContent(),\n          };\n        } catch (error) {\n          await emitter.emit(\"toolError\", {\n            data: {\n              tool,\n              input: state.tool_input,\n              options: toolOptions,\n              error,\n              iteration: state,\n            },\n            meta,\n          });\n\n          if (error instanceof ToolInputValidationError) {\n            this.failedAttemptsCounter.use(error);\n\n            return {\n              success: false,\n              output: this.templates.toolInputError.render({\n                reason: error.toString(),\n              }),\n            };\n          }\n\n          if (error instanceof ToolError) {\n            this.failedAttemptsCounter.use(error);\n\n            return {\n              success: false,\n              output: this.templates.toolError.render({\n                reason: error.explain(),\n              }),\n            };\n          }\n\n          throw error;\n        }\n      },\n    }).get();\n  }\n\n  @Cache({ enumerable: false })\n  protected get renderers() {\n    const self = {\n      user: {\n        message: ({ prompt }: ReActAgentRunInput) =>\n          prompt !== null || this.input.memory.isEmpty()\n            ? new UserMessage(prompt || this.templates.userEmpty.render({}))\n            : undefined,\n      },\n      system: {\n        variables: {\n          tools: async () => {\n            return await Promise.all(\n              this.input.tools.map(async (tool) => ({\n                name: tool.name,\n                description: tool.description.replaceAll(\"\\n\", \".\").replace(/\\.$/, \"\").concat(\".\"),\n                schema: JSON.stringify(\n                  await tool.getInputJsonSchema(),\n                  (() => {\n                    const ignoredKeys = new Set([\"minLength\", \"maxLength\", \"$schema\"]);\n                    return (key, value) => (ignoredKeys.has(key) ? undefined : value);\n                  })(),\n                ),\n              })),\n            );\n          },\n        },\n        message: async () =>\n          new SystemMessage(\n            this.templates.system.render({\n              tools: await self.system.variables.tools(),\n              instructions: undefined,\n              createdAt: new Date().toISOString(),\n            }),\n            {\n              createdAt: new Date(),\n            },\n          ),\n      },\n    };\n    return self;\n  }\n\n  protected async initMemory({ prompt }: ReActAgentRunInput): Promise<BaseMemory> {\n    const { memory: history } = this.input;\n\n    const prevConversation = [...history.messages, this.renderers.user.message({ prompt })]\n      .filter(isTruthy)\n      .map((message) => {\n        if (message.role === Role.USER) {\n          const isEmpty = !message.text.trim();\n          const text = isEmpty\n            ? (this.templates?.userEmpty ?? ReActAgentUserEmptyPrompt).render({})\n            : (this.templates?.user ?? ReActAgentUserPrompt).render({\n                input: message.text,\n                meta: {\n                  ...message?.meta,\n                  createdAt: message?.meta?.createdAt?.toISOString?.(),\n                },\n              });\n\n          return new UserMessage(text, message.meta);\n        }\n        return message;\n      });\n\n    const memory = new TokenMemory({\n      capacityThreshold: 0.85,\n      syncThreshold: 0.5,\n      handlers: {\n        removalSelector(curMessages) {\n          // First we remove messages from the past conversations\n          const prevConversationMessage = curMessages.find((msg) => prevConversation.includes(msg));\n          if (prevConversationMessage && prevConversationMessage !== last(prevConversation)) {\n            return prevConversationMessage;\n          }\n\n          const lastMessage =\n            curMessages.length > 3\n              ? (curMessages.find(\n                  (msg) =>\n                    msg.role === Role.ASSISTANT && getProp(msg, [\"ctx\", \"success\"]) === false,\n                ) ?? curMessages.find((msg) => msg.role === Role.ASSISTANT))\n              : null;\n\n          if (!lastMessage) {\n            throw new AgentError(\"Cannot fit the current conversation into the context window!\");\n          }\n          return lastMessage;\n        },\n      },\n    });\n    await memory.addMany([await this.renderers.system.message(), ...prevConversation]);\n    return memory;\n  }\n\n  protected createParser(tools: AnyTool[]) {\n    const parser = new LinePrefixParser<ReActAgentParserInput>(\n      {\n        thought: {\n          prefix: \"Thought:\",\n          next: [\"tool_name\", \"final_answer\"],\n          isStart: true,\n          field: new ZodParserField(z.string().min(1)),\n        },\n        tool_name: {\n          prefix: \"Function Name:\",\n          next: [\"tool_input\"],\n          field: new ZodParserField(\n            z.pipeline(\n              z.string().trim(),\n              z.enum(tools.map((tool) => tool.name) as [string, ...string[]]),\n            ),\n          ),\n        },\n        tool_input: {\n          prefix: \"Function Input:\",\n          next: [\"tool_output\"],\n          isEnd: true,\n          field: new JSONParserField({\n            schema: z.object({}).passthrough(),\n            base: {},\n            matchPair: [\"{\", \"}\"],\n          }),\n        },\n        tool_output: {\n          prefix: \"Function Output:\",\n          next: [\"final_answer\"],\n          isEnd: true,\n          field: new ZodParserField(z.string()),\n        },\n        final_answer: {\n          prefix: \"Final Answer:\",\n          next: [],\n          isStart: true,\n          isEnd: true,\n          field: new ZodParserField(z.string().min(1)),\n        },\n      },\n      {\n        waitForStartNode: true,\n        endOnRepeat: true,\n        fallback: (stash) =>\n          stash\n            ? [\n                { key: \"thought\", value: \"I now know the final answer.\" },\n                { key: \"final_answer\", value: stash },\n              ]\n            : [],\n      },\n    );\n\n    return {\n      parser,\n    } as const;\n  }\n}\n"]}