@langchain/langgraph 1.0.0-alpha.2 → 1.0.0-alpha.3

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 (49) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/graph/message.cjs +3 -4
  3. package/dist/graph/message.cjs.map +1 -1
  4. package/dist/graph/message.js +3 -4
  5. package/dist/graph/message.js.map +1 -1
  6. package/dist/graph/zod/zod-registry.d.cts.map +1 -1
  7. package/dist/pregel/index.cjs +28 -10
  8. package/dist/pregel/index.cjs.map +1 -1
  9. package/dist/pregel/index.d.cts +2 -2
  10. package/dist/pregel/index.d.cts.map +1 -1
  11. package/dist/pregel/index.d.ts +2 -2
  12. package/dist/pregel/index.d.ts.map +1 -1
  13. package/dist/pregel/index.js +29 -11
  14. package/dist/pregel/index.js.map +1 -1
  15. package/dist/pregel/stream.cjs +107 -0
  16. package/dist/pregel/stream.cjs.map +1 -1
  17. package/dist/pregel/stream.js +107 -1
  18. package/dist/pregel/stream.js.map +1 -1
  19. package/dist/pregel/types.cjs.map +1 -1
  20. package/dist/pregel/types.d.cts +10 -2
  21. package/dist/pregel/types.d.cts.map +1 -1
  22. package/dist/pregel/types.d.ts +10 -2
  23. package/dist/pregel/types.d.ts.map +1 -1
  24. package/dist/pregel/types.js.map +1 -1
  25. package/package.json +1 -12
  26. package/dist/ui/index.cjs +0 -4
  27. package/dist/ui/index.d.cts +0 -5
  28. package/dist/ui/index.d.ts +0 -5
  29. package/dist/ui/index.js +0 -3
  30. package/dist/ui/stream.cjs +0 -145
  31. package/dist/ui/stream.cjs.map +0 -1
  32. package/dist/ui/stream.d.cts +0 -25
  33. package/dist/ui/stream.d.cts.map +0 -1
  34. package/dist/ui/stream.d.ts +0 -25
  35. package/dist/ui/stream.d.ts.map +0 -1
  36. package/dist/ui/stream.js +0 -143
  37. package/dist/ui/stream.js.map +0 -1
  38. package/dist/ui/types.infer.d.cts +0 -53
  39. package/dist/ui/types.infer.d.cts.map +0 -1
  40. package/dist/ui/types.infer.d.ts +0 -53
  41. package/dist/ui/types.infer.d.ts.map +0 -1
  42. package/dist/ui/types.message.d.cts +0 -95
  43. package/dist/ui/types.message.d.cts.map +0 -1
  44. package/dist/ui/types.message.d.ts +0 -95
  45. package/dist/ui/types.message.d.ts.map +0 -1
  46. package/dist/ui/types.schema.d.cts +0 -228
  47. package/dist/ui/types.schema.d.cts.map +0 -1
  48. package/dist/ui/types.schema.d.ts +0 -228
  49. package/dist/ui/types.schema.d.ts.map +0 -1
