UNPKG

@langchain/langgraph

Version:

LangGraph

88 lines (86 loc) 3.36 kB
const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs'); const require_config = require('./pregel/utils/config.cjs'); const __langchain_core_singletons = require_rolldown_runtime.__toESM(require("@langchain/core/singletons")); const __langchain_core_runnables = require_rolldown_runtime.__toESM(require("@langchain/core/runnables")); //#region src/utils.ts var RunnableCallable = class extends __langchain_core_runnables.Runnable { lc_namespace = ["langgraph"]; func; tags; config; trace = true; recurse = true; constructor(fields) { super(); this.name = fields.name ?? fields.func.name; this.func = fields.func; this.config = fields.tags ? { tags: fields.tags } : void 0; this.trace = fields.trace ?? this.trace; this.recurse = fields.recurse ?? this.recurse; } async _tracedInvoke(input, config, runManager) { return new Promise((resolve, reject) => { const childConfig = (0, __langchain_core_runnables.patchConfig)(config, { callbacks: runManager?.getChild() }); __langchain_core_singletons.AsyncLocalStorageProviderSingleton.runWithConfig(childConfig, async () => { try { const output = await this.func(input, childConfig); resolve(output); } catch (e) { reject(e); } }); }); } async invoke(input, options) { let returnValue; const config = require_config.ensureLangGraphConfig(options); const mergedConfig = (0, __langchain_core_runnables.mergeConfigs)(this.config, config); if (this.trace) returnValue = await this._callWithConfig(this._tracedInvoke, input, mergedConfig); else returnValue = await __langchain_core_singletons.AsyncLocalStorageProviderSingleton.runWithConfig(mergedConfig, async () => this.func(input, mergedConfig)); if (__langchain_core_runnables.Runnable.isRunnable(returnValue) && this.recurse) return await __langchain_core_singletons.AsyncLocalStorageProviderSingleton.runWithConfig(mergedConfig, async () => returnValue.invoke(input, mergedConfig)); return returnValue; } }; function* prefixGenerator(generator, prefix) { if (prefix === void 0) yield* generator; else for (const value of generator) yield [prefix, value]; } async function gatherIterator(i) { const out = []; for await (const item of await i) out.push(item); return out; } function gatherIteratorSync(i) { const out = []; for (const item of i) out.push(item); return out; } function patchConfigurable(config, patch) { if (!config) return { configurable: patch }; else if (!("configurable" in config)) return { ...config, configurable: patch }; else return { ...config, configurable: { ...config.configurable, ...patch } }; } function isAsyncGeneratorFunction(val) { return val != null && typeof val === "function" && val instanceof Object.getPrototypeOf(async function* () {}).constructor; } function isGeneratorFunction(val) { return val != null && typeof val === "function" && val instanceof Object.getPrototypeOf(function* () {}).constructor; } //#endregion exports.RunnableCallable = RunnableCallable; exports.gatherIterator = gatherIterator; exports.gatherIteratorSync = gatherIteratorSync; exports.isAsyncGeneratorFunction = isAsyncGeneratorFunction; exports.isGeneratorFunction = isGeneratorFunction; exports.patchConfigurable = patchConfigurable; exports.prefixGenerator = prefixGenerator; //# sourceMappingURL=utils.cjs.map