{"version":3,"file":"RunnableCallable.cjs","names":["Runnable","#state","AsyncLocalStorageProviderSingleton"],"sources":["../../src/agents/RunnableCallable.ts"],"sourcesContent":["import {\n  mergeConfigs,\n  Runnable,\n  RunnableConfig,\n} from \"@langchain/core/runnables\";\nimport { AsyncLocalStorageProviderSingleton } from \"@langchain/core/singletons\";\n\nexport interface RunnableCallableArgs<I, O> {\n  /**\n   * The name of the runnable.\n   */\n  name?: string;\n  /**\n   * The function to call.\n   */\n  func: (...args: I[]) => O | Promise<O>;\n  /**\n   * The tags to add to the runnable.\n   */\n  tags?: string[];\n  /**\n   * Whether to recurse the runnable.\n   */\n  recurse?: boolean;\n}\n\nexport class RunnableCallable<I = unknown, O = unknown> extends Runnable<I, O> {\n  lc_namespace: string[] = [\"langgraph\"];\n\n  func: RunnableCallableArgs<I, O>[\"func\"];\n\n  tags?: RunnableCallableArgs<I, O>[\"tags\"];\n\n  config?: RunnableConfig;\n\n  trace = true;\n\n  recurse = true;\n\n  #state: Awaited<O>;\n\n  constructor(fields: RunnableCallableArgs<I, O>) {\n    super();\n    this.name = fields.name ?? fields.func.name;\n    this.func = fields.func;\n    this.config = fields.tags ? { tags: fields.tags } : undefined;\n    this.recurse = fields.recurse ?? this.recurse;\n  }\n\n  getState(): Awaited<O> {\n    return this.#state;\n  }\n\n  /**\n   * This allows us to set the state of the runnable, e.g. for model and middleware nodes.\n   * @internal\n   */\n  setState(state: Awaited<O>) {\n    this.#state = {\n      ...this.#state,\n      ...state,\n    };\n  }\n\n  async invoke(\n    input: I,\n    options?: Partial<RunnableConfig> | undefined\n  ): Promise<O> {\n    const mergedConfig = mergeConfigs(this.config, options);\n\n    const returnValue = await AsyncLocalStorageProviderSingleton.runWithConfig(\n      mergedConfig,\n      async () => this.func(input, mergedConfig as I)\n    );\n\n    if (Runnable.isRunnable(returnValue) && this.recurse) {\n      return await AsyncLocalStorageProviderSingleton.runWithConfig(\n        mergedConfig,\n        async () => (returnValue as Runnable<I, O>).invoke(input, mergedConfig)\n      );\n    }\n\n    this.#state = returnValue;\n    return returnValue;\n  }\n}\n"],"mappings":";;;;AA0BA,IAAa,mBAAb,cAAgEA,0BAAAA,SAAe;CAC7E,eAAyB,CAAC,YAAY;CAEtC;CAEA;CAEA;CAEA,QAAQ;CAER,UAAU;CAEV;CAEA,YAAY,QAAoC;AAC9C,SAAO;AACP,OAAK,OAAO,OAAO,QAAQ,OAAO,KAAK;AACvC,OAAK,OAAO,OAAO;AACnB,OAAK,SAAS,OAAO,OAAO,EAAE,MAAM,OAAO,MAAM,GAAG,KAAA;AACpD,OAAK,UAAU,OAAO,WAAW,KAAK;;CAGxC,WAAuB;AACrB,SAAO,MAAA;;;;;;CAOT,SAAS,OAAmB;AAC1B,QAAA,QAAc;GACZ,GAAG,MAAA;GACH,GAAG;GACJ;;CAGH,MAAM,OACJ,OACA,SACY;EACZ,MAAM,gBAAA,GAAA,0BAAA,cAA4B,KAAK,QAAQ,QAAQ;EAEvD,MAAM,cAAc,MAAME,2BAAAA,mCAAmC,cAC3D,cACA,YAAY,KAAK,KAAK,OAAO,aAAkB,CAChD;AAED,MAAIF,0BAAAA,SAAS,WAAW,YAAY,IAAI,KAAK,QAC3C,QAAO,MAAME,2BAAAA,mCAAmC,cAC9C,cACA,YAAa,YAA+B,OAAO,OAAO,aAAa,CACxE;AAGH,QAAA,QAAc;AACd,SAAO"}