UNPKG

@langchain/core

Version:
1 lines 4.23 kB
{"version":3,"file":"index.cjs","names":["getGlobalAsyncLocalStorageInstance","CallbackManager","RunTree","_CONTEXT_VARIABLES_KEY"],"sources":["../../../src/singletons/async_local_storage/index.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport { RunTree } from \"langsmith\";\nimport {\n AsyncLocalStorageInterface,\n getGlobalAsyncLocalStorageInstance,\n setGlobalAsyncLocalStorageInstance,\n _CONTEXT_VARIABLES_KEY,\n} from \"./globals.js\";\nimport { CallbackManager } from \"../../callbacks/manager.js\";\nimport { LangChainTracer } from \"../../tracers/tracer_langchain.js\";\n\nexport class MockAsyncLocalStorage implements AsyncLocalStorageInterface {\n getStore(): any {\n return undefined;\n }\n\n run<T>(_store: any, callback: () => T): T {\n return callback();\n }\n\n enterWith(_store: any) {\n return undefined;\n }\n}\n\nconst mockAsyncLocalStorage = new MockAsyncLocalStorage();\n\nconst LC_CHILD_KEY = Symbol.for(\"lc:child_config\");\n\nclass AsyncLocalStorageProvider {\n getInstance(): AsyncLocalStorageInterface {\n return getGlobalAsyncLocalStorageInstance() ?? mockAsyncLocalStorage;\n }\n\n getRunnableConfig() {\n const storage = this.getInstance();\n // this has the runnable config\n // which means that we should also have an instance of a LangChainTracer\n // with the run map prepopulated\n return storage.getStore()?.extra?.[LC_CHILD_KEY];\n }\n\n runWithConfig<T>(\n config: any,\n callback: () => T,\n avoidCreatingRootRunTree?: boolean\n ): T {\n const callbackManager = CallbackManager._configureSync(\n config?.callbacks,\n undefined,\n config?.tags,\n undefined,\n config?.metadata\n );\n const storage = this.getInstance();\n const previousValue = storage.getStore();\n const parentRunId = callbackManager?.getParentRunId();\n\n const langChainTracer = callbackManager?.handlers?.find(\n (handler) => handler?.name === \"langchain_tracer\"\n ) as LangChainTracer | undefined;\n\n let runTree;\n if (langChainTracer && parentRunId) {\n runTree = langChainTracer.getRunTreeWithTracingConfig(parentRunId);\n } else if (!avoidCreatingRootRunTree) {\n runTree = new RunTree({\n name: \"<runnable_lambda>\",\n tracingEnabled: false,\n });\n }\n\n if (runTree) {\n runTree.extra = { ...runTree.extra, [LC_CHILD_KEY]: config };\n }\n\n if (\n previousValue !== undefined &&\n previousValue[_CONTEXT_VARIABLES_KEY] !== undefined\n ) {\n if (runTree === undefined) {\n runTree = {};\n }\n (runTree as any)[_CONTEXT_VARIABLES_KEY] =\n previousValue[_CONTEXT_VARIABLES_KEY];\n }\n\n return storage.run(runTree, callback);\n }\n\n initializeGlobalInstance(instance: AsyncLocalStorageInterface) {\n if (getGlobalAsyncLocalStorageInstance() === undefined) {\n setGlobalAsyncLocalStorageInstance(instance);\n }\n }\n}\n\nconst AsyncLocalStorageProviderSingleton = new AsyncLocalStorageProvider();\n\nexport { AsyncLocalStorageProviderSingleton, type AsyncLocalStorageInterface };\n"],"mappings":";;;;AAWA,IAAa,wBAAb,MAAyE;CACvE,WAAgB,CAEhB;CAEA,IAAO,QAAa,UAAsB;EACxC,OAAO,SAAS;CAClB;CAEA,UAAU,QAAa,CAEvB;AACF;AAEA,MAAM,wBAAwB,IAAI,sBAAsB;AAExD,MAAM,eAAe,OAAO,IAAI,iBAAiB;AAEjD,IAAM,4BAAN,MAAgC;CAC9B,cAA0C;EACxC,OAAOA,gBAAAA,mCAAmC,KAAK;CACjD;CAEA,oBAAoB;EAKlB,OAJgB,KAAK,YAIR,CAAC,CAAC,SAAS,CAAC,EAAE,QAAQ;CACrC;CAEA,cACE,QACA,UACA,0BACG;EACH,MAAM,kBAAkBC,0BAAAA,gBAAgB,eACtC,QAAQ,WACR,KAAA,GACA,QAAQ,MACR,KAAA,GACA,QAAQ,QACV;EACA,MAAM,UAAU,KAAK,YAAY;EACjC,MAAM,gBAAgB,QAAQ,SAAS;EACvC,MAAM,cAAc,iBAAiB,eAAe;EAEpD,MAAM,kBAAkB,iBAAiB,UAAU,MAChD,YAAY,SAAS,SAAS,kBACjC;EAEA,IAAI;EACJ,IAAI,mBAAmB,aACrB,UAAU,gBAAgB,4BAA4B,WAAW;OAC5D,IAAI,CAAC,0BACV,UAAU,IAAIC,UAAAA,QAAQ;GACpB,MAAM;GACN,gBAAgB;EAClB,CAAC;EAGH,IAAI,SACF,QAAQ,QAAQ;GAAE,GAAG,QAAQ;IAAQ,eAAe;EAAO;EAG7D,IACE,kBAAkB,KAAA,KAClB,cAAcC,gBAAAA,4BAA4B,KAAA,GAC1C;GACA,IAAI,YAAY,KAAA,GACd,UAAU,CAAC;GAEb,QAAiBA,gBAAAA,0BACf,cAAcA,gBAAAA;EAClB;EAEA,OAAO,QAAQ,IAAI,SAAS,QAAQ;CACtC;CAEA,yBAAyB,UAAsC;EAC7D,IAAIH,gBAAAA,mCAAmC,MAAM,KAAA,GAC3C,gBAAA,mCAAmC,QAAQ;CAE/C;AACF;AAEA,MAAM,qCAAqC,IAAI,0BAA0B"}