@langchain/core 1.0.5 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/agents.cjs +1 -0
  3. package/agents.d.cts +1 -0
  4. package/agents.d.ts +1 -0
  5. package/agents.js +1 -0
  6. package/caches.cjs +1 -0
  7. package/caches.d.cts +1 -0
  8. package/caches.d.ts +1 -0
  9. package/caches.js +1 -0
  10. package/callbacks/base.cjs +1 -0
  11. package/callbacks/base.d.cts +1 -0
  12. package/callbacks/base.d.ts +1 -0
  13. package/callbacks/base.js +1 -0
  14. package/callbacks/dispatch/web.cjs +1 -0
  15. package/callbacks/dispatch/web.d.cts +1 -0
  16. package/callbacks/dispatch/web.d.ts +1 -0
  17. package/callbacks/dispatch/web.js +1 -0
  18. package/callbacks/dispatch.cjs +1 -0
  19. package/callbacks/dispatch.d.cts +1 -0
  20. package/callbacks/dispatch.d.ts +1 -0
  21. package/callbacks/dispatch.js +1 -0
  22. package/callbacks/manager.cjs +1 -0
  23. package/callbacks/manager.d.cts +1 -0
  24. package/callbacks/manager.d.ts +1 -0
  25. package/callbacks/manager.js +1 -0
  26. package/callbacks/promises.cjs +1 -0
  27. package/callbacks/promises.d.cts +1 -0
  28. package/callbacks/promises.d.ts +1 -0
  29. package/callbacks/promises.js +1 -0
  30. package/chat_history.cjs +1 -0
  31. package/chat_history.d.cts +1 -0
  32. package/chat_history.d.ts +1 -0
  33. package/chat_history.js +1 -0
  34. package/context.cjs +1 -0
  35. package/context.d.cts +1 -0
  36. package/context.d.ts +1 -0
  37. package/context.js +1 -0
  38. package/dist/caches/{base.cjs → index.cjs} +6 -6
  39. package/dist/caches/index.cjs.map +1 -0
  40. package/dist/caches/{base.d.cts → index.d.cts} +2 -2
  41. package/dist/caches/{base.d.ts → index.d.ts} +2 -2
  42. package/dist/caches/{base.js → index.js} +5 -5
  43. package/dist/caches/index.js.map +1 -0
  44. package/dist/callbacks/dispatch/index.d.ts +1 -0
  45. package/dist/callbacks/dispatch/web.d.ts +1 -0
  46. package/dist/chat_history.d.ts +1 -0
  47. package/dist/language_models/base.cjs +2 -2
  48. package/dist/language_models/base.cjs.map +1 -1
  49. package/dist/language_models/base.d.cts +1 -1
  50. package/dist/language_models/base.d.ts +3 -1
  51. package/dist/language_models/base.js +1 -1
  52. package/dist/language_models/base.js.map +1 -1
  53. package/dist/language_models/chat_models.cjs.map +1 -1
  54. package/dist/language_models/chat_models.d.cts +1 -1
  55. package/dist/language_models/chat_models.d.ts +4 -1
  56. package/dist/language_models/chat_models.js.map +1 -1
  57. package/dist/language_models/llms.cjs.map +1 -1
  58. package/dist/language_models/llms.d.cts +1 -1
  59. package/dist/language_models/llms.d.ts +2 -1
  60. package/dist/language_models/llms.js.map +1 -1
  61. package/dist/load/import_constants.cjs +1 -0
  62. package/dist/load/import_constants.cjs.map +1 -1
  63. package/dist/load/import_constants.js +1 -0
  64. package/dist/load/import_constants.js.map +1 -1
  65. package/dist/load/import_map.cjs +13 -13
  66. package/dist/load/import_map.cjs.map +1 -1
  67. package/dist/load/import_map.js +17 -17
  68. package/dist/load/import_map.js.map +1 -1
  69. package/dist/messages/base.cjs +10 -3
  70. package/dist/messages/base.cjs.map +1 -1
  71. package/dist/messages/base.js +10 -3
  72. package/dist/messages/base.js.map +1 -1
  73. package/dist/messages/message.d.cts +1 -1
  74. package/dist/messages/message.d.ts +1 -1
  75. package/dist/messages/system.cjs +25 -1
  76. package/dist/messages/system.cjs.map +1 -1
  77. package/dist/messages/system.d.cts +6 -0
  78. package/dist/messages/system.d.ts +6 -0
  79. package/dist/messages/system.js +25 -1
  80. package/dist/messages/system.js.map +1 -1
  81. package/dist/messages/transformers.d.cts +2 -1
  82. package/dist/messages/transformers.d.ts +2 -1
  83. package/dist/messages/utils.d.cts +8 -8
  84. package/dist/messages/utils.d.ts +8 -8
  85. package/dist/output_parsers/base.d.ts +3 -0
  86. package/dist/output_parsers/index.cjs +1 -1
  87. package/dist/output_parsers/index.js +1 -1
  88. package/dist/output_parsers/list.d.ts +1 -0
  89. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts +1 -1
  90. package/dist/output_parsers/string.d.ts +1 -0
  91. package/dist/prompts/base.d.ts +1 -0
  92. package/dist/prompts/chat.d.ts +1 -0
  93. package/dist/prompts/few_shot.d.ts +1 -0
  94. package/dist/prompts/image.d.ts +1 -0
  95. package/dist/prompts/prompt.d.ts +1 -0
  96. package/dist/prompts/serde.d.ts +1 -0
  97. package/dist/prompts/structured.d.ts +1 -1
  98. package/dist/prompts/template.d.ts +1 -1
  99. package/dist/retrievers/document_compressors/{base.cjs → index.cjs} +6 -6
  100. package/dist/retrievers/document_compressors/index.cjs.map +1 -0
  101. package/dist/retrievers/document_compressors/{base.d.cts → index.d.cts} +2 -2
  102. package/dist/retrievers/document_compressors/{base.d.ts → index.d.ts} +2 -2
  103. package/dist/retrievers/document_compressors/index.js +17 -0
  104. package/dist/retrievers/document_compressors/index.js.map +1 -0
  105. package/dist/retrievers/index.d.ts +1 -0
  106. package/dist/runnables/base.cjs +2 -2
  107. package/dist/runnables/base.cjs.map +1 -1
  108. package/dist/runnables/base.d.cts +0 -17
  109. package/dist/runnables/base.d.ts +0 -17
  110. package/dist/runnables/base.js +2 -2
  111. package/dist/runnables/base.js.map +1 -1
  112. package/dist/runnables/branch.d.ts +1 -0
  113. package/dist/runnables/config.cjs +5 -3
  114. package/dist/runnables/config.cjs.map +1 -1
  115. package/dist/runnables/config.js +5 -3
  116. package/dist/runnables/config.js.map +1 -1
  117. package/dist/runnables/history.d.ts +2 -0
  118. package/dist/runnables/index.cjs +4 -1
  119. package/dist/runnables/index.cjs.map +1 -1
  120. package/dist/runnables/index.d.cts +2 -1
  121. package/dist/runnables/index.d.ts +2 -1
  122. package/dist/runnables/index.js +4 -2
  123. package/dist/runnables/index.js.map +1 -1
  124. package/dist/runnables/passthrough.d.ts +1 -0
  125. package/dist/runnables/router.d.ts +1 -0
  126. package/dist/tools/index.cjs +1 -1
  127. package/dist/tools/index.cjs.map +1 -1
  128. package/dist/tools/index.d.ts +2 -0
  129. package/dist/tools/index.js +2 -2
  130. package/dist/tools/index.js.map +1 -1
  131. package/dist/tools/types.d.cts +0 -13
  132. package/dist/tools/types.d.ts +2 -13
  133. package/dist/tracers/event_stream.d.ts +1 -0
  134. package/dist/utils/async_caller.cjs +1 -1
  135. package/dist/utils/async_caller.cjs.map +1 -1
  136. package/dist/utils/async_caller.js +1 -1
  137. package/dist/utils/async_caller.js.map +1 -1
  138. package/dist/utils/fast-json-patch/src/core.d.cts +0 -18
  139. package/dist/utils/fast-json-patch/src/core.d.ts +0 -18
  140. package/dist/utils/json_schema.d.cts +0 -5
  141. package/dist/utils/json_schema.d.ts +1 -5
  142. package/dist/utils/signal.d.cts +13 -0
  143. package/dist/utils/signal.d.ts +13 -0
  144. package/dist/utils/testing/chat_models.d.ts +1 -0
  145. package/dist/utils/testing/message_history.d.ts +1 -0
  146. package/dist/utils/types/index.cjs +2 -0
  147. package/dist/utils/types/index.d.cts +2 -2
  148. package/dist/utils/types/index.d.ts +2 -2
  149. package/dist/utils/types/index.js +3 -2
  150. package/dist/utils/types/zod.cjs +4 -0
  151. package/dist/utils/types/zod.cjs.map +1 -1
  152. package/dist/utils/types/zod.d.cts +3 -2
  153. package/dist/utils/types/zod.d.ts +3 -2
  154. package/dist/utils/types/zod.js +4 -1
  155. package/dist/utils/types/zod.js.map +1 -1
  156. package/dist/utils/zod-to-json-schema/Options.d.ts +3 -0
  157. package/dist/utils/zod-to-json-schema/Refs.d.ts +3 -0
  158. package/dist/utils/zod-to-json-schema/errorMessages.d.ts +1 -0
  159. package/dist/utils/zod-to-json-schema/index.d.ts +37 -0
  160. package/dist/utils/zod-to-json-schema/parseDef.d.ts +3 -0
  161. package/dist/utils/zod-to-json-schema/parsers/any.d.ts +2 -0
  162. package/dist/utils/zod-to-json-schema/parsers/array.d.ts +1 -0
  163. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts +1 -0
  164. package/dist/utils/zod-to-json-schema/parsers/branded.d.ts +3 -0
  165. package/dist/utils/zod-to-json-schema/parsers/catch.d.ts +3 -0
  166. package/dist/utils/zod-to-json-schema/parsers/date.d.ts +2 -0
  167. package/dist/utils/zod-to-json-schema/parsers/default.d.ts +3 -0
  168. package/dist/utils/zod-to-json-schema/parsers/effects.d.ts +3 -0
  169. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts +1 -0
  170. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts +1 -0
  171. package/dist/utils/zod-to-json-schema/parsers/map.d.ts +2 -0
  172. package/dist/utils/zod-to-json-schema/parsers/never.d.ts +1 -0
  173. package/dist/utils/zod-to-json-schema/parsers/null.d.ts +2 -0
  174. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts +1 -0
  175. package/dist/utils/zod-to-json-schema/parsers/number.d.ts +1 -0
  176. package/dist/utils/zod-to-json-schema/parsers/object.d.ts +1 -0
  177. package/dist/utils/zod-to-json-schema/parsers/optional.d.ts +3 -0
  178. package/dist/utils/zod-to-json-schema/parsers/pipeline.d.ts +4 -0
  179. package/dist/utils/zod-to-json-schema/parsers/promise.d.ts +3 -0
  180. package/dist/utils/zod-to-json-schema/parsers/readonly.d.ts +3 -0
  181. package/dist/utils/zod-to-json-schema/parsers/record.d.ts +1 -0
  182. package/dist/utils/zod-to-json-schema/parsers/set.d.ts +1 -0
  183. package/dist/utils/zod-to-json-schema/parsers/string.d.ts +1 -0
  184. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts +1 -0
  185. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts +1 -0
  186. package/dist/utils/zod-to-json-schema/parsers/union.d.ts +2 -1
  187. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts +1 -0
  188. package/dist/utils/zod-to-json-schema/selectParser.d.ts +3 -0
  189. package/dist/utils/zod-to-json-schema/zodToJsonSchema.d.ts +3 -0
  190. package/document_loaders/base.cjs +1 -0
  191. package/document_loaders/base.d.cts +1 -0
  192. package/document_loaders/base.d.ts +1 -0
  193. package/document_loaders/base.js +1 -0
  194. package/document_loaders/langsmith.cjs +1 -0
  195. package/document_loaders/langsmith.d.cts +1 -0
  196. package/document_loaders/langsmith.d.ts +1 -0
  197. package/document_loaders/langsmith.js +1 -0
  198. package/documents.cjs +1 -0
  199. package/documents.d.cts +1 -0
  200. package/documents.d.ts +1 -0
  201. package/documents.js +1 -0
  202. package/embeddings.cjs +1 -0
  203. package/embeddings.d.cts +1 -0
  204. package/embeddings.d.ts +1 -0
  205. package/embeddings.js +1 -0
  206. package/example_selectors.cjs +1 -0
  207. package/example_selectors.d.cts +1 -0
  208. package/example_selectors.d.ts +1 -0
  209. package/example_selectors.js +1 -0
  210. package/indexing.cjs +1 -0
  211. package/indexing.d.cts +1 -0
  212. package/indexing.d.ts +1 -0
  213. package/indexing.js +1 -0
  214. package/language_models/base.cjs +1 -0
  215. package/language_models/base.d.cts +1 -0
  216. package/language_models/base.d.ts +1 -0
  217. package/language_models/base.js +1 -0
  218. package/language_models/chat_models.cjs +1 -0
  219. package/language_models/chat_models.d.cts +1 -0
  220. package/language_models/chat_models.d.ts +1 -0
  221. package/language_models/chat_models.js +1 -0
  222. package/language_models/llms.cjs +1 -0
  223. package/language_models/llms.d.cts +1 -0
  224. package/language_models/llms.d.ts +1 -0
  225. package/language_models/llms.js +1 -0
  226. package/language_models/profile.cjs +1 -0
  227. package/language_models/profile.d.cts +1 -0
  228. package/language_models/profile.d.ts +1 -0
  229. package/language_models/profile.js +1 -0
  230. package/load/serializable.cjs +1 -0
  231. package/load/serializable.d.cts +1 -0
  232. package/load/serializable.d.ts +1 -0
  233. package/load/serializable.js +1 -0
  234. package/load.cjs +1 -0
  235. package/load.d.cts +1 -0
  236. package/load.d.ts +1 -0
  237. package/load.js +1 -0
  238. package/memory.cjs +1 -0
  239. package/memory.d.cts +1 -0
  240. package/memory.d.ts +1 -0
  241. package/memory.js +1 -0
  242. package/messages/tool.cjs +1 -0
  243. package/messages/tool.d.cts +1 -0
  244. package/messages/tool.d.ts +1 -0
  245. package/messages/tool.js +1 -0
  246. package/messages.cjs +1 -0
  247. package/messages.d.cts +1 -0
  248. package/messages.d.ts +1 -0
  249. package/messages.js +1 -0
  250. package/output_parsers/openai_functions.cjs +1 -0
  251. package/output_parsers/openai_functions.d.cts +1 -0
  252. package/output_parsers/openai_functions.d.ts +1 -0
  253. package/output_parsers/openai_functions.js +1 -0
  254. package/output_parsers/openai_tools.cjs +1 -0
  255. package/output_parsers/openai_tools.d.cts +1 -0
  256. package/output_parsers/openai_tools.d.ts +1 -0
  257. package/output_parsers/openai_tools.js +1 -0
  258. package/output_parsers.cjs +1 -0
  259. package/output_parsers.d.cts +1 -0
  260. package/output_parsers.d.ts +1 -0
  261. package/output_parsers.js +1 -0
  262. package/outputs.cjs +1 -0
  263. package/outputs.d.cts +1 -0
  264. package/outputs.d.ts +1 -0
  265. package/outputs.js +1 -0
  266. package/package.json +163 -63
  267. package/prompt_values.cjs +1 -0
  268. package/prompt_values.d.cts +1 -0
  269. package/prompt_values.d.ts +1 -0
  270. package/prompt_values.js +1 -0
  271. package/prompts.cjs +1 -0
  272. package/prompts.d.cts +1 -0
  273. package/prompts.d.ts +1 -0
  274. package/prompts.js +1 -0
  275. package/retrievers/document_compressors.cjs +1 -0
  276. package/retrievers/document_compressors.d.cts +1 -0
  277. package/retrievers/document_compressors.d.ts +1 -0
  278. package/retrievers/document_compressors.js +1 -0
  279. package/retrievers.cjs +1 -0
  280. package/retrievers.d.cts +1 -0
  281. package/retrievers.d.ts +1 -0
  282. package/retrievers.js +1 -0
  283. package/runnables/graph.cjs +1 -0
  284. package/runnables/graph.d.cts +1 -0
  285. package/runnables/graph.d.ts +1 -0
  286. package/runnables/graph.js +1 -0
  287. package/runnables.cjs +1 -0
  288. package/runnables.d.cts +1 -0
  289. package/runnables.d.ts +1 -0
  290. package/runnables.js +1 -0
  291. package/singletons.cjs +1 -0
  292. package/singletons.d.cts +1 -0
  293. package/singletons.d.ts +1 -0
  294. package/singletons.js +1 -0
  295. package/stores.cjs +1 -0
  296. package/stores.d.cts +1 -0
  297. package/stores.d.ts +1 -0
  298. package/stores.js +1 -0
  299. package/structured_query.cjs +1 -0
  300. package/structured_query.d.cts +1 -0
  301. package/structured_query.d.ts +1 -0
  302. package/structured_query.js +1 -0
  303. package/tools.cjs +1 -0
  304. package/tools.d.cts +1 -0
  305. package/tools.d.ts +1 -0
  306. package/tools.js +1 -0
  307. package/tracers/base.cjs +1 -0
  308. package/tracers/base.d.cts +1 -0
  309. package/tracers/base.d.ts +1 -0
  310. package/tracers/base.js +1 -0
  311. package/tracers/console.cjs +1 -0
  312. package/tracers/console.d.cts +1 -0
  313. package/tracers/console.d.ts +1 -0
  314. package/tracers/console.js +1 -0
  315. package/tracers/log_stream.cjs +1 -0
  316. package/tracers/log_stream.d.cts +1 -0
  317. package/tracers/log_stream.d.ts +1 -0
  318. package/tracers/log_stream.js +1 -0
  319. package/tracers/run_collector.cjs +1 -0
  320. package/tracers/run_collector.d.cts +1 -0
  321. package/tracers/run_collector.d.ts +1 -0
  322. package/tracers/run_collector.js +1 -0
  323. package/tracers/tracer_langchain.cjs +1 -0
  324. package/tracers/tracer_langchain.d.cts +1 -0
  325. package/tracers/tracer_langchain.d.ts +1 -0
  326. package/tracers/tracer_langchain.js +1 -0
  327. package/types/stream.cjs +1 -0
  328. package/types/stream.d.cts +1 -0
  329. package/types/stream.d.ts +1 -0
  330. package/types/stream.js +1 -0
  331. package/utils/async_caller.cjs +1 -0
  332. package/utils/async_caller.d.cts +1 -0
  333. package/utils/async_caller.d.ts +1 -0
  334. package/utils/async_caller.js +1 -0
  335. package/utils/chunk_array.cjs +1 -0
  336. package/utils/chunk_array.d.cts +1 -0
  337. package/utils/chunk_array.d.ts +1 -0
  338. package/utils/chunk_array.js +1 -0
  339. package/utils/env.cjs +1 -0
  340. package/utils/env.d.cts +1 -0
  341. package/utils/env.d.ts +1 -0
  342. package/utils/env.js +1 -0
  343. package/utils/event_source_parse.cjs +1 -0
  344. package/utils/event_source_parse.d.cts +1 -0
  345. package/utils/event_source_parse.d.ts +1 -0
  346. package/utils/event_source_parse.js +1 -0
  347. package/utils/format.cjs +1 -0
  348. package/utils/format.d.cts +1 -0
  349. package/utils/format.d.ts +1 -0
  350. package/utils/format.js +1 -0
  351. package/utils/function_calling.cjs +1 -0
  352. package/utils/function_calling.d.cts +1 -0
  353. package/utils/function_calling.d.ts +1 -0
  354. package/utils/function_calling.js +1 -0
  355. package/utils/hash.cjs +1 -0
  356. package/utils/hash.d.cts +1 -0
  357. package/utils/hash.d.ts +1 -0
  358. package/utils/hash.js +1 -0
  359. package/utils/json_patch.cjs +1 -0
  360. package/utils/json_patch.d.cts +1 -0
  361. package/utils/json_patch.d.ts +1 -0
  362. package/utils/json_patch.js +1 -0
  363. package/utils/json_schema.cjs +1 -0
  364. package/utils/json_schema.d.cts +1 -0
  365. package/utils/json_schema.d.ts +1 -0
  366. package/utils/json_schema.js +1 -0
  367. package/utils/math.cjs +1 -0
  368. package/utils/math.d.cts +1 -0
  369. package/utils/math.d.ts +1 -0
  370. package/utils/math.js +1 -0
  371. package/utils/stream.cjs +1 -0
  372. package/utils/stream.d.cts +1 -0
  373. package/utils/stream.d.ts +1 -0
  374. package/utils/stream.js +1 -0
  375. package/utils/testing.cjs +1 -0
  376. package/utils/testing.d.cts +1 -0
  377. package/utils/testing.d.ts +1 -0
  378. package/utils/testing.js +1 -0
  379. package/utils/tiktoken.cjs +1 -0
  380. package/utils/tiktoken.d.cts +1 -0
  381. package/utils/tiktoken.d.ts +1 -0
  382. package/utils/tiktoken.js +1 -0
  383. package/utils/types.cjs +1 -0
  384. package/utils/types.d.cts +1 -0
  385. package/utils/types.d.ts +1 -0
  386. package/utils/types.js +1 -0
  387. package/vectorstores.cjs +1 -0
  388. package/vectorstores.d.cts +1 -0
  389. package/vectorstores.d.ts +1 -0
  390. package/vectorstores.js +1 -0
  391. package/dist/agents.d.cts.map +0 -1
  392. package/dist/agents.d.ts.map +0 -1
  393. package/dist/caches/base.cjs.map +0 -1
  394. package/dist/caches/base.d.cts.map +0 -1
  395. package/dist/caches/base.d.ts.map +0 -1
  396. package/dist/caches/base.js.map +0 -1
  397. package/dist/callbacks/base.d.cts.map +0 -1
  398. package/dist/callbacks/base.d.ts.map +0 -1
  399. package/dist/callbacks/dispatch/index.d.cts.map +0 -1
  400. package/dist/callbacks/dispatch/index.d.ts.map +0 -1
  401. package/dist/callbacks/dispatch/web.d.cts.map +0 -1
  402. package/dist/callbacks/dispatch/web.d.ts.map +0 -1
  403. package/dist/callbacks/manager.d.cts.map +0 -1
  404. package/dist/callbacks/manager.d.ts.map +0 -1
  405. package/dist/chat_history.d.cts.map +0 -1
  406. package/dist/chat_history.d.ts.map +0 -1
  407. package/dist/context.d.cts.map +0 -1
  408. package/dist/context.d.ts.map +0 -1
  409. package/dist/document_loaders/base.d.cts.map +0 -1
  410. package/dist/document_loaders/base.d.ts.map +0 -1
  411. package/dist/document_loaders/langsmith.d.cts.map +0 -1
  412. package/dist/document_loaders/langsmith.d.ts.map +0 -1
  413. package/dist/documents/document.d.cts.map +0 -1
  414. package/dist/documents/document.d.ts.map +0 -1
  415. package/dist/documents/transformers.d.cts.map +0 -1
  416. package/dist/documents/transformers.d.ts.map +0 -1
  417. package/dist/embeddings.d.cts.map +0 -1
  418. package/dist/embeddings.d.ts.map +0 -1
  419. package/dist/example_selectors/base.d.cts.map +0 -1
  420. package/dist/example_selectors/base.d.ts.map +0 -1
  421. package/dist/example_selectors/conditional.d.cts.map +0 -1
  422. package/dist/example_selectors/conditional.d.ts.map +0 -1
  423. package/dist/example_selectors/length_based.d.cts.map +0 -1
  424. package/dist/example_selectors/length_based.d.ts.map +0 -1
  425. package/dist/example_selectors/semantic_similarity.d.cts.map +0 -1
  426. package/dist/example_selectors/semantic_similarity.d.ts.map +0 -1
  427. package/dist/indexing/base.d.cts.map +0 -1
  428. package/dist/indexing/base.d.ts.map +0 -1
  429. package/dist/indexing/record_manager.d.cts.map +0 -1
  430. package/dist/indexing/record_manager.d.ts.map +0 -1
  431. package/dist/language_models/base.d.cts.map +0 -1
  432. package/dist/language_models/base.d.ts.map +0 -1
  433. package/dist/language_models/chat_models.d.cts.map +0 -1
  434. package/dist/language_models/chat_models.d.ts.map +0 -1
  435. package/dist/language_models/llms.d.cts.map +0 -1
  436. package/dist/language_models/llms.d.ts.map +0 -1
  437. package/dist/language_models/profile.d.cts.map +0 -1
  438. package/dist/language_models/profile.d.ts.map +0 -1
  439. package/dist/load/import_type.d.cts.map +0 -1
  440. package/dist/load/import_type.d.ts.map +0 -1
  441. package/dist/load/index.d.cts.map +0 -1
  442. package/dist/load/index.d.ts.map +0 -1
  443. package/dist/load/map_keys.d.cts.map +0 -1
  444. package/dist/load/map_keys.d.ts.map +0 -1
  445. package/dist/load/serializable.d.cts.map +0 -1
  446. package/dist/load/serializable.d.ts.map +0 -1
  447. package/dist/memory.d.cts.map +0 -1
  448. package/dist/memory.d.ts.map +0 -1
  449. package/dist/messages/ai.d.cts.map +0 -1
  450. package/dist/messages/ai.d.ts.map +0 -1
  451. package/dist/messages/base.d.cts.map +0 -1
  452. package/dist/messages/base.d.ts.map +0 -1
  453. package/dist/messages/chat.d.cts.map +0 -1
  454. package/dist/messages/chat.d.ts.map +0 -1
  455. package/dist/messages/content/base.d.cts.map +0 -1
  456. package/dist/messages/content/base.d.ts.map +0 -1
  457. package/dist/messages/content/data.d.cts.map +0 -1
  458. package/dist/messages/content/data.d.ts.map +0 -1
  459. package/dist/messages/content/index.d.cts.map +0 -1
  460. package/dist/messages/content/index.d.ts.map +0 -1
  461. package/dist/messages/content/multimodal.d.cts.map +0 -1
  462. package/dist/messages/content/multimodal.d.ts.map +0 -1
  463. package/dist/messages/content/tools.d.cts.map +0 -1
  464. package/dist/messages/content/tools.d.ts.map +0 -1
  465. package/dist/messages/format.d.cts.map +0 -1
  466. package/dist/messages/format.d.ts.map +0 -1
  467. package/dist/messages/function.d.cts.map +0 -1
  468. package/dist/messages/function.d.ts.map +0 -1
  469. package/dist/messages/human.d.cts.map +0 -1
  470. package/dist/messages/human.d.ts.map +0 -1
  471. package/dist/messages/message.d.cts.map +0 -1
  472. package/dist/messages/message.d.ts.map +0 -1
  473. package/dist/messages/metadata.d.cts.map +0 -1
  474. package/dist/messages/metadata.d.ts.map +0 -1
  475. package/dist/messages/modifier.d.cts.map +0 -1
  476. package/dist/messages/modifier.d.ts.map +0 -1
  477. package/dist/messages/system.d.cts.map +0 -1
  478. package/dist/messages/system.d.ts.map +0 -1
  479. package/dist/messages/tool.d.cts.map +0 -1
  480. package/dist/messages/tool.d.ts.map +0 -1
  481. package/dist/messages/transformers.d.cts.map +0 -1
  482. package/dist/messages/transformers.d.ts.map +0 -1
  483. package/dist/messages/utils.d.cts.map +0 -1
  484. package/dist/messages/utils.d.ts.map +0 -1
  485. package/dist/output_parsers/base.d.cts.map +0 -1
  486. package/dist/output_parsers/base.d.ts.map +0 -1
  487. package/dist/output_parsers/bytes.d.cts.map +0 -1
  488. package/dist/output_parsers/bytes.d.ts.map +0 -1
  489. package/dist/output_parsers/json.d.cts.map +0 -1
  490. package/dist/output_parsers/json.d.ts.map +0 -1
  491. package/dist/output_parsers/list.d.cts.map +0 -1
  492. package/dist/output_parsers/list.d.ts.map +0 -1
  493. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.cts.map +0 -1
  494. package/dist/output_parsers/openai_functions/json_output_functions_parsers.d.ts.map +0 -1
  495. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.cts.map +0 -1
  496. package/dist/output_parsers/openai_tools/json_output_tools_parsers.d.ts.map +0 -1
  497. package/dist/output_parsers/string.d.cts.map +0 -1
  498. package/dist/output_parsers/string.d.ts.map +0 -1
  499. package/dist/output_parsers/structured.d.cts.map +0 -1
  500. package/dist/output_parsers/structured.d.ts.map +0 -1
  501. package/dist/output_parsers/transform.d.cts.map +0 -1
  502. package/dist/output_parsers/transform.d.ts.map +0 -1
  503. package/dist/output_parsers/xml.d.cts.map +0 -1
  504. package/dist/output_parsers/xml.d.ts.map +0 -1
  505. package/dist/outputs.d.cts.map +0 -1
  506. package/dist/outputs.d.ts.map +0 -1
  507. package/dist/prompt_values.d.cts.map +0 -1
  508. package/dist/prompt_values.d.ts.map +0 -1
  509. package/dist/prompts/base.d.cts.map +0 -1
  510. package/dist/prompts/base.d.ts.map +0 -1
  511. package/dist/prompts/chat.d.cts.map +0 -1
  512. package/dist/prompts/chat.d.ts.map +0 -1
  513. package/dist/prompts/dict.d.cts.map +0 -1
  514. package/dist/prompts/dict.d.ts.map +0 -1
  515. package/dist/prompts/few_shot.d.cts.map +0 -1
  516. package/dist/prompts/few_shot.d.ts.map +0 -1
  517. package/dist/prompts/image.d.cts.map +0 -1
  518. package/dist/prompts/image.d.ts.map +0 -1
  519. package/dist/prompts/pipeline.d.cts.map +0 -1
  520. package/dist/prompts/pipeline.d.ts.map +0 -1
  521. package/dist/prompts/prompt.d.cts.map +0 -1
  522. package/dist/prompts/prompt.d.ts.map +0 -1
  523. package/dist/prompts/serde.d.cts.map +0 -1
  524. package/dist/prompts/serde.d.ts.map +0 -1
  525. package/dist/prompts/string.d.cts.map +0 -1
  526. package/dist/prompts/string.d.ts.map +0 -1
  527. package/dist/prompts/structured.d.cts.map +0 -1
  528. package/dist/prompts/structured.d.ts.map +0 -1
  529. package/dist/prompts/template.d.cts.map +0 -1
  530. package/dist/prompts/template.d.ts.map +0 -1
  531. package/dist/retrievers/document_compressors/base.cjs.map +0 -1
  532. package/dist/retrievers/document_compressors/base.d.cts.map +0 -1
  533. package/dist/retrievers/document_compressors/base.d.ts.map +0 -1
  534. package/dist/retrievers/document_compressors/base.js +0 -17
  535. package/dist/retrievers/document_compressors/base.js.map +0 -1
  536. package/dist/retrievers/index.d.cts.map +0 -1
  537. package/dist/retrievers/index.d.ts.map +0 -1
  538. package/dist/runnables/base.d.cts.map +0 -1
  539. package/dist/runnables/base.d.ts.map +0 -1
  540. package/dist/runnables/branch.d.cts.map +0 -1
  541. package/dist/runnables/branch.d.ts.map +0 -1
  542. package/dist/runnables/config.d.cts.map +0 -1
  543. package/dist/runnables/config.d.ts.map +0 -1
  544. package/dist/runnables/graph.d.cts.map +0 -1
  545. package/dist/runnables/graph.d.ts.map +0 -1
  546. package/dist/runnables/history.d.cts.map +0 -1
  547. package/dist/runnables/history.d.ts.map +0 -1
  548. package/dist/runnables/passthrough.d.cts.map +0 -1
  549. package/dist/runnables/passthrough.d.ts.map +0 -1
  550. package/dist/runnables/router.d.cts.map +0 -1
  551. package/dist/runnables/router.d.ts.map +0 -1
  552. package/dist/runnables/types.d.cts.map +0 -1
  553. package/dist/runnables/types.d.ts.map +0 -1
  554. package/dist/singletons/async_local_storage/context.d.cts.map +0 -1
  555. package/dist/singletons/async_local_storage/context.d.ts.map +0 -1
  556. package/dist/singletons/async_local_storage/globals.d.cts.map +0 -1
  557. package/dist/singletons/async_local_storage/globals.d.ts.map +0 -1
  558. package/dist/singletons/async_local_storage/index.d.cts.map +0 -1
  559. package/dist/singletons/async_local_storage/index.d.ts.map +0 -1
  560. package/dist/singletons/callbacks.d.cts.map +0 -1
  561. package/dist/singletons/callbacks.d.ts.map +0 -1
  562. package/dist/stores.d.cts.map +0 -1
  563. package/dist/stores.d.ts.map +0 -1
  564. package/dist/structured_query/base.d.cts.map +0 -1
  565. package/dist/structured_query/base.d.ts.map +0 -1
  566. package/dist/structured_query/functional.d.cts.map +0 -1
  567. package/dist/structured_query/functional.d.ts.map +0 -1
  568. package/dist/structured_query/ir.d.cts.map +0 -1
  569. package/dist/structured_query/ir.d.ts.map +0 -1
  570. package/dist/structured_query/utils.d.cts.map +0 -1
  571. package/dist/structured_query/utils.d.ts.map +0 -1
  572. package/dist/tools/index.d.cts.map +0 -1
  573. package/dist/tools/index.d.ts.map +0 -1
  574. package/dist/tools/types.d.cts.map +0 -1
  575. package/dist/tools/types.d.ts.map +0 -1
  576. package/dist/tools/utils.d.cts.map +0 -1
  577. package/dist/tools/utils.d.ts.map +0 -1
  578. package/dist/tracers/base.d.cts.map +0 -1
  579. package/dist/tracers/base.d.ts.map +0 -1
  580. package/dist/tracers/console.d.cts.map +0 -1
  581. package/dist/tracers/console.d.ts.map +0 -1
  582. package/dist/tracers/event_stream.d.cts.map +0 -1
  583. package/dist/tracers/event_stream.d.ts.map +0 -1
  584. package/dist/tracers/log_stream.d.cts.map +0 -1
  585. package/dist/tracers/log_stream.d.ts.map +0 -1
  586. package/dist/tracers/run_collector.d.cts.map +0 -1
  587. package/dist/tracers/run_collector.d.ts.map +0 -1
  588. package/dist/tracers/tracer_langchain.d.cts.map +0 -1
  589. package/dist/tracers/tracer_langchain.d.ts.map +0 -1
  590. package/dist/types/_internal.d.cts.map +0 -1
  591. package/dist/types/_internal.d.ts.map +0 -1
  592. package/dist/types/type-utils.d.cts.map +0 -1
  593. package/dist/types/type-utils.d.ts.map +0 -1
  594. package/dist/utils/async_caller.d.cts.map +0 -1
  595. package/dist/utils/async_caller.d.ts.map +0 -1
  596. package/dist/utils/chunk_array.d.cts.map +0 -1
  597. package/dist/utils/chunk_array.d.ts.map +0 -1
  598. package/dist/utils/env.d.cts.map +0 -1
  599. package/dist/utils/env.d.ts.map +0 -1
  600. package/dist/utils/event_source_parse.d.cts.map +0 -1
  601. package/dist/utils/event_source_parse.d.ts.map +0 -1
  602. package/dist/utils/fast-json-patch/src/core.d.cts.map +0 -1
  603. package/dist/utils/fast-json-patch/src/core.d.ts.map +0 -1
  604. package/dist/utils/fast-json-patch/src/duplex.d.cts.map +0 -1
  605. package/dist/utils/fast-json-patch/src/duplex.d.ts.map +0 -1
  606. package/dist/utils/format.d.cts.map +0 -1
  607. package/dist/utils/format.d.ts.map +0 -1
  608. package/dist/utils/function_calling.d.cts.map +0 -1
  609. package/dist/utils/function_calling.d.ts.map +0 -1
  610. package/dist/utils/hash.d.cts.map +0 -1
  611. package/dist/utils/hash.d.ts.map +0 -1
  612. package/dist/utils/js-sha256/hash.d.cts.map +0 -1
  613. package/dist/utils/js-sha256/hash.d.ts.map +0 -1
  614. package/dist/utils/json.d.cts.map +0 -1
  615. package/dist/utils/json.d.ts.map +0 -1
  616. package/dist/utils/json_schema.d.cts.map +0 -1
  617. package/dist/utils/json_schema.d.ts.map +0 -1
  618. package/dist/utils/math.d.cts.map +0 -1
  619. package/dist/utils/math.d.ts.map +0 -1
  620. package/dist/utils/ml-distance/similarities.d.cts.map +0 -1
  621. package/dist/utils/ml-distance/similarities.d.ts.map +0 -1
  622. package/dist/utils/stream.d.cts.map +0 -1
  623. package/dist/utils/stream.d.ts.map +0 -1
  624. package/dist/utils/testing/chat_models.d.cts.map +0 -1
  625. package/dist/utils/testing/chat_models.d.ts.map +0 -1
  626. package/dist/utils/testing/embeddings.d.cts.map +0 -1
  627. package/dist/utils/testing/embeddings.d.ts.map +0 -1
  628. package/dist/utils/testing/llms.d.cts.map +0 -1
  629. package/dist/utils/testing/llms.d.ts.map +0 -1
  630. package/dist/utils/testing/message_history.d.cts.map +0 -1
  631. package/dist/utils/testing/message_history.d.ts.map +0 -1
  632. package/dist/utils/testing/output_parsers.d.cts.map +0 -1
  633. package/dist/utils/testing/output_parsers.d.ts.map +0 -1
  634. package/dist/utils/testing/retrievers.d.cts.map +0 -1
  635. package/dist/utils/testing/retrievers.d.ts.map +0 -1
  636. package/dist/utils/testing/runnables.d.cts.map +0 -1
  637. package/dist/utils/testing/runnables.d.ts.map +0 -1
  638. package/dist/utils/testing/tools.d.cts.map +0 -1
  639. package/dist/utils/testing/tools.d.ts.map +0 -1
  640. package/dist/utils/testing/tracers.d.cts.map +0 -1
  641. package/dist/utils/testing/tracers.d.ts.map +0 -1
  642. package/dist/utils/testing/vectorstores.d.cts.map +0 -1
  643. package/dist/utils/testing/vectorstores.d.ts.map +0 -1
  644. package/dist/utils/tiktoken.d.cts.map +0 -1
  645. package/dist/utils/tiktoken.d.ts.map +0 -1
  646. package/dist/utils/types/index.d.cts.map +0 -1
  647. package/dist/utils/types/index.d.ts.map +0 -1
  648. package/dist/utils/types/zod.d.cts.map +0 -1
  649. package/dist/utils/types/zod.d.ts.map +0 -1
  650. package/dist/utils/zod-to-json-schema/errorMessages.d.cts.map +0 -1
  651. package/dist/utils/zod-to-json-schema/errorMessages.d.ts.map +0 -1
  652. package/dist/utils/zod-to-json-schema/parseTypes.d.cts.map +0 -1
  653. package/dist/utils/zod-to-json-schema/parseTypes.d.ts.map +0 -1
  654. package/dist/utils/zod-to-json-schema/parsers/any.d.cts.map +0 -1
  655. package/dist/utils/zod-to-json-schema/parsers/any.d.ts.map +0 -1
  656. package/dist/utils/zod-to-json-schema/parsers/array.d.cts.map +0 -1
  657. package/dist/utils/zod-to-json-schema/parsers/array.d.ts.map +0 -1
  658. package/dist/utils/zod-to-json-schema/parsers/bigint.d.cts.map +0 -1
  659. package/dist/utils/zod-to-json-schema/parsers/bigint.d.ts.map +0 -1
  660. package/dist/utils/zod-to-json-schema/parsers/boolean.d.cts.map +0 -1
  661. package/dist/utils/zod-to-json-schema/parsers/boolean.d.ts.map +0 -1
  662. package/dist/utils/zod-to-json-schema/parsers/date.d.cts.map +0 -1
  663. package/dist/utils/zod-to-json-schema/parsers/date.d.ts.map +0 -1
  664. package/dist/utils/zod-to-json-schema/parsers/enum.d.cts.map +0 -1
  665. package/dist/utils/zod-to-json-schema/parsers/enum.d.ts.map +0 -1
  666. package/dist/utils/zod-to-json-schema/parsers/intersection.d.cts.map +0 -1
  667. package/dist/utils/zod-to-json-schema/parsers/intersection.d.ts.map +0 -1
  668. package/dist/utils/zod-to-json-schema/parsers/literal.d.cts.map +0 -1
  669. package/dist/utils/zod-to-json-schema/parsers/literal.d.ts.map +0 -1
  670. package/dist/utils/zod-to-json-schema/parsers/map.d.cts.map +0 -1
  671. package/dist/utils/zod-to-json-schema/parsers/map.d.ts.map +0 -1
  672. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.cts.map +0 -1
  673. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.d.ts.map +0 -1
  674. package/dist/utils/zod-to-json-schema/parsers/never.d.cts.map +0 -1
  675. package/dist/utils/zod-to-json-schema/parsers/never.d.ts.map +0 -1
  676. package/dist/utils/zod-to-json-schema/parsers/null.d.cts.map +0 -1
  677. package/dist/utils/zod-to-json-schema/parsers/null.d.ts.map +0 -1
  678. package/dist/utils/zod-to-json-schema/parsers/nullable.d.cts.map +0 -1
  679. package/dist/utils/zod-to-json-schema/parsers/nullable.d.ts.map +0 -1
  680. package/dist/utils/zod-to-json-schema/parsers/number.d.cts.map +0 -1
  681. package/dist/utils/zod-to-json-schema/parsers/number.d.ts.map +0 -1
  682. package/dist/utils/zod-to-json-schema/parsers/object.d.cts.map +0 -1
  683. package/dist/utils/zod-to-json-schema/parsers/object.d.ts.map +0 -1
  684. package/dist/utils/zod-to-json-schema/parsers/record.d.cts.map +0 -1
  685. package/dist/utils/zod-to-json-schema/parsers/record.d.ts.map +0 -1
  686. package/dist/utils/zod-to-json-schema/parsers/set.d.cts.map +0 -1
  687. package/dist/utils/zod-to-json-schema/parsers/set.d.ts.map +0 -1
  688. package/dist/utils/zod-to-json-schema/parsers/string.d.cts.map +0 -1
  689. package/dist/utils/zod-to-json-schema/parsers/string.d.ts.map +0 -1
  690. package/dist/utils/zod-to-json-schema/parsers/tuple.d.cts.map +0 -1
  691. package/dist/utils/zod-to-json-schema/parsers/tuple.d.ts.map +0 -1
  692. package/dist/utils/zod-to-json-schema/parsers/undefined.d.cts.map +0 -1
  693. package/dist/utils/zod-to-json-schema/parsers/undefined.d.ts.map +0 -1
  694. package/dist/utils/zod-to-json-schema/parsers/union.d.cts.map +0 -1
  695. package/dist/utils/zod-to-json-schema/parsers/union.d.ts.map +0 -1
  696. package/dist/utils/zod-to-json-schema/parsers/unknown.d.cts.map +0 -1
  697. package/dist/utils/zod-to-json-schema/parsers/unknown.d.ts.map +0 -1
  698. package/dist/vectorstores.d.cts.map +0 -1
  699. package/dist/vectorstores.d.ts.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { CallbackManagerForChainRun } from "../callbacks/manager.js";
