@langchain/langgraph 0.4.9 → 1.0.0-alpha.1
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.
- package/CHANGELOG.md +26 -0
- package/README.md +1 -2
- package/dist/_virtual/rolldown_runtime.cjs +25 -0
- package/dist/channels/any_value.cjs +44 -63
- package/dist/channels/any_value.cjs.map +1 -0
- package/dist/channels/any_value.d.cts +24 -0
- package/dist/channels/any_value.d.cts.map +1 -0
- package/dist/channels/any_value.d.ts +16 -11
- package/dist/channels/any_value.d.ts.map +1 -0
- package/dist/channels/any_value.js +42 -57
- package/dist/channels/any_value.js.map +1 -1
- package/dist/channels/base.cjs +93 -133
- package/dist/channels/base.cjs.map +1 -0
- package/dist/channels/base.d.cts +79 -0
- package/dist/channels/base.d.cts.map +1 -0
- package/dist/channels/base.d.ts +77 -73
- package/dist/channels/base.d.ts.map +1 -0
- package/dist/channels/base.js +90 -127
- package/dist/channels/base.js.map +1 -1
- package/dist/channels/binop.cjs +47 -77
- package/dist/channels/binop.cjs.map +1 -0
- package/dist/channels/binop.d.cts +22 -0
- package/dist/channels/binop.d.cts.map +1 -0
- package/dist/channels/binop.d.ts +17 -12
- package/dist/channels/binop.d.ts.map +1 -0
- package/dist/channels/binop.js +45 -71
- package/dist/channels/binop.js.map +1 -1
- package/dist/channels/dynamic_barrier_value.cjs +72 -208
- package/dist/channels/dynamic_barrier_value.cjs.map +1 -0
- package/dist/channels/dynamic_barrier_value.d.cts +42 -0
- package/dist/channels/dynamic_barrier_value.d.cts.map +1 -0
- package/dist/channels/dynamic_barrier_value.d.ts +20 -35
- package/dist/channels/dynamic_barrier_value.d.ts.map +1 -0
- package/dist/channels/dynamic_barrier_value.js +69 -200
- package/dist/channels/dynamic_barrier_value.js.map +1 -1
- package/dist/channels/ephemeral_value.cjs +44 -70
- package/dist/channels/ephemeral_value.cjs.map +1 -0
- package/dist/channels/ephemeral_value.d.cts +22 -0
- package/dist/channels/ephemeral_value.d.cts.map +1 -0
- package/dist/channels/ephemeral_value.d.ts +18 -12
- package/dist/channels/ephemeral_value.d.ts.map +1 -0
- package/dist/channels/ephemeral_value.js +43 -65
- package/dist/channels/ephemeral_value.js.map +1 -1
- package/dist/channels/index.cjs +21 -10
- package/dist/channels/index.d.cts +9 -0
- package/dist/channels/index.d.ts +9 -7
- package/dist/channels/index.js +10 -3
- package/dist/channels/last_value.cjs +90 -140
- package/dist/channels/last_value.cjs.map +1 -0
- package/dist/channels/last_value.d.cts +42 -0
- package/dist/channels/last_value.d.cts.map +1 -0
- package/dist/channels/last_value.d.ts +27 -23
- package/dist/channels/last_value.d.ts.map +1 -0
- package/dist/channels/last_value.js +87 -133
- package/dist/channels/last_value.js.map +1 -1
- package/dist/channels/named_barrier_value.cjs +114 -170
- package/dist/channels/named_barrier_value.cjs.map +1 -0
- package/dist/channels/named_barrier_value.d.cts +46 -0
- package/dist/channels/named_barrier_value.d.cts.map +1 -0
- package/dist/channels/named_barrier_value.d.ts +32 -29
- package/dist/channels/named_barrier_value.d.ts.map +1 -0
- package/dist/channels/named_barrier_value.js +111 -163
- package/dist/channels/named_barrier_value.js.map +1 -1
- package/dist/channels/topic.cjs +63 -96
- package/dist/channels/topic.cjs.map +1 -0
- package/dist/channels/topic.d.cts +32 -0
- package/dist/channels/topic.d.cts.map +1 -0
- package/dist/channels/topic.d.ts +28 -19
- package/dist/channels/topic.d.ts.map +1 -0
- package/dist/channels/topic.js +61 -90
- package/dist/channels/topic.js.map +1 -1
- package/dist/constants.cjs +376 -452
- package/dist/constants.cjs.map +1 -0
- package/dist/constants.d.cts +285 -0
- package/dist/constants.d.cts.map +1 -0
- package/dist/constants.d.ts +113 -148
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +336 -444
- package/dist/constants.js.map +1 -1
- package/dist/errors.cjs +151 -179
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.cts +81 -0
- package/dist/errors.d.cts.map +1 -0
- package/dist/errors.d.ts +56 -46
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +140 -165
- package/dist/errors.js.map +1 -1
- package/dist/func/index.cjs +292 -290
- package/dist/func/index.cjs.map +1 -0
- package/dist/func/index.d.cts +293 -0
- package/dist/func/index.d.cts.map +1 -0
- package/dist/func/index.d.ts +86 -72
- package/dist/func/index.d.ts.map +1 -0
- package/dist/func/index.js +288 -284
- package/dist/func/index.js.map +1 -1
- package/dist/func/types.d.cts +64 -0
- package/dist/func/types.d.cts.map +1 -0
- package/dist/func/types.d.ts +24 -19
- package/dist/func/types.d.ts.map +1 -0
- package/dist/graph/annotation.cjs +96 -120
- package/dist/graph/annotation.cjs.map +1 -0
- package/dist/graph/annotation.d.cts +116 -0
- package/dist/graph/annotation.d.cts.map +1 -0
- package/dist/graph/annotation.d.ts +33 -34
- package/dist/graph/annotation.d.ts.map +1 -0
- package/dist/graph/annotation.js +91 -112
- package/dist/graph/annotation.js.map +1 -1
- package/dist/graph/graph.cjs +419 -723
- package/dist/graph/graph.cjs.map +1 -0
- package/dist/graph/graph.d.cts +133 -0
- package/dist/graph/graph.d.cts.map +1 -0
- package/dist/graph/graph.d.ts +124 -91
- package/dist/graph/graph.d.ts.map +1 -0
- package/dist/graph/graph.js +412 -713
- package/dist/graph/graph.js.map +1 -1
- package/dist/graph/index.cjs +4 -17
- package/dist/graph/index.js +6 -5
- package/dist/graph/message.cjs +59 -104
- package/dist/graph/message.cjs.map +1 -0
- package/dist/graph/message.d.cts +19 -0
- package/dist/graph/message.d.cts.map +1 -0
- package/dist/graph/message.d.ts +11 -10
- package/dist/graph/message.d.ts.map +1 -0
- package/dist/graph/message.js +56 -98
- package/dist/graph/message.js.map +1 -1
- package/dist/graph/messages_annotation.cjs +106 -106
- package/dist/graph/messages_annotation.cjs.map +1 -0
- package/dist/graph/messages_annotation.d.cts +111 -0
- package/dist/graph/messages_annotation.d.cts.map +1 -0
- package/dist/graph/messages_annotation.d.ts +18 -9
- package/dist/graph/messages_annotation.d.ts.map +1 -0
- package/dist/graph/messages_annotation.js +100 -100
- package/dist/graph/messages_annotation.js.map +1 -1
- package/dist/graph/state.cjs +475 -779
- package/dist/graph/state.cjs.map +1 -0
- package/dist/graph/state.d.cts +231 -0
- package/dist/graph/state.d.cts.map +1 -0
- package/dist/graph/state.d.ts +148 -138
- package/dist/graph/state.d.ts.map +1 -0
- package/dist/graph/state.js +469 -769
- package/dist/graph/state.js.map +1 -1
- package/dist/graph/zod/index.cjs +10 -21
- package/dist/graph/zod/index.d.cts +3 -0
- package/dist/graph/zod/index.d.ts +3 -3
- package/dist/graph/zod/index.js +4 -4
- package/dist/graph/zod/meta.cjs +142 -177
- package/dist/graph/zod/meta.cjs.map +1 -0
- package/dist/graph/zod/meta.d.cts +116 -0
- package/dist/graph/zod/meta.d.cts.map +1 -0
- package/dist/graph/zod/meta.d.ts +99 -97
- package/dist/graph/zod/meta.d.ts.map +1 -0
- package/dist/graph/zod/meta.js +136 -170
- package/dist/graph/zod/meta.js.map +1 -1
- package/dist/graph/zod/plugin.cjs +36 -39
- package/dist/graph/zod/plugin.cjs.map +1 -0
- package/dist/graph/zod/plugin.js +34 -35
- package/dist/graph/zod/plugin.js.map +1 -1
- package/dist/graph/zod/schema.cjs +82 -110
- package/dist/graph/zod/schema.cjs.map +1 -0
- package/dist/graph/zod/schema.d.cts +38 -0
- package/dist/graph/zod/schema.d.cts.map +1 -0
- package/dist/graph/zod/schema.d.ts +12 -6
- package/dist/graph/zod/schema.d.ts.map +1 -0
- package/dist/graph/zod/schema.js +77 -103
- package/dist/graph/zod/schema.js.map +1 -1
- package/dist/graph/zod/zod-registry.cjs +41 -47
- package/dist/graph/zod/zod-registry.cjs.map +1 -0
- package/dist/graph/zod/zod-registry.d.cts +51 -0
- package/dist/graph/zod/zod-registry.d.cts.map +1 -0
- package/dist/graph/zod/zod-registry.d.ts +34 -26
- package/dist/graph/zod/zod-registry.d.ts.map +1 -0
- package/dist/graph/zod/zod-registry.js +37 -41
- package/dist/graph/zod/zod-registry.js.map +1 -1
- package/dist/hash.cjs +205 -267
- package/dist/hash.cjs.map +1 -0
- package/dist/hash.js +205 -265
- package/dist/hash.js.map +1 -1
- package/dist/index.cjs +111 -33
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +26 -0
- package/dist/index.d.ts +26 -5
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/dist/interrupt.cjs +79 -85
- package/dist/interrupt.cjs.map +1 -0
- package/dist/interrupt.d.cts +49 -0
- package/dist/interrupt.d.cts.map +1 -0
- package/dist/interrupt.d.ts +6 -1
- package/dist/interrupt.d.ts.map +1 -0
- package/dist/interrupt.js +76 -80
- package/dist/interrupt.js.map +1 -1
- package/dist/prebuilt/agentName.cjs +139 -172
- package/dist/prebuilt/agentName.cjs.map +1 -0
- package/dist/prebuilt/agentName.d.cts +42 -0
- package/dist/prebuilt/agentName.d.cts.map +1 -0
- package/dist/prebuilt/agentName.d.ts +13 -21
- package/dist/prebuilt/agentName.d.ts.map +1 -0
- package/dist/prebuilt/agentName.js +139 -168
- package/dist/prebuilt/agentName.js.map +1 -1
- package/dist/prebuilt/agent_executor.cjs +42 -80
- package/dist/prebuilt/agent_executor.cjs.map +1 -0
- package/dist/prebuilt/agent_executor.d.cts +57 -0
- package/dist/prebuilt/agent_executor.d.cts.map +1 -0
- package/dist/prebuilt/agent_executor.d.ts +47 -38
- package/dist/prebuilt/agent_executor.d.ts.map +1 -0
- package/dist/prebuilt/agent_executor.js +40 -75
- package/dist/prebuilt/agent_executor.js.map +1 -1
- package/dist/prebuilt/chat_agent_executor.cjs +66 -128
- package/dist/prebuilt/chat_agent_executor.cjs.map +1 -0
- package/dist/prebuilt/chat_agent_executor.d.cts +23 -0
- package/dist/prebuilt/chat_agent_executor.d.cts.map +1 -0
- package/dist/prebuilt/chat_agent_executor.d.ts +18 -10
- package/dist/prebuilt/chat_agent_executor.d.ts.map +1 -0
- package/dist/prebuilt/chat_agent_executor.js +63 -123
- package/dist/prebuilt/chat_agent_executor.js.map +1 -1
- package/dist/prebuilt/index.cjs +15 -18
- package/dist/prebuilt/index.d.cts +8 -0
- package/dist/prebuilt/index.d.ts +8 -8
- package/dist/prebuilt/index.js +8 -7
- package/dist/prebuilt/interrupt.d.cts +73 -0
- package/dist/prebuilt/interrupt.d.cts.map +1 -0
- package/dist/prebuilt/interrupt.d.ts +32 -15
- package/dist/prebuilt/interrupt.d.ts.map +1 -0
- package/dist/prebuilt/react_agent_executor.cjs +317 -473
- package/dist/prebuilt/react_agent_executor.cjs.map +1 -0
- package/dist/prebuilt/react_agent_executor.d.cts +229 -0
- package/dist/prebuilt/react_agent_executor.d.cts.map +1 -0
- package/dist/prebuilt/react_agent_executor.d.ts +171 -143
- package/dist/prebuilt/react_agent_executor.d.ts.map +1 -0
- package/dist/prebuilt/react_agent_executor.js +315 -465
- package/dist/prebuilt/react_agent_executor.js.map +1 -1
- package/dist/prebuilt/tool_executor.cjs +45 -67
- package/dist/prebuilt/tool_executor.cjs.map +1 -0
- package/dist/prebuilt/tool_executor.d.cts +42 -0
- package/dist/prebuilt/tool_executor.d.cts.map +1 -0
- package/dist/prebuilt/tool_executor.d.ts +30 -24
- package/dist/prebuilt/tool_executor.d.ts.map +1 -0
- package/dist/prebuilt/tool_executor.js +44 -63
- package/dist/prebuilt/tool_executor.js.map +1 -1
- package/dist/prebuilt/tool_node.cjs +213 -275
- package/dist/prebuilt/tool_node.cjs.map +1 -0
- package/dist/prebuilt/tool_node.d.cts +151 -0
- package/dist/prebuilt/tool_node.d.cts.map +1 -0
- package/dist/prebuilt/tool_node.d.ts +30 -17
- package/dist/prebuilt/tool_node.d.ts.map +1 -0
- package/dist/prebuilt/tool_node.js +209 -268
- package/dist/prebuilt/tool_node.js.map +1 -1
- package/dist/pregel/algo.cjs +551 -692
- package/dist/pregel/algo.cjs.map +1 -0
- package/dist/pregel/algo.d.cts +13 -0
- package/dist/pregel/algo.d.cts.map +1 -0
- package/dist/pregel/algo.d.ts +8 -38
- package/dist/pregel/algo.d.ts.map +1 -0
- package/dist/pregel/algo.js +546 -683
- package/dist/pregel/algo.js.map +1 -1
- package/dist/pregel/call.cjs +46 -42
- package/dist/pregel/call.cjs.map +1 -0
- package/dist/pregel/call.js +43 -37
- package/dist/pregel/call.js.map +1 -1
- package/dist/pregel/debug.cjs +153 -223
- package/dist/pregel/debug.cjs.map +1 -0
- package/dist/pregel/debug.js +152 -215
- package/dist/pregel/debug.js.map +1 -1
- package/dist/pregel/index.cjs +1138 -1604
- package/dist/pregel/index.cjs.map +1 -0
- package/dist/pregel/index.d.cts +536 -0
- package/dist/pregel/index.d.cts.map +1 -0
- package/dist/pregel/index.d.ts +460 -422
- package/dist/pregel/index.d.ts.map +1 -0
- package/dist/pregel/index.js +1129 -1592
- package/dist/pregel/index.js.map +1 -1
- package/dist/pregel/io.cjs +127 -234
- package/dist/pregel/io.cjs.map +1 -0
- package/dist/pregel/io.js +122 -225
- package/dist/pregel/io.js.map +1 -1
- package/dist/pregel/loop.cjs +542 -954
- package/dist/pregel/loop.cjs.map +1 -0
- package/dist/pregel/loop.js +539 -948
- package/dist/pregel/loop.js.map +1 -1
- package/dist/pregel/messages.cjs +104 -196
- package/dist/pregel/messages.cjs.map +1 -0
- package/dist/pregel/messages.js +102 -191
- package/dist/pregel/messages.js.map +1 -1
- package/dist/pregel/read.cjs +150 -280
- package/dist/pregel/read.cjs.map +1 -0
- package/dist/pregel/read.d.cts +51 -0
- package/dist/pregel/read.d.cts.map +1 -0
- package/dist/pregel/read.d.ts +48 -46
- package/dist/pregel/read.d.ts.map +1 -0
- package/dist/pregel/read.js +147 -274
- package/dist/pregel/read.js.map +1 -1
- package/dist/pregel/remote.cjs +339 -458
- package/dist/pregel/remote.cjs.map +1 -0
- package/dist/pregel/remote.d.cts +121 -0
- package/dist/pregel/remote.d.cts.map +1 -0
- package/dist/pregel/remote.d.ts +79 -69
- package/dist/pregel/remote.d.ts.map +1 -0
- package/dist/pregel/remote.js +337 -453
- package/dist/pregel/remote.js.map +1 -1
- package/dist/pregel/retry.cjs +87 -138
- package/dist/pregel/retry.cjs.map +1 -0
- package/dist/pregel/retry.js +83 -130
- package/dist/pregel/retry.js.map +1 -1
- package/dist/pregel/runnable_types.d.cts +49 -0
- package/dist/pregel/runnable_types.d.cts.map +1 -0
- package/dist/pregel/runnable_types.d.ts +47 -17
- package/dist/pregel/runnable_types.d.ts.map +1 -0
- package/dist/pregel/runner.cjs +222 -315
- package/dist/pregel/runner.cjs.map +1 -0
- package/dist/pregel/runner.js +219 -308
- package/dist/pregel/runner.js.map +1 -1
- package/dist/pregel/stream.cjs +89 -130
- package/dist/pregel/stream.cjs.map +1 -0
- package/dist/pregel/stream.js +87 -125
- package/dist/pregel/stream.js.map +1 -1
- package/dist/pregel/types.cjs +25 -62
- package/dist/pregel/types.cjs.map +1 -0
- package/dist/pregel/types.d.cts +440 -0
- package/dist/pregel/types.d.cts.map +1 -0
- package/dist/pregel/types.d.ts +381 -432
- package/dist/pregel/types.d.ts.map +1 -0
- package/dist/pregel/types.js +23 -57
- package/dist/pregel/types.js.map +1 -1
- package/dist/pregel/utils/config.cjs +101 -147
- package/dist/pregel/utils/config.cjs.map +1 -0
- package/dist/pregel/utils/config.d.cts +36 -0
- package/dist/pregel/utils/config.d.cts.map +1 -0
- package/dist/pregel/utils/config.d.ts +12 -9
- package/dist/pregel/utils/config.d.ts.map +1 -0
- package/dist/pregel/utils/config.js +99 -143
- package/dist/pregel/utils/config.js.map +1 -1
- package/dist/pregel/utils/index.cjs +87 -125
- package/dist/pregel/utils/index.cjs.map +1 -0
- package/dist/pregel/utils/index.d.cts +51 -0
- package/dist/pregel/utils/index.d.cts.map +1 -0
- package/dist/pregel/utils/index.d.ts +45 -61
- package/dist/pregel/utils/index.d.ts.map +1 -0
- package/dist/pregel/utils/index.js +86 -120
- package/dist/pregel/utils/index.js.map +1 -1
- package/dist/pregel/utils/subgraph.cjs +15 -26
- package/dist/pregel/utils/subgraph.cjs.map +1 -0
- package/dist/pregel/utils/subgraph.js +12 -21
- package/dist/pregel/utils/subgraph.js.map +1 -1
- package/dist/pregel/validate.cjs +42 -92
- package/dist/pregel/validate.cjs.map +1 -0
- package/dist/pregel/validate.js +39 -84
- package/dist/pregel/validate.js.map +1 -1
- package/dist/pregel/write.cjs +87 -137
- package/dist/pregel/write.cjs.map +1 -0
- package/dist/pregel/write.d.cts +35 -0
- package/dist/pregel/write.d.cts.map +1 -0
- package/dist/pregel/write.d.ts +27 -23
- package/dist/pregel/write.d.ts.map +1 -0
- package/dist/pregel/write.js +83 -131
- package/dist/pregel/write.js.map +1 -1
- package/dist/remote.cjs +3 -6
- package/dist/remote.d.cts +2 -0
- package/dist/remote.d.ts +2 -1
- package/dist/remote.js +3 -2
- package/dist/setup/async_local_storage.cjs +10 -7
- package/dist/setup/async_local_storage.cjs.map +1 -0
- package/dist/setup/async_local_storage.js +7 -2
- package/dist/setup/async_local_storage.js.map +1 -1
- package/dist/ui/index.cjs +4 -0
- package/dist/ui/index.d.cts +5 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/stream.cjs +145 -0
- package/dist/ui/stream.cjs.map +1 -0
- package/dist/ui/stream.d.cts +25 -0
- package/dist/ui/stream.d.cts.map +1 -0
- package/dist/ui/stream.d.ts +25 -0
- package/dist/ui/stream.d.ts.map +1 -0
- package/dist/ui/stream.js +143 -0
- package/dist/ui/stream.js.map +1 -0
- package/dist/ui/types.infer.d.cts +53 -0
- package/dist/ui/types.infer.d.cts.map +1 -0
- package/dist/ui/types.infer.d.ts +53 -0
- package/dist/ui/types.infer.d.ts.map +1 -0
- package/dist/ui/types.message.d.cts +95 -0
- package/dist/ui/types.message.d.cts.map +1 -0
- package/dist/ui/types.message.d.ts +95 -0
- package/dist/ui/types.message.d.ts.map +1 -0
- package/dist/ui/types.schema.d.cts +228 -0
- package/dist/ui/types.schema.d.cts.map +1 -0
- package/dist/ui/types.schema.d.ts +228 -0
- package/dist/ui/types.schema.d.ts.map +1 -0
- package/dist/utils.cjs +77 -147
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +32 -0
- package/dist/utils.d.cts.map +1 -0
- package/dist/utils.d.ts +29 -25
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +73 -140
- package/dist/utils.js.map +1 -1
- package/dist/web.cjs +96 -55
- package/dist/web.d.cts +23 -0
- package/dist/web.d.ts +23 -14
- package/dist/web.js +15 -8
- package/dist/writer.cjs +15 -0
- package/dist/writer.cjs.map +1 -0
- package/dist/writer.d.cts +5 -0
- package/dist/writer.d.cts.map +1 -0
- package/dist/writer.d.ts +5 -0
- package/dist/writer.d.ts.map +1 -0
- package/dist/writer.js +14 -0
- package/dist/writer.js.map +1 -0
- package/package.json +90 -83
- package/dist/channels/index.js.map +0 -1
- package/dist/func/types.cjs +0 -15
- package/dist/func/types.js +0 -12
- package/dist/func/types.js.map +0 -1
- package/dist/graph/index.d.ts +0 -4
- package/dist/graph/index.js.map +0 -1
- package/dist/graph/message.test.cjs +0 -196
- package/dist/graph/message.test.d.ts +0 -1
- package/dist/graph/message.test.js +0 -194
- package/dist/graph/message.test.js.map +0 -1
- package/dist/graph/zod/index.js.map +0 -1
- package/dist/graph/zod/plugin.d.ts +0 -28
- package/dist/hash.d.ts +0 -2
- package/dist/prebuilt/index.js.map +0 -1
- package/dist/prebuilt/interrupt.cjs +0 -3
- package/dist/prebuilt/interrupt.js +0 -2
- package/dist/prebuilt/interrupt.js.map +0 -1
- package/dist/pregel/call.d.ts +0 -16
- package/dist/pregel/debug.d.ts +0 -41
- package/dist/pregel/debug.test.cjs +0 -258
- package/dist/pregel/debug.test.d.ts +0 -1
- package/dist/pregel/debug.test.js +0 -256
- package/dist/pregel/debug.test.js.map +0 -1
- package/dist/pregel/io.d.ts +0 -30
- package/dist/pregel/io.mapCommand.test.cjs +0 -150
- package/dist/pregel/io.mapCommand.test.d.ts +0 -1
- package/dist/pregel/io.mapCommand.test.js +0 -148
- package/dist/pregel/io.mapCommand.test.js.map +0 -1
- package/dist/pregel/loop.d.ts +0 -147
- package/dist/pregel/messages.d.ts +0 -30
- package/dist/pregel/messages.test.cjs +0 -369
- package/dist/pregel/messages.test.d.ts +0 -1
- package/dist/pregel/messages.test.js +0 -367
- package/dist/pregel/messages.test.js.map +0 -1
- package/dist/pregel/read.test.cjs +0 -194
- package/dist/pregel/read.test.d.ts +0 -1
- package/dist/pregel/read.test.js +0 -192
- package/dist/pregel/read.test.js.map +0 -1
- package/dist/pregel/retry.d.ts +0 -17
- package/dist/pregel/runnable_types.cjs +0 -3
- package/dist/pregel/runnable_types.js +0 -2
- package/dist/pregel/runnable_types.js.map +0 -1
- package/dist/pregel/runner.d.ts +0 -79
- package/dist/pregel/runner.test.cjs +0 -66
- package/dist/pregel/runner.test.d.ts +0 -1
- package/dist/pregel/runner.test.js +0 -64
- package/dist/pregel/runner.test.js.map +0 -1
- package/dist/pregel/stream.d.ts +0 -40
- package/dist/pregel/utils/config.test.cjs +0 -214
- package/dist/pregel/utils/config.test.d.ts +0 -1
- package/dist/pregel/utils/config.test.js +0 -212
- package/dist/pregel/utils/config.test.js.map +0 -1
- package/dist/pregel/utils/subgraph.d.ts +0 -4
- package/dist/pregel/utils/subgraph.test.cjs +0 -83
- package/dist/pregel/utils/subgraph.test.d.ts +0 -1
- package/dist/pregel/utils/subgraph.test.js +0 -81
- package/dist/pregel/utils/subgraph.test.js.map +0 -1
- package/dist/pregel/validate.d.ts +0 -16
- package/dist/pregel/validate.test.cjs +0 -220
- package/dist/pregel/validate.test.d.ts +0 -1
- package/dist/pregel/validate.test.js +0 -218
- package/dist/pregel/validate.test.js.map +0 -1
- package/dist/pregel/write.test.cjs +0 -181
- package/dist/pregel/write.test.d.ts +0 -1
- package/dist/pregel/write.test.js +0 -179
- package/dist/pregel/write.test.js.map +0 -1
- package/dist/remote.js.map +0 -1
- package/dist/setup/async_local_storage.d.ts +0 -1
- package/dist/web.js.map +0 -1
- package/index.cjs +0 -1
- package/index.d.cts +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/prebuilt.cjs +0 -1
- package/prebuilt.d.cts +0 -1
- package/prebuilt.d.ts +0 -1
- package/prebuilt.js +0 -1
- package/pregel.cjs +0 -1
- package/pregel.d.cts +0 -1
- package/pregel.d.ts +0 -1
- package/pregel.js +0 -1
- package/remote.cjs +0 -1
- package/remote.d.cts +0 -1
- package/remote.d.ts +0 -1
- package/remote.js +0 -1
- package/web.cjs +0 -1
- package/web.d.cts +0 -1
- package/web.d.ts +0 -1
- package/web.js +0 -1
- package/zod/schema.cjs +0 -1
- package/zod/schema.d.cts +0 -1
- package/zod/schema.d.ts +0 -1
- package/zod/schema.js +0 -1
- package/zod.cjs +0 -1
- package/zod.d.cts +0 -1
- package/zod.d.ts +0 -1
- package/zod.js +0 -1
package/dist/graph/graph.cjs
CHANGED
|
@@ -1,727 +1,423 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
const endNodes = {};
|
|
412
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
413
|
-
let subgraphs = {};
|
|
414
|
-
if (xray) {
|
|
415
|
-
subgraphs = Object.fromEntries((await (0, utils_js_1.gatherIterator)(this.getSubgraphsAsync())).filter(
|
|
416
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
417
|
-
(x) => isCompiledGraph(x[1])));
|
|
418
|
-
}
|
|
419
|
-
function addEdge(start, end, label, conditional = false) {
|
|
420
|
-
if (end === constants_js_1.END && endNodes[constants_js_1.END] === undefined) {
|
|
421
|
-
endNodes[constants_js_1.END] = graph.addNode({ schema: zod_1.z.any() }, constants_js_1.END);
|
|
422
|
-
}
|
|
423
|
-
if (startNodes[start] === undefined) {
|
|
424
|
-
return;
|
|
425
|
-
}
|
|
426
|
-
if (endNodes[end] === undefined) {
|
|
427
|
-
throw new Error(`End node ${end} not found!`);
|
|
428
|
-
}
|
|
429
|
-
return graph.addEdge(startNodes[start], endNodes[end], label !== end ? label : undefined, conditional);
|
|
430
|
-
}
|
|
431
|
-
for (const [key, nodeSpec] of Object.entries(this.builder.nodes)) {
|
|
432
|
-
const displayKey = _escapeMermaidKeywords(key);
|
|
433
|
-
const node = nodeSpec.runnable;
|
|
434
|
-
const metadata = nodeSpec.metadata ?? {};
|
|
435
|
-
if (this.interruptBefore?.includes(key) &&
|
|
436
|
-
this.interruptAfter?.includes(key)) {
|
|
437
|
-
metadata.__interrupt = "before,after";
|
|
438
|
-
}
|
|
439
|
-
else if (this.interruptBefore?.includes(key)) {
|
|
440
|
-
metadata.__interrupt = "before";
|
|
441
|
-
}
|
|
442
|
-
else if (this.interruptAfter?.includes(key)) {
|
|
443
|
-
metadata.__interrupt = "after";
|
|
444
|
-
}
|
|
445
|
-
if (xray) {
|
|
446
|
-
const newXrayValue = typeof xray === "number" ? xray - 1 : xray;
|
|
447
|
-
const drawableSubgraph = subgraphs[key] !== undefined
|
|
448
|
-
? await subgraphs[key].getGraphAsync({
|
|
449
|
-
...config,
|
|
450
|
-
xray: newXrayValue,
|
|
451
|
-
})
|
|
452
|
-
: node.getGraph(config);
|
|
453
|
-
drawableSubgraph.trimFirstNode();
|
|
454
|
-
drawableSubgraph.trimLastNode();
|
|
455
|
-
if (Object.keys(drawableSubgraph.nodes).length > 1) {
|
|
456
|
-
const [e, s] = graph.extend(drawableSubgraph, displayKey);
|
|
457
|
-
if (e === undefined) {
|
|
458
|
-
throw new Error(`Could not extend subgraph "${key}" due to missing entrypoint.`);
|
|
459
|
-
}
|
|
460
|
-
// TODO: Remove default name once we stop supporting core 0.2.0
|
|
461
|
-
// eslint-disable-next-line no-inner-declarations
|
|
462
|
-
function _isRunnableInterface(
|
|
463
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
464
|
-
thing) {
|
|
465
|
-
return thing ? thing.lc_runnable : false;
|
|
466
|
-
}
|
|
467
|
-
// eslint-disable-next-line no-inner-declarations
|
|
468
|
-
function _nodeDataStr(id, data) {
|
|
469
|
-
if (id !== undefined && !(0, uuid_1.validate)(id)) {
|
|
470
|
-
return id;
|
|
471
|
-
}
|
|
472
|
-
else if (_isRunnableInterface(data)) {
|
|
473
|
-
try {
|
|
474
|
-
let dataStr = data.getName();
|
|
475
|
-
dataStr = dataStr.startsWith("Runnable")
|
|
476
|
-
? dataStr.slice("Runnable".length)
|
|
477
|
-
: dataStr;
|
|
478
|
-
return dataStr;
|
|
479
|
-
}
|
|
480
|
-
catch (error) {
|
|
481
|
-
return data.getName();
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
else {
|
|
485
|
-
return data.name ?? "UnknownSchema";
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
// TODO: Remove casts when we stop supporting core 0.2.0
|
|
489
|
-
if (s !== undefined) {
|
|
490
|
-
startNodes[displayKey] = {
|
|
491
|
-
name: _nodeDataStr(s.id, s.data),
|
|
492
|
-
...s,
|
|
493
|
-
};
|
|
494
|
-
}
|
|
495
|
-
endNodes[displayKey] = {
|
|
496
|
-
name: _nodeDataStr(e.id, e.data),
|
|
497
|
-
...e,
|
|
498
|
-
};
|
|
499
|
-
}
|
|
500
|
-
else {
|
|
501
|
-
// TODO: Remove when we stop supporting core 0.2.0
|
|
502
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
503
|
-
// @ts-ignore
|
|
504
|
-
const newNode = graph.addNode(node, displayKey, metadata);
|
|
505
|
-
startNodes[displayKey] = newNode;
|
|
506
|
-
endNodes[displayKey] = newNode;
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
else {
|
|
510
|
-
// TODO: Remove when we stop supporting core 0.2.0
|
|
511
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
512
|
-
// @ts-ignore
|
|
513
|
-
const newNode = graph.addNode(node, displayKey, metadata);
|
|
514
|
-
startNodes[displayKey] = newNode;
|
|
515
|
-
endNodes[displayKey] = newNode;
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
const sortedEdges = [...this.builder.allEdges].sort(([a], [b]) => {
|
|
519
|
-
if (a < b) {
|
|
520
|
-
return -1;
|
|
521
|
-
}
|
|
522
|
-
else if (b > a) {
|
|
523
|
-
return 1;
|
|
524
|
-
}
|
|
525
|
-
else {
|
|
526
|
-
return 0;
|
|
527
|
-
}
|
|
528
|
-
});
|
|
529
|
-
for (const [start, end] of sortedEdges) {
|
|
530
|
-
addEdge(_escapeMermaidKeywords(start), _escapeMermaidKeywords(end));
|
|
531
|
-
}
|
|
532
|
-
for (const [start, branches] of Object.entries(this.builder.branches)) {
|
|
533
|
-
const defaultEnds = {
|
|
534
|
-
...Object.fromEntries(Object.keys(this.builder.nodes)
|
|
535
|
-
.filter((k) => k !== start)
|
|
536
|
-
.map((k) => [_escapeMermaidKeywords(k), _escapeMermaidKeywords(k)])),
|
|
537
|
-
[constants_js_1.END]: constants_js_1.END,
|
|
538
|
-
};
|
|
539
|
-
for (const branch of Object.values(branches)) {
|
|
540
|
-
let ends;
|
|
541
|
-
if (branch.ends !== undefined) {
|
|
542
|
-
ends = branch.ends;
|
|
543
|
-
}
|
|
544
|
-
else {
|
|
545
|
-
ends = defaultEnds;
|
|
546
|
-
}
|
|
547
|
-
for (const [label, end] of Object.entries(ends)) {
|
|
548
|
-
addEdge(_escapeMermaidKeywords(start), _escapeMermaidKeywords(end), label, true);
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
for (const [key, node] of Object.entries(this.builder.nodes)) {
|
|
553
|
-
if (node.ends !== undefined) {
|
|
554
|
-
for (const end of node.ends) {
|
|
555
|
-
addEdge(_escapeMermaidKeywords(key), _escapeMermaidKeywords(end), undefined, true);
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
return graph;
|
|
560
|
-
}
|
|
561
|
-
/**
|
|
562
|
-
* Returns a drawable representation of the computation graph.
|
|
563
|
-
*
|
|
564
|
-
* @deprecated Use getGraphAsync instead. The async method will be the default in the next minor core release.
|
|
565
|
-
*/
|
|
566
|
-
getGraph(config) {
|
|
567
|
-
const xray = config?.xray;
|
|
568
|
-
const graph = new graph_1.Graph();
|
|
569
|
-
const startNodes = {
|
|
570
|
-
[constants_js_1.START]: graph.addNode({
|
|
571
|
-
schema: zod_1.z.any(),
|
|
572
|
-
}, constants_js_1.START),
|
|
573
|
-
};
|
|
574
|
-
const endNodes = {};
|
|
575
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
576
|
-
let subgraphs = {};
|
|
577
|
-
if (xray) {
|
|
578
|
-
subgraphs = Object.fromEntries((0, utils_js_1.gatherIteratorSync)(this.getSubgraphs()).filter(
|
|
579
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
580
|
-
(x) => isCompiledGraph(x[1])));
|
|
581
|
-
}
|
|
582
|
-
function addEdge(start, end, label, conditional = false) {
|
|
583
|
-
if (end === constants_js_1.END && endNodes[constants_js_1.END] === undefined) {
|
|
584
|
-
endNodes[constants_js_1.END] = graph.addNode({ schema: zod_1.z.any() }, constants_js_1.END);
|
|
585
|
-
}
|
|
586
|
-
return graph.addEdge(startNodes[start], endNodes[end], label !== end ? label : undefined, conditional);
|
|
587
|
-
}
|
|
588
|
-
for (const [key, nodeSpec] of Object.entries(this.builder.nodes)) {
|
|
589
|
-
const displayKey = _escapeMermaidKeywords(key);
|
|
590
|
-
const node = nodeSpec.runnable;
|
|
591
|
-
const metadata = nodeSpec.metadata ?? {};
|
|
592
|
-
if (this.interruptBefore?.includes(key) &&
|
|
593
|
-
this.interruptAfter?.includes(key)) {
|
|
594
|
-
metadata.__interrupt = "before,after";
|
|
595
|
-
}
|
|
596
|
-
else if (this.interruptBefore?.includes(key)) {
|
|
597
|
-
metadata.__interrupt = "before";
|
|
598
|
-
}
|
|
599
|
-
else if (this.interruptAfter?.includes(key)) {
|
|
600
|
-
metadata.__interrupt = "after";
|
|
601
|
-
}
|
|
602
|
-
if (xray) {
|
|
603
|
-
const newXrayValue = typeof xray === "number" ? xray - 1 : xray;
|
|
604
|
-
const drawableSubgraph = subgraphs[key] !== undefined
|
|
605
|
-
? subgraphs[key].getGraph({
|
|
606
|
-
...config,
|
|
607
|
-
xray: newXrayValue,
|
|
608
|
-
})
|
|
609
|
-
: node.getGraph(config);
|
|
610
|
-
drawableSubgraph.trimFirstNode();
|
|
611
|
-
drawableSubgraph.trimLastNode();
|
|
612
|
-
if (Object.keys(drawableSubgraph.nodes).length > 1) {
|
|
613
|
-
const [e, s] = graph.extend(drawableSubgraph, displayKey);
|
|
614
|
-
if (e === undefined) {
|
|
615
|
-
throw new Error(`Could not extend subgraph "${key}" due to missing entrypoint.`);
|
|
616
|
-
}
|
|
617
|
-
// TODO: Remove default name once we stop supporting core 0.2.0
|
|
618
|
-
// eslint-disable-next-line no-inner-declarations
|
|
619
|
-
function _isRunnableInterface(
|
|
620
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
621
|
-
thing) {
|
|
622
|
-
return thing ? thing.lc_runnable : false;
|
|
623
|
-
}
|
|
624
|
-
// eslint-disable-next-line no-inner-declarations
|
|
625
|
-
function _nodeDataStr(id, data) {
|
|
626
|
-
if (id !== undefined && !(0, uuid_1.validate)(id)) {
|
|
627
|
-
return id;
|
|
628
|
-
}
|
|
629
|
-
else if (_isRunnableInterface(data)) {
|
|
630
|
-
try {
|
|
631
|
-
let dataStr = data.getName();
|
|
632
|
-
dataStr = dataStr.startsWith("Runnable")
|
|
633
|
-
? dataStr.slice("Runnable".length)
|
|
634
|
-
: dataStr;
|
|
635
|
-
return dataStr;
|
|
636
|
-
}
|
|
637
|
-
catch (error) {
|
|
638
|
-
return data.getName();
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
else {
|
|
642
|
-
return data.name ?? "UnknownSchema";
|
|
643
|
-
}
|
|
644
|
-
}
|
|
645
|
-
// TODO: Remove casts when we stop supporting core 0.2.0
|
|
646
|
-
if (s !== undefined) {
|
|
647
|
-
startNodes[displayKey] = {
|
|
648
|
-
name: _nodeDataStr(s.id, s.data),
|
|
649
|
-
...s,
|
|
650
|
-
};
|
|
651
|
-
}
|
|
652
|
-
endNodes[displayKey] = {
|
|
653
|
-
name: _nodeDataStr(e.id, e.data),
|
|
654
|
-
...e,
|
|
655
|
-
};
|
|
656
|
-
}
|
|
657
|
-
else {
|
|
658
|
-
// TODO: Remove when we stop supporting core 0.2.0
|
|
659
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
660
|
-
// @ts-ignore
|
|
661
|
-
const newNode = graph.addNode(node, displayKey, metadata);
|
|
662
|
-
startNodes[displayKey] = newNode;
|
|
663
|
-
endNodes[displayKey] = newNode;
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
else {
|
|
667
|
-
// TODO: Remove when we stop supporting core 0.2.0
|
|
668
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
669
|
-
// @ts-ignore
|
|
670
|
-
const newNode = graph.addNode(node, displayKey, metadata);
|
|
671
|
-
startNodes[displayKey] = newNode;
|
|
672
|
-
endNodes[displayKey] = newNode;
|
|
673
|
-
}
|
|
674
|
-
}
|
|
675
|
-
const sortedEdges = [...this.builder.allEdges].sort(([a], [b]) => {
|
|
676
|
-
if (a < b) {
|
|
677
|
-
return -1;
|
|
678
|
-
}
|
|
679
|
-
else if (b > a) {
|
|
680
|
-
return 1;
|
|
681
|
-
}
|
|
682
|
-
else {
|
|
683
|
-
return 0;
|
|
684
|
-
}
|
|
685
|
-
});
|
|
686
|
-
for (const [start, end] of sortedEdges) {
|
|
687
|
-
addEdge(_escapeMermaidKeywords(start), _escapeMermaidKeywords(end));
|
|
688
|
-
}
|
|
689
|
-
for (const [start, branches] of Object.entries(this.builder.branches)) {
|
|
690
|
-
const defaultEnds = {
|
|
691
|
-
...Object.fromEntries(Object.keys(this.builder.nodes)
|
|
692
|
-
.filter((k) => k !== start)
|
|
693
|
-
.map((k) => [_escapeMermaidKeywords(k), _escapeMermaidKeywords(k)])),
|
|
694
|
-
[constants_js_1.END]: constants_js_1.END,
|
|
695
|
-
};
|
|
696
|
-
for (const branch of Object.values(branches)) {
|
|
697
|
-
let ends;
|
|
698
|
-
if (branch.ends !== undefined) {
|
|
699
|
-
ends = branch.ends;
|
|
700
|
-
}
|
|
701
|
-
else {
|
|
702
|
-
ends = defaultEnds;
|
|
703
|
-
}
|
|
704
|
-
for (const [label, end] of Object.entries(ends)) {
|
|
705
|
-
addEdge(_escapeMermaidKeywords(start), _escapeMermaidKeywords(end), label, true);
|
|
706
|
-
}
|
|
707
|
-
}
|
|
708
|
-
}
|
|
709
|
-
return graph;
|
|
710
|
-
}
|
|
711
|
-
}
|
|
712
|
-
exports.CompiledGraph = CompiledGraph;
|
|
713
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_errors = require('../errors.cjs');
|
|
3
|
+
const require_constants = require('../constants.cjs');
|
|
4
|
+
const require_utils = require('../utils.cjs');
|
|
5
|
+
const require_write = require('../pregel/write.cjs');
|
|
6
|
+
const require_read = require('../pregel/read.cjs');
|
|
7
|
+
const require_subgraph = require('../pregel/utils/subgraph.cjs');
|
|
8
|
+
const require_pregel_index = require('../pregel/index.cjs');
|
|
9
|
+
const require_ephemeral_value = require('../channels/ephemeral_value.cjs');
|
|
10
|
+
const __langchain_core_runnables = require_rolldown_runtime.__toESM(require("@langchain/core/runnables"));
|
|
11
|
+
const __langchain_core_runnables_graph = require_rolldown_runtime.__toESM(require("@langchain/core/runnables/graph"));
|
|
12
|
+
const zod_v4 = require_rolldown_runtime.__toESM(require("zod/v4"));
|
|
13
|
+
const uuid = require_rolldown_runtime.__toESM(require("uuid"));
|
|
14
|
+
|
|
15
|
+
//#region src/graph/graph.ts
|
|
16
|
+
var Branch = class {
|
|
17
|
+
path;
|
|
18
|
+
ends;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
if (__langchain_core_runnables.Runnable.isRunnable(options.path)) this.path = options.path;
|
|
21
|
+
else this.path = (0, __langchain_core_runnables._coerceToRunnable)(options.path).withConfig({ runName: `Branch` });
|
|
22
|
+
this.ends = Array.isArray(options.pathMap) ? options.pathMap.reduce((acc, n) => {
|
|
23
|
+
acc[n] = n;
|
|
24
|
+
return acc;
|
|
25
|
+
}, {}) : options.pathMap;
|
|
26
|
+
}
|
|
27
|
+
run(writer, reader) {
|
|
28
|
+
return require_write.ChannelWrite.registerWriter(new require_utils.RunnableCallable({
|
|
29
|
+
name: "<branch_run>",
|
|
30
|
+
trace: false,
|
|
31
|
+
func: async (input, config) => {
|
|
32
|
+
try {
|
|
33
|
+
return await this._route(input, config, writer, reader);
|
|
34
|
+
} catch (e) {
|
|
35
|
+
if (e.name === require_errors.NodeInterrupt.unminifiable_name) console.warn("[WARN]: 'NodeInterrupt' thrown in conditional edge. This is likely a bug in your graph implementation.\nNodeInterrupt should only be thrown inside a node, not in edge conditions.");
|
|
36
|
+
throw e;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
async _route(input, config, writer, reader) {
|
|
42
|
+
let result = await this.path.invoke(reader ? reader(config) : input, config);
|
|
43
|
+
if (!Array.isArray(result)) result = [result];
|
|
44
|
+
let destinations;
|
|
45
|
+
if (this.ends) destinations = result.map((r) => require_constants._isSend(r) ? r : this.ends[r]);
|
|
46
|
+
else destinations = result;
|
|
47
|
+
if (destinations.some((dest) => !dest)) throw new Error("Branch condition returned unknown or null destination");
|
|
48
|
+
if (destinations.filter(require_constants._isSend).some((packet) => packet.node === require_constants.END)) throw new require_errors.InvalidUpdateError("Cannot send a packet to the END node");
|
|
49
|
+
const writeResult = await writer(destinations, config);
|
|
50
|
+
return writeResult ?? input;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var Graph = class {
|
|
54
|
+
nodes;
|
|
55
|
+
edges;
|
|
56
|
+
branches;
|
|
57
|
+
entryPoint;
|
|
58
|
+
compiled = false;
|
|
59
|
+
constructor() {
|
|
60
|
+
this.nodes = {};
|
|
61
|
+
this.edges = /* @__PURE__ */ new Set();
|
|
62
|
+
this.branches = {};
|
|
63
|
+
}
|
|
64
|
+
warnIfCompiled(message) {
|
|
65
|
+
if (this.compiled) console.warn(message);
|
|
66
|
+
}
|
|
67
|
+
get allEdges() {
|
|
68
|
+
return this.edges;
|
|
69
|
+
}
|
|
70
|
+
addNode(...args) {
|
|
71
|
+
function isMutlipleNodes(args$1) {
|
|
72
|
+
return args$1.length >= 1 && typeof args$1[0] !== "string";
|
|
73
|
+
}
|
|
74
|
+
const nodes = isMutlipleNodes(args) ? Array.isArray(args[0]) ? args[0] : Object.entries(args[0]) : [[
|
|
75
|
+
args[0],
|
|
76
|
+
args[1],
|
|
77
|
+
args[2]
|
|
78
|
+
]];
|
|
79
|
+
if (nodes.length === 0) throw new Error("No nodes provided in `addNode`");
|
|
80
|
+
for (const [key, action, options] of nodes) {
|
|
81
|
+
for (const reservedChar of [require_constants.CHECKPOINT_NAMESPACE_SEPARATOR, require_constants.CHECKPOINT_NAMESPACE_END]) if (key.includes(reservedChar)) throw new Error(`"${reservedChar}" is a reserved character and is not allowed in node names.`);
|
|
82
|
+
this.warnIfCompiled(`Adding a node to a graph that has already been compiled. This will not be reflected in the compiled graph.`);
|
|
83
|
+
if (key in this.nodes) throw new Error(`Node \`${key}\` already present.`);
|
|
84
|
+
if (key === require_constants.END) throw new Error(`Node \`${key}\` is reserved.`);
|
|
85
|
+
const runnable = (0, __langchain_core_runnables._coerceToRunnable)(action);
|
|
86
|
+
this.nodes[key] = {
|
|
87
|
+
runnable,
|
|
88
|
+
metadata: options?.metadata,
|
|
89
|
+
subgraphs: require_subgraph.isPregelLike(runnable) ? [runnable] : options?.subgraphs,
|
|
90
|
+
ends: options?.ends
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
addEdge(startKey, endKey) {
|
|
96
|
+
this.warnIfCompiled(`Adding an edge to a graph that has already been compiled. This will not be reflected in the compiled graph.`);
|
|
97
|
+
if (startKey === require_constants.END) throw new Error("END cannot be a start node");
|
|
98
|
+
if (endKey === require_constants.START) throw new Error("START cannot be an end node");
|
|
99
|
+
if (Array.from(this.edges).some(([start]) => start === startKey) && !("channels" in this)) throw new Error(`Already found path for ${startKey}. For multiple edges, use StateGraph.`);
|
|
100
|
+
this.edges.add([startKey, endKey]);
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
addConditionalEdges(source, path, pathMap) {
|
|
104
|
+
const options = typeof source === "object" ? source : {
|
|
105
|
+
source,
|
|
106
|
+
path,
|
|
107
|
+
pathMap
|
|
108
|
+
};
|
|
109
|
+
this.warnIfCompiled("Adding an edge to a graph that has already been compiled. This will not be reflected in the compiled graph.");
|
|
110
|
+
if (!__langchain_core_runnables.Runnable.isRunnable(options.path)) {
|
|
111
|
+
const pathDisplayValues = Array.isArray(options.pathMap) ? options.pathMap.join(",") : Object.keys(options.pathMap ?? {}).join(",");
|
|
112
|
+
options.path = (0, __langchain_core_runnables._coerceToRunnable)(options.path).withConfig({ runName: `Branch<${options.source}${pathDisplayValues !== "" ? `,${pathDisplayValues}` : ""}>`.slice(0, 63) });
|
|
113
|
+
}
|
|
114
|
+
const name = options.path.getName() === "RunnableLambda" ? "condition" : options.path.getName();
|
|
115
|
+
if (this.branches[options.source] && this.branches[options.source][name]) throw new Error(`Condition \`${name}\` already present for node \`${source}\``);
|
|
116
|
+
this.branches[options.source] ??= {};
|
|
117
|
+
this.branches[options.source][name] = new Branch(options);
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* @deprecated use `addEdge(START, key)` instead
|
|
122
|
+
*/
|
|
123
|
+
setEntryPoint(key) {
|
|
124
|
+
this.warnIfCompiled("Setting the entry point of a graph that has already been compiled. This will not be reflected in the compiled graph.");
|
|
125
|
+
return this.addEdge(require_constants.START, key);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* @deprecated use `addEdge(key, END)` instead
|
|
129
|
+
*/
|
|
130
|
+
setFinishPoint(key) {
|
|
131
|
+
this.warnIfCompiled("Setting a finish point of a graph that has already been compiled. This will not be reflected in the compiled graph.");
|
|
132
|
+
return this.addEdge(key, require_constants.END);
|
|
133
|
+
}
|
|
134
|
+
compile({ checkpointer, interruptBefore, interruptAfter, name } = {}) {
|
|
135
|
+
this.validate([...Array.isArray(interruptBefore) ? interruptBefore : [], ...Array.isArray(interruptAfter) ? interruptAfter : []]);
|
|
136
|
+
const compiled = new CompiledGraph({
|
|
137
|
+
builder: this,
|
|
138
|
+
checkpointer,
|
|
139
|
+
interruptAfter,
|
|
140
|
+
interruptBefore,
|
|
141
|
+
autoValidate: false,
|
|
142
|
+
nodes: {},
|
|
143
|
+
channels: {
|
|
144
|
+
[require_constants.START]: new require_ephemeral_value.EphemeralValue(),
|
|
145
|
+
[require_constants.END]: new require_ephemeral_value.EphemeralValue()
|
|
146
|
+
},
|
|
147
|
+
inputChannels: require_constants.START,
|
|
148
|
+
outputChannels: require_constants.END,
|
|
149
|
+
streamChannels: [],
|
|
150
|
+
streamMode: "values",
|
|
151
|
+
name
|
|
152
|
+
});
|
|
153
|
+
for (const [key, node] of Object.entries(this.nodes)) compiled.attachNode(key, node);
|
|
154
|
+
for (const [start, end] of this.edges) compiled.attachEdge(start, end);
|
|
155
|
+
for (const [start, branches] of Object.entries(this.branches)) for (const [name$1, branch] of Object.entries(branches)) compiled.attachBranch(start, name$1, branch);
|
|
156
|
+
return compiled.validate();
|
|
157
|
+
}
|
|
158
|
+
validate(interrupt) {
|
|
159
|
+
const allSources = new Set([...this.allEdges].map(([src, _]) => src));
|
|
160
|
+
for (const [start] of Object.entries(this.branches)) allSources.add(start);
|
|
161
|
+
for (const source of allSources) if (source !== require_constants.START && !(source in this.nodes)) throw new Error(`Found edge starting at unknown node \`${source}\``);
|
|
162
|
+
const allTargets = new Set([...this.allEdges].map(([_, target]) => target));
|
|
163
|
+
for (const [start, branches] of Object.entries(this.branches)) for (const branch of Object.values(branches)) if (branch.ends != null) for (const end of Object.values(branch.ends)) allTargets.add(end);
|
|
164
|
+
else {
|
|
165
|
+
allTargets.add(require_constants.END);
|
|
166
|
+
for (const node of Object.keys(this.nodes)) if (node !== start) allTargets.add(node);
|
|
167
|
+
}
|
|
168
|
+
for (const node of Object.values(this.nodes)) for (const target of node.ends ?? []) allTargets.add(target);
|
|
169
|
+
for (const node of Object.keys(this.nodes)) if (!allTargets.has(node)) throw new require_errors.UnreachableNodeError([
|
|
170
|
+
`Node \`${node}\` is not reachable.`,
|
|
171
|
+
"",
|
|
172
|
+
"If you are returning Command objects from your node,",
|
|
173
|
+
"make sure you are passing names of potential destination nodes as an \"ends\" array",
|
|
174
|
+
"into \".addNode(..., { ends: [\"node1\", \"node2\"] })\"."
|
|
175
|
+
].join("\n"), { lc_error_code: "UNREACHABLE_NODE" });
|
|
176
|
+
for (const target of allTargets) if (target !== require_constants.END && !(target in this.nodes)) throw new Error(`Found edge ending at unknown node \`${target}\``);
|
|
177
|
+
if (interrupt) {
|
|
178
|
+
for (const node of interrupt) if (!(node in this.nodes)) throw new Error(`Interrupt node \`${node}\` is not present`);
|
|
179
|
+
}
|
|
180
|
+
this.compiled = true;
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
var CompiledGraph = class extends require_pregel_index.Pregel {
|
|
184
|
+
builder;
|
|
185
|
+
constructor({ builder,...rest }) {
|
|
186
|
+
super(rest);
|
|
187
|
+
this.builder = builder;
|
|
188
|
+
}
|
|
189
|
+
attachNode(key, node) {
|
|
190
|
+
this.channels[key] = new require_ephemeral_value.EphemeralValue();
|
|
191
|
+
this.nodes[key] = new require_read.PregelNode({
|
|
192
|
+
channels: [],
|
|
193
|
+
triggers: [],
|
|
194
|
+
metadata: node.metadata,
|
|
195
|
+
subgraphs: node.subgraphs,
|
|
196
|
+
ends: node.ends
|
|
197
|
+
}).pipe(node.runnable).pipe(new require_write.ChannelWrite([{
|
|
198
|
+
channel: key,
|
|
199
|
+
value: require_write.PASSTHROUGH
|
|
200
|
+
}], [require_constants.TAG_HIDDEN]));
|
|
201
|
+
this.streamChannels.push(key);
|
|
202
|
+
}
|
|
203
|
+
attachEdge(start, end) {
|
|
204
|
+
if (end === require_constants.END) {
|
|
205
|
+
if (start === require_constants.START) throw new Error("Cannot have an edge from START to END");
|
|
206
|
+
this.nodes[start].writers.push(new require_write.ChannelWrite([{
|
|
207
|
+
channel: require_constants.END,
|
|
208
|
+
value: require_write.PASSTHROUGH
|
|
209
|
+
}], [require_constants.TAG_HIDDEN]));
|
|
210
|
+
} else {
|
|
211
|
+
this.nodes[end].triggers.push(start);
|
|
212
|
+
this.nodes[end].channels.push(start);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
attachBranch(start, name, branch) {
|
|
216
|
+
if (start === require_constants.START && !this.nodes[require_constants.START]) this.nodes[require_constants.START] = require_pregel_index.Channel.subscribeTo(require_constants.START, { tags: [require_constants.TAG_HIDDEN] });
|
|
217
|
+
this.nodes[start].pipe(branch.run((dests) => {
|
|
218
|
+
const writes = dests.map((dest) => {
|
|
219
|
+
if (require_constants._isSend(dest)) return dest;
|
|
220
|
+
return {
|
|
221
|
+
channel: dest === require_constants.END ? require_constants.END : `branch:${start}:${name}:${dest}`,
|
|
222
|
+
value: require_write.PASSTHROUGH
|
|
223
|
+
};
|
|
224
|
+
});
|
|
225
|
+
return new require_write.ChannelWrite(writes, [require_constants.TAG_HIDDEN]);
|
|
226
|
+
}));
|
|
227
|
+
const ends = branch.ends ? Object.values(branch.ends) : Object.keys(this.nodes);
|
|
228
|
+
for (const end of ends) if (end !== require_constants.END) {
|
|
229
|
+
const channelName = `branch:${start}:${name}:${end}`;
|
|
230
|
+
this.channels[channelName] = new require_ephemeral_value.EphemeralValue();
|
|
231
|
+
this.nodes[end].triggers.push(channelName);
|
|
232
|
+
this.nodes[end].channels.push(channelName);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Returns a drawable representation of the computation graph.
|
|
237
|
+
*/
|
|
238
|
+
async getGraphAsync(config) {
|
|
239
|
+
const xray = config?.xray;
|
|
240
|
+
const graph = new __langchain_core_runnables_graph.Graph();
|
|
241
|
+
const startNodes = { [require_constants.START]: graph.addNode({ schema: zod_v4.z.any() }, require_constants.START) };
|
|
242
|
+
const endNodes = {};
|
|
243
|
+
let subgraphs = {};
|
|
244
|
+
if (xray) subgraphs = Object.fromEntries((await require_utils.gatherIterator(this.getSubgraphsAsync())).filter((x) => isCompiledGraph(x[1])));
|
|
245
|
+
function addEdge(start, end, label, conditional = false) {
|
|
246
|
+
if (end === require_constants.END && endNodes[require_constants.END] === void 0) endNodes[require_constants.END] = graph.addNode({ schema: zod_v4.z.any() }, require_constants.END);
|
|
247
|
+
if (startNodes[start] === void 0) return;
|
|
248
|
+
if (endNodes[end] === void 0) throw new Error(`End node ${end} not found!`);
|
|
249
|
+
return graph.addEdge(startNodes[start], endNodes[end], label !== end ? label : void 0, conditional);
|
|
250
|
+
}
|
|
251
|
+
for (const [key, nodeSpec] of Object.entries(this.builder.nodes)) {
|
|
252
|
+
const displayKey = _escapeMermaidKeywords(key);
|
|
253
|
+
const node = nodeSpec.runnable;
|
|
254
|
+
const metadata = nodeSpec.metadata ?? {};
|
|
255
|
+
if (this.interruptBefore?.includes(key) && this.interruptAfter?.includes(key)) metadata.__interrupt = "before,after";
|
|
256
|
+
else if (this.interruptBefore?.includes(key)) metadata.__interrupt = "before";
|
|
257
|
+
else if (this.interruptAfter?.includes(key)) metadata.__interrupt = "after";
|
|
258
|
+
if (xray) {
|
|
259
|
+
const newXrayValue = typeof xray === "number" ? xray - 1 : xray;
|
|
260
|
+
const drawableSubgraph = subgraphs[key] !== void 0 ? await subgraphs[key].getGraphAsync({
|
|
261
|
+
...config,
|
|
262
|
+
xray: newXrayValue
|
|
263
|
+
}) : node.getGraph(config);
|
|
264
|
+
drawableSubgraph.trimFirstNode();
|
|
265
|
+
drawableSubgraph.trimLastNode();
|
|
266
|
+
if (Object.keys(drawableSubgraph.nodes).length > 1) {
|
|
267
|
+
const [e, s] = graph.extend(drawableSubgraph, displayKey);
|
|
268
|
+
if (e === void 0) throw new Error(`Could not extend subgraph "${key}" due to missing entrypoint.`);
|
|
269
|
+
function _isRunnableInterface(thing) {
|
|
270
|
+
return thing ? thing.lc_runnable : false;
|
|
271
|
+
}
|
|
272
|
+
function _nodeDataStr(id, data) {
|
|
273
|
+
if (id !== void 0 && !(0, uuid.validate)(id)) return id;
|
|
274
|
+
else if (_isRunnableInterface(data)) try {
|
|
275
|
+
let dataStr = data.getName();
|
|
276
|
+
dataStr = dataStr.startsWith("Runnable") ? dataStr.slice(8) : dataStr;
|
|
277
|
+
return dataStr;
|
|
278
|
+
} catch (error) {
|
|
279
|
+
return data.getName();
|
|
280
|
+
}
|
|
281
|
+
else return data.name ?? "UnknownSchema";
|
|
282
|
+
}
|
|
283
|
+
if (s !== void 0) startNodes[displayKey] = {
|
|
284
|
+
name: _nodeDataStr(s.id, s.data),
|
|
285
|
+
...s
|
|
286
|
+
};
|
|
287
|
+
endNodes[displayKey] = {
|
|
288
|
+
name: _nodeDataStr(e.id, e.data),
|
|
289
|
+
...e
|
|
290
|
+
};
|
|
291
|
+
} else {
|
|
292
|
+
const newNode = graph.addNode(node, displayKey, metadata);
|
|
293
|
+
startNodes[displayKey] = newNode;
|
|
294
|
+
endNodes[displayKey] = newNode;
|
|
295
|
+
}
|
|
296
|
+
} else {
|
|
297
|
+
const newNode = graph.addNode(node, displayKey, metadata);
|
|
298
|
+
startNodes[displayKey] = newNode;
|
|
299
|
+
endNodes[displayKey] = newNode;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
const sortedEdges = [...this.builder.allEdges].sort(([a], [b]) => {
|
|
303
|
+
if (a < b) return -1;
|
|
304
|
+
else if (b > a) return 1;
|
|
305
|
+
else return 0;
|
|
306
|
+
});
|
|
307
|
+
for (const [start, end] of sortedEdges) addEdge(_escapeMermaidKeywords(start), _escapeMermaidKeywords(end));
|
|
308
|
+
for (const [start, branches] of Object.entries(this.builder.branches)) {
|
|
309
|
+
const defaultEnds = {
|
|
310
|
+
...Object.fromEntries(Object.keys(this.builder.nodes).filter((k) => k !== start).map((k) => [_escapeMermaidKeywords(k), _escapeMermaidKeywords(k)])),
|
|
311
|
+
[require_constants.END]: require_constants.END
|
|
312
|
+
};
|
|
313
|
+
for (const branch of Object.values(branches)) {
|
|
314
|
+
let ends;
|
|
315
|
+
if (branch.ends !== void 0) ends = branch.ends;
|
|
316
|
+
else ends = defaultEnds;
|
|
317
|
+
for (const [label, end] of Object.entries(ends)) addEdge(_escapeMermaidKeywords(start), _escapeMermaidKeywords(end), label, true);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
for (const [key, node] of Object.entries(this.builder.nodes)) if (node.ends !== void 0) for (const end of node.ends) addEdge(_escapeMermaidKeywords(key), _escapeMermaidKeywords(end), void 0, true);
|
|
321
|
+
return graph;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Returns a drawable representation of the computation graph.
|
|
325
|
+
*
|
|
326
|
+
* @deprecated Use getGraphAsync instead. The async method will be the default in the next minor core release.
|
|
327
|
+
*/
|
|
328
|
+
getGraph(config) {
|
|
329
|
+
const xray = config?.xray;
|
|
330
|
+
const graph = new __langchain_core_runnables_graph.Graph();
|
|
331
|
+
const startNodes = { [require_constants.START]: graph.addNode({ schema: zod_v4.z.any() }, require_constants.START) };
|
|
332
|
+
const endNodes = {};
|
|
333
|
+
let subgraphs = {};
|
|
334
|
+
if (xray) subgraphs = Object.fromEntries(require_utils.gatherIteratorSync(this.getSubgraphs()).filter((x) => isCompiledGraph(x[1])));
|
|
335
|
+
function addEdge(start, end, label, conditional = false) {
|
|
336
|
+
if (end === require_constants.END && endNodes[require_constants.END] === void 0) endNodes[require_constants.END] = graph.addNode({ schema: zod_v4.z.any() }, require_constants.END);
|
|
337
|
+
return graph.addEdge(startNodes[start], endNodes[end], label !== end ? label : void 0, conditional);
|
|
338
|
+
}
|
|
339
|
+
for (const [key, nodeSpec] of Object.entries(this.builder.nodes)) {
|
|
340
|
+
const displayKey = _escapeMermaidKeywords(key);
|
|
341
|
+
const node = nodeSpec.runnable;
|
|
342
|
+
const metadata = nodeSpec.metadata ?? {};
|
|
343
|
+
if (this.interruptBefore?.includes(key) && this.interruptAfter?.includes(key)) metadata.__interrupt = "before,after";
|
|
344
|
+
else if (this.interruptBefore?.includes(key)) metadata.__interrupt = "before";
|
|
345
|
+
else if (this.interruptAfter?.includes(key)) metadata.__interrupt = "after";
|
|
346
|
+
if (xray) {
|
|
347
|
+
const newXrayValue = typeof xray === "number" ? xray - 1 : xray;
|
|
348
|
+
const drawableSubgraph = subgraphs[key] !== void 0 ? subgraphs[key].getGraph({
|
|
349
|
+
...config,
|
|
350
|
+
xray: newXrayValue
|
|
351
|
+
}) : node.getGraph(config);
|
|
352
|
+
drawableSubgraph.trimFirstNode();
|
|
353
|
+
drawableSubgraph.trimLastNode();
|
|
354
|
+
if (Object.keys(drawableSubgraph.nodes).length > 1) {
|
|
355
|
+
const [e, s] = graph.extend(drawableSubgraph, displayKey);
|
|
356
|
+
if (e === void 0) throw new Error(`Could not extend subgraph "${key}" due to missing entrypoint.`);
|
|
357
|
+
function _isRunnableInterface(thing) {
|
|
358
|
+
return thing ? thing.lc_runnable : false;
|
|
359
|
+
}
|
|
360
|
+
function _nodeDataStr(id, data) {
|
|
361
|
+
if (id !== void 0 && !(0, uuid.validate)(id)) return id;
|
|
362
|
+
else if (_isRunnableInterface(data)) try {
|
|
363
|
+
let dataStr = data.getName();
|
|
364
|
+
dataStr = dataStr.startsWith("Runnable") ? dataStr.slice(8) : dataStr;
|
|
365
|
+
return dataStr;
|
|
366
|
+
} catch (error) {
|
|
367
|
+
return data.getName();
|
|
368
|
+
}
|
|
369
|
+
else return data.name ?? "UnknownSchema";
|
|
370
|
+
}
|
|
371
|
+
if (s !== void 0) startNodes[displayKey] = {
|
|
372
|
+
name: _nodeDataStr(s.id, s.data),
|
|
373
|
+
...s
|
|
374
|
+
};
|
|
375
|
+
endNodes[displayKey] = {
|
|
376
|
+
name: _nodeDataStr(e.id, e.data),
|
|
377
|
+
...e
|
|
378
|
+
};
|
|
379
|
+
} else {
|
|
380
|
+
const newNode = graph.addNode(node, displayKey, metadata);
|
|
381
|
+
startNodes[displayKey] = newNode;
|
|
382
|
+
endNodes[displayKey] = newNode;
|
|
383
|
+
}
|
|
384
|
+
} else {
|
|
385
|
+
const newNode = graph.addNode(node, displayKey, metadata);
|
|
386
|
+
startNodes[displayKey] = newNode;
|
|
387
|
+
endNodes[displayKey] = newNode;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
const sortedEdges = [...this.builder.allEdges].sort(([a], [b]) => {
|
|
391
|
+
if (a < b) return -1;
|
|
392
|
+
else if (b > a) return 1;
|
|
393
|
+
else return 0;
|
|
394
|
+
});
|
|
395
|
+
for (const [start, end] of sortedEdges) addEdge(_escapeMermaidKeywords(start), _escapeMermaidKeywords(end));
|
|
396
|
+
for (const [start, branches] of Object.entries(this.builder.branches)) {
|
|
397
|
+
const defaultEnds = {
|
|
398
|
+
...Object.fromEntries(Object.keys(this.builder.nodes).filter((k) => k !== start).map((k) => [_escapeMermaidKeywords(k), _escapeMermaidKeywords(k)])),
|
|
399
|
+
[require_constants.END]: require_constants.END
|
|
400
|
+
};
|
|
401
|
+
for (const branch of Object.values(branches)) {
|
|
402
|
+
let ends;
|
|
403
|
+
if (branch.ends !== void 0) ends = branch.ends;
|
|
404
|
+
else ends = defaultEnds;
|
|
405
|
+
for (const [label, end] of Object.entries(ends)) addEdge(_escapeMermaidKeywords(start), _escapeMermaidKeywords(end), label, true);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
return graph;
|
|
409
|
+
}
|
|
410
|
+
};
|
|
714
411
|
function isCompiledGraph(x) {
|
|
715
|
-
|
|
716
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
717
|
-
typeof x.attachNode === "function" &&
|
|
718
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
719
|
-
typeof x.attachEdge === "function");
|
|
412
|
+
return typeof x.attachNode === "function" && typeof x.attachEdge === "function";
|
|
720
413
|
}
|
|
721
414
|
function _escapeMermaidKeywords(key) {
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
}
|
|
725
|
-
return key;
|
|
415
|
+
if (key === "subgraph") return `"${key}"`;
|
|
416
|
+
return key;
|
|
726
417
|
}
|
|
727
|
-
|
|
418
|
+
|
|
419
|
+
//#endregion
|
|
420
|
+
exports.Branch = Branch;
|
|
421
|
+
exports.CompiledGraph = CompiledGraph;
|
|
422
|
+
exports.Graph = Graph;
|
|
423
|
+
//# sourceMappingURL=graph.cjs.map
|