{"version":3,"file":"withAgentName.cjs","names":["_addInlineAgentName","_removeInlineAgentName","RunnableSequence","RunnableLambda"],"sources":["../../src/agents/withAgentName.ts"],"sourcesContent":["import { BaseMessage, BaseMessageLike } from \"@langchain/core/messages\";\nimport {\n  Runnable,\n  RunnableLambda,\n  RunnableSequence,\n  type RunnableConfig,\n} from \"@langchain/core/runnables\";\n\nimport {\n  AgentNameMode,\n  _addInlineAgentName,\n  _removeInlineAgentName,\n} from \"./utils.js\";\nimport { type AgentLanguageModelLike as LanguageModelLike } from \"./model.js\";\n\n/**\n * Attach formatted agent names to the messages passed to and from a language model.\n *\n * This is useful for making a message history with multiple agents more coherent.\n *\n * NOTE: agent name is consumed from the message.name field.\n * If you're using an agent built with createAgent, name is automatically set.\n * If you're building a custom agent, make sure to set the name on the AI message returned by the LLM.\n *\n * @param model - Language model to add agent name formatting to\n * @param agentNameMode - How to expose the agent name to the LLM\n *   - \"inline\": Add the agent name directly into the content field of the AI message using XML-style tags.\n *     Example: \"How can I help you\" -> \"<name>agent_name</name><content>How can I help you?</content>\".\n */\nexport function withAgentName(\n  model:\n    | LanguageModelLike\n    | Runnable<unknown, unknown, RunnableConfig<Record<string, unknown>>>,\n  agentNameMode: AgentNameMode\n): LanguageModelLike {\n  let processInputMessage: (message: BaseMessageLike) => BaseMessageLike;\n  let processOutputMessage: (message: BaseMessage) => BaseMessage;\n\n  if (agentNameMode === \"inline\") {\n    processInputMessage = _addInlineAgentName;\n    processOutputMessage = _removeInlineAgentName;\n  } else {\n    throw new Error(\n      `Invalid agent name mode: ${agentNameMode}. Needs to be one of: \"inline\"`\n    );\n  }\n\n  function processInputMessages(\n    messages: BaseMessageLike[]\n  ): BaseMessageLike[] {\n    return messages.map(processInputMessage);\n  }\n\n  return RunnableSequence.from([\n    RunnableLambda.from(processInputMessages),\n    model,\n    RunnableLambda.from(processOutputMessage),\n  ]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA6BA,SAAgB,cACd,OAGA,eACmB;CACnB,IAAI;CACJ,IAAI;AAEJ,KAAI,kBAAkB,UAAU;AAC9B,wBAAsBA,cAAAA;AACtB,yBAAuBC,cAAAA;OAEvB,OAAM,IAAI,MACR,4BAA4B,cAAc,gCAC3C;CAGH,SAAS,qBACP,UACmB;AACnB,SAAO,SAAS,IAAI,oBAAoB;;AAG1C,QAAOC,0BAAAA,iBAAiB,KAAK;EAC3BC,0BAAAA,eAAe,KAAK,qBAAqB;EACzC;EACAA,0BAAAA,eAAe,KAAK,qBAAqB;EAC1C,CAAC"}