2
2
  import { RunnableConfig } from "./types.js";
3
+ import "./config.js";
3
4
  import { Runnable, RunnableLike } from "./base.js";
4
5
 
5
6
  //#region src/runnables/branch.d.ts
@@ -125,7 +125,8 @@ function patchConfig(config = {}, { callbacks, maxConcurrency, recursionLimit, r
125
125
  return newConfig;
126
126
  }
127
127
  function pickRunnableConfigKeys(config) {
128
- return config ? {
128
+ if (!config) return void 0;
129
+ return {
129
130
  configurable: config.configurable,
130
131
  recursionLimit: config.recursionLimit,
131
132
  callbacks: config.callbacks,
@@ -133,8 +134,9 @@ function pickRunnableConfigKeys(config) {
133
134
  metadata: config.metadata,
134
135
  maxConcurrency: config.maxConcurrency,
135
136
  timeout: config.timeout,
136
- signal: config.signal
137
- } : void 0;
137
+ signal: config.signal,
138
+ store: config.store
139
+ };
138
140
  }
139
141
 
140
142
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"config.cjs","names":["config?: RunnableConfig","CallbackManager","copy: Partial<CallOptions>","baseKeys: string[]","ensureHandler","config?: CallOptions","AsyncLocalStorageProviderSingleton","empty: RunnableConfig","currentConfig: Record<string, any>","config: Partial<CallOptions>"],"sources":["../../src/runnables/config.ts"],"sourcesContent":["import { CallbackManager, ensureHandler } from \"../callbacks/manager.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport { RunnableConfig } from \"./types.js\";\n\nexport const DEFAULT_RECURSION_LIMIT = 25;\n\nexport { type RunnableConfig };\n\nexport async function getCallbackManagerForConfig(config?: RunnableConfig) {\n return CallbackManager._configureSync(\n config?.callbacks,\n undefined,\n config?.tags,\n undefined,\n config?.metadata\n );\n}\n\nexport function mergeConfigs<CallOptions extends RunnableConfig>(\n ...configs: (CallOptions | RunnableConfig | undefined | null)[]\n): Partial<CallOptions> {\n // We do not want to call ensureConfig on the empty state here as this may cause\n // double loading of callbacks if async local storage is being used.\n const copy: Partial<CallOptions> = {};\n for (const options of configs.filter((c): c is CallOptions => !!c)) {\n for (const key of Object.keys(options)) {\n if (key === \"metadata\") {\n copy[key] = { ...copy[key], ...options[key] };\n } else if (key === \"tags\") {\n const baseKeys: string[] = copy[key] ?? [];\n copy[key] = [...new Set(baseKeys.concat(options[key] ?? []))];\n } else if (key === \"configurable\") {\n copy[key] = { ...copy[key], ...options[key] };\n } else if (key === \"timeout\") {\n if (copy.timeout === undefined) {\n copy.timeout = options.timeout;\n } else if (options.timeout !== undefined) {\n copy.timeout = Math.min(copy.timeout, options.timeout);\n }\n } else if (key === \"signal\") {\n if (copy.signal === undefined) {\n copy.signal = options.signal;\n } else if (options.signal !== undefined) {\n if (\"any\" in AbortSignal) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n copy.signal = (AbortSignal as any).any([\n copy.signal,\n options.signal,\n ]);\n } else {\n copy.signal = options.signal;\n }\n }\n } else if (key === \"callbacks\") {\n const baseCallbacks = copy.callbacks;\n const providedCallbacks = options.callbacks;\n // callbacks can be either undefined, Array<handler> or manager\n // so merging two callbacks values has 6 cases\n if (Array.isArray(providedCallbacks)) {\n if (!baseCallbacks) {\n copy.callbacks = providedCallbacks;\n } else if (Array.isArray(baseCallbacks)) {\n copy.callbacks = baseCallbacks.concat(providedCallbacks);\n } else {\n // baseCallbacks is a manager\n const manager = baseCallbacks.copy();\n for (const callback of providedCallbacks) {\n manager.addHandler(ensureHandler(callback), true);\n }\n copy.callbacks = manager;\n }\n } else if (providedCallbacks) {\n // providedCallbacks is a manager\n if (!baseCallbacks) {\n copy.callbacks = providedCallbacks;\n } else if (Array.isArray(baseCallbacks)) {\n const manager = providedCallbacks.copy();\n for (const callback of baseCallbacks) {\n manager.addHandler(ensureHandler(callback), true);\n }\n copy.callbacks = manager;\n } else {\n // baseCallbacks is also a manager\n copy.callbacks = new CallbackManager(\n providedCallbacks._parentRunId,\n {\n handlers: baseCallbacks.handlers.concat(\n providedCallbacks.handlers\n ),\n inheritableHandlers: baseCallbacks.inheritableHandlers.concat(\n providedCallbacks.inheritableHandlers\n ),\n tags: Array.from(\n new Set(baseCallbacks.tags.concat(providedCallbacks.tags))\n ),\n inheritableTags: Array.from(\n new Set(\n baseCallbacks.inheritableTags.concat(\n providedCallbacks.inheritableTags\n )\n )\n ),\n metadata: {\n ...baseCallbacks.metadata,\n ...providedCallbacks.metadata,\n },\n }\n );\n }\n }\n } else {\n const typedKey = key as keyof CallOptions;\n copy[typedKey] = options[typedKey] ?? copy[typedKey];\n }\n }\n }\n return copy as Partial<CallOptions>;\n}\n\nconst PRIMITIVES = new Set([\"string\", \"number\", \"boolean\"]);\n\n/**\n * Ensure that a passed config is an object with all required keys present.\n */\nexport function ensureConfig<CallOptions extends RunnableConfig>(\n config?: CallOptions\n): CallOptions {\n const implicitConfig = AsyncLocalStorageProviderSingleton.getRunnableConfig();\n let empty: RunnableConfig = {\n tags: [],\n metadata: {},\n recursionLimit: 25,\n runId: undefined,\n };\n if (implicitConfig) {\n // Don't allow runId and runName to be loaded implicitly, as this can cause\n // child runs to improperly inherit their parents' run ids.\n const { runId, runName, ...rest } = implicitConfig;\n empty = Object.entries(rest).reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (currentConfig: Record<string, any>, [key, value]) => {\n if (value !== undefined) {\n currentConfig[key] = value;\n }\n return currentConfig;\n },\n empty\n );\n }\n if (config) {\n empty = Object.entries(config).reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (currentConfig: Record<string, any>, [key, value]) => {\n if (value !== undefined) {\n currentConfig[key] = value;\n }\n return currentConfig;\n },\n empty\n );\n }\n if (empty?.configurable) {\n for (const key of Object.keys(empty.configurable)) {\n if (\n PRIMITIVES.has(typeof empty.configurable[key]) &&\n !empty.metadata?.[key]\n ) {\n if (!empty.metadata) {\n empty.metadata = {};\n }\n empty.metadata[key] = empty.configurable[key];\n }\n }\n }\n if (empty.timeout !== undefined) {\n if (empty.timeout <= 0) {\n throw new Error(\"Timeout must be a positive number\");\n }\n const timeoutSignal = AbortSignal.timeout(empty.timeout);\n if (empty.signal !== undefined) {\n if (\"any\" in AbortSignal) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n empty.signal = (AbortSignal as any).any([empty.signal, timeoutSignal]);\n }\n } else {\n empty.signal = timeoutSignal;\n }\n delete empty.timeout;\n }\n return empty as CallOptions;\n}\n\n/**\n * Helper function that patches runnable configs with updated properties.\n */\nexport function patchConfig<CallOptions extends RunnableConfig>(\n config: Partial<CallOptions> = {},\n {\n callbacks,\n maxConcurrency,\n recursionLimit,\n runName,\n configurable,\n runId,\n }: RunnableConfig = {}\n): Partial<CallOptions> {\n const newConfig = ensureConfig(config);\n if (callbacks !== undefined) {\n /**\n * If we're replacing callbacks we need to unset runName\n * since that should apply only to the same run as the original callbacks\n */\n delete newConfig.runName;\n newConfig.callbacks = callbacks;\n }\n if (recursionLimit !== undefined) {\n newConfig.recursionLimit = recursionLimit;\n }\n if (maxConcurrency !== undefined) {\n newConfig.maxConcurrency = maxConcurrency;\n }\n if (runName !== undefined) {\n newConfig.runName = runName;\n }\n if (configurable !== undefined) {\n newConfig.configurable = { ...newConfig.configurable, ...configurable };\n }\n if (runId !== undefined) {\n delete newConfig.runId;\n }\n return newConfig;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function pickRunnableConfigKeys<CallOptions extends Record<string, any>>(\n config?: CallOptions\n): Partial<RunnableConfig> | undefined {\n return config\n ? {\n configurable: config.configurable,\n recursionLimit: config.recursionLimit,\n callbacks: config.callbacks,\n tags: config.tags,\n metadata: config.metadata,\n maxConcurrency: config.maxConcurrency,\n timeout: config.timeout,\n signal: config.signal,\n }\n : undefined;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"config.cjs","names":["config?: RunnableConfig","CallbackManager","copy: Partial<CallOptions>","baseKeys: string[]","ensureHandler","config?: CallOptions","AsyncLocalStorageProviderSingleton","empty: RunnableConfig","currentConfig: Record<string, any>","config: Partial<CallOptions>"],"sources":["../../src/runnables/config.ts"],"sourcesContent":["import { CallbackManager, ensureHandler } from \"../callbacks/manager.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport { RunnableConfig } from \"./types.js\";\n\nexport const DEFAULT_RECURSION_LIMIT = 25;\n\nexport { type RunnableConfig };\n\nexport async function getCallbackManagerForConfig(config?: RunnableConfig) {\n return CallbackManager._configureSync(\n config?.callbacks,\n undefined,\n config?.tags,\n undefined,\n config?.metadata\n );\n}\n\nexport function mergeConfigs<CallOptions extends RunnableConfig>(\n ...configs: (CallOptions | RunnableConfig | undefined | null)[]\n): Partial<CallOptions> {\n // We do not want to call ensureConfig on the empty state here as this may cause\n // double loading of callbacks if async local storage is being used.\n const copy: Partial<CallOptions> = {};\n for (const options of configs.filter((c): c is CallOptions => !!c)) {\n for (const key of Object.keys(options)) {\n if (key === \"metadata\") {\n copy[key] = { ...copy[key], ...options[key] };\n } else if (key === \"tags\") {\n const baseKeys: string[] = copy[key] ?? [];\n copy[key] = [...new Set(baseKeys.concat(options[key] ?? []))];\n } else if (key === \"configurable\") {\n copy[key] = { ...copy[key], ...options[key] };\n } else if (key === \"timeout\") {\n if (copy.timeout === undefined) {\n copy.timeout = options.timeout;\n } else if (options.timeout !== undefined) {\n copy.timeout = Math.min(copy.timeout, options.timeout);\n }\n } else if (key === \"signal\") {\n if (copy.signal === undefined) {\n copy.signal = options.signal;\n } else if (options.signal !== undefined) {\n if (\"any\" in AbortSignal) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n copy.signal = (AbortSignal as any).any([\n copy.signal,\n options.signal,\n ]);\n } else {\n copy.signal = options.signal;\n }\n }\n } else if (key === \"callbacks\") {\n const baseCallbacks = copy.callbacks;\n const providedCallbacks = options.callbacks;\n // callbacks can be either undefined, Array<handler> or manager\n // so merging two callbacks values has 6 cases\n if (Array.isArray(providedCallbacks)) {\n if (!baseCallbacks) {\n copy.callbacks = providedCallbacks;\n } else if (Array.isArray(baseCallbacks)) {\n copy.callbacks = baseCallbacks.concat(providedCallbacks);\n } else {\n // baseCallbacks is a manager\n const manager = baseCallbacks.copy();\n for (const callback of providedCallbacks) {\n manager.addHandler(ensureHandler(callback), true);\n }\n copy.callbacks = manager;\n }\n } else if (providedCallbacks) {\n // providedCallbacks is a manager\n if (!baseCallbacks) {\n copy.callbacks = providedCallbacks;\n } else if (Array.isArray(baseCallbacks)) {\n const manager = providedCallbacks.copy();\n for (const callback of baseCallbacks) {\n manager.addHandler(ensureHandler(callback), true);\n }\n copy.callbacks = manager;\n } else {\n // baseCallbacks is also a manager\n copy.callbacks = new CallbackManager(\n providedCallbacks._parentRunId,\n {\n handlers: baseCallbacks.handlers.concat(\n providedCallbacks.handlers\n ),\n inheritableHandlers: baseCallbacks.inheritableHandlers.concat(\n providedCallbacks.inheritableHandlers\n ),\n tags: Array.from(\n new Set(baseCallbacks.tags.concat(providedCallbacks.tags))\n ),\n inheritableTags: Array.from(\n new Set(\n baseCallbacks.inheritableTags.concat(\n providedCallbacks.inheritableTags\n )\n )\n ),\n metadata: {\n ...baseCallbacks.metadata,\n ...providedCallbacks.metadata,\n },\n }\n );\n }\n }\n } else {\n const typedKey = key as keyof CallOptions;\n copy[typedKey] = options[typedKey] ?? copy[typedKey];\n }\n }\n }\n return copy as Partial<CallOptions>;\n}\n\nconst PRIMITIVES = new Set([\"string\", \"number\", \"boolean\"]);\n\n/**\n * Ensure that a passed config is an object with all required keys present.\n */\nexport function ensureConfig<CallOptions extends RunnableConfig>(\n config?: CallOptions\n): CallOptions {\n const implicitConfig = AsyncLocalStorageProviderSingleton.getRunnableConfig();\n let empty: RunnableConfig = {\n tags: [],\n metadata: {},\n recursionLimit: 25,\n runId: undefined,\n };\n if (implicitConfig) {\n // Don't allow runId and runName to be loaded implicitly, as this can cause\n // child runs to improperly inherit their parents' run ids.\n const { runId, runName, ...rest } = implicitConfig;\n empty = Object.entries(rest).reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (currentConfig: Record<string, any>, [key, value]) => {\n if (value !== undefined) {\n currentConfig[key] = value;\n }\n return currentConfig;\n },\n empty\n );\n }\n if (config) {\n empty = Object.entries(config).reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (currentConfig: Record<string, any>, [key, value]) => {\n if (value !== undefined) {\n currentConfig[key] = value;\n }\n return currentConfig;\n },\n empty\n );\n }\n if (empty?.configurable) {\n for (const key of Object.keys(empty.configurable)) {\n if (\n PRIMITIVES.has(typeof empty.configurable[key]) &&\n !empty.metadata?.[key]\n ) {\n if (!empty.metadata) {\n empty.metadata = {};\n }\n empty.metadata[key] = empty.configurable[key];\n }\n }\n }\n if (empty.timeout !== undefined) {\n if (empty.timeout <= 0) {\n throw new Error(\"Timeout must be a positive number\");\n }\n const timeoutSignal = AbortSignal.timeout(empty.timeout);\n if (empty.signal !== undefined) {\n if (\"any\" in AbortSignal) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n empty.signal = (AbortSignal as any).any([empty.signal, timeoutSignal]);\n }\n } else {\n empty.signal = timeoutSignal;\n }\n delete empty.timeout;\n }\n return empty as CallOptions;\n}\n\n/**\n * Helper function that patches runnable configs with updated properties.\n */\nexport function patchConfig<CallOptions extends RunnableConfig>(\n config: Partial<CallOptions> = {},\n {\n callbacks,\n maxConcurrency,\n recursionLimit,\n runName,\n configurable,\n runId,\n }: RunnableConfig = {}\n): Partial<CallOptions> {\n const newConfig = ensureConfig(config);\n if (callbacks !== undefined) {\n /**\n * If we're replacing callbacks we need to unset runName\n * since that should apply only to the same run as the original callbacks\n */\n delete newConfig.runName;\n newConfig.callbacks = callbacks;\n }\n if (recursionLimit !== undefined) {\n newConfig.recursionLimit = recursionLimit;\n }\n if (maxConcurrency !== undefined) {\n newConfig.maxConcurrency = maxConcurrency;\n }\n if (runName !== undefined) {\n newConfig.runName = runName;\n }\n if (configurable !== undefined) {\n newConfig.configurable = { ...newConfig.configurable, ...configurable };\n }\n if (runId !== undefined) {\n delete newConfig.runId;\n }\n return newConfig;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function pickRunnableConfigKeys<CallOptions extends Record<string, any>>(\n config?: CallOptions\n): Partial<RunnableConfig> | undefined {\n if (!config) return undefined;\n\n return {\n configurable: config.configurable,\n recursionLimit: config.recursionLimit,\n callbacks: config.callbacks,\n tags: config.tags,\n metadata: config.metadata,\n maxConcurrency: config.maxConcurrency,\n timeout: config.timeout,\n signal: config.signal,\n // @ts-expect-error - Store is a LangGraph-specific property\n // which wewant to pass through to all runnables.\n // (eg. tools should have access to writing to the store)\n store: config.store,\n };\n}\n"],"mappings":";;;;;AAIA,MAAa,0BAA0B;AAIvC,eAAsB,4BAA4BA,QAAyB;AACzE,QAAOC,0CAAgB,eACrB,QAAQ,WACR,QACA,QAAQ,MACR,QACA,QAAQ,SACT;AACF;AAED,SAAgB,aACd,GAAG,SACmB;CAGtB,MAAMC,OAA6B,CAAE;AACrC,MAAK,MAAM,WAAW,QAAQ,OAAO,CAAC,MAAwB,CAAC,CAAC,EAAE,CAChE,MAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,CACpC,KAAI,QAAQ,YACV,KAAK,OAAO;EAAE,GAAG,KAAK;EAAM,GAAG,QAAQ;CAAM;UACpC,QAAQ,QAAQ;EACzB,MAAMC,WAAqB,KAAK,QAAQ,CAAE;EAC1C,KAAK,OAAO,CAAC,GAAG,IAAI,IAAI,SAAS,OAAO,QAAQ,QAAQ,CAAE,EAAC,CAAE;CAC9D,WAAU,QAAQ,gBACjB,KAAK,OAAO;EAAE,GAAG,KAAK;EAAM,GAAG,QAAQ;CAAM;UACpC,QAAQ,WACjB;MAAI,KAAK,YAAY,QACnB,KAAK,UAAU,QAAQ;WACd,QAAQ,YAAY,QAC7B,KAAK,UAAU,KAAK,IAAI,KAAK,SAAS,QAAQ,QAAQ;CACvD,WACQ,QAAQ,UACjB;MAAI,KAAK,WAAW,QAClB,KAAK,SAAS,QAAQ;WACb,QAAQ,WAAW,OAC5B,KAAI,SAAS,aAEX,KAAK,SAAU,YAAoB,IAAI,CACrC,KAAK,QACL,QAAQ,MACT,EAAC;OAEF,KAAK,SAAS,QAAQ;CAEzB,WACQ,QAAQ,aAAa;EAC9B,MAAM,gBAAgB,KAAK;EAC3B,MAAM,oBAAoB,QAAQ;AAGlC,MAAI,MAAM,QAAQ,kBAAkB,CAClC,KAAI,CAAC,eACH,KAAK,YAAY;WACR,MAAM,QAAQ,cAAc,EACrC,KAAK,YAAY,cAAc,OAAO,kBAAkB;OACnD;GAEL,MAAM,UAAU,cAAc,MAAM;AACpC,QAAK,MAAM,YAAY,mBACrB,QAAQ,WAAWC,wCAAc,SAAS,EAAE,KAAK;GAEnD,KAAK,YAAY;EAClB;WACQ,kBAET,KAAI,CAAC,eACH,KAAK,YAAY;WACR,MAAM,QAAQ,cAAc,EAAE;GACvC,MAAM,UAAU,kBAAkB,MAAM;AACxC,QAAK,MAAM,YAAY,eACrB,QAAQ,WAAWA,wCAAc,SAAS,EAAE,KAAK;GAEnD,KAAK,YAAY;EAClB,OAEC,KAAK,YAAY,IAAIH,0CACnB,kBAAkB,cAClB;GACE,UAAU,cAAc,SAAS,OAC/B,kBAAkB,SACnB;GACD,qBAAqB,cAAc,oBAAoB,OACrD,kBAAkB,oBACnB;GACD,MAAM,MAAM,KACV,IAAI,IAAI,cAAc,KAAK,OAAO,kBAAkB,KAAK,EAC1D;GACD,iBAAiB,MAAM,KACrB,IAAI,IACF,cAAc,gBAAgB,OAC5B,kBAAkB,gBACnB,EAEJ;GACD,UAAU;IACR,GAAG,cAAc;IACjB,GAAG,kBAAkB;GACtB;EACF;CAIR,OAAM;EACL,MAAM,WAAW;EACjB,KAAK,YAAY,QAAQ,aAAa,KAAK;CAC5C;AAGL,QAAO;AACR;AAED,MAAM,aAAa,IAAI,IAAI;CAAC;CAAU;CAAU;AAAU;;;;AAK1D,SAAgB,aACdI,QACa;CACb,MAAM,iBAAiBC,iDAAmC,mBAAmB;CAC7E,IAAIC,QAAwB;EAC1B,MAAM,CAAE;EACR,UAAU,CAAE;EACZ,gBAAgB;EAChB,OAAO;CACR;AACD,KAAI,gBAAgB;EAGlB,MAAM,EAAE,OAAO,QAAS,GAAG,MAAM,GAAG;EACpC,QAAQ,OAAO,QAAQ,KAAK,CAAC,OAE3B,CAACC,eAAoC,CAAC,KAAK,MAAM,KAAK;AACpD,OAAI,UAAU,QACZ,cAAc,OAAO;AAEvB,UAAO;EACR,GACD,MACD;CACF;AACD,KAAI,QACF,QAAQ,OAAO,QAAQ,OAAO,CAAC,OAE7B,CAACA,eAAoC,CAAC,KAAK,MAAM,KAAK;AACpD,MAAI,UAAU,QACZ,cAAc,OAAO;AAEvB,SAAO;CACR,GACD,MACD;AAEH,KAAI,OAAO,cACT;OAAK,MAAM,OAAO,OAAO,KAAK,MAAM,aAAa,CAC/C,KACE,WAAW,IAAI,OAAO,MAAM,aAAa,KAAK,IAC9C,CAAC,MAAM,WAAW,MAClB;AACA,OAAI,CAAC,MAAM,UACT,MAAM,WAAW,CAAE;GAErB,MAAM,SAAS,OAAO,MAAM,aAAa;EAC1C;CACF;AAEH,KAAI,MAAM,YAAY,QAAW;AAC/B,MAAI,MAAM,WAAW,EACnB,OAAM,IAAI,MAAM;EAElB,MAAM,gBAAgB,YAAY,QAAQ,MAAM,QAAQ;AACxD,MAAI,MAAM,WAAW,QACnB;OAAI,SAAS,aAEX,MAAM,SAAU,YAAoB,IAAI,CAAC,MAAM,QAAQ,aAAc,EAAC;EACvE,OAED,MAAM,SAAS;EAEjB,OAAO,MAAM;CACd;AACD,QAAO;AACR;;;;AAKD,SAAgB,YACdC,SAA+B,CAAE,GACjC,EACE,WACA,gBACA,gBACA,SACA,cACA,OACe,GAAG,CAAE,GACA;CACtB,MAAM,YAAY,aAAa,OAAO;AACtC,KAAI,cAAc,QAAW;;;;;EAK3B,OAAO,UAAU;EACjB,UAAU,YAAY;CACvB;AACD,KAAI,mBAAmB,QACrB,UAAU,iBAAiB;AAE7B,KAAI,mBAAmB,QACrB,UAAU,iBAAiB;AAE7B,KAAI,YAAY,QACd,UAAU,UAAU;AAEtB,KAAI,iBAAiB,QACnB,UAAU,eAAe;EAAE,GAAG,UAAU;EAAc,GAAG;CAAc;AAEzE,KAAI,UAAU,QACZ,OAAO,UAAU;AAEnB,QAAO;AACR;AAGD,SAAgB,uBACdJ,QACqC;AACrC,KAAI,CAAC,OAAQ,QAAO;AAEpB,QAAO;EACL,cAAc,OAAO;EACrB,gBAAgB,OAAO;EACvB,WAAW,OAAO;EAClB,MAAM,OAAO;EACb,UAAU,OAAO;EACjB,gBAAgB,OAAO;EACvB,SAAS,OAAO;EAChB,QAAQ,OAAO;EAIf,OAAO,OAAO;CACf;AACF"}
@@ -125,7 +125,8 @@ function patchConfig(config = {}, { callbacks, maxConcurrency, recursionLimit, r
125
125
  return newConfig;
126
126
  }
127
127
  function pickRunnableConfigKeys(config) {
128
- return config ? {
128
+ if (!config) return void 0;
129
+ return {
129
130
  configurable: config.configurable,
130
131
  recursionLimit: config.recursionLimit,
131
132
  callbacks: config.callbacks,
@@ -133,8 +134,9 @@ function pickRunnableConfigKeys(config) {
133
134
  metadata: config.metadata,
134
135
  maxConcurrency: config.maxConcurrency,
135
136
  timeout: config.timeout,
136
- signal: config.signal
137
- } : void 0;
137
+ signal: config.signal,
138
+ store: config.store
139
+ };
138
140
  }
139
141
 
140
142
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","names":["config?: RunnableConfig","copy: Partial<CallOptions>","baseKeys: string[]","config?: CallOptions","empty: RunnableConfig","currentConfig: Record<string, any>","config: Partial<CallOptions>"],"sources":["../../src/runnables/config.ts"],"sourcesContent":["import { CallbackManager, ensureHandler } from \"../callbacks/manager.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport { RunnableConfig } from \"./types.js\";\n\nexport const DEFAULT_RECURSION_LIMIT = 25;\n\nexport { type RunnableConfig };\n\nexport async function getCallbackManagerForConfig(config?: RunnableConfig) {\n return CallbackManager._configureSync(\n config?.callbacks,\n undefined,\n config?.tags,\n undefined,\n config?.metadata\n );\n}\n\nexport function mergeConfigs<CallOptions extends RunnableConfig>(\n ...configs: (CallOptions | RunnableConfig | undefined | null)[]\n): Partial<CallOptions> {\n // We do not want to call ensureConfig on the empty state here as this may cause\n // double loading of callbacks if async local storage is being used.\n const copy: Partial<CallOptions> = {};\n for (const options of configs.filter((c): c is CallOptions => !!c)) {\n for (const key of Object.keys(options)) {\n if (key === \"metadata\") {\n copy[key] = { ...copy[key], ...options[key] };\n } else if (key === \"tags\") {\n const baseKeys: string[] = copy[key] ?? [];\n copy[key] = [...new Set(baseKeys.concat(options[key] ?? []))];\n } else if (key === \"configurable\") {\n copy[key] = { ...copy[key], ...options[key] };\n } else if (key === \"timeout\") {\n if (copy.timeout === undefined) {\n copy.timeout = options.timeout;\n } else if (options.timeout !== undefined) {\n copy.timeout = Math.min(copy.timeout, options.timeout);\n }\n } else if (key === \"signal\") {\n if (copy.signal === undefined) {\n copy.signal = options.signal;\n } else if (options.signal !== undefined) {\n if (\"any\" in AbortSignal) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n copy.signal = (AbortSignal as any).any([\n copy.signal,\n options.signal,\n ]);\n } else {\n copy.signal = options.signal;\n }\n }\n } else if (key === \"callbacks\") {\n const baseCallbacks = copy.callbacks;\n const providedCallbacks = options.callbacks;\n // callbacks can be either undefined, Array<handler> or manager\n // so merging two callbacks values has 6 cases\n if (Array.isArray(providedCallbacks)) {\n if (!baseCallbacks) {\n copy.callbacks = providedCallbacks;\n } else if (Array.isArray(baseCallbacks)) {\n copy.callbacks = baseCallbacks.concat(providedCallbacks);\n } else {\n // baseCallbacks is a manager\n const manager = baseCallbacks.copy();\n for (const callback of providedCallbacks) {\n manager.addHandler(ensureHandler(callback), true);\n }\n copy.callbacks = manager;\n }\n } else if (providedCallbacks) {\n // providedCallbacks is a manager\n if (!baseCallbacks) {\n copy.callbacks = providedCallbacks;\n } else if (Array.isArray(baseCallbacks)) {\n const manager = providedCallbacks.copy();\n for (const callback of baseCallbacks) {\n manager.addHandler(ensureHandler(callback), true);\n }\n copy.callbacks = manager;\n } else {\n // baseCallbacks is also a manager\n copy.callbacks = new CallbackManager(\n providedCallbacks._parentRunId,\n {\n handlers: baseCallbacks.handlers.concat(\n providedCallbacks.handlers\n ),\n inheritableHandlers: baseCallbacks.inheritableHandlers.concat(\n providedCallbacks.inheritableHandlers\n ),\n tags: Array.from(\n new Set(baseCallbacks.tags.concat(providedCallbacks.tags))\n ),\n inheritableTags: Array.from(\n new Set(\n baseCallbacks.inheritableTags.concat(\n providedCallbacks.inheritableTags\n )\n )\n ),\n metadata: {\n ...baseCallbacks.metadata,\n ...providedCallbacks.metadata,\n },\n }\n );\n }\n }\n } else {\n const typedKey = key as keyof CallOptions;\n copy[typedKey] = options[typedKey] ?? copy[typedKey];\n }\n }\n }\n return copy as Partial<CallOptions>;\n}\n\nconst PRIMITIVES = new Set([\"string\", \"number\", \"boolean\"]);\n\n/**\n * Ensure that a passed config is an object with all required keys present.\n */\nexport function ensureConfig<CallOptions extends RunnableConfig>(\n config?: CallOptions\n): CallOptions {\n const implicitConfig = AsyncLocalStorageProviderSingleton.getRunnableConfig();\n let empty: RunnableConfig = {\n tags: [],\n metadata: {},\n recursionLimit: 25,\n runId: undefined,\n };\n if (implicitConfig) {\n // Don't allow runId and runName to be loaded implicitly, as this can cause\n // child runs to improperly inherit their parents' run ids.\n const { runId, runName, ...rest } = implicitConfig;\n empty = Object.entries(rest).reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (currentConfig: Record<string, any>, [key, value]) => {\n if (value !== undefined) {\n currentConfig[key] = value;\n }\n return currentConfig;\n },\n empty\n );\n }\n if (config) {\n empty = Object.entries(config).reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (currentConfig: Record<string, any>, [key, value]) => {\n if (value !== undefined) {\n currentConfig[key] = value;\n }\n return currentConfig;\n },\n empty\n );\n }\n if (empty?.configurable) {\n for (const key of Object.keys(empty.configurable)) {\n if (\n PRIMITIVES.has(typeof empty.configurable[key]) &&\n !empty.metadata?.[key]\n ) {\n if (!empty.metadata) {\n empty.metadata = {};\n }\n empty.metadata[key] = empty.configurable[key];\n }\n }\n }\n if (empty.timeout !== undefined) {\n if (empty.timeout <= 0) {\n throw new Error(\"Timeout must be a positive number\");\n }\n const timeoutSignal = AbortSignal.timeout(empty.timeout);\n if (empty.signal !== undefined) {\n if (\"any\" in AbortSignal) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n empty.signal = (AbortSignal as any).any([empty.signal, timeoutSignal]);\n }\n } else {\n empty.signal = timeoutSignal;\n }\n delete empty.timeout;\n }\n return empty as CallOptions;\n}\n\n/**\n * Helper function that patches runnable configs with updated properties.\n */\nexport function patchConfig<CallOptions extends RunnableConfig>(\n config: Partial<CallOptions> = {},\n {\n callbacks,\n maxConcurrency,\n recursionLimit,\n runName,\n configurable,\n runId,\n }: RunnableConfig = {}\n): Partial<CallOptions> {\n const newConfig = ensureConfig(config);\n if (callbacks !== undefined) {\n /**\n * If we're replacing callbacks we need to unset runName\n * since that should apply only to the same run as the original callbacks\n */\n delete newConfig.runName;\n newConfig.callbacks = callbacks;\n }\n if (recursionLimit !== undefined) {\n newConfig.recursionLimit = recursionLimit;\n }\n if (maxConcurrency !== undefined) {\n newConfig.maxConcurrency = maxConcurrency;\n }\n if (runName !== undefined) {\n newConfig.runName = runName;\n }\n if (configurable !== undefined) {\n newConfig.configurable = { ...newConfig.configurable, ...configurable };\n }\n if (runId !== undefined) {\n delete newConfig.runId;\n }\n return newConfig;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function pickRunnableConfigKeys<CallOptions extends Record<string, any>>(\n config?: CallOptions\n): Partial<RunnableConfig> | undefined {\n return config\n ? {\n configurable: config.configurable,\n recursionLimit: config.recursionLimit,\n callbacks: config.callbacks,\n tags: config.tags,\n metadata: config.metadata,\n maxConcurrency: config.maxConcurrency,\n timeout: config.timeout,\n signal: config.signal,\n }\n : undefined;\n}\n"],"mappings":";;;;;AAIA,MAAa,0BAA0B;AAIvC,eAAsB,4BAA4BA,QAAyB;AACzE,QAAO,gBAAgB,eACrB,QAAQ,WACR,QACA,QAAQ,MACR,QACA,QAAQ,SACT;AACF;AAED,SAAgB,aACd,GAAG,SACmB;CAGtB,MAAMC,OAA6B,CAAE;AACrC,MAAK,MAAM,WAAW,QAAQ,OAAO,CAAC,MAAwB,CAAC,CAAC,EAAE,CAChE,MAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,CACpC,KAAI,QAAQ,YACV,KAAK,OAAO;EAAE,GAAG,KAAK;EAAM,GAAG,QAAQ;CAAM;UACpC,QAAQ,QAAQ;EACzB,MAAMC,WAAqB,KAAK,QAAQ,CAAE;EAC1C,KAAK,OAAO,CAAC,GAAG,IAAI,IAAI,SAAS,OAAO,QAAQ,QAAQ,CAAE,EAAC,CAAE;CAC9D,WAAU,QAAQ,gBACjB,KAAK,OAAO;EAAE,GAAG,KAAK;EAAM,GAAG,QAAQ;CAAM;UACpC,QAAQ,WACjB;MAAI,KAAK,YAAY,QACnB,KAAK,UAAU,QAAQ;WACd,QAAQ,YAAY,QAC7B,KAAK,UAAU,KAAK,IAAI,KAAK,SAAS,QAAQ,QAAQ;CACvD,WACQ,QAAQ,UACjB;MAAI,KAAK,WAAW,QAClB,KAAK,SAAS,QAAQ;WACb,QAAQ,WAAW,OAC5B,KAAI,SAAS,aAEX,KAAK,SAAU,YAAoB,IAAI,CACrC,KAAK,QACL,QAAQ,MACT,EAAC;OAEF,KAAK,SAAS,QAAQ;CAEzB,WACQ,QAAQ,aAAa;EAC9B,MAAM,gBAAgB,KAAK;EAC3B,MAAM,oBAAoB,QAAQ;AAGlC,MAAI,MAAM,QAAQ,kBAAkB,CAClC,KAAI,CAAC,eACH,KAAK,YAAY;WACR,MAAM,QAAQ,cAAc,EACrC,KAAK,YAAY,cAAc,OAAO,kBAAkB;OACnD;GAEL,MAAM,UAAU,cAAc,MAAM;AACpC,QAAK,MAAM,YAAY,mBACrB,QAAQ,WAAW,cAAc,SAAS,EAAE,KAAK;GAEnD,KAAK,YAAY;EAClB;WACQ,kBAET,KAAI,CAAC,eACH,KAAK,YAAY;WACR,MAAM,QAAQ,cAAc,EAAE;GACvC,MAAM,UAAU,kBAAkB,MAAM;AACxC,QAAK,MAAM,YAAY,eACrB,QAAQ,WAAW,cAAc,SAAS,EAAE,KAAK;GAEnD,KAAK,YAAY;EAClB,OAEC,KAAK,YAAY,IAAI,gBACnB,kBAAkB,cAClB;GACE,UAAU,cAAc,SAAS,OAC/B,kBAAkB,SACnB;GACD,qBAAqB,cAAc,oBAAoB,OACrD,kBAAkB,oBACnB;GACD,MAAM,MAAM,KACV,IAAI,IAAI,cAAc,KAAK,OAAO,kBAAkB,KAAK,EAC1D;GACD,iBAAiB,MAAM,KACrB,IAAI,IACF,cAAc,gBAAgB,OAC5B,kBAAkB,gBACnB,EAEJ;GACD,UAAU;IACR,GAAG,cAAc;IACjB,GAAG,kBAAkB;GACtB;EACF;CAIR,OAAM;EACL,MAAM,WAAW;EACjB,KAAK,YAAY,QAAQ,aAAa,KAAK;CAC5C;AAGL,QAAO;AACR;AAED,MAAM,aAAa,IAAI,IAAI;CAAC;CAAU;CAAU;AAAU;;;;AAK1D,SAAgB,aACdC,QACa;CACb,MAAM,iBAAiB,mCAAmC,mBAAmB;CAC7E,IAAIC,QAAwB;EAC1B,MAAM,CAAE;EACR,UAAU,CAAE;EACZ,gBAAgB;EAChB,OAAO;CACR;AACD,KAAI,gBAAgB;EAGlB,MAAM,EAAE,OAAO,QAAS,GAAG,MAAM,GAAG;EACpC,QAAQ,OAAO,QAAQ,KAAK,CAAC,OAE3B,CAACC,eAAoC,CAAC,KAAK,MAAM,KAAK;AACpD,OAAI,UAAU,QACZ,cAAc,OAAO;AAEvB,UAAO;EACR,GACD,MACD;CACF;AACD,KAAI,QACF,QAAQ,OAAO,QAAQ,OAAO,CAAC,OAE7B,CAACA,eAAoC,CAAC,KAAK,MAAM,KAAK;AACpD,MAAI,UAAU,QACZ,cAAc,OAAO;AAEvB,SAAO;CACR,GACD,MACD;AAEH,KAAI,OAAO,cACT;OAAK,MAAM,OAAO,OAAO,KAAK,MAAM,aAAa,CAC/C,KACE,WAAW,IAAI,OAAO,MAAM,aAAa,KAAK,IAC9C,CAAC,MAAM,WAAW,MAClB;AACA,OAAI,CAAC,MAAM,UACT,MAAM,WAAW,CAAE;GAErB,MAAM,SAAS,OAAO,MAAM,aAAa;EAC1C;CACF;AAEH,KAAI,MAAM,YAAY,QAAW;AAC/B,MAAI,MAAM,WAAW,EACnB,OAAM,IAAI,MAAM;EAElB,MAAM,gBAAgB,YAAY,QAAQ,MAAM,QAAQ;AACxD,MAAI,MAAM,WAAW,QACnB;OAAI,SAAS,aAEX,MAAM,SAAU,YAAoB,IAAI,CAAC,MAAM,QAAQ,aAAc,EAAC;EACvE,OAED,MAAM,SAAS;EAEjB,OAAO,MAAM;CACd;AACD,QAAO;AACR;;;;AAKD,SAAgB,YACdC,SAA+B,CAAE,GACjC,EACE,WACA,gBACA,gBACA,SACA,cACA,OACe,GAAG,CAAE,GACA;CACtB,MAAM,YAAY,aAAa,OAAO;AACtC,KAAI,cAAc,QAAW;;;;;EAK3B,OAAO,UAAU;EACjB,UAAU,YAAY;CACvB;AACD,KAAI,mBAAmB,QACrB,UAAU,iBAAiB;AAE7B,KAAI,mBAAmB,QACrB,UAAU,iBAAiB;AAE7B,KAAI,YAAY,QACd,UAAU,UAAU;AAEtB,KAAI,iBAAiB,QACnB,UAAU,eAAe;EAAE,GAAG,UAAU;EAAc,GAAG;CAAc;AAEzE,KAAI,UAAU,QACZ,OAAO,UAAU;AAEnB,QAAO;AACR;AAGD,SAAgB,uBACdH,QACqC;AACrC,QAAO,SACH;EACE,cAAc,OAAO;EACrB,gBAAgB,OAAO;EACvB,WAAW,OAAO;EAClB,MAAM,OAAO;EACb,UAAU,OAAO;EACjB,gBAAgB,OAAO;EACvB,SAAS,OAAO;EAChB,QAAQ,OAAO;CAChB,IACD;AACL"}
1
+ {"version":3,"file":"config.js","names":["config?: RunnableConfig","copy: Partial<CallOptions>","baseKeys: string[]","config?: CallOptions","empty: RunnableConfig","currentConfig: Record<string, any>","config: Partial<CallOptions>"],"sources":["../../src/runnables/config.ts"],"sourcesContent":["import { CallbackManager, ensureHandler } from \"../callbacks/manager.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport { RunnableConfig } from \"./types.js\";\n\nexport const DEFAULT_RECURSION_LIMIT = 25;\n\nexport { type RunnableConfig };\n\nexport async function getCallbackManagerForConfig(config?: RunnableConfig) {\n return CallbackManager._configureSync(\n config?.callbacks,\n undefined,\n config?.tags,\n undefined,\n config?.metadata\n );\n}\n\nexport function mergeConfigs<CallOptions extends RunnableConfig>(\n ...configs: (CallOptions | RunnableConfig | undefined | null)[]\n): Partial<CallOptions> {\n // We do not want to call ensureConfig on the empty state here as this may cause\n // double loading of callbacks if async local storage is being used.\n const copy: Partial<CallOptions> = {};\n for (const options of configs.filter((c): c is CallOptions => !!c)) {\n for (const key of Object.keys(options)) {\n if (key === \"metadata\") {\n copy[key] = { ...copy[key], ...options[key] };\n } else if (key === \"tags\") {\n const baseKeys: string[] = copy[key] ?? [];\n copy[key] = [...new Set(baseKeys.concat(options[key] ?? []))];\n } else if (key === \"configurable\") {\n copy[key] = { ...copy[key], ...options[key] };\n } else if (key === \"timeout\") {\n if (copy.timeout === undefined) {\n copy.timeout = options.timeout;\n } else if (options.timeout !== undefined) {\n copy.timeout = Math.min(copy.timeout, options.timeout);\n }\n } else if (key === \"signal\") {\n if (copy.signal === undefined) {\n copy.signal = options.signal;\n } else if (options.signal !== undefined) {\n if (\"any\" in AbortSignal) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n copy.signal = (AbortSignal as any).any([\n copy.signal,\n options.signal,\n ]);\n } else {\n copy.signal = options.signal;\n }\n }\n } else if (key === \"callbacks\") {\n const baseCallbacks = copy.callbacks;\n const providedCallbacks = options.callbacks;\n // callbacks can be either undefined, Array<handler> or manager\n // so merging two callbacks values has 6 cases\n if (Array.isArray(providedCallbacks)) {\n if (!baseCallbacks) {\n copy.callbacks = providedCallbacks;\n } else if (Array.isArray(baseCallbacks)) {\n copy.callbacks = baseCallbacks.concat(providedCallbacks);\n } else {\n // baseCallbacks is a manager\n const manager = baseCallbacks.copy();\n for (const callback of providedCallbacks) {\n manager.addHandler(ensureHandler(callback), true);\n }\n copy.callbacks = manager;\n }\n } else if (providedCallbacks) {\n // providedCallbacks is a manager\n if (!baseCallbacks) {\n copy.callbacks = providedCallbacks;\n } else if (Array.isArray(baseCallbacks)) {\n const manager = providedCallbacks.copy();\n for (const callback of baseCallbacks) {\n manager.addHandler(ensureHandler(callback), true);\n }\n copy.callbacks = manager;\n } else {\n // baseCallbacks is also a manager\n copy.callbacks = new CallbackManager(\n providedCallbacks._parentRunId,\n {\n handlers: baseCallbacks.handlers.concat(\n providedCallbacks.handlers\n ),\n inheritableHandlers: baseCallbacks.inheritableHandlers.concat(\n providedCallbacks.inheritableHandlers\n ),\n tags: Array.from(\n new Set(baseCallbacks.tags.concat(providedCallbacks.tags))\n ),\n inheritableTags: Array.from(\n new Set(\n baseCallbacks.inheritableTags.concat(\n providedCallbacks.inheritableTags\n )\n )\n ),\n metadata: {\n ...baseCallbacks.metadata,\n ...providedCallbacks.metadata,\n },\n }\n );\n }\n }\n } else {\n const typedKey = key as keyof CallOptions;\n copy[typedKey] = options[typedKey] ?? copy[typedKey];\n }\n }\n }\n return copy as Partial<CallOptions>;\n}\n\nconst PRIMITIVES = new Set([\"string\", \"number\", \"boolean\"]);\n\n/**\n * Ensure that a passed config is an object with all required keys present.\n */\nexport function ensureConfig<CallOptions extends RunnableConfig>(\n config?: CallOptions\n): CallOptions {\n const implicitConfig = AsyncLocalStorageProviderSingleton.getRunnableConfig();\n let empty: RunnableConfig = {\n tags: [],\n metadata: {},\n recursionLimit: 25,\n runId: undefined,\n };\n if (implicitConfig) {\n // Don't allow runId and runName to be loaded implicitly, as this can cause\n // child runs to improperly inherit their parents' run ids.\n const { runId, runName, ...rest } = implicitConfig;\n empty = Object.entries(rest).reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (currentConfig: Record<string, any>, [key, value]) => {\n if (value !== undefined) {\n currentConfig[key] = value;\n }\n return currentConfig;\n },\n empty\n );\n }\n if (config) {\n empty = Object.entries(config).reduce(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (currentConfig: Record<string, any>, [key, value]) => {\n if (value !== undefined) {\n currentConfig[key] = value;\n }\n return currentConfig;\n },\n empty\n );\n }\n if (empty?.configurable) {\n for (const key of Object.keys(empty.configurable)) {\n if (\n PRIMITIVES.has(typeof empty.configurable[key]) &&\n !empty.metadata?.[key]\n ) {\n if (!empty.metadata) {\n empty.metadata = {};\n }\n empty.metadata[key] = empty.configurable[key];\n }\n }\n }\n if (empty.timeout !== undefined) {\n if (empty.timeout <= 0) {\n throw new Error(\"Timeout must be a positive number\");\n }\n const timeoutSignal = AbortSignal.timeout(empty.timeout);\n if (empty.signal !== undefined) {\n if (\"any\" in AbortSignal) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n empty.signal = (AbortSignal as any).any([empty.signal, timeoutSignal]);\n }\n } else {\n empty.signal = timeoutSignal;\n }\n delete empty.timeout;\n }\n return empty as CallOptions;\n}\n\n/**\n * Helper function that patches runnable configs with updated properties.\n */\nexport function patchConfig<CallOptions extends RunnableConfig>(\n config: Partial<CallOptions> = {},\n {\n callbacks,\n maxConcurrency,\n recursionLimit,\n runName,\n configurable,\n runId,\n }: RunnableConfig = {}\n): Partial<CallOptions> {\n const newConfig = ensureConfig(config);\n if (callbacks !== undefined) {\n /**\n * If we're replacing callbacks we need to unset runName\n * since that should apply only to the same run as the original callbacks\n */\n delete newConfig.runName;\n newConfig.callbacks = callbacks;\n }\n if (recursionLimit !== undefined) {\n newConfig.recursionLimit = recursionLimit;\n }\n if (maxConcurrency !== undefined) {\n newConfig.maxConcurrency = maxConcurrency;\n }\n if (runName !== undefined) {\n newConfig.runName = runName;\n }\n if (configurable !== undefined) {\n newConfig.configurable = { ...newConfig.configurable, ...configurable };\n }\n if (runId !== undefined) {\n delete newConfig.runId;\n }\n return newConfig;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function pickRunnableConfigKeys<CallOptions extends Record<string, any>>(\n config?: CallOptions\n): Partial<RunnableConfig> | undefined {\n if (!config) return undefined;\n\n return {\n configurable: config.configurable,\n recursionLimit: config.recursionLimit,\n callbacks: config.callbacks,\n tags: config.tags,\n metadata: config.metadata,\n maxConcurrency: config.maxConcurrency,\n timeout: config.timeout,\n signal: config.signal,\n // @ts-expect-error - Store is a LangGraph-specific property\n // which wewant to pass through to all runnables.\n // (eg. tools should have access to writing to the store)\n store: config.store,\n };\n}\n"],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { BaseMessage } from "../messages/base.js";
2
2
  import { RunnableConfig } from "./types.js";
3
+ import "./config.js";
3
4
  import { Run } from "../tracers/base.js";
4
5
  import { Runnable, RunnableBinding, RunnableBindingArgs } from "./base.js";
6
+ import "../messages/index.js";
5
7
  import { BaseChatMessageHistory, BaseListChatMessageHistory } from "../chat_history.js";
6
8
 
7
9
  //#region src/runnables/history.d.ts
@@ -1,5 +1,6 @@
1
1
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const require_config = require('./config.cjs');
3
+ const require_signal = require('../utils/signal.cjs');
3
4
  const require_base = require('./base.cjs');
4
5
  const require_passthrough = require('./passthrough.cjs');
5
6
  const require_router = require('./router.cjs');
@@ -30,7 +31,8 @@ require_rolldown_runtime.__export(runnables_exports, {
30
31
  getCallbackManagerForConfig: () => require_config.getCallbackManagerForConfig,
31
32
  mergeConfigs: () => require_config.mergeConfigs,
32
33
  patchConfig: () => require_config.patchConfig,
33
- pickRunnableConfigKeys: () => require_config.pickRunnableConfigKeys
34
+ pickRunnableConfigKeys: () => require_config.pickRunnableConfigKeys,
35
+ raceWithSignal: () => require_signal.raceWithSignal
34
36
  });
35
37
 
36
38
  //#endregion
@@ -56,6 +58,7 @@ exports.getCallbackManagerForConfig = require_config.getCallbackManagerForConfig
56
58
  exports.mergeConfigs = require_config.mergeConfigs;
57
59
  exports.patchConfig = require_config.patchConfig;
58
60
  exports.pickRunnableConfigKeys = require_config.pickRunnableConfigKeys;
61
+ exports.raceWithSignal = require_signal.raceWithSignal;
59
62
  Object.defineProperty(exports, 'runnables_exports', {
60
63
  enumerable: true,
61
64
  get: function () {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../src/runnables/index.ts"],"sourcesContent":["export {\n type RunnableFunc,\n type RunnableLike,\n type RunnableRetryFailedAttemptHandler,\n Runnable,\n type RunnableBindingArgs,\n RunnableBinding,\n RunnableEach,\n RunnableRetry,\n RunnableSequence,\n RunnableMap,\n RunnableParallel,\n RunnableLambda,\n RunnableWithFallbacks,\n RunnableAssign,\n RunnablePick,\n _coerceToRunnable,\n RunnableToolLike,\n type RunnableToolLikeArgs,\n} from \"./base.js\";\nexport {\n type RunnableBatchOptions,\n type RunnableInterface,\n type RunnableIOSchema,\n} from \"./types.js\";\nexport {\n type RunnableConfig,\n getCallbackManagerForConfig,\n patchConfig,\n ensureConfig,\n mergeConfigs,\n pickRunnableConfigKeys,\n} from \"./config.js\";\nexport { RunnablePassthrough } from \"./passthrough.js\";\nexport { type RouterInput, RouterRunnable } from \"./router.js\";\nexport { RunnableBranch, type Branch, type BranchLike } from \"./branch.js\";\nexport {\n type RunnableWithMessageHistoryInputs,\n RunnableWithMessageHistory,\n} from \"./history.js\";\n"],"mappings":""}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/runnables/index.ts"],"sourcesContent":["export {\n type RunnableFunc,\n type RunnableLike,\n type RunnableRetryFailedAttemptHandler,\n Runnable,\n type RunnableBindingArgs,\n RunnableBinding,\n RunnableEach,\n RunnableRetry,\n RunnableSequence,\n RunnableMap,\n RunnableParallel,\n RunnableLambda,\n RunnableWithFallbacks,\n RunnableAssign,\n RunnablePick,\n _coerceToRunnable,\n RunnableToolLike,\n type RunnableToolLikeArgs,\n} from \"./base.js\";\nexport {\n type RunnableBatchOptions,\n type RunnableInterface,\n type RunnableIOSchema,\n} from \"./types.js\";\nexport {\n type RunnableConfig,\n getCallbackManagerForConfig,\n patchConfig,\n ensureConfig,\n mergeConfigs,\n pickRunnableConfigKeys,\n} from \"./config.js\";\nexport { RunnablePassthrough } from \"./passthrough.js\";\nexport { type RouterInput, RouterRunnable } from \"./router.js\";\nexport { RunnableBranch, type Branch, type BranchLike } from \"./branch.js\";\nexport {\n type RunnableWithMessageHistoryInputs,\n RunnableWithMessageHistory,\n} from \"./history.js\";\nexport { raceWithSignal } from \"../utils/signal.js\";\n"],"mappings":""}
@@ -5,4 +5,5 @@ import { RunnablePassthrough } from "./passthrough.cjs";
5
5
  import { RouterInput, RouterRunnable } from "./router.cjs";
6
6
  import { Branch, BranchLike, RunnableBranch } from "./branch.cjs";
7
7
  import { RunnableWithMessageHistory, RunnableWithMessageHistoryInputs } from "./history.cjs";
8
- export { type Branch, type BranchLike, type RouterInput, RouterRunnable, Runnable, RunnableAssign, type RunnableBatchOptions, RunnableBinding, type RunnableBindingArgs, RunnableBranch, type RunnableConfig, RunnableEach, type RunnableFunc, type RunnableIOSchema, type RunnableInterface, RunnableLambda, type RunnableLike, RunnableMap, RunnableParallel, RunnablePassthrough, RunnablePick, RunnableRetry, type RunnableRetryFailedAttemptHandler, RunnableSequence, RunnableToolLike, type RunnableToolLikeArgs, RunnableWithFallbacks, RunnableWithMessageHistory, type RunnableWithMessageHistoryInputs, _coerceToRunnable, ensureConfig, getCallbackManagerForConfig, mergeConfigs, patchConfig, pickRunnableConfigKeys };
8
+ import { raceWithSignal } from "../utils/signal.cjs";
9
+ export { type Branch, type BranchLike, type RouterInput, RouterRunnable, Runnable, RunnableAssign, type RunnableBatchOptions, RunnableBinding, type RunnableBindingArgs, RunnableBranch, type RunnableConfig, RunnableEach, type RunnableFunc, type RunnableIOSchema, type RunnableInterface, RunnableLambda, type RunnableLike, RunnableMap, RunnableParallel, RunnablePassthrough, RunnablePick, RunnableRetry, type RunnableRetryFailedAttemptHandler, RunnableSequence, RunnableToolLike, type RunnableToolLikeArgs, RunnableWithFallbacks, RunnableWithMessageHistory, type RunnableWithMessageHistoryInputs, _coerceToRunnable, ensureConfig, getCallbackManagerForConfig, mergeConfigs, patchConfig, pickRunnableConfigKeys, raceWithSignal };
@@ -5,4 +5,5 @@ import { RunnablePassthrough } from "./passthrough.js";
5
5
  import { RouterInput, RouterRunnable } from "./router.js";
6
6
  import { Branch, BranchLike, RunnableBranch } from "./branch.js";
7
7
  import { RunnableWithMessageHistory, RunnableWithMessageHistoryInputs } from "./history.js";
8
- export { type Branch, type BranchLike, type RouterInput, RouterRunnable, Runnable, RunnableAssign, type RunnableBatchOptions, RunnableBinding, type RunnableBindingArgs, RunnableBranch, type RunnableConfig, RunnableEach, type RunnableFunc, type RunnableIOSchema, type RunnableInterface, RunnableLambda, type RunnableLike, RunnableMap, RunnableParallel, RunnablePassthrough, RunnablePick, RunnableRetry, type RunnableRetryFailedAttemptHandler, RunnableSequence, RunnableToolLike, type RunnableToolLikeArgs, RunnableWithFallbacks, RunnableWithMessageHistory, type RunnableWithMessageHistoryInputs, _coerceToRunnable, ensureConfig, getCallbackManagerForConfig, mergeConfigs, patchConfig, pickRunnableConfigKeys };
8
+ import { raceWithSignal } from "../utils/signal.js";
9
+ export { type Branch, type BranchLike, type RouterInput, RouterRunnable, Runnable, RunnableAssign, type RunnableBatchOptions, RunnableBinding, type RunnableBindingArgs, RunnableBranch, type RunnableConfig, RunnableEach, type RunnableFunc, type RunnableIOSchema, type RunnableInterface, RunnableLambda, type RunnableLike, RunnableMap, RunnableParallel, RunnablePassthrough, RunnablePick, RunnableRetry, type RunnableRetryFailedAttemptHandler, RunnableSequence, RunnableToolLike, type RunnableToolLikeArgs, RunnableWithFallbacks, RunnableWithMessageHistory, type RunnableWithMessageHistoryInputs, _coerceToRunnable, ensureConfig, getCallbackManagerForConfig, mergeConfigs, patchConfig, pickRunnableConfigKeys, raceWithSignal };
@@ -1,5 +1,6 @@
1
1
  import { __export } from "../_virtual/rolldown_runtime.js";
2
2
  import { ensureConfig, getCallbackManagerForConfig, mergeConfigs, patchConfig, pickRunnableConfigKeys } from "./config.js";
3
+ import { raceWithSignal } from "../utils/signal.js";
3
4
  import { Runnable, RunnableAssign, RunnableBinding, RunnableEach, RunnableLambda, RunnableMap, RunnableParallel, RunnablePick, RunnableRetry, RunnableSequence, RunnableToolLike, RunnableWithFallbacks, _coerceToRunnable } from "./base.js";
4
5
  import { RunnablePassthrough } from "./passthrough.js";
5
6
  import { RouterRunnable } from "./router.js";
@@ -30,9 +31,10 @@ __export(runnables_exports, {
30
31
  getCallbackManagerForConfig: () => getCallbackManagerForConfig,
31
32
  mergeConfigs: () => mergeConfigs,
32
33
  patchConfig: () => patchConfig,
33
- pickRunnableConfigKeys: () => pickRunnableConfigKeys
34
+ pickRunnableConfigKeys: () => pickRunnableConfigKeys,
35
+ raceWithSignal: () => raceWithSignal
34
36
  });
35
37
 
36
38
  //#endregion
37
- export { RouterRunnable, Runnable, RunnableAssign, RunnableBinding, RunnableBranch, RunnableEach, RunnableLambda, RunnableMap, RunnableParallel, RunnablePassthrough, RunnablePick, RunnableRetry, RunnableSequence, RunnableToolLike, RunnableWithFallbacks, RunnableWithMessageHistory, _coerceToRunnable, ensureConfig, getCallbackManagerForConfig, mergeConfigs, patchConfig, pickRunnableConfigKeys, runnables_exports };
39
+ export { RouterRunnable, Runnable, RunnableAssign, RunnableBinding, RunnableBranch, RunnableEach, RunnableLambda, RunnableMap, RunnableParallel, RunnablePassthrough, RunnablePick, RunnableRetry, RunnableSequence, RunnableToolLike, RunnableWithFallbacks, RunnableWithMessageHistory, _coerceToRunnable, ensureConfig, getCallbackManagerForConfig, mergeConfigs, patchConfig, pickRunnableConfigKeys, raceWithSignal, runnables_exports };
38
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/runnables/index.ts"],"sourcesContent":["export {\n type RunnableFunc,\n type RunnableLike,\n type RunnableRetryFailedAttemptHandler,\n Runnable,\n type RunnableBindingArgs,\n RunnableBinding,\n RunnableEach,\n RunnableRetry,\n RunnableSequence,\n RunnableMap,\n RunnableParallel,\n RunnableLambda,\n RunnableWithFallbacks,\n RunnableAssign,\n RunnablePick,\n _coerceToRunnable,\n RunnableToolLike,\n type RunnableToolLikeArgs,\n} from \"./base.js\";\nexport {\n type RunnableBatchOptions,\n type RunnableInterface,\n type RunnableIOSchema,\n} from \"./types.js\";\nexport {\n type RunnableConfig,\n getCallbackManagerForConfig,\n patchConfig,\n ensureConfig,\n mergeConfigs,\n pickRunnableConfigKeys,\n} from \"./config.js\";\nexport { RunnablePassthrough } from \"./passthrough.js\";\nexport { type RouterInput, RouterRunnable } from \"./router.js\";\nexport { RunnableBranch, type Branch, type BranchLike } from \"./branch.js\";\nexport {\n type RunnableWithMessageHistoryInputs,\n RunnableWithMessageHistory,\n} from \"./history.js\";\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/runnables/index.ts"],"sourcesContent":["export {\n type RunnableFunc,\n type RunnableLike,\n type RunnableRetryFailedAttemptHandler,\n Runnable,\n type RunnableBindingArgs,\n RunnableBinding,\n RunnableEach,\n RunnableRetry,\n RunnableSequence,\n RunnableMap,\n RunnableParallel,\n RunnableLambda,\n RunnableWithFallbacks,\n RunnableAssign,\n RunnablePick,\n _coerceToRunnable,\n RunnableToolLike,\n type RunnableToolLikeArgs,\n} from \"./base.js\";\nexport {\n type RunnableBatchOptions,\n type RunnableInterface,\n type RunnableIOSchema,\n} from \"./types.js\";\nexport {\n type RunnableConfig,\n getCallbackManagerForConfig,\n patchConfig,\n ensureConfig,\n mergeConfigs,\n pickRunnableConfigKeys,\n} from \"./config.js\";\nexport { RunnablePassthrough } from \"./passthrough.js\";\nexport { type RouterInput, RouterRunnable } from \"./router.js\";\nexport { RunnableBranch, type Branch, type BranchLike } from \"./branch.js\";\nexport {\n type RunnableWithMessageHistoryInputs,\n RunnableWithMessageHistory,\n} from \"./history.js\";\nexport { raceWithSignal } from \"../utils/signal.js\";\n"],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  import { RunnableConfig } from "./types.js";
2
+ import "./config.js";
2
3
  import { Runnable, RunnableAssign, RunnableMapLike } from "./base.js";