@@ -1,228 +0,0 @@
1
- import { SerializedMessage } from "./types.message.cjs";
2
-
3
- //#region src/ui/types.schema.d.ts
4
- type Optional<T> = T | null | undefined;
5
- type MessageTupleMetadata = {
6
- tags: string[];
7
- [key: string]: unknown;
8
- };
9
- type DefaultValues = Record<string, unknown>[] | Record<string, unknown>;
10
- interface ThreadState<ValuesType = DefaultValues> {
11
- /** The state values */
12
- values: ValuesType;
13
- /** The next nodes to execute. If empty, the thread is done until new input is received */
14
- next: string[];
15
- /** Checkpoint of the thread state */
16
- checkpoint: Checkpoint;
17
- /** Metadata for this state */
18
- metadata: CheckpointMetadata;
19
- /** Time of state creation */
20
- created_at: Optional<string>;
21
- /** The parent checkpoint. If missing, this is the root checkpoint */
22
- parent_checkpoint: Optional<Checkpoint>;
23
- /** Tasks to execute in this step. If already attempted, may contain an error */
24
- tasks: Array<ThreadTask>;
25
- }
26
- interface ThreadTask {
27
- id: string;
28
- name: string;
29
- result?: unknown;
30
- error: Optional<string>;
31
- interrupts: Array<Interrupt>;
32
- checkpoint: Optional<Checkpoint>;
33
- state: Optional<ThreadState>;
34
- }
35
- type Config = {
36
- /**
37
- * Tags for this call and any sub-calls (eg. a Chain calling an LLM).
38
- * You can use these to filter calls.
39
- */
40
- tags?: string[];
41
- /**
42
- * Maximum number of times a call can recurse.
43
- * If not provided, defaults to 25.
44
- */
45
- recursion_limit?: number;
46
- /**
47
- * Runtime values for attributes previously made configurable on this Runnable.
48
- */
49
- configurable?: {
50
- /**
51
- * ID of the thread
52
- */
53
- thread_id?: Optional<string>;
54
- /**
55
- * Timestamp of the state checkpoint
56
- */
57
- checkpoint_id?: Optional<string>;
58
- [key: string]: unknown;
59
- };
60
- };
61
- type CheckpointMetadata = Optional<{
62
- source?: "input" | "loop" | "update" | (string & {}); // eslint-disable-line @typescript-eslint/ban-types
63
- step?: number;
64
- writes?: Record<string, unknown> | null;
65
- parents?: Record<string, string>;
66
- [key: string]: unknown;
67
- }>;
68
- interface Checkpoint {
69
- thread_id: string;
70
- checkpoint_ns: string;
71
- checkpoint_id: Optional<string>;
72
- checkpoint_map: Optional<Record<string, unknown>>;
73
- }
74
- /**
75
- * An interrupt thrown inside a thread.
76
- */
77
- interface Interrupt<TValue = unknown> {
78
- /**
79
- * The ID of the interrupt.
80
- */
81
- id?: string;
82
- /**
83
- * The value of the interrupt.
84
- */
85
- value?: TValue;
86
- }
87
- type AsSubgraph<TEvent extends {
88
- id?: string;
89
- event: string;
90
- data: unknown;
91
- }> = {
92
- id?: TEvent["id"];
93
- event: TEvent["event"] | `${TEvent["event"]}|${string}`;
94
- data: TEvent["data"];
95
- };
96
- /**
97
- * Stream event with values after completion of each step.
98
- */
99
- type ValuesStreamEvent<StateType, InterruptType> = AsSubgraph<{
100
- id?: string;
101
- event: "values";
102
- data: unknown extends InterruptType ? StateType : StateType & {
103
- __interrupt__?: InterruptType;
104
- };
105
- }>;
106
- /**
107
- * Stream event with message chunks coming from LLM invocations inside nodes.
108
- */
109
- type MessagesTupleStreamEvent = AsSubgraph<{
110
- id?: string;
111
- event: "messages";
112
- // TODO: add types for message and config, which do not depend on LangChain
113
- // while making sure it's easy to keep them in sync.
114
- data: [message: SerializedMessage.AnyMessage, config: MessageTupleMetadata];
115
- }>;
116
- /**
117
- * Metadata stream event with information about the run and thread
118
- */
119
- type MetadataStreamEvent = {
120
- id?: string;
121
- event: "metadata";
122
- data: {
123
- run_id: string;
124
- thread_id: string;
125
- };
126
- };
127
- /**
128
- * Stream event with error information.
129
- */
130
- type SubgraphErrorStreamEvent = AsSubgraph<{
131
- id?: string;
132
- event: "error";
133
- data: {
134
- error: string;
135
- message: string;
136
- };
137
- }>;
138
- /**
139
- * Stream event with updates to the state after each step.
140
- * The streamed outputs include the name of the node that
141
- * produced the update as well as the update.
142
- */
143
- type UpdatesStreamEvent<UpdateType, NodeReturnType> = AsSubgraph<{
144
- id?: string;
145
- event: "updates";
146
- data: NodeReturnType extends Record<string, unknown> ? { [K in keyof NodeReturnType]?: NodeReturnType[K] } & {
147
- [node: string]: UpdateType;
148
- } : Record<string, UpdateType>;
149
- }>;
150
- /**
151
- * Streaming custom data from inside the nodes.
152
- */
153
- type CustomStreamEvent<T> = AsSubgraph<{
154
- id?: string;
155
- event: "custom";
156
- data: T;
157
- }>;
158
- type TasksStreamCreateEvent<StateType> = {
159
- id?: string;
160
- event: "tasks";
161
- data: {
162
- id: string;
163
- name: string;
164
- interrupts: Interrupt[];
165
- input: StateType;
166
- triggers: string[];
167
- };
168
- };
169
- type TasksStreamResultEvent<UpdateType> = {
170
- id?: string;
171
- event: "tasks";
172
- data: {
173
- id: string;
174
- name: string;
175
- interrupts: Interrupt[];
176
- result: [string, UpdateType][];
177
- };
178
- };
179
- type TasksStreamErrorEvent = {
180
- id?: string;
181
- event: "tasks";
182
- data: {
183
- id: string;
184
- name: string;
185
- interrupts: Interrupt[];
186
- error: string;
187
- };
188
- };
189
- type TasksStreamEvent<StateType, UpdateType> = AsSubgraph<TasksStreamCreateEvent<StateType>> | AsSubgraph<TasksStreamResultEvent<UpdateType>> | AsSubgraph<TasksStreamErrorEvent>;
190
- type CheckpointsStreamEvent<StateType> = AsSubgraph<{
191
- id?: string;
192
- event: "checkpoints";
193
- data: {
194
- values: StateType;
195
- next: string[];
196
- config: Config;
197
- metadata: CheckpointMetadata;
198
- tasks: ThreadTask[];
199
- };
200
- }>;
201
- /**
202
- * Stream event with detailed debug information.
203
- */
204
- type DebugStreamEvent = AsSubgraph<{
205
- id?: string;
206
- event: "debug";
207
- data: unknown;
208
- }>;
209
- /**
210
- * Stream event with events occurring during execution.
211
- */
212
- type EventsStreamEvent = {
213
- id?: string;
214
- event: "events";
215
- data: {
216
- event: `on_${"chat_model" | "llm" | "chain" | "tool" | "retriever" | "prompt"}_${"start" | "stream" | "end"}` | (string & {}); // eslint-disable-line @typescript-eslint/ban-types
217
- name: string;
218
- tags: string[];
219
- run_id: string;
220
- metadata: Record<string, unknown>;
221
- parent_ids: string[];
222
- data: unknown;
223
- };
224
- };
225
- type LangGraphEventStream<TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown, TInterruptType = unknown, TNodeReturnType = unknown> = ValuesStreamEvent<TStateType, TInterruptType> | UpdatesStreamEvent<TUpdateType, TNodeReturnType> | CustomStreamEvent<TCustomType> | DebugStreamEvent | MessagesTupleStreamEvent | EventsStreamEvent | TasksStreamEvent<TStateType, TUpdateType> | CheckpointsStreamEvent<TStateType> | SubgraphErrorStreamEvent | MetadataStreamEvent;
226
- //#endregion
227
- export { LangGraphEventStream };
228
- //# sourceMappingURL=types.schema.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.schema.d.cts","names":["SerializedMessage","Optional","T","MessageTupleMetadata","DefaultValues","Record","ThreadState","ValuesType","Checkpoint","CheckpointMetadata","ThreadTask","Array","Interrupt","Config","TValue","AsSubgraph","TEvent","ValuesStreamEvent","InterruptType","StateType","MessagesTupleStreamEvent","AnyMessage","MetadataStreamEvent","SubgraphErrorStreamEvent","UpdatesStreamEvent","NodeReturnType","K","UpdateType","CustomStreamEvent","TasksStreamCreateEvent","TasksStreamResultEvent","TasksStreamErrorEvent","TasksStreamEvent","CheckpointsStreamEvent","DebugStreamEvent","EventsStreamEvent","LangGraphEventStream","TStateType","TInterruptType","TUpdateType","TNodeReturnType","TCustomType"],"sources":["../../src/ui/types.schema.d.ts"],"sourcesContent":["import type { SerializedMessage } from \"./types.message.js\";\ntype Optional<T> = T | null | undefined;\ntype MessageTupleMetadata = {\n tags: string[];\n [key: string]: unknown;\n};\ntype DefaultValues = Record<string, unknown>[] | Record<string, unknown>;\ninterface ThreadState<ValuesType = DefaultValues> {\n /** The state values */\n values: ValuesType;\n /** The next nodes to execute. If empty, the thread is done until new input is received */\n next: string[];\n /** Checkpoint of the thread state */\n checkpoint: Checkpoint;\n /** Metadata for this state */\n metadata: CheckpointMetadata;\n /** Time of state creation */\n created_at: Optional<string>;\n /** The parent checkpoint. If missing, this is the root checkpoint */\n parent_checkpoint: Optional<Checkpoint>;\n /** Tasks to execute in this step. If already attempted, may contain an error */\n tasks: Array<ThreadTask>;\n}\ninterface ThreadTask {\n id: string;\n name: string;\n result?: unknown;\n error: Optional<string>;\n interrupts: Array<Interrupt>;\n checkpoint: Optional<Checkpoint>;\n state: Optional<ThreadState>;\n}\ntype Config = {\n /**\n * Tags for this call and any sub-calls (eg. a Chain calling an LLM).\n * You can use these to filter calls.\n */\n tags?: string[];\n /**\n * Maximum number of times a call can recurse.\n * If not provided, defaults to 25.\n */\n recursion_limit?: number;\n /**\n * Runtime values for attributes previously made configurable on this Runnable.\n */\n configurable?: {\n /**\n * ID of the thread\n */\n thread_id?: Optional<string>;\n /**\n * Timestamp of the state checkpoint\n */\n checkpoint_id?: Optional<string>;\n [key: string]: unknown;\n };\n};\ntype CheckpointMetadata = Optional<{\n source?: \"input\" | \"loop\" | \"update\" | (string & {}); // eslint-disable-line @typescript-eslint/ban-types\n step?: number;\n writes?: Record<string, unknown> | null;\n parents?: Record<string, string>;\n [key: string]: unknown;\n}>;\ninterface Checkpoint {\n thread_id: string;\n checkpoint_ns: string;\n checkpoint_id: Optional<string>;\n checkpoint_map: Optional<Record<string, unknown>>;\n}\n/**\n * An interrupt thrown inside a thread.\n */\ninterface Interrupt<TValue = unknown> {\n /**\n * The ID of the interrupt.\n */\n id?: string;\n /**\n * The value of the interrupt.\n */\n value?: TValue;\n}\ntype AsSubgraph<TEvent extends {\n id?: string;\n event: string;\n data: unknown;\n}> = {\n id?: TEvent[\"id\"];\n event: TEvent[\"event\"] | `${TEvent[\"event\"]}|${string}`;\n data: TEvent[\"data\"];\n};\n/**\n * Stream event with values after completion of each step.\n */\ntype ValuesStreamEvent<StateType, InterruptType> = AsSubgraph<{\n id?: string;\n event: \"values\";\n data: unknown extends InterruptType ? StateType : StateType & {\n __interrupt__?: InterruptType;\n };\n}>;\n/**\n * Stream event with message chunks coming from LLM invocations inside nodes.\n */\ntype MessagesTupleStreamEvent = AsSubgraph<{\n id?: string;\n event: \"messages\";\n // TODO: add types for message and config, which do not depend on LangChain\n // while making sure it's easy to keep them in sync.\n data: [message: SerializedMessage.AnyMessage, config: MessageTupleMetadata];\n}>;\n/**\n * Metadata stream event with information about the run and thread\n */\ntype MetadataStreamEvent = {\n id?: string;\n event: \"metadata\";\n data: {\n run_id: string;\n thread_id: string;\n };\n};\n/**\n * Stream event with error information.\n */\ntype SubgraphErrorStreamEvent = AsSubgraph<{\n id?: string;\n event: \"error\";\n data: {\n error: string;\n message: string;\n };\n}>;\n/**\n * Stream event with updates to the state after each step.\n * The streamed outputs include the name of the node that\n * produced the update as well as the update.\n */\ntype UpdatesStreamEvent<UpdateType, NodeReturnType> = AsSubgraph<{\n id?: string;\n event: \"updates\";\n data: NodeReturnType extends Record<string, unknown> ? {\n [K in keyof NodeReturnType]?: NodeReturnType[K];\n } & {\n [node: string]: UpdateType;\n } : Record<string, UpdateType>;\n}>;\n/**\n * Streaming custom data from inside the nodes.\n */\ntype CustomStreamEvent<T> = AsSubgraph<{\n id?: string;\n event: \"custom\";\n data: T;\n}>;\ntype TasksStreamCreateEvent<StateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n input: StateType;\n triggers: string[];\n };\n};\ntype TasksStreamResultEvent<UpdateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n result: [string, UpdateType][];\n };\n};\ntype TasksStreamErrorEvent = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n error: string;\n };\n};\ntype TasksStreamEvent<StateType, UpdateType> = AsSubgraph<TasksStreamCreateEvent<StateType>> | AsSubgraph<TasksStreamResultEvent<UpdateType>> | AsSubgraph<TasksStreamErrorEvent>;\ntype CheckpointsStreamEvent<StateType> = AsSubgraph<{\n id?: string;\n event: \"checkpoints\";\n data: {\n values: StateType;\n next: string[];\n config: Config;\n metadata: CheckpointMetadata;\n tasks: ThreadTask[];\n };\n}>;\n/**\n * Stream event with detailed debug information.\n */\ntype DebugStreamEvent = AsSubgraph<{\n id?: string;\n event: \"debug\";\n data: unknown;\n}>;\n/**\n * Stream event with events occurring during execution.\n */\ntype EventsStreamEvent = {\n id?: string;\n event: \"events\";\n data: {\n event: `on_${\"chat_model\" | \"llm\" | \"chain\" | \"tool\" | \"retriever\" | \"prompt\"}_${\"start\" | \"stream\" | \"end\"}` | (string & {}); // eslint-disable-line @typescript-eslint/ban-types\n name: string;\n tags: string[];\n run_id: string;\n metadata: Record<string, unknown>;\n parent_ids: string[];\n data: unknown;\n };\n};\nexport type LangGraphEventStream<TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown, TInterruptType = unknown, TNodeReturnType = unknown> = ValuesStreamEvent<TStateType, TInterruptType> | UpdatesStreamEvent<TUpdateType, TNodeReturnType> | CustomStreamEvent<TCustomType> | DebugStreamEvent | MessagesTupleStreamEvent | EventsStreamEvent | TasksStreamEvent<TStateType, TUpdateType> | CheckpointsStreamEvent<TStateType> | SubgraphErrorStreamEvent | MetadataStreamEvent;\nexport {};\n"],"mappings":";;;KACKC,cAAcC;KACdC,oBAAAA;EADAF,IAAAA,EAAAA,MAAQ,EAAA;EACRE,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,OAAAA;AAAoB,CAAA;KAIpBC,aAAAA,GAAgBC,MAAH,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GAA+BA,MAA/B,CAAA,MAAA,EAAA,OAAA,CAAA;UACRC,WADWD,CAAAA,aACcD,aADdC,CAAAA,CAAAA;;UAGTE;EAFFD;EAAW,IAAA,EAAA,MAAA,EAAA;;YAETC,EAIIC,UAJJD;;UAMEE,EAAAA,kBAAAA;;YAIkBD,EAFhBP,QAEgBO,CAAAA,MAAAA,CAAAA;;mBAEfE,EAFMT,QAENS,CAFeF,UAEfE,CAAAA;;SAANC,MAAMD;AAAD;UAENA,UAAAA,CAAU;MAITT,MAAAA;MACWW,EAAAA,MAAAA;QAAND,CAAAA,EAAAA,OAAAA;OACSH,EAFdP,QAEcO,CAAAA,MAAAA,CAAAA;YAATP,EADAU,KACAV,CADMW,SACNX,CAAAA;YACIK,EADJL,QACIK,CADKE,UACLF,CAAAA;OAATL,EAAAA,QAAAA,CAASK,WAATL,CAAAA;;AAAQ,KAEdY,MAAAA,GAAM;EAAA;;;;EA0BNJ,IAAAA,CAAAA,EAAAA,MAAAA,EAAAA;EAAkB;;;;;EAObD;;;cAImBH,CAAAA,EAAAA;IAATJ;;AAAQ;IAevBc,SAAU,CAAA,EAlCKd,QAkCL,CAAA,MAAA,CAAA;IAAA;;;IAMiBe,aAAAA,CAAAA,EApCRf,QAoCQe,CAAAA,MAAAA,CAAAA;IACtBA,CAAAA,GAAAA,EAAAA,MAAAA,CAAAA,EAAAA,OAAAA;;AAAM,CAAA;KAjCXP,kBAAAA,GAAqBR,QAsCJ,CAAA;QAGIiB,CAAAA,EAAAA,OAAAA,GAAAA,MAAAA,GAAAA,QAAAA,GAAAA,CAAAA,MAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;MAAgBC,CAAAA,EAAAA,MAAAA;QAAYA,CAAAA,EAtCzCd,MAsCyCc,CAAAA,MAAAA,EAAAA,OAAAA,CAAAA,GAAAA,IAAAA;SAC9BD,CAAAA,EAtCVb,MAsCUa,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA;MAJ2BH,EAAAA,MAAAA,CAAAA,EAAAA,OAAAA;;AAAU,UA/BnDP,UAAAA,CAyCLY;EAAwB,SAAA,EAAA,MAAA;eAKTpB,EAAAA,MAAkBqB;eAAoBlB,EA3CvCF,QA2CuCE,CAAAA,MAAAA,CAAAA;gBAL1BY,EArCZd,QAqCYc,CArCHV,MAqCGU,CAAAA,MAAAA,EAAAA,OAAAA,CAAAA,CAAAA;;AAAU;AAUlB;AAWkB;UArDhCH,SAkEa,CAAA,SAAA,OAAA,CAAA,CAAA;;;;KAIea,EAAAA,MAAAA;;;;OAG9BpB,CAAAA,EAjEIS,MAiEJT;;KA/DHU;EAoEAa,EAAAA,CAAAA,EAAAA,MAAAA;EAAiB,KAAA,EAAA,MAAA;MAGZ1B,EAAAA,OAAAA;;OAlEDc;EAoEJa,KAAAA,EAnEMb,MAmENa,CAAAA,OAAAA,CAAAA,GAAsB,GAnEKb,MAmEL,CAAA,OAAA,CAAA,IAAA,MAAA,EAAA;EAAA,IAAA,EAlEjBA,MAkEiB,CAAA,MAAA,CAAA;;;;AAOH;KApEnBC,iBAwEsB,CAAA,SAAA,EAAA,aAAA,CAAA,GAxEwBF,UAwExB,CAAA;KAMPH,EAAAA,MAAAA;OACKe,EAAAA,QAAAA;wBA5ECT,gBAAgBC,YAAYA;IA+EjDY,aAAAA,CAAAA,EA9EmBb,aA8EE;EAUrBc,CAAAA;CAAgB,CAAA;;;;KAlFhBZ,wBAAAA,GAA2BL,UAkFiGY,CAAAA;KAAvBG,EAAAA,MAAAA;OAAXf,EAAAA,UAAAA;;;kBA7E3Ef,iBAAAA,CAAkBqB,oBAAoBlB;AA6EgG,CAAA,CAAA;;;;KAxErJmB,mBAAAA,GAgFab;KACHC,EAAAA,MAAAA;OAR0BK,EAAAA,UAAAA;;IAcpCmB,MAAAA,EAAAA,MAAAA;IAQAC,SAAAA,EAAAA,MAAiB;EAaVC,CAAAA;CAAoB;;;;KAjG3Bb,wBAAAA,GAA2BR,UAiG+HE,CAAAA;KAAmEsB,EAAAA,MAAAA;OAAaC,EAAAA,OAAAA;MAAhChB,EAAAA;IAAqEiB,KAAAA,EAAAA,MAAAA;IAAlBb,OAAAA,EAAAA,MAAAA;;;;;;;;KApF7PJ,kBAoF4YS,CAAAA,UAAAA,EAAAA,cAAAA,CAAAA,GApF3VlB,UAoF2VkB,CAAAA;KAAqCV,EAAAA,MAAAA;OAA2BD,EAAAA,SAAAA;QAjFvcG,uBAAuBpB,wCACboB,kBAAkBA,eAAeC;oBAE7BC;MAChBtB,eAAesB;;;;;KAKlBC,uBAAuBb;;;QAGlBb;;KAEL2B;;;;;;gBAMejB;WACLO;;;;KAIVW;;;;;;gBAMelB;qBACKe;;;KAGpBI,qBAAAA;;;;;;gBAMenB;;;;KAIfoB,0CAA0CjB,WAAWc,uBAAuBV,cAAcJ,WAAWe,uBAAuBH,eAAeZ,WAAWgB;KACtJE,oCAAoClB;;;;YAIzBI;;YAEAN;cACEJ;WACHC;;;;;;KAMVwB,gBAAAA,GAAmBnB;;;;;;;;KAQnBoB,iBAAAA;;;;;;;;cAQa9B;;;;;KAKN+B,yDAAyDC,0FAA0FpB,kBAAkBoB,YAAYC,kBAAkBd,mBAAmBe,aAAaC,mBAAmBZ,kBAAkBa,eAAeP,mBAAmBd,2BAA2Be,oBAAoBH,iBAAiBK,YAAYE,eAAeN,uBAAuBI,cAAcd,2BAA2BD"}
@@ -1,228 +0,0 @@
1
- import { SerializedMessage } from "./types.message.js";
2
-
3
- //#region src/ui/types.schema.d.ts
4
- type Optional<T> = T | null | undefined;
5
- type MessageTupleMetadata = {
6
- tags: string[];
7
- [key: string]: unknown;
8
- };
9
- type DefaultValues = Record<string, unknown>[] | Record<string, unknown>;
10
- interface ThreadState<ValuesType = DefaultValues> {
11
- /** The state values */
12
- values: ValuesType;
13
- /** The next nodes to execute. If empty, the thread is done until new input is received */
14
- next: string[];
15
- /** Checkpoint of the thread state */
16
- checkpoint: Checkpoint;
17
- /** Metadata for this state */
18
- metadata: CheckpointMetadata;
19
- /** Time of state creation */
20
- created_at: Optional<string>;
21
- /** The parent checkpoint. If missing, this is the root checkpoint */
22
- parent_checkpoint: Optional<Checkpoint>;
23
- /** Tasks to execute in this step. If already attempted, may contain an error */
24
- tasks: Array<ThreadTask>;
25
- }
26
- interface ThreadTask {
27
- id: string;
28
- name: string;
29
- result?: unknown;
30
- error: Optional<string>;
31
- interrupts: Array<Interrupt>;
32
- checkpoint: Optional<Checkpoint>;
33
- state: Optional<ThreadState>;
34
- }
35
- type Config = {
36
- /**
37
- * Tags for this call and any sub-calls (eg. a Chain calling an LLM).
38
- * You can use these to filter calls.
39
- */
40
- tags?: string[];
41
- /**
42
- * Maximum number of times a call can recurse.
43
- * If not provided, defaults to 25.
44
- */
45
- recursion_limit?: number;
46
- /**
47
- * Runtime values for attributes previously made configurable on this Runnable.
48
- */
49
- configurable?: {
50
- /**
51
- * ID of the thread
52
- */
53
- thread_id?: Optional<string>;
54
- /**
55
- * Timestamp of the state checkpoint
56
- */
57
- checkpoint_id?: Optional<string>;
58
- [key: string]: unknown;
59
- };
60
- };
61
- type CheckpointMetadata = Optional<{
62
- source?: "input" | "loop" | "update" | (string & {}); // eslint-disable-line @typescript-eslint/ban-types
63
- step?: number;
64
- writes?: Record<string, unknown> | null;
65
- parents?: Record<string, string>;
66
- [key: string]: unknown;
67
- }>;
68
- interface Checkpoint {
69
- thread_id: string;
70
- checkpoint_ns: string;
71
- checkpoint_id: Optional<string>;
72
- checkpoint_map: Optional<Record<string, unknown>>;
73
- }
74
- /**
75
- * An interrupt thrown inside a thread.
76
- */
77
- interface Interrupt<TValue = unknown> {
78
- /**
79
- * The ID of the interrupt.
80
- */
81
- id?: string;
82
- /**
83
- * The value of the interrupt.
84
- */
85
- value?: TValue;
86
- }
87
- type AsSubgraph<TEvent extends {
88
- id?: string;
89
- event: string;
90
- data: unknown;
91
- }> = {
92
- id?: TEvent["id"];
93
- event: TEvent["event"] | `${TEvent["event"]}|${string}`;
94
- data: TEvent["data"];
95
- };
96
- /**
97
- * Stream event with values after completion of each step.
98
- */
99
- type ValuesStreamEvent<StateType, InterruptType> = AsSubgraph<{
100
- id?: string;
101
- event: "values";
102
- data: unknown extends InterruptType ? StateType : StateType & {
103
- __interrupt__?: InterruptType;
104
- };
105
- }>;
106
- /**
107
- * Stream event with message chunks coming from LLM invocations inside nodes.
108
- */
109
- type MessagesTupleStreamEvent = AsSubgraph<{
110
- id?: string;
111
- event: "messages";
112
- // TODO: add types for message and config, which do not depend on LangChain
113
- // while making sure it's easy to keep them in sync.
114
- data: [message: SerializedMessage.AnyMessage, config: MessageTupleMetadata];
115
- }>;
116
- /**
117
- * Metadata stream event with information about the run and thread
118
- */
119
- type MetadataStreamEvent = {
120
- id?: string;
121
- event: "metadata";
122
- data: {
123
- run_id: string;
124
- thread_id: string;
125
- };
126
- };
127
- /**
128
- * Stream event with error information.
129
- */
130
- type SubgraphErrorStreamEvent = AsSubgraph<{
131
- id?: string;
132
- event: "error";
133
- data: {
134
- error: string;
135
- message: string;
136
- };
137
- }>;
138
- /**
139
- * Stream event with updates to the state after each step.
140
- * The streamed outputs include the name of the node that
141
- * produced the update as well as the update.
142
- */
143
- type UpdatesStreamEvent<UpdateType, NodeReturnType> = AsSubgraph<{
144
- id?: string;
145
- event: "updates";
146
- data: NodeReturnType extends Record<string, unknown> ? { [K in keyof NodeReturnType]?: NodeReturnType[K] } & {
147
- [node: string]: UpdateType;
148
- } : Record<string, UpdateType>;
149
- }>;
150
- /**
151
- * Streaming custom data from inside the nodes.
152
- */
153
- type CustomStreamEvent<T> = AsSubgraph<{
154
- id?: string;
155
- event: "custom";
156
- data: T;
157
- }>;
158
- type TasksStreamCreateEvent<StateType> = {
159
- id?: string;
160
- event: "tasks";
161
- data: {
162
- id: string;
163
- name: string;
164
- interrupts: Interrupt[];
165
- input: StateType;
166
- triggers: string[];
167
- };
168
- };
169
- type TasksStreamResultEvent<UpdateType> = {
170
- id?: string;
171
- event: "tasks";
172
- data: {
173
- id: string;
174
- name: string;
175
- interrupts: Interrupt[];
176
- result: [string, UpdateType][];
177
- };
178
- };
179
- type TasksStreamErrorEvent = {
180
- id?: string;
181
- event: "tasks";
182
- data: {
183
- id: string;
184
- name: string;
185
- interrupts: Interrupt[];
186
- error: string;
187
- };
188
- };
189
- type TasksStreamEvent<StateType, UpdateType> = AsSubgraph<TasksStreamCreateEvent<StateType>> | AsSubgraph<TasksStreamResultEvent<UpdateType>> | AsSubgraph<TasksStreamErrorEvent>;
190
- type CheckpointsStreamEvent<StateType> = AsSubgraph<{
191
- id?: string;
192
- event: "checkpoints";
193
- data: {
194
- values: StateType;
195
- next: string[];
196
- config: Config;
197
- metadata: CheckpointMetadata;
198
- tasks: ThreadTask[];
199
- };
200
- }>;
201
- /**
202
- * Stream event with detailed debug information.
203
- */
204
- type DebugStreamEvent = AsSubgraph<{
205
- id?: string;
206
- event: "debug";
207
- data: unknown;
208
- }>;
209
- /**
210
- * Stream event with events occurring during execution.
211
- */
212
- type EventsStreamEvent = {
213
- id?: string;
214
- event: "events";
215
- data: {
216
- event: `on_${"chat_model" | "llm" | "chain" | "tool" | "retriever" | "prompt"}_${"start" | "stream" | "end"}` | (string & {}); // eslint-disable-line @typescript-eslint/ban-types
217
- name: string;
218
- tags: string[];
219
- run_id: string;
220
- metadata: Record<string, unknown>;
221
- parent_ids: string[];
222
- data: unknown;
223
- };
224
- };
225
- type LangGraphEventStream<TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown, TInterruptType = unknown, TNodeReturnType = unknown> = ValuesStreamEvent<TStateType, TInterruptType> | UpdatesStreamEvent<TUpdateType, TNodeReturnType> | CustomStreamEvent<TCustomType> | DebugStreamEvent | MessagesTupleStreamEvent | EventsStreamEvent | TasksStreamEvent<TStateType, TUpdateType> | CheckpointsStreamEvent<TStateType> | SubgraphErrorStreamEvent | MetadataStreamEvent;
226
- //#endregion
227
- export { LangGraphEventStream };
228
- //# sourceMappingURL=types.schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.schema.d.ts","names":["SerializedMessage","Optional","T","MessageTupleMetadata","DefaultValues","Record","ThreadState","ValuesType","Checkpoint","CheckpointMetadata","ThreadTask","Array","Interrupt","Config","TValue","AsSubgraph","TEvent","ValuesStreamEvent","InterruptType","StateType","MessagesTupleStreamEvent","AnyMessage","MetadataStreamEvent","SubgraphErrorStreamEvent","UpdatesStreamEvent","NodeReturnType","K","UpdateType","CustomStreamEvent","TasksStreamCreateEvent","TasksStreamResultEvent","TasksStreamErrorEvent","TasksStreamEvent","CheckpointsStreamEvent","DebugStreamEvent","EventsStreamEvent","LangGraphEventStream","TStateType","TInterruptType","TUpdateType","TNodeReturnType","TCustomType"],"sources":["../../src/ui/types.schema.d.ts"],"sourcesContent":["import type { SerializedMessage } from \"./types.message.js\";\ntype Optional<T> = T | null | undefined;\ntype MessageTupleMetadata = {\n tags: string[];\n [key: string]: unknown;\n};\ntype DefaultValues = Record<string, unknown>[] | Record<string, unknown>;\ninterface ThreadState<ValuesType = DefaultValues> {\n /** The state values */\n values: ValuesType;\n /** The next nodes to execute. If empty, the thread is done until new input is received */\n next: string[];\n /** Checkpoint of the thread state */\n checkpoint: Checkpoint;\n /** Metadata for this state */\n metadata: CheckpointMetadata;\n /** Time of state creation */\n created_at: Optional<string>;\n /** The parent checkpoint. If missing, this is the root checkpoint */\n parent_checkpoint: Optional<Checkpoint>;\n /** Tasks to execute in this step. If already attempted, may contain an error */\n tasks: Array<ThreadTask>;\n}\ninterface ThreadTask {\n id: string;\n name: string;\n result?: unknown;\n error: Optional<string>;\n interrupts: Array<Interrupt>;\n checkpoint: Optional<Checkpoint>;\n state: Optional<ThreadState>;\n}\ntype Config = {\n /**\n * Tags for this call and any sub-calls (eg. a Chain calling an LLM).\n * You can use these to filter calls.\n */\n tags?: string[];\n /**\n * Maximum number of times a call can recurse.\n * If not provided, defaults to 25.\n */\n recursion_limit?: number;\n /**\n * Runtime values for attributes previously made configurable on this Runnable.\n */\n configurable?: {\n /**\n * ID of the thread\n */\n thread_id?: Optional<string>;\n /**\n * Timestamp of the state checkpoint\n */\n checkpoint_id?: Optional<string>;\n [key: string]: unknown;\n };\n};\ntype CheckpointMetadata = Optional<{\n source?: \"input\" | \"loop\" | \"update\" | (string & {}); // eslint-disable-line @typescript-eslint/ban-types\n step?: number;\n writes?: Record<string, unknown> | null;\n parents?: Record<string, string>;\n [key: string]: unknown;\n}>;\ninterface Checkpoint {\n thread_id: string;\n checkpoint_ns: string;\n checkpoint_id: Optional<string>;\n checkpoint_map: Optional<Record<string, unknown>>;\n}\n/**\n * An interrupt thrown inside a thread.\n */\ninterface Interrupt<TValue = unknown> {\n /**\n * The ID of the interrupt.\n */\n id?: string;\n /**\n * The value of the interrupt.\n */\n value?: TValue;\n}\ntype AsSubgraph<TEvent extends {\n id?: string;\n event: string;\n data: unknown;\n}> = {\n id?: TEvent[\"id\"];\n event: TEvent[\"event\"] | `${TEvent[\"event\"]}|${string}`;\n data: TEvent[\"data\"];\n};\n/**\n * Stream event with values after completion of each step.\n */\ntype ValuesStreamEvent<StateType, InterruptType> = AsSubgraph<{\n id?: string;\n event: \"values\";\n data: unknown extends InterruptType ? StateType : StateType & {\n __interrupt__?: InterruptType;\n };\n}>;\n/**\n * Stream event with message chunks coming from LLM invocations inside nodes.\n */\ntype MessagesTupleStreamEvent = AsSubgraph<{\n id?: string;\n event: \"messages\";\n // TODO: add types for message and config, which do not depend on LangChain\n // while making sure it's easy to keep them in sync.\n data: [message: SerializedMessage.AnyMessage, config: MessageTupleMetadata];\n}>;\n/**\n * Metadata stream event with information about the run and thread\n */\ntype MetadataStreamEvent = {\n id?: string;\n event: \"metadata\";\n data: {\n run_id: string;\n thread_id: string;\n };\n};\n/**\n * Stream event with error information.\n */\ntype SubgraphErrorStreamEvent = AsSubgraph<{\n id?: string;\n event: \"error\";\n data: {\n error: string;\n message: string;\n };\n}>;\n/**\n * Stream event with updates to the state after each step.\n * The streamed outputs include the name of the node that\n * produced the update as well as the update.\n */\ntype UpdatesStreamEvent<UpdateType, NodeReturnType> = AsSubgraph<{\n id?: string;\n event: \"updates\";\n data: NodeReturnType extends Record<string, unknown> ? {\n [K in keyof NodeReturnType]?: NodeReturnType[K];\n } & {\n [node: string]: UpdateType;\n } : Record<string, UpdateType>;\n}>;\n/**\n * Streaming custom data from inside the nodes.\n */\ntype CustomStreamEvent<T> = AsSubgraph<{\n id?: string;\n event: \"custom\";\n data: T;\n}>;\ntype TasksStreamCreateEvent<StateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n input: StateType;\n triggers: string[];\n };\n};\ntype TasksStreamResultEvent<UpdateType> = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n result: [string, UpdateType][];\n };\n};\ntype TasksStreamErrorEvent = {\n id?: string;\n event: \"tasks\";\n data: {\n id: string;\n name: string;\n interrupts: Interrupt[];\n error: string;\n };\n};\ntype TasksStreamEvent<StateType, UpdateType> = AsSubgraph<TasksStreamCreateEvent<StateType>> | AsSubgraph<TasksStreamResultEvent<UpdateType>> | AsSubgraph<TasksStreamErrorEvent>;\ntype CheckpointsStreamEvent<StateType> = AsSubgraph<{\n id?: string;\n event: \"checkpoints\";\n data: {\n values: StateType;\n next: string[];\n config: Config;\n metadata: CheckpointMetadata;\n tasks: ThreadTask[];\n };\n}>;\n/**\n * Stream event with detailed debug information.\n */\ntype DebugStreamEvent = AsSubgraph<{\n id?: string;\n event: \"debug\";\n data: unknown;\n}>;\n/**\n * Stream event with events occurring during execution.\n */\ntype EventsStreamEvent = {\n id?: string;\n event: \"events\";\n data: {\n event: `on_${\"chat_model\" | \"llm\" | \"chain\" | \"tool\" | \"retriever\" | \"prompt\"}_${\"start\" | \"stream\" | \"end\"}` | (string & {}); // eslint-disable-line @typescript-eslint/ban-types\n name: string;\n tags: string[];\n run_id: string;\n metadata: Record<string, unknown>;\n parent_ids: string[];\n data: unknown;\n };\n};\nexport type LangGraphEventStream<TStateType = unknown, TUpdateType = TStateType, TCustomType = unknown, TInterruptType = unknown, TNodeReturnType = unknown> = ValuesStreamEvent<TStateType, TInterruptType> | UpdatesStreamEvent<TUpdateType, TNodeReturnType> | CustomStreamEvent<TCustomType> | DebugStreamEvent | MessagesTupleStreamEvent | EventsStreamEvent | TasksStreamEvent<TStateType, TUpdateType> | CheckpointsStreamEvent<TStateType> | SubgraphErrorStreamEvent | MetadataStreamEvent;\nexport {};\n"],"mappings":"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"}