{"version":3,"file":"config.cjs","names":["empty: LangGraphRunnableConfig","implicitConfig: RunnableConfig","AsyncLocalStorageProviderSingleton","runConfig: LangGraphRunnableConfig","CONFIG_KEY_SCRATCHPAD","CHECKPOINT_NAMESPACE_SEPARATOR","CHECKPOINT_NAMESPACE_END"],"sources":["../../../src/pregel/utils/config.ts"],"sourcesContent":["import { RunnableConfig } from \"@langchain/core/runnables\";\nimport { AsyncLocalStorageProviderSingleton } from \"@langchain/core/singletons\";\nimport { BaseStore } from \"@langchain/langgraph-checkpoint\";\nimport { LangGraphRunnableConfig } from \"../runnable_types.js\";\nimport {\n  CHECKPOINT_NAMESPACE_END,\n  CHECKPOINT_NAMESPACE_SEPARATOR,\n  CONFIG_KEY_SCRATCHPAD,\n} from \"../../constants.js\";\n\nconst COPIABLE_KEYS = [\"tags\", \"metadata\", \"callbacks\", \"configurable\"];\n\nconst CONFIG_KEYS = [\n  \"tags\",\n  \"metadata\",\n  \"callbacks\",\n  \"runName\",\n  \"maxConcurrency\",\n  \"recursionLimit\",\n  \"configurable\",\n  \"runId\",\n  \"outputKeys\",\n  \"streamMode\",\n  \"store\",\n  \"writer\",\n  \"interrupt\",\n  \"context\",\n  \"interruptBefore\",\n  \"interruptAfter\",\n  \"checkpointDuring\",\n  \"durability\",\n  \"signal\",\n];\n\nconst DEFAULT_RECURSION_LIMIT = 25;\n\nexport function ensureLangGraphConfig(\n  ...configs: (LangGraphRunnableConfig | undefined)[]\n): RunnableConfig {\n  const empty: LangGraphRunnableConfig = {\n    tags: [],\n    metadata: {},\n    callbacks: undefined,\n    recursionLimit: DEFAULT_RECURSION_LIMIT,\n    configurable: {},\n  };\n\n  const implicitConfig: RunnableConfig =\n    AsyncLocalStorageProviderSingleton.getRunnableConfig();\n  if (implicitConfig !== undefined) {\n    for (const [k, v] of Object.entries(implicitConfig)) {\n      if (v !== undefined) {\n        if (COPIABLE_KEYS.includes(k)) {\n          let copiedValue;\n          if (Array.isArray(v)) {\n            copiedValue = [...v];\n          } else if (typeof v === \"object\") {\n            if (\n              k === \"callbacks\" &&\n              \"copy\" in v &&\n              typeof v.copy === \"function\"\n            ) {\n              copiedValue = v.copy();\n            } else {\n              copiedValue = { ...v };\n            }\n          } else {\n            copiedValue = v;\n          }\n          empty[k as keyof RunnableConfig] = copiedValue;\n        } else {\n          empty[k as keyof RunnableConfig] = v;\n        }\n      }\n    }\n  }\n\n  for (const config of configs) {\n    if (config === undefined) {\n      continue;\n    }\n\n    for (const [k, v] of Object.entries(config)) {\n      if (v !== undefined && CONFIG_KEYS.includes(k)) {\n        empty[k as keyof LangGraphRunnableConfig] = v;\n      }\n    }\n  }\n\n  for (const [key, value] of Object.entries(empty.configurable!)) {\n    empty.metadata = empty.metadata ?? {};\n    if (\n      !key.startsWith(\"__\") &&\n      (typeof value === \"string\" ||\n        typeof value === \"number\" ||\n        typeof value === \"boolean\") &&\n      !(key in empty.metadata!)\n    ) {\n      empty.metadata[key] = value;\n    }\n  }\n\n  return empty;\n}\n\n/**\n * A helper utility function that returns the {@link BaseStore} that was set when the graph was initialized\n *\n * @returns a reference to the {@link BaseStore} that was set when the graph was initialized\n */\nexport function getStore(\n  config?: LangGraphRunnableConfig\n): BaseStore | undefined {\n  const runConfig: LangGraphRunnableConfig =\n    config ?? AsyncLocalStorageProviderSingleton.getRunnableConfig();\n\n  if (runConfig === undefined) {\n    throw new Error(\n      [\n        \"Config not retrievable. This is likely because you are running in an environment without support for AsyncLocalStorage.\",\n        \"If you're running `getStore` in such environment, pass the `config` from the node function directly.\",\n      ].join(\"\\n\")\n    );\n  }\n\n  return runConfig?.store;\n}\n\n/**\n * A helper utility function that returns the {@link LangGraphRunnableConfig#writer} if \"custom\" stream mode is enabled, otherwise undefined.\n *\n * @returns a reference to the {@link LangGraphRunnableConfig#writer} if \"custom\" stream mode is enabled, otherwise undefined\n */\nexport function getWriter(\n  config?: LangGraphRunnableConfig\n): ((chunk: unknown) => void) | undefined {\n  const runConfig: LangGraphRunnableConfig =\n    config ?? AsyncLocalStorageProviderSingleton.getRunnableConfig();\n\n  if (runConfig === undefined) {\n    throw new Error(\n      [\n        \"Config not retrievable. This is likely because you are running in an environment without support for AsyncLocalStorage.\",\n        \"If you're running `getWriter` in such environment, pass the `config` from the node function directly.\",\n      ].join(\"\\n\")\n    );\n  }\n\n  return runConfig?.writer || runConfig?.configurable?.writer;\n}\n\n/**\n * A helper utility function that returns the {@link LangGraphRunnableConfig} that was set when the graph was initialized.\n *\n * Note: This only works when running in an environment that supports node:async_hooks and AsyncLocalStorage. If you're running this in a\n * web environment, access the LangGraphRunnableConfig from the node function directly.\n *\n * @returns the {@link LangGraphRunnableConfig} that was set when the graph was initialized\n */\nexport function getConfig(): LangGraphRunnableConfig {\n  return AsyncLocalStorageProviderSingleton.getRunnableConfig();\n}\n\n/**\n * A helper utility function that returns the input for the currently executing task\n *\n * @returns the input for the currently executing task\n */\nexport function getCurrentTaskInput<T = unknown>(\n  config?: LangGraphRunnableConfig\n): T {\n  const runConfig: LangGraphRunnableConfig =\n    config ?? AsyncLocalStorageProviderSingleton.getRunnableConfig();\n\n  if (runConfig === undefined) {\n    throw new Error(\n      [\n        \"Config not retrievable. This is likely because you are running in an environment without support for AsyncLocalStorage.\",\n        \"If you're running `getCurrentTaskInput` in such environment, pass the `config` from the node function directly.\",\n      ].join(\"\\n\")\n    );\n  }\n\n  if (\n    runConfig.configurable?.[CONFIG_KEY_SCRATCHPAD]?.currentTaskInput ===\n    undefined\n  ) {\n    throw new Error(\"BUG: internal scratchpad not initialized.\");\n  }\n\n  return runConfig!.configurable![CONFIG_KEY_SCRATCHPAD]!.currentTaskInput as T;\n}\n\nexport function recastCheckpointNamespace(namespace: string): string {\n  return namespace\n    .split(CHECKPOINT_NAMESPACE_SEPARATOR)\n    .filter((part) => !part.match(/^\\d+$/))\n    .map((part) => part.split(CHECKPOINT_NAMESPACE_END)[0])\n    .join(CHECKPOINT_NAMESPACE_SEPARATOR);\n}\n\nexport function getParentCheckpointNamespace(namespace: string): string {\n  const parts = namespace.split(CHECKPOINT_NAMESPACE_SEPARATOR);\n  while (parts.length > 1 && parts[parts.length - 1].match(/^\\d+$/)) {\n    parts.pop();\n  }\n  return parts.slice(0, -1).join(CHECKPOINT_NAMESPACE_SEPARATOR);\n}\n"],"mappings":";;;;;AAUA,MAAM,gBAAgB;CAAC;CAAQ;CAAY;CAAa;;AAExD,MAAM,cAAc;CAClB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAGF,MAAM,0BAA0B;AAEhC,SAAgB,sBACd,GAAG,SACa;CAChB,MAAMA,QAAiC;EACrC,MAAM;EACN,UAAU;EACV,WAAW;EACX,gBAAgB;EAChB,cAAc;;CAGhB,MAAMC,iBACJC,+DAAmC;AACrC,KAAI,mBAAmB,QACrB;OAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,gBAClC,KAAI,MAAM,OACR,KAAI,cAAc,SAAS,IAAI;GAC7B,IAAI;AACJ,OAAI,MAAM,QAAQ,GAChB,eAAc,CAAC,GAAG;YACT,OAAO,MAAM,SACtB,KACE,MAAM,eACN,UAAU,KACV,OAAO,EAAE,SAAS,WAElB,eAAc,EAAE;OAEhB,eAAc,EAAE,GAAG;OAGrB,eAAc;AAEhB,SAAM,KAA6B;QAEnC,OAAM,KAA6B;;AAM3C,MAAK,MAAM,UAAU,SAAS;AAC5B,MAAI,WAAW,OACb;AAGF,OAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,QAClC,KAAI,MAAM,UAAa,YAAY,SAAS,GAC1C,OAAM,KAAsC;;AAKlD,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,eAAgB;AAC9D,QAAM,WAAW,MAAM,YAAY;AACnC,MACE,CAAC,IAAI,WAAW,UACf,OAAO,UAAU,YAChB,OAAO,UAAU,YACjB,OAAO,UAAU,cACnB,EAAE,OAAO,MAAM,UAEf,OAAM,SAAS,OAAO;;AAI1B,QAAO;;;;;;;AAQT,SAAgB,SACd,QACuB;CACvB,MAAMC,YACJ,UAAUD,+DAAmC;AAE/C,KAAI,cAAc,OAChB,OAAM,IAAI,MACR,CACE,2HACA,wGACA,KAAK;AAIX,QAAO,WAAW;;;;;;;AAQpB,SAAgB,UACd,QACwC;CACxC,MAAMC,YACJ,UAAUD,+DAAmC;AAE/C,KAAI,cAAc,OAChB,OAAM,IAAI,MACR,CACE,2HACA,yGACA,KAAK;AAIX,QAAO,WAAW,UAAU,WAAW,cAAc;;;;;;;;;;AAWvD,SAAgB,YAAqC;AACnD,QAAOA,+DAAmC;;;;;;;AAQ5C,SAAgB,oBACd,QACG;CACH,MAAMC,YACJ,UAAUD,+DAAmC;AAE/C,KAAI,cAAc,OAChB,OAAM,IAAI,MACR,CACE,2HACA,mHACA,KAAK;AAIX,KACE,UAAU,eAAeE,0CAAwB,qBACjD,OAEA,OAAM,IAAI,MAAM;AAGlB,QAAO,UAAW,aAAcA,yCAAwB;;AAG1D,SAAgB,0BAA0B,WAA2B;AACnE,QAAO,UACJ,MAAMC,kDACN,QAAQ,SAAS,CAAC,KAAK,MAAM,UAC7B,KAAK,SAAS,KAAK,MAAMC,4CAA0B,IACnD,KAAKD;;AAGV,SAAgB,6BAA6B,WAA2B;CACtE,MAAM,QAAQ,UAAU,MAAMA;AAC9B,QAAO,MAAM,SAAS,KAAK,MAAM,MAAM,SAAS,GAAG,MAAM,SACvD,OAAM;AAER,QAAO,MAAM,MAAM,GAAG,IAAI,KAAKA"}