3
4
 
4
5
  //#region src/runnables/passthrough.d.ts
@@ -1,4 +1,5 @@
1
1
  import { RunnableBatchOptions, RunnableConfig } from "./types.js";
2
+ import "./config.js";
2
3
  import { IterableReadableStream } from "../utils/stream.js";
3
4
  import { Runnable } from "./base.js";
4
5
 
@@ -102,7 +102,7 @@ var StructuredTool = class extends require_language_models_base.BaseLangChain {
102
102
  } catch (e) {
103
103
  let message = `Received tool input did not match expected schema`;
104
104
  if (this.verboseParsingErrors) message = `${message}\nDetails: ${e.message}`;
105
- if (e instanceof Error && e.constructor.name === "ZodError") message = `${message}\n\n${zod_v4.z.prettifyError(e)}`;
105
+ if (require_zod.isInteropZodError(e)) message = `${message}\n\n${zod_v4.z.prettifyError(e)}`;
106
106
  throw new require_utils.ToolInputParsingException(message, JSON.stringify(arg));
107
107
  }
108
108
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["BaseLangChain","fields?: ToolParams","input: TInput","config?: TConfig","toolInput: Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >","enrichedConfig: ToolRunnableConfig","ensureConfig","mergeConfigs","_isToolCall","arg: TArg","configArg?: TConfig","tags?: string[]","parsed: SchemaOutputT","isInteropZodSchema","interopParseAsync","z4","ToolInputParsingException","result","parseCallbackConfigArg","CallbackManager","toolCallId: string | undefined","_configHasToolCallId","z","callbacks?: TConfig","fields: DynamicToolInput<ToolOutputT>","input: string","runManager?: CallbackManagerForToolRun","parentConfig?: ToolRunnableConfig","fields: DynamicStructuredToolInput<SchemaT, SchemaOutputT, ToolOutputT>","arg: Parameters<\n DynamicStructuredToolInput<SchemaT, SchemaOutputT>[\"func\"]\n >[0]","parentConfig?: RunnableConfig","func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>","fields: ToolWrapperParams<SchemaT>","isSimpleStringZodSchema","validatesOnlyStrings","patchConfig","AsyncLocalStorageProviderSingleton","pickRunnableConfigKeys","listener: (() => void) | undefined","getAbortSignalError","params: {\n content: TOutput;\n name: string;\n artifact?: unknown;\n toolCallId?: string;\n metadata?: Record<string, unknown>;\n}","isDirectToolOutput","ToolMessage","content: unknown"],"sources":["../../src/tools/index.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { z as z4, ZodError } from \"zod/v4\";\nimport {\n validate,\n type Schema as ValidationSchema,\n} from \"@cfworker/json-schema\";\nimport {\n CallbackManager,\n CallbackManagerForToolRun,\n parseCallbackConfigArg,\n} from \"../callbacks/manager.js\";\nimport { BaseLangChain } from \"../language_models/base.js\";\nimport {\n mergeConfigs,\n ensureConfig,\n patchConfig,\n pickRunnableConfigKeys,\n type RunnableConfig,\n} from \"../runnables/config.js\";\nimport type { RunnableFunc } from \"../runnables/base.js\";\nimport { isDirectToolOutput, ToolCall, ToolMessage } from \"../messages/tool.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport type { RunnableToolLike } from \"../runnables/base.js\";\nimport {\n _configHasToolCallId,\n _isToolCall,\n ToolInputParsingException,\n} from \"./utils.js\";\nimport {\n type InferInteropZodInput,\n type InferInteropZodOutput,\n type InteropZodObject,\n type InteropZodType,\n interopParseAsync,\n isSimpleStringZodSchema,\n isInteropZodSchema,\n type ZodStringV3,\n type ZodStringV4,\n type ZodObjectV3,\n type ZodObjectV4,\n} from \"../utils/types/zod.js\";\nimport { getAbortSignalError } from \"../utils/signal.js\";\nimport type {\n StructuredToolCallInput,\n ToolInputSchemaBase,\n ToolReturnType,\n ResponseFormat,\n ToolInputSchemaInputType,\n ToolInputSchemaOutputType,\n ToolParams,\n ToolRunnableConfig,\n StructuredToolInterface,\n DynamicToolInput,\n DynamicStructuredToolInput,\n StringInputToolSchema,\n ToolInterface,\n ToolOutputType,\n ToolRuntime,\n} from \"./types.js\";\nimport { type JSONSchema, validatesOnlyStrings } from \"../utils/json_schema.js\";\n\nexport type {\n BaseDynamicToolInput,\n ContentAndArtifact,\n DynamicToolInput,\n DynamicStructuredToolInput,\n ResponseFormat,\n StructuredToolCallInput,\n StructuredToolInterface,\n StructuredToolParams,\n ToolInterface,\n ToolParams,\n ToolReturnType,\n ToolRunnableConfig,\n ToolInputSchemaBase as ToolSchemaBase,\n} from \"./types.js\";\n\nexport {\n isLangChainTool,\n isRunnableToolLike,\n isStructuredTool,\n isStructuredToolParams,\n type ToolRuntime,\n} from \"./types.js\";\n\nexport { ToolInputParsingException };\n/**\n * Base class for Tools that accept input of any shape defined by a Zod schema.\n */\nexport abstract class StructuredTool<\n SchemaT = ToolInputSchemaBase,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType\n >\n extends BaseLangChain<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolOutputT | ToolMessage\n >\n implements StructuredToolInterface<SchemaT, SchemaInputT, ToolOutputT>\n{\n abstract name: string;\n\n abstract description: string;\n\n abstract schema: SchemaT;\n\n /**\n * Whether to return the tool's output directly.\n *\n * Setting this to true means that after the tool is called,\n * an agent should stop looping.\n */\n returnDirect = false;\n\n verboseParsingErrors = false;\n\n get lc_namespace() {\n return [\"langchain\", \"tools\"];\n }\n\n /**\n * The tool response format.\n *\n * If \"content\" then the output of the tool is interpreted as the contents of a\n * ToolMessage. If \"content_and_artifact\" then the output is expected to be a\n * two-tuple corresponding to the (content, artifact) of a ToolMessage.\n *\n * @default \"content\"\n */\n responseFormat?: ResponseFormat = \"content\";\n\n /**\n * Default config object for the tool runnable.\n */\n defaultConfig?: ToolRunnableConfig;\n\n constructor(fields?: ToolParams) {\n super(fields ?? {});\n\n this.verboseParsingErrors =\n fields?.verboseParsingErrors ?? this.verboseParsingErrors;\n this.responseFormat = fields?.responseFormat ?? this.responseFormat;\n this.defaultConfig = fields?.defaultConfig ?? this.defaultConfig;\n this.metadata = fields?.metadata ?? this.metadata;\n }\n\n protected abstract _call(\n arg: SchemaOutputT,\n runManager?: CallbackManagerForToolRun,\n parentConfig?: ToolRunnableConfig\n ): Promise<ToolOutputT>;\n\n /**\n * Invokes the tool with the provided input and configuration.\n * @param input The input for the tool.\n * @param config Optional configuration for the tool.\n * @returns A Promise that resolves with the tool's output.\n */\n async invoke<\n TInput extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined\n >(\n input: TInput,\n config?: TConfig\n ): Promise<ToolReturnType<TInput, TConfig, ToolOutputT>> {\n let toolInput: Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n\n let enrichedConfig: ToolRunnableConfig = ensureConfig(\n mergeConfigs(this.defaultConfig, config)\n );\n if (_isToolCall(input)) {\n toolInput = input.args as Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n enrichedConfig = {\n ...enrichedConfig,\n toolCall: input,\n };\n } else {\n toolInput = input as Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n }\n\n return this.call(toolInput, enrichedConfig) as Promise<\n ToolReturnType<TInput, TConfig, ToolOutputT>\n >;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n *\n * Calls the tool with the provided argument, configuration, and tags. It\n * parses the input according to the schema, handles any errors, and\n * manages callbacks.\n * @param arg The input argument for the tool.\n * @param configArg Optional configuration or callbacks for the tool.\n * @param tags Optional tags for the tool.\n * @returns A Promise that resolves with a string.\n */\n async call<\n TArg extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined\n >(\n arg: TArg,\n configArg?: TConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<ToolReturnType<TArg, TConfig, ToolOutputT>> {\n // Determine the actual input that needs parsing/validation.\n // If arg is a ToolCall, use its args; otherwise, use arg directly.\n const inputForValidation = _isToolCall(arg) ? arg.args : arg;\n\n let parsed: SchemaOutputT; // This will hold the successfully parsed input of the expected output type.\n if (isInteropZodSchema(this.schema)) {\n try {\n // Validate the inputForValidation - TS needs help here as it can't exclude ToolCall based on the check\n parsed = await interopParseAsync(\n this.schema as InteropZodType,\n inputForValidation as Exclude<TArg, ToolCall>\n );\n } catch (e) {\n let message = `Received tool input did not match expected schema`;\n if (this.verboseParsingErrors) {\n message = `${message}\\nDetails: ${(e as Error).message}`;\n }\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (e instanceof Error && e.constructor.name === \"ZodError\") {\n message = `${message}\\n\\n${z4.prettifyError(e as ZodError)}`;\n }\n // Pass the original raw input arg to the exception\n throw new ToolInputParsingException(message, JSON.stringify(arg));\n }\n } else {\n const result = validate(\n inputForValidation,\n this.schema as ValidationSchema\n );\n if (!result.valid) {\n let message = `Received tool input did not match expected schema`;\n if (this.verboseParsingErrors) {\n message = `${message}\\nDetails: ${result.errors\n .map((e) => `${e.keywordLocation}: ${e.error}`)\n .join(\"\\n\")}`;\n }\n // Pass the original raw input arg to the exception\n throw new ToolInputParsingException(message, JSON.stringify(arg));\n }\n // Assign the validated input to parsed\n // We cast here because validate() doesn't narrow the type sufficiently for TS, but we know it's valid.\n parsed = inputForValidation as SchemaOutputT;\n }\n\n const config = parseCallbackConfigArg(configArg);\n const callbackManager_ = CallbackManager.configure(\n config.callbacks,\n this.callbacks,\n config.tags || tags,\n this.tags,\n config.metadata,\n this.metadata,\n { verbose: this.verbose }\n );\n const runManager = await callbackManager_?.handleToolStart(\n this.toJSON(),\n // Log the original raw input arg\n typeof arg === \"string\" ? arg : JSON.stringify(arg),\n config.runId,\n undefined,\n undefined,\n undefined,\n config.runName\n );\n delete config.runId;\n let result;\n try {\n // Pass the correctly typed parsed input to _call\n result = await this._call(parsed, runManager, config);\n } catch (e) {\n await runManager?.handleToolError(e);\n throw e;\n }\n let content;\n let artifact;\n if (this.responseFormat === \"content_and_artifact\") {\n if (Array.isArray(result) && result.length === 2) {\n [content, artifact] = result;\n } else {\n throw new Error(\n `Tool response format is \"content_and_artifact\" but the output was not a two-tuple.\\nResult: ${JSON.stringify(\n result\n )}`\n );\n }\n } else {\n content = result;\n }\n\n let toolCallId: string | undefined;\n // Extract toolCallId ONLY if the original arg was a ToolCall\n if (_isToolCall(arg)) {\n toolCallId = arg.id;\n }\n // Or if it was provided in the config's toolCall property\n if (!toolCallId && _configHasToolCallId(config)) {\n toolCallId = config.toolCall.id;\n }\n\n const formattedOutput = _formatToolOutput<ToolOutputT>({\n content,\n artifact,\n toolCallId,\n name: this.name,\n metadata: this.metadata,\n });\n await runManager?.handleToolEnd(formattedOutput);\n return formattedOutput as ToolReturnType<TArg, TConfig, ToolOutputT>;\n }\n}\n\n/**\n * Base class for Tools that accept input as a string.\n */\nexport abstract class Tool<ToolOutputT = ToolOutputType>\n extends StructuredTool<\n StringInputToolSchema,\n ToolInputSchemaOutputType<StringInputToolSchema>,\n ToolInputSchemaInputType<StringInputToolSchema>,\n ToolOutputT\n >\n implements\n ToolInterface<\n StringInputToolSchema,\n ToolInputSchemaInputType<StringInputToolSchema>,\n ToolOutputT\n >\n{\n schema = z\n .object({ input: z.string().optional() })\n .transform((obj) => obj.input);\n\n constructor(fields?: ToolParams) {\n super(fields);\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n *\n * Calls the tool with the provided argument and callbacks. It handles\n * string inputs specifically.\n * @param arg The input argument for the tool, which can be a string, undefined, or an input of the tool's schema.\n * @param callbacks Optional callbacks for the tool.\n * @returns A Promise that resolves with a string.\n */\n // Match the base class signature including the generics and conditional return type\n call<\n TArg extends string | undefined | z.input<this[\"schema\"]> | ToolCall,\n TConfig extends ToolRunnableConfig | undefined\n >(\n arg: TArg,\n callbacks?: TConfig\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n // Prepare the input for the base class call method.\n // If arg is string or undefined, wrap it; otherwise, pass ToolCall or { input: ... } directly.\n const structuredArg =\n typeof arg === \"string\" || arg == null ? { input: arg } : arg;\n\n // Ensure TConfig is passed to super.call\n return super.call(structuredArg, callbacks);\n }\n}\n\n/**\n * A tool that can be created dynamically from a function, name, and description.\n */\nexport class DynamicTool<\n ToolOutputT = ToolOutputType\n> extends Tool<ToolOutputT> {\n static lc_name() {\n return \"DynamicTool\";\n }\n\n name: string;\n\n description: string;\n\n func: DynamicToolInput<ToolOutputT>[\"func\"];\n\n constructor(fields: DynamicToolInput<ToolOutputT>) {\n super(fields);\n this.name = fields.name;\n this.description = fields.description;\n this.func = fields.func;\n this.returnDirect = fields.returnDirect ?? this.returnDirect;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n */\n async call<\n TArg extends string | undefined | z.input<this[\"schema\"]> | ToolCall,\n TConfig extends ToolRunnableConfig | undefined\n >(\n arg: TArg,\n configArg?: TConfig\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n const config = parseCallbackConfigArg(configArg);\n if (config.runName === undefined) {\n config.runName = this.name;\n }\n // Call the Tool class's call method, passing generics through\n // Cast config to TConfig to satisfy the super.call signature\n return super.call<TArg, TConfig>(arg, config as TConfig);\n }\n\n /** @ignore */\n async _call(\n input: string, // DynamicTool's _call specifically expects a string after schema transformation\n runManager?: CallbackManagerForToolRun,\n parentConfig?: ToolRunnableConfig\n ): Promise<ToolOutputT> {\n return this.func(input, runManager, parentConfig);\n }\n}\n\n/**\n * A tool that can be created dynamically from a function, name, and\n * description, designed to work with structured data. It extends the\n * StructuredTool class and overrides the _call method to execute the\n * provided function when the tool is called.\n *\n * Schema can be passed as Zod or JSON schema. The tool will not validate\n * input if JSON schema is passed.\n */\nexport class DynamicStructuredTool<\n SchemaT = ToolInputSchemaBase,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType\n> extends StructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT> {\n static lc_name() {\n return \"DynamicStructuredTool\";\n }\n\n name: string;\n\n description: string;\n\n func: DynamicStructuredToolInput<SchemaT, SchemaOutputT, ToolOutputT>[\"func\"];\n\n schema: SchemaT;\n\n constructor(\n fields: DynamicStructuredToolInput<SchemaT, SchemaOutputT, ToolOutputT>\n ) {\n super(fields);\n this.name = fields.name;\n this.description = fields.description;\n this.func = fields.func;\n this.returnDirect = fields.returnDirect ?? this.returnDirect;\n this.schema = fields.schema;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n */\n // Match the base class signature\n async call<\n TArg extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined\n >(\n arg: TArg,\n configArg?: TConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n const config = parseCallbackConfigArg(configArg);\n if (config.runName === undefined) {\n config.runName = this.name;\n }\n\n // Call the base class method, passing generics through\n // Cast config to TConfig to satisfy the super.call signature\n return super.call<TArg, TConfig>(arg, config as TConfig, tags);\n }\n\n protected _call(\n arg: Parameters<\n DynamicStructuredToolInput<SchemaT, SchemaOutputT>[\"func\"]\n >[0],\n runManager?: CallbackManagerForToolRun,\n parentConfig?: RunnableConfig\n ): Promise<ToolOutputT> {\n return this.func(arg, runManager, parentConfig);\n }\n}\n\n/**\n * Abstract base class for toolkits in LangChain. Toolkits are collections\n * of tools that agents can use. Subclasses must implement the `tools`\n * property to provide the specific tools for the toolkit.\n */\nexport abstract class BaseToolkit {\n abstract tools: StructuredToolInterface[];\n\n getTools(): StructuredToolInterface[] {\n return this.tools;\n }\n}\n\n/**\n * Parameters for the tool function.\n * Schema can be provided as Zod or JSON schema.\n * Both schema types will be validated.\n * @template {ToolInputSchemaBase} RunInput The input schema for the tool.\n */\ninterface ToolWrapperParams<RunInput = ToolInputSchemaBase | undefined>\n extends ToolParams {\n /**\n * The name of the tool. If using with an LLM, this\n * will be passed as the tool name.\n */\n name: string;\n /**\n * The description of the tool.\n * @default `${fields.name} tool`\n */\n description?: string;\n /**\n * The input schema for the tool. If using an LLM, this\n * will be passed as the tool schema to generate arguments\n * for.\n */\n schema?: RunInput;\n /**\n * The tool response format.\n *\n * If \"content\" then the output of the tool is interpreted as the contents of a\n * ToolMessage. If \"content_and_artifact\" then the output is expected to be a\n * two-tuple corresponding to the (content, artifact) of a ToolMessage.\n *\n * @default \"content\"\n */\n responseFormat?: ResponseFormat;\n /**\n * Whether to return the tool's output directly.\n *\n * Setting this to true means that after the tool is called,\n * an agent should stop looping.\n */\n returnDirect?: boolean;\n}\n\n/**\n * Creates a new StructuredTool instance with the provided function, name, description, and schema.\n *\n * Schema can be provided as Zod or JSON schema, and both will be validated.\n *\n * @function\n * @template {ToolInputSchemaBase} SchemaT The input schema for the tool.\n * @template {ToolReturnType} ToolOutputT The output type of the tool.\n *\n * @param {RunnableFunc<z.output<SchemaT>, ToolOutputT>} func - The function to invoke when the tool is called.\n * @param {ToolWrapperParams<SchemaT>} fields - An object containing the following properties:\n * @param {string} fields.name The name of the tool.\n * @param {string | undefined} fields.description The description of the tool. Defaults to either the description on the Zod schema, or `${fields.name} tool`.\n * @param {z.AnyZodObject | z.ZodString | undefined} fields.schema The Zod schema defining the input for the tool. If undefined, it will default to a Zod string schema.\n *\n * @returns {DynamicStructuredTool<SchemaT>} A new StructuredTool instance.\n */\nexport function tool<SchemaT extends ZodStringV3, ToolOutputT = ToolOutputType>(\n func: RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n >,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<SchemaT extends ZodStringV4, ToolOutputT = ToolOutputType>(\n func: RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n >,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodObjectV3,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType\n>(\n func: RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodObjectV4,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType\n>(\n func: RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends JSONSchema,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType\n>(\n func: RunnableFunc<\n Parameters<DynamicStructuredToolInput<SchemaT>[\"func\"]>[0],\n ToolOutputT,\n ToolRunnableConfig\n >,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends\n | InteropZodObject\n | InteropZodType<string>\n | JSONSchema = InteropZodObject,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType\n>(\n func: RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n fields: ToolWrapperParams<SchemaT>\n):\n | DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>\n | DynamicTool<ToolOutputT>;\n\n// Overloads with ToolRuntime as CallOptions\nexport function tool<\n SchemaT extends ZodStringV3,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: InferInteropZodOutput<SchemaT>,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodStringV4,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: InferInteropZodOutput<SchemaT>,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodObjectV3,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodObjectV4,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends JSONSchema,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: Parameters<DynamicStructuredToolInput<SchemaT>[\"func\"]>[0],\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends\n | InteropZodObject\n | InteropZodType<string>\n | JSONSchema = InteropZodObject,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n):\n | DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>\n | DynamicTool<ToolOutputT> {\n const isSimpleStringSchema = isSimpleStringZodSchema(fields.schema);\n const isStringJSONSchema = validatesOnlyStrings(fields.schema);\n\n // If the schema is not provided, or it's a simple string schema, create a DynamicTool\n if (!fields.schema || isSimpleStringSchema || isStringJSONSchema) {\n return new DynamicTool<ToolOutputT>({\n ...fields,\n description:\n fields.description ??\n (fields.schema as { description?: string } | undefined)?.description ??\n `${fields.name} tool`,\n func: async (input, runManager, config) => {\n return new Promise<ToolOutputT>((resolve, reject) => {\n const childConfig = patchConfig(config, {\n callbacks: runManager?.getChild(),\n });\n // eslint-disable-next-line no-void\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(childConfig),\n async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n resolve(func(input as any, childConfig as any));\n } catch (e) {\n reject(e);\n }\n }\n );\n });\n },\n });\n }\n\n const schema = fields.schema as InteropZodObject | JSONSchema;\n\n const description =\n fields.description ??\n (fields.schema as { description?: string }).description ??\n `${fields.name} tool`;\n\n return new DynamicStructuredTool<\n typeof schema,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT\n >({\n ...fields,\n description,\n schema,\n func: async (input, runManager, config) => {\n return new Promise<ToolOutputT>((resolve, reject) => {\n let listener: (() => void) | undefined;\n const cleanup = () => {\n if (config?.signal && listener) {\n config.signal.removeEventListener(\"abort\", listener);\n }\n };\n\n if (config?.signal) {\n listener = () => {\n cleanup();\n reject(getAbortSignalError(config.signal));\n };\n config.signal.addEventListener(\"abort\", listener);\n }\n\n const childConfig = patchConfig(config, {\n callbacks: runManager?.getChild(),\n });\n // eslint-disable-next-line no-void\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(childConfig),\n async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = await func(input as any, childConfig as any);\n\n /**\n * If the signal is aborted, we don't want to resolve the promise\n * as the promise is already rejected.\n */\n if (config?.signal?.aborted) {\n cleanup();\n return;\n }\n\n cleanup();\n resolve(result);\n } catch (e) {\n cleanup();\n reject(e);\n }\n }\n );\n });\n },\n }) as DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT\n >;\n}\n\nfunction _formatToolOutput<TOutput extends ToolOutputType>(params: {\n content: TOutput;\n name: string;\n artifact?: unknown;\n toolCallId?: string;\n metadata?: Record<string, unknown>;\n}): ToolMessage | TOutput {\n const { content, artifact, toolCallId, metadata } = params;\n if (toolCallId && !isDirectToolOutput(content)) {\n if (\n typeof content === \"string\" ||\n (Array.isArray(content) &&\n content.every((item) => typeof item === \"object\"))\n ) {\n return new ToolMessage({\n status: \"success\",\n content,\n artifact,\n tool_call_id: toolCallId,\n name: params.name,\n metadata,\n });\n } else {\n return new ToolMessage({\n status: \"success\",\n content: _stringify(content),\n artifact,\n tool_call_id: toolCallId,\n name: params.name,\n metadata,\n });\n }\n } else {\n return content;\n }\n}\n\nfunction _stringify(content: unknown): string {\n try {\n return JSON.stringify(content, null, 2) ?? \"\";\n } catch (_noOp) {\n return `${content}`;\n }\n}\n\nexport type ServerTool = Record<string, unknown>;\nexport type ClientTool =\n | StructuredToolInterface\n | DynamicTool\n | RunnableToolLike;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["BaseLangChain","fields?: ToolParams","input: TInput","config?: TConfig","toolInput: Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >","enrichedConfig: ToolRunnableConfig","ensureConfig","mergeConfigs","_isToolCall","arg: TArg","configArg?: TConfig","tags?: string[]","parsed: SchemaOutputT","isInteropZodSchema","interopParseAsync","isInteropZodError","z4","ToolInputParsingException","result","parseCallbackConfigArg","CallbackManager","toolCallId: string | undefined","_configHasToolCallId","z","callbacks?: TConfig","fields: DynamicToolInput<ToolOutputT>","input: string","runManager?: CallbackManagerForToolRun","parentConfig?: ToolRunnableConfig","fields: DynamicStructuredToolInput<SchemaT, SchemaOutputT, ToolOutputT>","arg: Parameters<\n DynamicStructuredToolInput<SchemaT, SchemaOutputT>[\"func\"]\n >[0]","parentConfig?: RunnableConfig","func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>","fields: ToolWrapperParams<SchemaT>","isSimpleStringZodSchema","validatesOnlyStrings","patchConfig","AsyncLocalStorageProviderSingleton","pickRunnableConfigKeys","listener: (() => void) | undefined","getAbortSignalError","params: {\n content: TOutput;\n name: string;\n artifact?: unknown;\n toolCallId?: string;\n metadata?: Record<string, unknown>;\n}","isDirectToolOutput","ToolMessage","content: unknown"],"sources":["../../src/tools/index.ts"],"sourcesContent":["import { z } from \"zod/v3\";\nimport { z as z4, ZodError } from \"zod/v4\";\nimport {\n validate,\n type Schema as ValidationSchema,\n} from \"@cfworker/json-schema\";\nimport {\n CallbackManager,\n CallbackManagerForToolRun,\n parseCallbackConfigArg,\n} from \"../callbacks/manager.js\";\nimport { BaseLangChain } from \"../language_models/base.js\";\nimport {\n mergeConfigs,\n ensureConfig,\n patchConfig,\n pickRunnableConfigKeys,\n type RunnableConfig,\n} from \"../runnables/config.js\";\nimport type { RunnableFunc } from \"../runnables/base.js\";\nimport { isDirectToolOutput, ToolCall, ToolMessage } from \"../messages/tool.js\";\nimport { AsyncLocalStorageProviderSingleton } from \"../singletons/index.js\";\nimport type { RunnableToolLike } from \"../runnables/base.js\";\nimport {\n _configHasToolCallId,\n _isToolCall,\n ToolInputParsingException,\n} from \"./utils.js\";\nimport {\n type InferInteropZodInput,\n type InferInteropZodOutput,\n type InteropZodObject,\n type InteropZodType,\n interopParseAsync,\n isSimpleStringZodSchema,\n isInteropZodError,\n isInteropZodSchema,\n type ZodStringV3,\n type ZodStringV4,\n type ZodObjectV3,\n type ZodObjectV4,\n} from \"../utils/types/zod.js\";\nimport { getAbortSignalError } from \"../utils/signal.js\";\nimport type {\n StructuredToolCallInput,\n ToolInputSchemaBase,\n ToolReturnType,\n ResponseFormat,\n ToolInputSchemaInputType,\n ToolInputSchemaOutputType,\n ToolParams,\n ToolRunnableConfig,\n StructuredToolInterface,\n DynamicToolInput,\n DynamicStructuredToolInput,\n StringInputToolSchema,\n ToolInterface,\n ToolOutputType,\n ToolRuntime,\n} from \"./types.js\";\nimport { type JSONSchema, validatesOnlyStrings } from \"../utils/json_schema.js\";\n\nexport type {\n BaseDynamicToolInput,\n ContentAndArtifact,\n DynamicToolInput,\n DynamicStructuredToolInput,\n ResponseFormat,\n StructuredToolCallInput,\n StructuredToolInterface,\n StructuredToolParams,\n ToolInterface,\n ToolParams,\n ToolReturnType,\n ToolRunnableConfig,\n ToolInputSchemaBase as ToolSchemaBase,\n} from \"./types.js\";\n\nexport {\n isLangChainTool,\n isRunnableToolLike,\n isStructuredTool,\n isStructuredToolParams,\n type ToolRuntime,\n} from \"./types.js\";\n\nexport { ToolInputParsingException };\n/**\n * Base class for Tools that accept input of any shape defined by a Zod schema.\n */\nexport abstract class StructuredTool<\n SchemaT = ToolInputSchemaBase,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType\n >\n extends BaseLangChain<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolOutputT | ToolMessage\n >\n implements StructuredToolInterface<SchemaT, SchemaInputT, ToolOutputT>\n{\n abstract name: string;\n\n abstract description: string;\n\n abstract schema: SchemaT;\n\n /**\n * Whether to return the tool's output directly.\n *\n * Setting this to true means that after the tool is called,\n * an agent should stop looping.\n */\n returnDirect = false;\n\n verboseParsingErrors = false;\n\n get lc_namespace() {\n return [\"langchain\", \"tools\"];\n }\n\n /**\n * The tool response format.\n *\n * If \"content\" then the output of the tool is interpreted as the contents of a\n * ToolMessage. If \"content_and_artifact\" then the output is expected to be a\n * two-tuple corresponding to the (content, artifact) of a ToolMessage.\n *\n * @default \"content\"\n */\n responseFormat?: ResponseFormat = \"content\";\n\n /**\n * Default config object for the tool runnable.\n */\n defaultConfig?: ToolRunnableConfig;\n\n constructor(fields?: ToolParams) {\n super(fields ?? {});\n\n this.verboseParsingErrors =\n fields?.verboseParsingErrors ?? this.verboseParsingErrors;\n this.responseFormat = fields?.responseFormat ?? this.responseFormat;\n this.defaultConfig = fields?.defaultConfig ?? this.defaultConfig;\n this.metadata = fields?.metadata ?? this.metadata;\n }\n\n protected abstract _call(\n arg: SchemaOutputT,\n runManager?: CallbackManagerForToolRun,\n parentConfig?: ToolRunnableConfig\n ): Promise<ToolOutputT>;\n\n /**\n * Invokes the tool with the provided input and configuration.\n * @param input The input for the tool.\n * @param config Optional configuration for the tool.\n * @returns A Promise that resolves with the tool's output.\n */\n async invoke<\n TInput extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined\n >(\n input: TInput,\n config?: TConfig\n ): Promise<ToolReturnType<TInput, TConfig, ToolOutputT>> {\n let toolInput: Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n\n let enrichedConfig: ToolRunnableConfig = ensureConfig(\n mergeConfigs(this.defaultConfig, config)\n );\n if (_isToolCall(input)) {\n toolInput = input.args as Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n enrichedConfig = {\n ...enrichedConfig,\n toolCall: input,\n };\n } else {\n toolInput = input as Exclude<\n StructuredToolCallInput<SchemaT, SchemaInputT>,\n ToolCall\n >;\n }\n\n return this.call(toolInput, enrichedConfig) as Promise<\n ToolReturnType<TInput, TConfig, ToolOutputT>\n >;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n *\n * Calls the tool with the provided argument, configuration, and tags. It\n * parses the input according to the schema, handles any errors, and\n * manages callbacks.\n * @param arg The input argument for the tool.\n * @param configArg Optional configuration or callbacks for the tool.\n * @param tags Optional tags for the tool.\n * @returns A Promise that resolves with a string.\n */\n async call<\n TArg extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined\n >(\n arg: TArg,\n configArg?: TConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<ToolReturnType<TArg, TConfig, ToolOutputT>> {\n // Determine the actual input that needs parsing/validation.\n // If arg is a ToolCall, use its args; otherwise, use arg directly.\n const inputForValidation = _isToolCall(arg) ? arg.args : arg;\n\n let parsed: SchemaOutputT; // This will hold the successfully parsed input of the expected output type.\n if (isInteropZodSchema(this.schema)) {\n try {\n // Validate the inputForValidation - TS needs help here as it can't exclude ToolCall based on the check\n parsed = await interopParseAsync(\n this.schema as InteropZodType,\n inputForValidation as Exclude<TArg, ToolCall>\n );\n } catch (e) {\n let message = `Received tool input did not match expected schema`;\n if (this.verboseParsingErrors) {\n message = `${message}\\nDetails: ${(e as Error).message}`;\n }\n if (isInteropZodError(e)) {\n message = `${message}\\n\\n${z4.prettifyError(e as ZodError)}`;\n }\n // Pass the original raw input arg to the exception\n throw new ToolInputParsingException(message, JSON.stringify(arg));\n }\n } else {\n const result = validate(\n inputForValidation,\n this.schema as ValidationSchema\n );\n if (!result.valid) {\n let message = `Received tool input did not match expected schema`;\n if (this.verboseParsingErrors) {\n message = `${message}\\nDetails: ${result.errors\n .map((e) => `${e.keywordLocation}: ${e.error}`)\n .join(\"\\n\")}`;\n }\n // Pass the original raw input arg to the exception\n throw new ToolInputParsingException(message, JSON.stringify(arg));\n }\n // Assign the validated input to parsed\n // We cast here because validate() doesn't narrow the type sufficiently for TS, but we know it's valid.\n parsed = inputForValidation as SchemaOutputT;\n }\n\n const config = parseCallbackConfigArg(configArg);\n const callbackManager_ = CallbackManager.configure(\n config.callbacks,\n this.callbacks,\n config.tags || tags,\n this.tags,\n config.metadata,\n this.metadata,\n { verbose: this.verbose }\n );\n const runManager = await callbackManager_?.handleToolStart(\n this.toJSON(),\n // Log the original raw input arg\n typeof arg === \"string\" ? arg : JSON.stringify(arg),\n config.runId,\n undefined,\n undefined,\n undefined,\n config.runName\n );\n delete config.runId;\n let result;\n try {\n // Pass the correctly typed parsed input to _call\n result = await this._call(parsed, runManager, config);\n } catch (e) {\n await runManager?.handleToolError(e);\n throw e;\n }\n let content;\n let artifact;\n if (this.responseFormat === \"content_and_artifact\") {\n if (Array.isArray(result) && result.length === 2) {\n [content, artifact] = result;\n } else {\n throw new Error(\n `Tool response format is \"content_and_artifact\" but the output was not a two-tuple.\\nResult: ${JSON.stringify(\n result\n )}`\n );\n }\n } else {\n content = result;\n }\n\n let toolCallId: string | undefined;\n // Extract toolCallId ONLY if the original arg was a ToolCall\n if (_isToolCall(arg)) {\n toolCallId = arg.id;\n }\n // Or if it was provided in the config's toolCall property\n if (!toolCallId && _configHasToolCallId(config)) {\n toolCallId = config.toolCall.id;\n }\n\n const formattedOutput = _formatToolOutput<ToolOutputT>({\n content,\n artifact,\n toolCallId,\n name: this.name,\n metadata: this.metadata,\n });\n await runManager?.handleToolEnd(formattedOutput);\n return formattedOutput as ToolReturnType<TArg, TConfig, ToolOutputT>;\n }\n}\n\n/**\n * Base class for Tools that accept input as a string.\n */\nexport abstract class Tool<ToolOutputT = ToolOutputType>\n extends StructuredTool<\n StringInputToolSchema,\n ToolInputSchemaOutputType<StringInputToolSchema>,\n ToolInputSchemaInputType<StringInputToolSchema>,\n ToolOutputT\n >\n implements\n ToolInterface<\n StringInputToolSchema,\n ToolInputSchemaInputType<StringInputToolSchema>,\n ToolOutputT\n >\n{\n schema = z\n .object({ input: z.string().optional() })\n .transform((obj) => obj.input);\n\n constructor(fields?: ToolParams) {\n super(fields);\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n *\n * Calls the tool with the provided argument and callbacks. It handles\n * string inputs specifically.\n * @param arg The input argument for the tool, which can be a string, undefined, or an input of the tool's schema.\n * @param callbacks Optional callbacks for the tool.\n * @returns A Promise that resolves with a string.\n */\n // Match the base class signature including the generics and conditional return type\n call<\n TArg extends string | undefined | z.input<this[\"schema\"]> | ToolCall,\n TConfig extends ToolRunnableConfig | undefined\n >(\n arg: TArg,\n callbacks?: TConfig\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n // Prepare the input for the base class call method.\n // If arg is string or undefined, wrap it; otherwise, pass ToolCall or { input: ... } directly.\n const structuredArg =\n typeof arg === \"string\" || arg == null ? { input: arg } : arg;\n\n // Ensure TConfig is passed to super.call\n return super.call(structuredArg, callbacks);\n }\n}\n\n/**\n * A tool that can be created dynamically from a function, name, and description.\n */\nexport class DynamicTool<\n ToolOutputT = ToolOutputType\n> extends Tool<ToolOutputT> {\n static lc_name() {\n return \"DynamicTool\";\n }\n\n name: string;\n\n description: string;\n\n func: DynamicToolInput<ToolOutputT>[\"func\"];\n\n constructor(fields: DynamicToolInput<ToolOutputT>) {\n super(fields);\n this.name = fields.name;\n this.description = fields.description;\n this.func = fields.func;\n this.returnDirect = fields.returnDirect ?? this.returnDirect;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n */\n async call<\n TArg extends string | undefined | z.input<this[\"schema\"]> | ToolCall,\n TConfig extends ToolRunnableConfig | undefined\n >(\n arg: TArg,\n configArg?: TConfig\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n const config = parseCallbackConfigArg(configArg);\n if (config.runName === undefined) {\n config.runName = this.name;\n }\n // Call the Tool class's call method, passing generics through\n // Cast config to TConfig to satisfy the super.call signature\n return super.call<TArg, TConfig>(arg, config as TConfig);\n }\n\n /** @ignore */\n async _call(\n input: string, // DynamicTool's _call specifically expects a string after schema transformation\n runManager?: CallbackManagerForToolRun,\n parentConfig?: ToolRunnableConfig\n ): Promise<ToolOutputT> {\n return this.func(input, runManager, parentConfig);\n }\n}\n\n/**\n * A tool that can be created dynamically from a function, name, and\n * description, designed to work with structured data. It extends the\n * StructuredTool class and overrides the _call method to execute the\n * provided function when the tool is called.\n *\n * Schema can be passed as Zod or JSON schema. The tool will not validate\n * input if JSON schema is passed.\n */\nexport class DynamicStructuredTool<\n SchemaT = ToolInputSchemaBase,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType\n> extends StructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT> {\n static lc_name() {\n return \"DynamicStructuredTool\";\n }\n\n name: string;\n\n description: string;\n\n func: DynamicStructuredToolInput<SchemaT, SchemaOutputT, ToolOutputT>[\"func\"];\n\n schema: SchemaT;\n\n constructor(\n fields: DynamicStructuredToolInput<SchemaT, SchemaOutputT, ToolOutputT>\n ) {\n super(fields);\n this.name = fields.name;\n this.description = fields.description;\n this.func = fields.func;\n this.returnDirect = fields.returnDirect ?? this.returnDirect;\n this.schema = fields.schema;\n }\n\n /**\n * @deprecated Use .invoke() instead. Will be removed in 0.3.0.\n */\n // Match the base class signature\n async call<\n TArg extends StructuredToolCallInput<SchemaT, SchemaInputT>,\n TConfig extends ToolRunnableConfig | undefined\n >(\n arg: TArg,\n configArg?: TConfig,\n /** @deprecated */\n tags?: string[]\n ): Promise<ToolReturnType<NonNullable<TArg>, TConfig, ToolOutputT>> {\n const config = parseCallbackConfigArg(configArg);\n if (config.runName === undefined) {\n config.runName = this.name;\n }\n\n // Call the base class method, passing generics through\n // Cast config to TConfig to satisfy the super.call signature\n return super.call<TArg, TConfig>(arg, config as TConfig, tags);\n }\n\n protected _call(\n arg: Parameters<\n DynamicStructuredToolInput<SchemaT, SchemaOutputT>[\"func\"]\n >[0],\n runManager?: CallbackManagerForToolRun,\n parentConfig?: RunnableConfig\n ): Promise<ToolOutputT> {\n return this.func(arg, runManager, parentConfig);\n }\n}\n\n/**\n * Abstract base class for toolkits in LangChain. Toolkits are collections\n * of tools that agents can use. Subclasses must implement the `tools`\n * property to provide the specific tools for the toolkit.\n */\nexport abstract class BaseToolkit {\n abstract tools: StructuredToolInterface[];\n\n getTools(): StructuredToolInterface[] {\n return this.tools;\n }\n}\n\n/**\n * Parameters for the tool function.\n * Schema can be provided as Zod or JSON schema.\n * Both schema types will be validated.\n * @template {ToolInputSchemaBase} RunInput The input schema for the tool.\n */\ninterface ToolWrapperParams<RunInput = ToolInputSchemaBase | undefined>\n extends ToolParams {\n /**\n * The name of the tool. If using with an LLM, this\n * will be passed as the tool name.\n */\n name: string;\n /**\n * The description of the tool.\n * @default `${fields.name} tool`\n */\n description?: string;\n /**\n * The input schema for the tool. If using an LLM, this\n * will be passed as the tool schema to generate arguments\n * for.\n */\n schema?: RunInput;\n /**\n * The tool response format.\n *\n * If \"content\" then the output of the tool is interpreted as the contents of a\n * ToolMessage. If \"content_and_artifact\" then the output is expected to be a\n * two-tuple corresponding to the (content, artifact) of a ToolMessage.\n *\n * @default \"content\"\n */\n responseFormat?: ResponseFormat;\n /**\n * Whether to return the tool's output directly.\n *\n * Setting this to true means that after the tool is called,\n * an agent should stop looping.\n */\n returnDirect?: boolean;\n}\n\n/**\n * Creates a new StructuredTool instance with the provided function, name, description, and schema.\n *\n * Schema can be provided as Zod or JSON schema, and both will be validated.\n *\n * @function\n * @template {ToolInputSchemaBase} SchemaT The input schema for the tool.\n * @template {ToolReturnType} ToolOutputT The output type of the tool.\n *\n * @param {RunnableFunc<z.output<SchemaT>, ToolOutputT>} func - The function to invoke when the tool is called.\n * @param {ToolWrapperParams<SchemaT>} fields - An object containing the following properties:\n * @param {string} fields.name The name of the tool.\n * @param {string | undefined} fields.description The description of the tool. Defaults to either the description on the Zod schema, or `${fields.name} tool`.\n * @param {z.AnyZodObject | z.ZodString | undefined} fields.schema The Zod schema defining the input for the tool. If undefined, it will default to a Zod string schema.\n *\n * @returns {DynamicStructuredTool<SchemaT>} A new StructuredTool instance.\n */\nexport function tool<SchemaT extends ZodStringV3, ToolOutputT = ToolOutputType>(\n func: RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n >,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<SchemaT extends ZodStringV4, ToolOutputT = ToolOutputType>(\n func: RunnableFunc<\n InferInteropZodOutput<SchemaT>,\n ToolOutputT,\n ToolRunnableConfig\n >,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodObjectV3,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType\n>(\n func: RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodObjectV4,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType\n>(\n func: RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends JSONSchema,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType\n>(\n func: RunnableFunc<\n Parameters<DynamicStructuredToolInput<SchemaT>[\"func\"]>[0],\n ToolOutputT,\n ToolRunnableConfig\n >,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends\n | InteropZodObject\n | InteropZodType<string>\n | JSONSchema = InteropZodObject,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType\n>(\n func: RunnableFunc<SchemaOutputT, ToolOutputT, ToolRunnableConfig>,\n fields: ToolWrapperParams<SchemaT>\n):\n | DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>\n | DynamicTool<ToolOutputT>;\n\n// Overloads with ToolRuntime as CallOptions\nexport function tool<\n SchemaT extends ZodStringV3,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: InferInteropZodOutput<SchemaT>,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodStringV4,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: InferInteropZodOutput<SchemaT>,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicTool<ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodObjectV3,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends ZodObjectV4,\n SchemaOutputT = InferInteropZodOutput<SchemaT>,\n SchemaInputT = InferInteropZodInput<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends JSONSchema,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: Parameters<DynamicStructuredToolInput<SchemaT>[\"func\"]>[0],\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n): DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>;\n\nexport function tool<\n SchemaT extends\n | InteropZodObject\n | InteropZodType<string>\n | JSONSchema = InteropZodObject,\n SchemaOutputT = ToolInputSchemaOutputType<SchemaT>,\n SchemaInputT = ToolInputSchemaInputType<SchemaT>,\n ToolOutputT = ToolOutputType,\n TState = unknown,\n TContext = unknown\n>(\n func: (\n input: SchemaOutputT,\n runtime: ToolRuntime<TState, TContext>\n ) => ToolOutputT | Promise<ToolOutputT>,\n fields: ToolWrapperParams<SchemaT>\n):\n | DynamicStructuredTool<SchemaT, SchemaOutputT, SchemaInputT, ToolOutputT>\n | DynamicTool<ToolOutputT> {\n const isSimpleStringSchema = isSimpleStringZodSchema(fields.schema);\n const isStringJSONSchema = validatesOnlyStrings(fields.schema);\n\n // If the schema is not provided, or it's a simple string schema, create a DynamicTool\n if (!fields.schema || isSimpleStringSchema || isStringJSONSchema) {\n return new DynamicTool<ToolOutputT>({\n ...fields,\n description:\n fields.description ??\n (fields.schema as { description?: string } | undefined)?.description ??\n `${fields.name} tool`,\n func: async (input, runManager, config) => {\n return new Promise<ToolOutputT>((resolve, reject) => {\n const childConfig = patchConfig(config, {\n callbacks: runManager?.getChild(),\n });\n // eslint-disable-next-line no-void\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(childConfig),\n async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n resolve(func(input as any, childConfig as any));\n } catch (e) {\n reject(e);\n }\n }\n );\n });\n },\n });\n }\n\n const schema = fields.schema as InteropZodObject | JSONSchema;\n\n const description =\n fields.description ??\n (fields.schema as { description?: string }).description ??\n `${fields.name} tool`;\n\n return new DynamicStructuredTool<\n typeof schema,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT\n >({\n ...fields,\n description,\n schema,\n func: async (input, runManager, config) => {\n return new Promise<ToolOutputT>((resolve, reject) => {\n let listener: (() => void) | undefined;\n const cleanup = () => {\n if (config?.signal && listener) {\n config.signal.removeEventListener(\"abort\", listener);\n }\n };\n\n if (config?.signal) {\n listener = () => {\n cleanup();\n reject(getAbortSignalError(config.signal));\n };\n config.signal.addEventListener(\"abort\", listener);\n }\n\n const childConfig = patchConfig(config, {\n callbacks: runManager?.getChild(),\n });\n // eslint-disable-next-line no-void\n void AsyncLocalStorageProviderSingleton.runWithConfig(\n pickRunnableConfigKeys(childConfig),\n async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = await func(input as any, childConfig as any);\n\n /**\n * If the signal is aborted, we don't want to resolve the promise\n * as the promise is already rejected.\n */\n if (config?.signal?.aborted) {\n cleanup();\n return;\n }\n\n cleanup();\n resolve(result);\n } catch (e) {\n cleanup();\n reject(e);\n }\n }\n );\n });\n },\n }) as DynamicStructuredTool<\n SchemaT,\n SchemaOutputT,\n SchemaInputT,\n ToolOutputT\n >;\n}\n\nfunction _formatToolOutput<TOutput extends ToolOutputType>(params: {\n content: TOutput;\n name: string;\n artifact?: unknown;\n toolCallId?: string;\n metadata?: Record<string, unknown>;\n}): ToolMessage | TOutput {\n const { content, artifact, toolCallId, metadata } = params;\n if (toolCallId && !isDirectToolOutput(content)) {\n if (\n typeof content === \"string\" ||\n (Array.isArray(content) &&\n content.every((item) => typeof item === \"object\"))\n ) {\n return new ToolMessage({\n status: \"success\",\n content,\n artifact,\n tool_call_id: toolCallId,\n name: params.name,\n metadata,\n });\n } else {\n return new ToolMessage({\n status: \"success\",\n content: _stringify(content),\n artifact,\n tool_call_id: toolCallId,\n name: params.name,\n metadata,\n });\n }\n } else {\n return content;\n }\n}\n\nfunction _stringify(content: unknown): string {\n try {\n return JSON.stringify(content, null, 2) ?? \"\";\n } catch (_noOp) {\n return `${content}`;\n }\n}\n\nexport type ServerTool = Record<string, unknown>;\nexport type ClientTool =\n | StructuredToolInterface\n | DynamicTool\n | RunnableToolLike;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FA,IAAsB,iBAAtB,cAMUA,2CAKV;;;;;;;CAaE,eAAe;CAEf,uBAAuB;CAEvB,IAAI,eAAe;AACjB,SAAO,CAAC,aAAa,OAAQ;CAC9B;;;;;;;;;;CAWD,iBAAkC;;;;CAKlC;CAEA,YAAYC,QAAqB;EAC/B,MAAM,UAAU,CAAE,EAAC;EAEnB,KAAK,uBACH,QAAQ,wBAAwB,KAAK;EACvC,KAAK,iBAAiB,QAAQ,kBAAkB,KAAK;EACrD,KAAK,gBAAgB,QAAQ,iBAAiB,KAAK;EACnD,KAAK,WAAW,QAAQ,YAAY,KAAK;CAC1C;;;;;;;CAcD,MAAM,OAIJC,OACAC,QACuD;EACvD,IAAIC;EAKJ,IAAIC,iBAAqCC,4BACvCC,4BAAa,KAAK,eAAe,OAAO,CACzC;AACD,MAAIC,0BAAY,MAAM,EAAE;GACtB,YAAY,MAAM;GAIlB,iBAAiB;IACf,GAAG;IACH,UAAU;GACX;EACF,OACC,YAAY;AAMd,SAAO,KAAK,KAAK,WAAW,eAAe;CAG5C;;;;;;;;;;;;CAaD,MAAM,KAIJC,KACAC,WAEAC,MACqD;EAGrD,MAAM,qBAAqBH,0BAAY,IAAI,GAAG,IAAI,OAAO;EAEzD,IAAII;AACJ,MAAIC,+BAAmB,KAAK,OAAO,CACjC,KAAI;GAEF,SAAS,MAAMC,8BACb,KAAK,QACL,mBACD;EACF,SAAQ,GAAG;GACV,IAAI,UAAU,CAAC,iDAAiD,CAAC;AACjE,OAAI,KAAK,sBACP,UAAU,GAAG,QAAQ,WAAW,EAAG,EAAY,SAAS;AAE1D,OAAIC,8BAAkB,EAAE,EACtB,UAAU,GAAG,QAAQ,IAAI,EAAEC,SAAG,cAAc,EAAc,EAAE;AAG9D,SAAM,IAAIC,wCAA0B,SAAS,KAAK,UAAU,IAAI;EACjE;OACI;GACL,MAAMC,gDACJ,oBACA,KAAK,OACN;AACD,OAAI,CAACA,SAAO,OAAO;IACjB,IAAI,UAAU,CAAC,iDAAiD,CAAC;AACjE,QAAI,KAAK,sBACP,UAAU,GAAG,QAAQ,WAAW,EAAEA,SAAO,OACtC,IAAI,CAAC,MAAM,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,OAAO,CAAC,CAC9C,KAAK,KAAK,EAAE;AAGjB,UAAM,IAAID,wCAA0B,SAAS,KAAK,UAAU,IAAI;GACjE;GAGD,SAAS;EACV;EAED,MAAM,SAASE,iDAAuB,UAAU;EAChD,MAAM,mBAAmBC,0CAAgB,UACvC,OAAO,WACP,KAAK,WACL,OAAO,QAAQ,MACf,KAAK,MACL,OAAO,UACP,KAAK,UACL,EAAE,SAAS,KAAK,QAAS,EAC1B;EACD,MAAM,aAAa,MAAM,kBAAkB,gBACzC,KAAK,QAAQ,EAEb,OAAO,QAAQ,WAAW,MAAM,KAAK,UAAU,IAAI,EACnD,OAAO,OACP,QACA,QACA,QACA,OAAO,QACR;EACD,OAAO,OAAO;EACd,IAAI;AACJ,MAAI;GAEF,SAAS,MAAM,KAAK,MAAM,QAAQ,YAAY,OAAO;EACtD,SAAQ,GAAG;GACV,MAAM,YAAY,gBAAgB,EAAE;AACpC,SAAM;EACP;EACD,IAAI;EACJ,IAAI;AACJ,MAAI,KAAK,mBAAmB,uBAC1B,KAAI,MAAM,QAAQ,OAAO,IAAI,OAAO,WAAW,GAC7C,CAAC,SAAS,SAAS,GAAG;MAEtB,OAAM,IAAI,MACR,CAAC,4FAA4F,EAAE,KAAK,UAClG,OACD,EAAE;OAIP,UAAU;EAGZ,IAAIC;AAEJ,MAAIb,0BAAY,IAAI,EAClB,aAAa,IAAI;AAGnB,MAAI,CAAC,cAAcc,mCAAqB,OAAO,EAC7C,aAAa,OAAO,SAAS;EAG/B,MAAM,kBAAkB,kBAA+B;GACrD;GACA;GACA;GACA,MAAM,KAAK;GACX,UAAU,KAAK;EAChB,EAAC;EACF,MAAM,YAAY,cAAc,gBAAgB;AAChD,SAAO;CACR;AACF;;;;AAKD,IAAsB,OAAtB,cACU,eAYV;CACE,SAASC,SACN,OAAO,EAAE,OAAOA,SAAE,QAAQ,CAAC,UAAU,CAAE,EAAC,CACxC,UAAU,CAAC,QAAQ,IAAI,MAAM;CAEhC,YAAYtB,QAAqB;EAC/B,MAAM,OAAO;CACd;;;;;;;;;;CAYD,KAIEQ,KACAe,WACkE;EAGlE,MAAM,gBACJ,OAAO,QAAQ,YAAY,OAAO,OAAO,EAAE,OAAO,IAAK,IAAG;AAG5D,SAAO,MAAM,KAAK,eAAe,UAAU;CAC5C;AACF;;;;AAKD,IAAa,cAAb,cAEU,KAAkB;CAC1B,OAAO,UAAU;AACf,SAAO;CACR;CAED;CAEA;CAEA;CAEA,YAAYC,QAAuC;EACjD,MAAM,OAAO;EACb,KAAK,OAAO,OAAO;EACnB,KAAK,cAAc,OAAO;EAC1B,KAAK,OAAO,OAAO;EACnB,KAAK,eAAe,OAAO,gBAAgB,KAAK;CACjD;;;;CAKD,MAAM,KAIJhB,KACAC,WACkE;EAClE,MAAM,SAASS,iDAAuB,UAAU;AAChD,MAAI,OAAO,YAAY,QACrB,OAAO,UAAU,KAAK;AAIxB,SAAO,MAAM,KAAoB,KAAK,OAAkB;CACzD;;CAGD,MAAM,MACJO,OACAC,YACAC,cACsB;AACtB,SAAO,KAAK,KAAK,OAAO,YAAY,aAAa;CAClD;AACF;;;;;;;;;;AAWD,IAAa,wBAAb,cAKU,eAAkE;CAC1E,OAAO,UAAU;AACf,SAAO;CACR;CAED;CAEA;CAEA;CAEA;CAEA,YACEC,QACA;EACA,MAAM,OAAO;EACb,KAAK,OAAO,OAAO;EACnB,KAAK,cAAc,OAAO;EAC1B,KAAK,OAAO,OAAO;EACnB,KAAK,eAAe,OAAO,gBAAgB,KAAK;EAChD,KAAK,SAAS,OAAO;CACtB;;;;CAMD,MAAM,KAIJpB,KACAC,WAEAC,MACkE;EAClE,MAAM,SAASQ,iDAAuB,UAAU;AAChD,MAAI,OAAO,YAAY,QACrB,OAAO,UAAU,KAAK;AAKxB,SAAO,MAAM,KAAoB,KAAK,QAAmB,KAAK;CAC/D;CAED,AAAU,MACRW,KAGAH,YACAI,cACsB;AACtB,SAAO,KAAK,KAAK,KAAK,YAAY,aAAa;CAChD;AACF;;;;;;AAOD,IAAsB,cAAtB,MAAkC;CAGhC,WAAsC;AACpC,SAAO,KAAK;CACb;AACF;AAyMD,SAAgB,KAWdC,MAIAC,QAG2B;CAC3B,MAAM,uBAAuBC,oCAAwB,OAAO,OAAO;CACnE,MAAM,qBAAqBC,+CAAqB,OAAO,OAAO;AAG9D,KAAI,CAAC,OAAO,UAAU,wBAAwB,mBAC5C,QAAO,IAAI,YAAyB;EAClC,GAAG;EACH,aACE,OAAO,eACN,OAAO,QAAiD,eACzD,GAAG,OAAO,KAAK,KAAK,CAAC;EACvB,MAAM,OAAO,OAAO,YAAY,WAAW;AACzC,UAAO,IAAI,QAAqB,CAAC,SAAS,WAAW;IACnD,MAAM,cAAcC,2BAAY,QAAQ,EACtC,WAAW,YAAY,UAAU,CAClC,EAAC;IAEGC,iDAAmC,cACtCC,sCAAuB,YAAY,EACnC,YAAY;AACV,SAAI;MAEF,QAAQ,KAAK,OAAc,YAAmB,CAAC;KAChD,SAAQ,GAAG;MACV,OAAO,EAAE;KACV;IACF,EACF;GACF;EACF;CACF;CAGH,MAAM,SAAS,OAAO;CAEtB,MAAM,cACJ,OAAO,eACN,OAAO,OAAoC,eAC5C,GAAG,OAAO,KAAK,KAAK,CAAC;AAEvB,QAAO,IAAI,sBAKT;EACA,GAAG;EACH;EACA;EACA,MAAM,OAAO,OAAO,YAAY,WAAW;AACzC,UAAO,IAAI,QAAqB,CAAC,SAAS,WAAW;IACnD,IAAIC;IACJ,MAAM,UAAU,MAAM;AACpB,SAAI,QAAQ,UAAU,UACpB,OAAO,OAAO,oBAAoB,SAAS,SAAS;IAEvD;AAED,QAAI,QAAQ,QAAQ;KAClB,WAAW,MAAM;MACf,SAAS;MACT,OAAOC,mCAAoB,OAAO,OAAO,CAAC;KAC3C;KACD,OAAO,OAAO,iBAAiB,SAAS,SAAS;IAClD;IAED,MAAM,cAAcJ,2BAAY,QAAQ,EACtC,WAAW,YAAY,UAAU,CAClC,EAAC;IAEGC,iDAAmC,cACtCC,sCAAuB,YAAY,EACnC,YAAY;AACV,SAAI;MAEF,MAAM,SAAS,MAAM,KAAK,OAAc,YAAmB;;;;;AAM3D,UAAI,QAAQ,QAAQ,SAAS;OAC3B,SAAS;AACT;MACD;MAED,SAAS;MACT,QAAQ,OAAO;KAChB,SAAQ,GAAG;MACV,SAAS;MACT,OAAO,EAAE;KACV;IACF,EACF;GACF;EACF;CACF;AAMF;AAED,SAAS,kBAAkDG,QAMjC;CACxB,MAAM,EAAE,SAAS,UAAU,YAAY,UAAU,GAAG;AACpD,KAAI,cAAc,CAACC,yCAAmB,QAAQ,CAC5C,KACE,OAAO,YAAY,YAClB,MAAM,QAAQ,QAAQ,IACrB,QAAQ,MAAM,CAAC,SAAS,OAAO,SAAS,SAAS,CAEnD,QAAO,IAAIC,kCAAY;EACrB,QAAQ;EACR;EACA;EACA,cAAc;EACd,MAAM,OAAO;EACb;CACD;KAED,QAAO,IAAIA,kCAAY;EACrB,QAAQ;EACR,SAAS,WAAW,QAAQ;EAC5B;EACA,cAAc;EACd,MAAM,OAAO;EACb;CACD;KAGH,QAAO;AAEV;AAED,SAAS,WAAWC,SAA0B;AAC5C,KAAI;AACF,SAAO,KAAK,UAAU,SAAS,MAAM,EAAE,IAAI;CAC5C,SAAQ,OAAO;AACd,SAAO,GAAG,SAAS;CACpB;AACF"}
@@ -2,8 +2,10 @@ import { ToolCall, ToolMessage } from "../messages/tool.js";
2
2
  import { InferInteropZodInput, InferInteropZodOutput, InteropZodObject, InteropZodType, ZodObjectV3, ZodObjectV4, ZodStringV3, ZodStringV4 } from "../utils/types/zod.js";
3
3
  import { CallbackManagerForToolRun } from "../callbacks/manager.js";
4
4
  import { RunnableConfig } from "../runnables/types.js";
5
+ import "../runnables/config.js";
5
6
  import { RunnableFunc, RunnableToolLike } from "../runnables/base.js";
6
7
  import { JsonSchema7Type } from "../utils/zod-to-json-schema/parseTypes.js";
8
+ import "../utils/json_schema.js";
7
9
  import { BaseLangChain } from "../language_models/base.js";
8
10
  import { ToolInputParsingException } from "./utils.js";
9
11
  import { BaseDynamicToolInput, ContentAndArtifact, DynamicStructuredToolInput, DynamicToolInput, ResponseFormat, StringInputToolSchema, StructuredToolCallInput, StructuredToolInterface, StructuredToolParams, ToolInputSchemaBase, ToolInputSchemaInputType, ToolInputSchemaOutputType, ToolInterface, ToolOutputType, ToolParams, ToolReturnType, ToolRunnableConfig, ToolRuntime, isLangChainTool, isRunnableToolLike, isStructuredTool, isStructuredToolParams } from "./types.js";
@@ -6,7 +6,7 @@ import { AsyncLocalStorageProviderSingleton } from "../singletons/async_local_st
6
6
  import "../singletons/index.js";
7
7
  import { ensureConfig, mergeConfigs, patchConfig, pickRunnableConfigKeys } from "../runnables/config.js";
8
8
  import { getAbortSignalError } from "../utils/signal.js";
9
- import { interopParseAsync, isInteropZodSchema, isSimpleStringZodSchema } from "../utils/types/zod.js";
9
+ import { interopParseAsync, isInteropZodError, isInteropZodSchema, isSimpleStringZodSchema } from "../utils/types/zod.js";
10
10
  import { validatesOnlyStrings } from "../utils/json_schema.js";
11
11
  import { BaseLangChain } from "../language_models/base.js";
12
12
  import { isLangChainTool, isRunnableToolLike, isStructuredTool, isStructuredToolParams } from "./types.js";
@@ -102,7 +102,7 @@ var StructuredTool = class extends BaseLangChain {
102
102
  } catch (e) {
103
103
  let message = `Received tool input did not match expected schema`;
104
104
  if (this.verboseParsingErrors) message = `${message}\nDetails: ${e.message}`;
105
- if (e instanceof Error && e.constructor.name === "ZodError") message = `${message}\n\n${z$1.prettifyError(e)}`;
105
+ if (isInteropZodError(e)) message = `${message}\n\n${z$1.prettifyError(e)}`;
106
106
  throw new ToolInputParsingException(message, JSON.stringify(arg));
107
107
  }
108
108
  else {