@langchain/angular 0.0.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/LICENSE +21 -0
- package/README.md +321 -0
- package/dist/index.cjs +471 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +72 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +433 -0
- package/dist/index.js.map +1 -0
- package/dist/stream.custom.cjs +164 -0
- package/dist/stream.custom.cjs.map +1 -0
- package/dist/stream.custom.js +164 -0
- package/dist/stream.custom.js.map +1 -0
- package/package.json +85 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_stream_custom = require('./stream.custom.cjs');
|
|
3
|
+
let _angular_core = require("@angular/core");
|
|
4
|
+
let _langchain_langgraph_sdk_ui = require("@langchain/langgraph-sdk/ui");
|
|
5
|
+
let _langchain_langgraph_sdk = require("@langchain/langgraph-sdk");
|
|
6
|
+
let _langchain_langgraph_sdk_utils = require("@langchain/langgraph-sdk/utils");
|
|
7
|
+
|
|
8
|
+
//#region src/index.ts
|
|
9
|
+
function fetchHistory(client, threadId, options) {
|
|
10
|
+
if (options?.limit === false) return client.threads.getState(threadId).then((state) => {
|
|
11
|
+
if (state.checkpoint == null) return [];
|
|
12
|
+
return [state];
|
|
13
|
+
});
|
|
14
|
+
const limit = typeof options?.limit === "number" ? options.limit : 10;
|
|
15
|
+
return client.threads.getHistory(threadId, { limit });
|
|
16
|
+
}
|
|
17
|
+
function useStream(options) {
|
|
18
|
+
if ("transport" in options) return require_stream_custom.useStreamCustom(options);
|
|
19
|
+
return useStreamLGP(options);
|
|
20
|
+
}
|
|
21
|
+
function resolveRunMetadataStorage(reconnectOnMount) {
|
|
22
|
+
if (typeof globalThis.window === "undefined") return null;
|
|
23
|
+
if (reconnectOnMount === true) return globalThis.window.sessionStorage;
|
|
24
|
+
if (typeof reconnectOnMount === "function") return reconnectOnMount();
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
function useStreamLGP(options) {
|
|
28
|
+
const runMetadataStorage = resolveRunMetadataStorage(options.reconnectOnMount);
|
|
29
|
+
const getMessages = (value) => {
|
|
30
|
+
const messagesKey = options.messagesKey ?? "messages";
|
|
31
|
+
return Array.isArray(value[messagesKey]) ? value[messagesKey] : [];
|
|
32
|
+
};
|
|
33
|
+
const setMessages = (current, messages) => {
|
|
34
|
+
const messagesKey = options.messagesKey ?? "messages";
|
|
35
|
+
return {
|
|
36
|
+
...current,
|
|
37
|
+
[messagesKey]: messages
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
const historyLimit = typeof options.fetchStateHistory === "object" && options.fetchStateHistory != null ? options.fetchStateHistory.limit ?? false : options.fetchStateHistory ?? false;
|
|
41
|
+
const threadId = (0, _angular_core.signal)(void 0);
|
|
42
|
+
const client = options.client ?? new _langchain_langgraph_sdk.Client({ apiUrl: options.apiUrl });
|
|
43
|
+
const history = (0, _angular_core.signal)({
|
|
44
|
+
data: void 0,
|
|
45
|
+
error: void 0,
|
|
46
|
+
isLoading: false,
|
|
47
|
+
mutate: async () => void 0
|
|
48
|
+
});
|
|
49
|
+
async function mutate(mutateId) {
|
|
50
|
+
const tid = mutateId ?? threadId();
|
|
51
|
+
if (!tid) return void 0;
|
|
52
|
+
try {
|
|
53
|
+
const data = await fetchHistory(client, tid, { limit: historyLimit });
|
|
54
|
+
history.set({
|
|
55
|
+
data,
|
|
56
|
+
error: void 0,
|
|
57
|
+
isLoading: false,
|
|
58
|
+
mutate
|
|
59
|
+
});
|
|
60
|
+
return data;
|
|
61
|
+
} catch (err) {
|
|
62
|
+
history.update((prev) => ({
|
|
63
|
+
...prev,
|
|
64
|
+
error: err,
|
|
65
|
+
isLoading: false
|
|
66
|
+
}));
|
|
67
|
+
options.onError?.(err, void 0);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
history.update((prev) => ({
|
|
72
|
+
...prev,
|
|
73
|
+
mutate
|
|
74
|
+
}));
|
|
75
|
+
const branch = (0, _angular_core.signal)("");
|
|
76
|
+
const branchContext = (0, _angular_core.computed)(() => (0, _langchain_langgraph_sdk_ui.getBranchContext)(branch(), history().data ?? void 0));
|
|
77
|
+
const messageManager = new _langchain_langgraph_sdk_ui.MessageTupleManager();
|
|
78
|
+
const stream = new _langchain_langgraph_sdk_ui.StreamManager(messageManager, {
|
|
79
|
+
throttle: options.throttle ?? false,
|
|
80
|
+
subagentToolNames: options.subagentToolNames,
|
|
81
|
+
filterSubagentMessages: options.filterSubagentMessages,
|
|
82
|
+
toMessage: _langchain_langgraph_sdk_ui.toMessageClass
|
|
83
|
+
});
|
|
84
|
+
const pendingRuns = new _langchain_langgraph_sdk_ui.PendingRunsTracker();
|
|
85
|
+
const queueEntries = (0, _angular_core.signal)(pendingRuns.entries);
|
|
86
|
+
const queueSize = (0, _angular_core.signal)(pendingRuns.size);
|
|
87
|
+
const historyValues = (0, _angular_core.computed)(() => branchContext().threadHead?.values ?? options.initialValues ?? {});
|
|
88
|
+
const historyError = (0, _angular_core.computed)(() => {
|
|
89
|
+
const error = branchContext().threadHead?.tasks?.at(-1)?.error;
|
|
90
|
+
if (error == null) return void 0;
|
|
91
|
+
try {
|
|
92
|
+
const parsed = JSON.parse(error);
|
|
93
|
+
if (_langchain_langgraph_sdk_ui.StreamError.isStructuredError(parsed)) return new _langchain_langgraph_sdk_ui.StreamError(parsed);
|
|
94
|
+
return parsed;
|
|
95
|
+
} catch {}
|
|
96
|
+
return error;
|
|
97
|
+
});
|
|
98
|
+
const streamValues = (0, _angular_core.signal)(stream.values);
|
|
99
|
+
const streamError = (0, _angular_core.signal)(stream.error);
|
|
100
|
+
const isLoading = (0, _angular_core.signal)(stream.isLoading);
|
|
101
|
+
const values = (0, _angular_core.computed)(() => streamValues() ?? historyValues());
|
|
102
|
+
const error = (0, _angular_core.computed)(() => streamError() ?? historyError() ?? history().error);
|
|
103
|
+
const messageMetadata = (0, _angular_core.computed)(() => (0, _langchain_langgraph_sdk_ui.getMessagesMetadataMap)({
|
|
104
|
+
initialValues: options.initialValues,
|
|
105
|
+
history: history().data,
|
|
106
|
+
getMessages,
|
|
107
|
+
branchContext: branchContext()
|
|
108
|
+
}));
|
|
109
|
+
(0, _angular_core.effect)((onCleanup) => {
|
|
110
|
+
const unsubscribe = stream.subscribe(() => {
|
|
111
|
+
streamValues.set(stream.values);
|
|
112
|
+
streamError.set(stream.error);
|
|
113
|
+
isLoading.set(stream.isLoading);
|
|
114
|
+
});
|
|
115
|
+
onCleanup(() => unsubscribe());
|
|
116
|
+
});
|
|
117
|
+
pendingRuns.subscribe(() => {
|
|
118
|
+
queueEntries.set(pendingRuns.entries);
|
|
119
|
+
queueSize.set(pendingRuns.size);
|
|
120
|
+
});
|
|
121
|
+
(0, _angular_core.effect)(() => {
|
|
122
|
+
const hvMessages = getMessages(historyValues());
|
|
123
|
+
if (options.filterSubagentMessages && !isLoading() && !history().isLoading && hvMessages.length > 0) stream.reconstructSubagents(hvMessages, { skipIfPopulated: true });
|
|
124
|
+
});
|
|
125
|
+
function stop() {
|
|
126
|
+
return stream.stop(historyValues(), { onStop: (args) => {
|
|
127
|
+
if (runMetadataStorage && threadId()) {
|
|
128
|
+
const tid = threadId();
|
|
129
|
+
const runId = runMetadataStorage.getItem(`lg:stream:${tid}`);
|
|
130
|
+
if (runId) client.runs.cancel(tid, runId);
|
|
131
|
+
runMetadataStorage.removeItem(`lg:stream:${tid}`);
|
|
132
|
+
}
|
|
133
|
+
options.onStop?.(args);
|
|
134
|
+
} });
|
|
135
|
+
}
|
|
136
|
+
function setBranch(value) {
|
|
137
|
+
branch.set(value);
|
|
138
|
+
}
|
|
139
|
+
function submitDirect(values, submitOptions) {
|
|
140
|
+
const currentBranchContext = branchContext();
|
|
141
|
+
const checkpointId = submitOptions?.checkpoint?.checkpoint_id;
|
|
142
|
+
branch.set(checkpointId != null ? currentBranchContext.branchByCheckpoint[checkpointId]?.branch ?? "" : "");
|
|
143
|
+
const includeImplicitBranch = historyLimit === true || typeof historyLimit === "number";
|
|
144
|
+
const shouldRefetch = options.onFinish != null || includeImplicitBranch;
|
|
145
|
+
let checkpoint = submitOptions?.checkpoint ?? (includeImplicitBranch ? currentBranchContext.threadHead?.checkpoint : void 0) ?? void 0;
|
|
146
|
+
if (submitOptions?.checkpoint === null) checkpoint = void 0;
|
|
147
|
+
if (checkpoint != null) delete checkpoint.thread_id;
|
|
148
|
+
const streamResumable = submitOptions?.streamResumable ?? !!runMetadataStorage;
|
|
149
|
+
let callbackMeta;
|
|
150
|
+
let rejoinKey;
|
|
151
|
+
let usableThreadId;
|
|
152
|
+
return stream.start(async (signal) => {
|
|
153
|
+
usableThreadId = threadId();
|
|
154
|
+
if (!usableThreadId) {
|
|
155
|
+
usableThreadId = (await client.threads.create({
|
|
156
|
+
threadId: submitOptions?.threadId,
|
|
157
|
+
metadata: submitOptions?.metadata
|
|
158
|
+
})).thread_id;
|
|
159
|
+
threadId.set(usableThreadId);
|
|
160
|
+
options.onThreadId?.(usableThreadId);
|
|
161
|
+
}
|
|
162
|
+
const streamMode = new Set([
|
|
163
|
+
...submitOptions?.streamMode ?? [],
|
|
164
|
+
"values",
|
|
165
|
+
"messages-tuple"
|
|
166
|
+
]);
|
|
167
|
+
if (options.onUpdateEvent) streamMode.add("updates");
|
|
168
|
+
if (options.onCustomEvent) streamMode.add("custom");
|
|
169
|
+
if (options.onCheckpointEvent) streamMode.add("checkpoints");
|
|
170
|
+
if (options.onTaskEvent) streamMode.add("tasks");
|
|
171
|
+
if ("onDebugEvent" in options && options.onDebugEvent) streamMode.add("debug");
|
|
172
|
+
if ("onLangChainEvent" in options && options.onLangChainEvent) streamMode.add("events");
|
|
173
|
+
stream.setStreamValues(() => {
|
|
174
|
+
const prev = {
|
|
175
|
+
...historyValues(),
|
|
176
|
+
...stream.values
|
|
177
|
+
};
|
|
178
|
+
if (submitOptions?.optimisticValues != null) return {
|
|
179
|
+
...prev,
|
|
180
|
+
...typeof submitOptions.optimisticValues === "function" ? submitOptions.optimisticValues(prev) : submitOptions.optimisticValues
|
|
181
|
+
};
|
|
182
|
+
return { ...prev };
|
|
183
|
+
});
|
|
184
|
+
return client.runs.stream(usableThreadId, options.assistantId, {
|
|
185
|
+
input: values,
|
|
186
|
+
config: submitOptions?.config,
|
|
187
|
+
context: submitOptions?.context,
|
|
188
|
+
command: submitOptions?.command,
|
|
189
|
+
interruptBefore: submitOptions?.interruptBefore,
|
|
190
|
+
interruptAfter: submitOptions?.interruptAfter,
|
|
191
|
+
metadata: submitOptions?.metadata,
|
|
192
|
+
multitaskStrategy: submitOptions?.multitaskStrategy,
|
|
193
|
+
onCompletion: submitOptions?.onCompletion,
|
|
194
|
+
onDisconnect: submitOptions?.onDisconnect ?? (streamResumable ? "continue" : "cancel"),
|
|
195
|
+
signal,
|
|
196
|
+
checkpoint,
|
|
197
|
+
streamMode: [...streamMode],
|
|
198
|
+
streamSubgraphs: submitOptions?.streamSubgraphs,
|
|
199
|
+
streamResumable,
|
|
200
|
+
durability: submitOptions?.durability,
|
|
201
|
+
onRunCreated(params) {
|
|
202
|
+
callbackMeta = {
|
|
203
|
+
run_id: params.run_id,
|
|
204
|
+
thread_id: params.thread_id ?? usableThreadId
|
|
205
|
+
};
|
|
206
|
+
if (runMetadataStorage) {
|
|
207
|
+
rejoinKey = `lg:stream:${usableThreadId}`;
|
|
208
|
+
runMetadataStorage.setItem(rejoinKey, callbackMeta.run_id);
|
|
209
|
+
}
|
|
210
|
+
options.onCreated?.(callbackMeta);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
}, {
|
|
214
|
+
getMessages,
|
|
215
|
+
setMessages,
|
|
216
|
+
initialValues: historyValues(),
|
|
217
|
+
callbacks: options,
|
|
218
|
+
async onSuccess() {
|
|
219
|
+
if (rejoinKey) runMetadataStorage?.removeItem(rejoinKey);
|
|
220
|
+
if (shouldRefetch && usableThreadId) {
|
|
221
|
+
const lastHead = (await mutate(usableThreadId))?.at(0);
|
|
222
|
+
if (lastHead) {
|
|
223
|
+
options.onFinish?.(lastHead, callbackMeta);
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
onError: (error) => options.onError?.(error, callbackMeta),
|
|
229
|
+
onFinish: () => {}
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
let submitting = false;
|
|
233
|
+
(0, _angular_core.effect)(() => {
|
|
234
|
+
if (!isLoading() && !submitting && pendingRuns.size > 0) {
|
|
235
|
+
const next = pendingRuns.shift();
|
|
236
|
+
if (next) {
|
|
237
|
+
submitting = true;
|
|
238
|
+
joinStream(next.id).finally(() => {
|
|
239
|
+
submitting = false;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
async function submit(values, submitOptions) {
|
|
245
|
+
if (stream.isLoading || submitting) {
|
|
246
|
+
if (submitOptions?.multitaskStrategy === "interrupt" || submitOptions?.multitaskStrategy === "rollback") {
|
|
247
|
+
submitting = true;
|
|
248
|
+
try {
|
|
249
|
+
await submitDirect(values, submitOptions);
|
|
250
|
+
} finally {
|
|
251
|
+
submitting = false;
|
|
252
|
+
}
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
const usableThreadId = threadId();
|
|
256
|
+
if (usableThreadId) {
|
|
257
|
+
const run = await client.runs.create(usableThreadId, options.assistantId, {
|
|
258
|
+
input: values,
|
|
259
|
+
config: submitOptions?.config,
|
|
260
|
+
context: submitOptions?.context,
|
|
261
|
+
command: submitOptions?.command,
|
|
262
|
+
interruptBefore: submitOptions?.interruptBefore,
|
|
263
|
+
interruptAfter: submitOptions?.interruptAfter,
|
|
264
|
+
metadata: submitOptions?.metadata,
|
|
265
|
+
multitaskStrategy: "enqueue",
|
|
266
|
+
streamResumable: true,
|
|
267
|
+
streamSubgraphs: submitOptions?.streamSubgraphs,
|
|
268
|
+
durability: submitOptions?.durability
|
|
269
|
+
});
|
|
270
|
+
pendingRuns.add({
|
|
271
|
+
id: run.run_id,
|
|
272
|
+
values,
|
|
273
|
+
options: submitOptions,
|
|
274
|
+
createdAt: new Date(run.created_at)
|
|
275
|
+
});
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
submitting = true;
|
|
280
|
+
const result = submitDirect(values, submitOptions);
|
|
281
|
+
Promise.resolve(result).finally(() => {
|
|
282
|
+
submitting = false;
|
|
283
|
+
});
|
|
284
|
+
return result;
|
|
285
|
+
}
|
|
286
|
+
async function joinStream(runId, lastEventId, joinOptions) {
|
|
287
|
+
lastEventId ??= "-1";
|
|
288
|
+
const tid = threadId();
|
|
289
|
+
if (!tid) return;
|
|
290
|
+
const callbackMeta = {
|
|
291
|
+
thread_id: tid,
|
|
292
|
+
run_id: runId
|
|
293
|
+
};
|
|
294
|
+
await stream.start(async (signal) => {
|
|
295
|
+
const rawStream = client.runs.joinStream(tid, runId, {
|
|
296
|
+
signal,
|
|
297
|
+
lastEventId,
|
|
298
|
+
streamMode: joinOptions?.streamMode
|
|
299
|
+
});
|
|
300
|
+
return joinOptions?.filter != null ? (0, _langchain_langgraph_sdk_ui.filterStream)(rawStream, joinOptions.filter) : rawStream;
|
|
301
|
+
}, {
|
|
302
|
+
getMessages,
|
|
303
|
+
setMessages,
|
|
304
|
+
initialValues: historyValues(),
|
|
305
|
+
callbacks: options,
|
|
306
|
+
async onSuccess() {
|
|
307
|
+
runMetadataStorage?.removeItem(`lg:stream:${tid}`);
|
|
308
|
+
const lastHead = (await mutate(tid))?.at(0);
|
|
309
|
+
if (lastHead) options.onFinish?.(lastHead, callbackMeta);
|
|
310
|
+
},
|
|
311
|
+
onError(error) {
|
|
312
|
+
options.onError?.(error, callbackMeta);
|
|
313
|
+
},
|
|
314
|
+
onFinish() {}
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
const shouldReconnect = !!runMetadataStorage;
|
|
318
|
+
let hasReconnected = false;
|
|
319
|
+
(0, _angular_core.effect)(() => {
|
|
320
|
+
const tid = threadId();
|
|
321
|
+
if (!hasReconnected && shouldReconnect && runMetadataStorage && tid && !isLoading()) {
|
|
322
|
+
const runId = runMetadataStorage.getItem(`lg:stream:${tid}`);
|
|
323
|
+
if (runId) {
|
|
324
|
+
hasReconnected = true;
|
|
325
|
+
joinStream(runId);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
const messages = (0, _angular_core.computed)(() => getMessages(values()));
|
|
330
|
+
const toolCalls = (0, _angular_core.computed)(() => (0, _langchain_langgraph_sdk_utils.getToolCallsWithResults)(getMessages(values())));
|
|
331
|
+
function getToolCalls(message) {
|
|
332
|
+
return (0, _langchain_langgraph_sdk_utils.getToolCallsWithResults)(getMessages(values())).filter((tc) => tc.aiMessage.id === message.id);
|
|
333
|
+
}
|
|
334
|
+
const interrupt = (0, _angular_core.computed)(() => (0, _langchain_langgraph_sdk_ui.extractInterrupts)(values(), {
|
|
335
|
+
isLoading: isLoading(),
|
|
336
|
+
threadState: branchContext().threadHead,
|
|
337
|
+
error: error()
|
|
338
|
+
}));
|
|
339
|
+
const interrupts = (0, _angular_core.computed)(() => {
|
|
340
|
+
const vals = values();
|
|
341
|
+
if (vals != null && "__interrupt__" in vals && Array.isArray(vals.__interrupt__)) {
|
|
342
|
+
const valueInterrupts = vals.__interrupt__;
|
|
343
|
+
if (valueInterrupts.length === 0) return [{ when: "breakpoint" }];
|
|
344
|
+
return valueInterrupts;
|
|
345
|
+
}
|
|
346
|
+
if (isLoading()) return [];
|
|
347
|
+
const allInterrupts = (branchContext().threadHead?.tasks ?? []).flatMap((t) => t.interrupts ?? []);
|
|
348
|
+
if (allInterrupts.length > 0) return allInterrupts;
|
|
349
|
+
if (!(branchContext().threadHead?.next ?? []).length || error() != null) return [];
|
|
350
|
+
return [{ when: "breakpoint" }];
|
|
351
|
+
});
|
|
352
|
+
const historyList = (0, _angular_core.computed)(() => {
|
|
353
|
+
if (historyLimit === false) throw new Error("`fetchStateHistory` must be set to `true` to use `history`");
|
|
354
|
+
return branchContext().flatHistory;
|
|
355
|
+
});
|
|
356
|
+
const isThreadLoading = (0, _angular_core.computed)(() => history().isLoading && history().data == null);
|
|
357
|
+
const experimentalBranchTree = (0, _angular_core.computed)(() => {
|
|
358
|
+
if (historyLimit === false) throw new Error("`fetchStateHistory` must be set to `true` to use `experimental_branchTree`");
|
|
359
|
+
return branchContext().branchTree;
|
|
360
|
+
});
|
|
361
|
+
function getMessagesMetadata(message, index) {
|
|
362
|
+
const streamMetadata = messageManager.get(message.id)?.metadata;
|
|
363
|
+
const historyMetadata = messageMetadata().find((m) => m.messageId === (message.id ?? index));
|
|
364
|
+
if (streamMetadata != null || historyMetadata != null) return {
|
|
365
|
+
...historyMetadata,
|
|
366
|
+
streamMetadata
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
return {
|
|
370
|
+
assistantId: options.assistantId,
|
|
371
|
+
client,
|
|
372
|
+
values,
|
|
373
|
+
error,
|
|
374
|
+
isLoading,
|
|
375
|
+
branch,
|
|
376
|
+
setBranch,
|
|
377
|
+
messages,
|
|
378
|
+
toolCalls,
|
|
379
|
+
getToolCalls,
|
|
380
|
+
interrupt,
|
|
381
|
+
interrupts,
|
|
382
|
+
history: historyList,
|
|
383
|
+
isThreadLoading,
|
|
384
|
+
experimental_branchTree: experimentalBranchTree,
|
|
385
|
+
getMessagesMetadata,
|
|
386
|
+
submit,
|
|
387
|
+
stop,
|
|
388
|
+
joinStream,
|
|
389
|
+
queue: {
|
|
390
|
+
entries: queueEntries,
|
|
391
|
+
size: queueSize,
|
|
392
|
+
async cancel(id) {
|
|
393
|
+
const tid = threadId();
|
|
394
|
+
const removed = pendingRuns.remove(id);
|
|
395
|
+
if (removed && tid) await client.runs.cancel(tid, id);
|
|
396
|
+
return removed;
|
|
397
|
+
},
|
|
398
|
+
async clear() {
|
|
399
|
+
const tid = threadId();
|
|
400
|
+
const removed = pendingRuns.removeAll();
|
|
401
|
+
if (tid && removed.length > 0) await Promise.all(removed.map((e) => client.runs.cancel(tid, e.id)));
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
switchThread(newThreadId) {
|
|
405
|
+
if (newThreadId !== (threadId() ?? null)) {
|
|
406
|
+
const prevThreadId = threadId();
|
|
407
|
+
threadId.set(newThreadId ?? void 0);
|
|
408
|
+
stream.clear();
|
|
409
|
+
const removed = pendingRuns.removeAll();
|
|
410
|
+
if (prevThreadId && removed.length > 0) Promise.all(removed.map((e) => client.runs.cancel(prevThreadId, e.id)));
|
|
411
|
+
if (newThreadId != null) options.onThreadId?.(newThreadId);
|
|
412
|
+
}
|
|
413
|
+
},
|
|
414
|
+
get subagents() {
|
|
415
|
+
return stream.getSubagents();
|
|
416
|
+
},
|
|
417
|
+
get activeSubagents() {
|
|
418
|
+
return stream.getActiveSubagents();
|
|
419
|
+
},
|
|
420
|
+
getSubagent(toolCallId) {
|
|
421
|
+
return stream.getSubagent(toolCallId);
|
|
422
|
+
},
|
|
423
|
+
getSubagentsByType(type) {
|
|
424
|
+
return stream.getSubagentsByType(type);
|
|
425
|
+
},
|
|
426
|
+
getSubagentsByMessage(messageId) {
|
|
427
|
+
return stream.getSubagentsByMessage(messageId);
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
//#endregion
|
|
433
|
+
Object.defineProperty(exports, 'FetchStreamTransport', {
|
|
434
|
+
enumerable: true,
|
|
435
|
+
get: function () {
|
|
436
|
+
return _langchain_langgraph_sdk_ui.FetchStreamTransport;
|
|
437
|
+
}
|
|
438
|
+
});
|
|
439
|
+
Object.defineProperty(exports, 'SubagentManager', {
|
|
440
|
+
enumerable: true,
|
|
441
|
+
get: function () {
|
|
442
|
+
return _langchain_langgraph_sdk_ui.SubagentManager;
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
Object.defineProperty(exports, 'calculateDepthFromNamespace', {
|
|
446
|
+
enumerable: true,
|
|
447
|
+
get: function () {
|
|
448
|
+
return _langchain_langgraph_sdk_ui.calculateDepthFromNamespace;
|
|
449
|
+
}
|
|
450
|
+
});
|
|
451
|
+
Object.defineProperty(exports, 'extractParentIdFromNamespace', {
|
|
452
|
+
enumerable: true,
|
|
453
|
+
get: function () {
|
|
454
|
+
return _langchain_langgraph_sdk_ui.extractParentIdFromNamespace;
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
Object.defineProperty(exports, 'extractToolCallIdFromNamespace', {
|
|
458
|
+
enumerable: true,
|
|
459
|
+
get: function () {
|
|
460
|
+
return _langchain_langgraph_sdk_ui.extractToolCallIdFromNamespace;
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
Object.defineProperty(exports, 'isSubagentNamespace', {
|
|
464
|
+
enumerable: true,
|
|
465
|
+
get: function () {
|
|
466
|
+
return _langchain_langgraph_sdk_ui.isSubagentNamespace;
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
exports.useStream = useStream;
|
|
470
|
+
exports.useStreamLGP = useStreamLGP;
|
|
471
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["useStreamCustom","Client","MessageTupleManager","StreamManager","toMessageClass","PendingRunsTracker","StreamError"],"sources":["../src/index.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport type {\n BaseMessage,\n ToolMessage as CoreToolMessage,\n AIMessage as CoreAIMessage,\n} from \"@langchain/core/messages\";\nimport {\n StreamManager,\n MessageTupleManager,\n PendingRunsTracker,\n filterStream,\n getBranchContext,\n getMessagesMetadataMap,\n StreamError,\n extractInterrupts,\n toMessageClass,\n type UseStreamThread,\n type GetConfigurableType,\n type GetCustomEventType,\n type GetInterruptType,\n type GetUpdateType,\n type MessageMetadata,\n type AnyStreamOptions,\n type SubmitOptions,\n type EventStreamEvent,\n type RunCallbackMeta,\n type ResolveStreamOptions,\n type ResolveStreamInterface,\n type InferBag,\n type InferStateType,\n type UseStreamCustomOptions,\n} from \"@langchain/langgraph-sdk/ui\";\n\nimport {\n Client,\n type StreamEvent,\n type StreamMode,\n type Message,\n type Interrupt,\n type BagTemplate,\n type ThreadState,\n type ToolCallWithResult as _ToolCallWithResult,\n type DefaultToolCall,\n} from \"@langchain/langgraph-sdk\";\nimport { getToolCallsWithResults } from \"@langchain/langgraph-sdk/utils\";\nimport { useStreamCustom } from \"./stream.custom.js\";\n\nexport { FetchStreamTransport } from \"@langchain/langgraph-sdk/ui\";\n\ntype ClassToolCallWithResult<T> =\n T extends _ToolCallWithResult<infer TC, unknown, unknown>\n ? _ToolCallWithResult<TC, CoreToolMessage, CoreAIMessage>\n : T;\n\ntype WithClassMessages<T> = Omit<\n T,\n \"messages\" | \"getMessagesMetadata\" | \"toolCalls\" | \"getToolCalls\"\n> & {\n messages: BaseMessage[];\n getMessagesMetadata: (\n message: BaseMessage,\n index?: number,\n ) => MessageMetadata<Record<string, unknown>> | undefined;\n} & (\"toolCalls\" extends keyof T\n ? {\n toolCalls: T extends { toolCalls: (infer TC)[] }\n ? ClassToolCallWithResult<TC>[]\n : never;\n }\n : unknown) &\n (\"getToolCalls\" extends keyof T\n ? {\n getToolCalls: T extends {\n getToolCalls: (message: infer _M) => (infer TC)[];\n }\n ? (message: CoreAIMessage) => ClassToolCallWithResult<TC>[]\n : never;\n }\n : unknown);\n\nfunction fetchHistory<StateType extends Record<string, unknown>>(\n client: Client,\n threadId: string,\n options?: { limit?: boolean | number },\n) {\n if (options?.limit === false) {\n return client.threads.getState<StateType>(threadId).then((state) => {\n if (state.checkpoint == null) return [];\n return [state];\n });\n }\n\n const limit = typeof options?.limit === \"number\" ? options.limit : 10;\n return client.threads.getHistory<StateType>(threadId, { limit });\n}\n\nexport function useStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options: ResolveStreamOptions<T, InferBag<T, Bag>>,\n): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n\nexport function useStream<\n T = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(\n options: UseStreamCustomOptions<InferStateType<T>, InferBag<T, Bag>>,\n): WithClassMessages<ResolveStreamInterface<T, InferBag<T, Bag>>>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useStream(options: any): any {\n if (\"transport\" in options) {\n return useStreamCustom(options);\n }\n return useStreamLGP(options);\n}\n\nfunction resolveRunMetadataStorage(\n reconnectOnMount: AnyStreamOptions[\"reconnectOnMount\"],\n) {\n if (typeof globalThis.window === \"undefined\") return null;\n if (reconnectOnMount === true) return globalThis.window.sessionStorage;\n if (typeof reconnectOnMount === \"function\") return reconnectOnMount();\n return null;\n}\n\nexport function useStreamLGP<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends {\n ConfigurableType?: Record<string, unknown>;\n InterruptType?: unknown;\n CustomEventType?: unknown;\n UpdateType?: unknown;\n } = BagTemplate,\n>(options: AnyStreamOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type CustomType = GetCustomEventType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n\n const runMetadataStorage = resolveRunMetadataStorage(\n options.reconnectOnMount,\n );\n\n const getMessages = (value: StateType): Message[] => {\n const messagesKey = options.messagesKey ?? \"messages\";\n return Array.isArray(value[messagesKey]) ? value[messagesKey] : [];\n };\n\n const setMessages = (current: StateType, messages: Message[]): StateType => {\n const messagesKey = options.messagesKey ?? \"messages\";\n return { ...current, [messagesKey]: messages };\n };\n\n const historyLimit =\n typeof options.fetchStateHistory === \"object\" &&\n options.fetchStateHistory != null\n ? (options.fetchStateHistory.limit ?? false)\n : (options.fetchStateHistory ?? false);\n\n const threadId = signal<string | undefined>(undefined);\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const history = signal<UseStreamThread<StateType>>({\n data: undefined,\n error: undefined,\n isLoading: false,\n mutate: async () => undefined,\n });\n\n async function mutate(\n mutateId?: string,\n ): Promise<ThreadState<StateType>[] | undefined> {\n const tid = mutateId ?? threadId();\n if (!tid) return undefined;\n try {\n const data = await fetchHistory<StateType>(client, tid, {\n limit: historyLimit,\n });\n history.set({\n data,\n error: undefined,\n isLoading: false,\n mutate,\n });\n return data;\n } catch (err) {\n history.update((prev) => ({\n ...prev,\n error: err,\n isLoading: false,\n }));\n options.onError?.(err, undefined);\n return undefined;\n }\n }\n\n history.update((prev) => ({ ...prev, mutate }));\n\n const branch = signal<string>(\"\");\n const branchContext = computed(() =>\n getBranchContext(branch(), history().data ?? undefined),\n );\n\n const messageManager = new MessageTupleManager();\n const stream = new StreamManager<StateType, Bag>(messageManager, {\n throttle: options.throttle ?? false,\n subagentToolNames: options.subagentToolNames,\n filterSubagentMessages: options.filterSubagentMessages,\n toMessage: toMessageClass,\n });\n\n const pendingRuns = new PendingRunsTracker<\n StateType,\n SubmitOptions<StateType, ConfigurableType>\n >();\n const queueEntries = signal(pendingRuns.entries);\n const queueSize = signal(pendingRuns.size);\n\n const historyValues = computed(\n () =>\n branchContext().threadHead?.values ??\n options.initialValues ??\n ({} as StateType),\n );\n\n const historyError = computed(() => {\n const error = branchContext().threadHead?.tasks?.at(-1)?.error;\n if (error == null) return undefined;\n try {\n const parsed = JSON.parse(error) as unknown;\n if (StreamError.isStructuredError(parsed)) return new StreamError(parsed);\n return parsed;\n } catch {\n // do nothing\n }\n return error;\n });\n\n const streamValues = signal<StateType | null>(stream.values);\n const streamError = signal<unknown>(stream.error);\n const isLoading = signal(stream.isLoading);\n\n const values = computed(() => streamValues() ?? historyValues());\n const error = computed(\n () => streamError() ?? historyError() ?? history().error,\n );\n\n const messageMetadata = computed(() =>\n getMessagesMetadataMap({\n initialValues: options.initialValues,\n history: history().data,\n getMessages,\n branchContext: branchContext(),\n }),\n );\n\n effect((onCleanup) => {\n const unsubscribe = stream.subscribe(() => {\n streamValues.set(stream.values);\n streamError.set(stream.error);\n isLoading.set(stream.isLoading);\n });\n\n onCleanup(() => unsubscribe());\n });\n\n pendingRuns.subscribe(() => {\n queueEntries.set(pendingRuns.entries);\n queueSize.set(pendingRuns.size);\n });\n\n effect(() => {\n const hvMessages = getMessages(historyValues());\n const should =\n options.filterSubagentMessages &&\n !isLoading() &&\n !history().isLoading &&\n hvMessages.length > 0;\n if (should) {\n stream.reconstructSubagents(hvMessages, { skipIfPopulated: true });\n }\n });\n\n function stop() {\n return stream.stop(historyValues(), {\n onStop: (args) => {\n if (runMetadataStorage && threadId()) {\n const tid = threadId()!;\n const runId = runMetadataStorage.getItem(`lg:stream:${tid}`);\n if (runId) void client.runs.cancel(tid, runId);\n runMetadataStorage.removeItem(`lg:stream:${tid}`);\n }\n\n options.onStop?.(args);\n },\n });\n }\n\n function setBranch(value: string) {\n branch.set(value);\n }\n\n function submitDirect(\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) {\n const currentBranchContext = branchContext();\n\n const checkpointId = submitOptions?.checkpoint?.checkpoint_id;\n branch.set(\n checkpointId != null\n ? (currentBranchContext.branchByCheckpoint[checkpointId]?.branch ?? \"\")\n : \"\",\n );\n\n const includeImplicitBranch =\n historyLimit === true || typeof historyLimit === \"number\";\n\n const shouldRefetch = options.onFinish != null || includeImplicitBranch;\n\n let checkpoint =\n submitOptions?.checkpoint ??\n (includeImplicitBranch\n ? currentBranchContext.threadHead?.checkpoint\n : undefined) ??\n undefined;\n\n if (submitOptions?.checkpoint === null) checkpoint = undefined;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n if (checkpoint != null) delete checkpoint.thread_id;\n\n const streamResumable =\n submitOptions?.streamResumable ?? !!runMetadataStorage;\n\n let callbackMeta: RunCallbackMeta | undefined;\n let rejoinKey: `lg:stream:${string}` | undefined;\n let usableThreadId: string | undefined;\n\n return stream.start(\n async (signal) => {\n usableThreadId = threadId();\n if (!usableThreadId) {\n const thread = await client.threads.create({\n threadId: submitOptions?.threadId,\n metadata: submitOptions?.metadata,\n });\n\n usableThreadId = thread.thread_id;\n threadId.set(usableThreadId);\n options.onThreadId?.(usableThreadId);\n }\n\n const streamMode = new Set<StreamMode>([\n ...(submitOptions?.streamMode ?? []),\n \"values\",\n \"messages-tuple\",\n ]);\n if (options.onUpdateEvent) streamMode.add(\"updates\");\n if (options.onCustomEvent) streamMode.add(\"custom\");\n if (options.onCheckpointEvent) streamMode.add(\"checkpoints\");\n if (options.onTaskEvent) streamMode.add(\"tasks\");\n if (\"onDebugEvent\" in options && options.onDebugEvent)\n streamMode.add(\"debug\");\n if (\"onLangChainEvent\" in options && options.onLangChainEvent)\n streamMode.add(\"events\");\n\n stream.setStreamValues(() => {\n const prev = { ...historyValues(), ...stream.values };\n\n if (submitOptions?.optimisticValues != null) {\n return {\n ...prev,\n ...(typeof submitOptions.optimisticValues === \"function\"\n ? submitOptions.optimisticValues(prev)\n : submitOptions.optimisticValues),\n };\n }\n\n return { ...prev };\n });\n\n return client.runs.stream(usableThreadId!, options.assistantId, {\n input: values as Record<string, unknown>,\n config: submitOptions?.config,\n context: submitOptions?.context,\n command: submitOptions?.command,\n\n interruptBefore: submitOptions?.interruptBefore,\n interruptAfter: submitOptions?.interruptAfter,\n metadata: submitOptions?.metadata,\n multitaskStrategy: submitOptions?.multitaskStrategy,\n onCompletion: submitOptions?.onCompletion,\n onDisconnect:\n submitOptions?.onDisconnect ??\n (streamResumable ? \"continue\" : \"cancel\"),\n\n signal,\n\n checkpoint,\n streamMode: [...streamMode],\n streamSubgraphs: submitOptions?.streamSubgraphs,\n streamResumable,\n durability: submitOptions?.durability,\n onRunCreated(params) {\n callbackMeta = {\n run_id: params.run_id,\n thread_id: params.thread_id ?? usableThreadId!,\n };\n\n if (runMetadataStorage) {\n rejoinKey = `lg:stream:${usableThreadId}`;\n runMetadataStorage.setItem(rejoinKey, callbackMeta.run_id);\n }\n\n options.onCreated?.(callbackMeta);\n },\n }) as AsyncGenerator<\n EventStreamEvent<StateType, UpdateType, CustomType>\n >;\n },\n {\n getMessages,\n setMessages,\n\n initialValues: historyValues(),\n callbacks: options,\n\n async onSuccess() {\n if (rejoinKey) runMetadataStorage?.removeItem(rejoinKey);\n\n if (shouldRefetch && usableThreadId) {\n const newHistory = await mutate(usableThreadId);\n const lastHead = newHistory?.at(0);\n if (lastHead) {\n options.onFinish?.(lastHead, callbackMeta);\n return null;\n }\n }\n return undefined;\n },\n onError: (error) => options.onError?.(error, callbackMeta),\n onFinish: () => {},\n },\n );\n }\n\n let submitting = false;\n\n effect(() => {\n if (!isLoading() && !submitting && pendingRuns.size > 0) {\n const next = pendingRuns.shift();\n if (next) {\n submitting = true;\n void joinStream(next.id).finally(() => {\n submitting = false;\n });\n }\n }\n });\n\n async function submit(\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) {\n if (stream.isLoading || submitting) {\n const shouldAbort =\n submitOptions?.multitaskStrategy === \"interrupt\" ||\n submitOptions?.multitaskStrategy === \"rollback\";\n\n if (shouldAbort) {\n submitting = true;\n try {\n await submitDirect(values, submitOptions);\n } finally {\n submitting = false;\n }\n return;\n }\n\n const usableThreadId = threadId();\n if (usableThreadId) {\n const run = await client.runs.create(\n usableThreadId,\n options.assistantId,\n {\n input: values as Record<string, unknown>,\n config: submitOptions?.config,\n context: submitOptions?.context,\n command: submitOptions?.command,\n interruptBefore: submitOptions?.interruptBefore,\n interruptAfter: submitOptions?.interruptAfter,\n metadata: submitOptions?.metadata,\n multitaskStrategy: \"enqueue\",\n streamResumable: true,\n streamSubgraphs: submitOptions?.streamSubgraphs,\n durability: submitOptions?.durability,\n },\n );\n\n pendingRuns.add({\n id: run.run_id,\n values: values as Partial<StateType> | null | undefined,\n options: submitOptions,\n createdAt: new Date(run.created_at),\n });\n return;\n }\n }\n\n submitting = true;\n const result = submitDirect(values, submitOptions);\n void Promise.resolve(result).finally(() => {\n submitting = false;\n });\n return result;\n }\n\n async function joinStream(\n runId: string,\n lastEventId?: string,\n joinOptions?: {\n streamMode?: StreamMode | StreamMode[];\n filter?: (event: {\n id?: string;\n event: StreamEvent;\n data: unknown;\n }) => boolean;\n },\n ) {\n // eslint-disable-next-line no-param-reassign\n lastEventId ??= \"-1\";\n const tid = threadId();\n if (!tid) return;\n\n const callbackMeta: RunCallbackMeta = {\n thread_id: tid,\n run_id: runId,\n };\n\n await stream.start(\n async (signal: AbortSignal) => {\n const rawStream = client.runs.joinStream(tid, runId, {\n signal,\n lastEventId,\n streamMode: joinOptions?.streamMode,\n }) as AsyncGenerator<\n EventStreamEvent<StateType, UpdateType, CustomType>\n >;\n\n return joinOptions?.filter != null\n ? filterStream(rawStream, joinOptions.filter)\n : rawStream;\n },\n {\n getMessages,\n setMessages,\n\n initialValues: historyValues(),\n callbacks: options,\n async onSuccess() {\n runMetadataStorage?.removeItem(`lg:stream:${tid}`);\n const newHistory = await mutate(tid);\n const lastHead = newHistory?.at(0);\n if (lastHead) options.onFinish?.(lastHead, callbackMeta);\n },\n onError(error) {\n options.onError?.(error, callbackMeta);\n },\n onFinish() {},\n },\n );\n }\n\n const shouldReconnect = !!runMetadataStorage;\n let hasReconnected = false;\n\n effect(() => {\n const tid = threadId();\n if (\n !hasReconnected &&\n shouldReconnect &&\n runMetadataStorage &&\n tid &&\n !isLoading()\n ) {\n const runId = runMetadataStorage.getItem(`lg:stream:${tid}`);\n if (runId) {\n hasReconnected = true;\n void joinStream(runId);\n }\n }\n });\n\n const messages = computed(() => getMessages(values()));\n\n const toolCalls = computed(() =>\n getToolCallsWithResults(getMessages(values())),\n );\n\n function getToolCalls(message: Message) {\n const allToolCalls = getToolCallsWithResults(getMessages(values()));\n return allToolCalls.filter((tc) => tc.aiMessage.id === message.id);\n }\n\n const interrupt = computed(() =>\n extractInterrupts<InterruptType>(values(), {\n isLoading: isLoading(),\n threadState: branchContext().threadHead,\n error: error(),\n }),\n );\n\n const interrupts = computed((): Interrupt<InterruptType>[] => {\n const vals = values();\n if (\n vals != null &&\n \"__interrupt__\" in vals &&\n Array.isArray(vals.__interrupt__)\n ) {\n const valueInterrupts = vals.__interrupt__;\n if (valueInterrupts.length === 0) return [{ when: \"breakpoint\" }];\n return valueInterrupts;\n }\n\n if (isLoading()) return [];\n\n const allTasks = branchContext().threadHead?.tasks ?? [];\n const allInterrupts = allTasks.flatMap((t) => t.interrupts ?? []);\n\n if (allInterrupts.length > 0) {\n return allInterrupts as Interrupt<InterruptType>[];\n }\n\n const next = branchContext().threadHead?.next ?? [];\n if (!next.length || error() != null) return [];\n return [{ when: \"breakpoint\" }];\n });\n\n const historyList = computed(() => {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `history`\",\n );\n }\n return branchContext().flatHistory;\n });\n\n const isThreadLoading = computed(\n () => history().isLoading && history().data == null,\n );\n\n const experimentalBranchTree = computed(() => {\n if (historyLimit === false) {\n throw new Error(\n \"`fetchStateHistory` must be set to `true` to use `experimental_branchTree`\",\n );\n }\n return branchContext().branchTree;\n });\n\n function getMessagesMetadata(\n message: Message,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n const streamMetadata = messageManager.get(message.id)?.metadata;\n const historyMetadata = messageMetadata().find(\n (m) => m.messageId === (message.id ?? index),\n );\n\n if (streamMetadata != null || historyMetadata != null) {\n return {\n ...historyMetadata,\n streamMetadata,\n } as MessageMetadata<StateType>;\n }\n\n return undefined;\n }\n\n return {\n assistantId: options.assistantId,\n client,\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch,\n\n messages,\n toolCalls,\n getToolCalls,\n\n interrupt,\n interrupts,\n\n history: historyList,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata,\n\n submit,\n stop,\n joinStream,\n\n queue: {\n entries: queueEntries,\n size: queueSize,\n async cancel(id: string) {\n const tid = threadId();\n const removed = pendingRuns.remove(id);\n if (removed && tid) {\n await client.runs.cancel(tid, id);\n }\n return removed;\n },\n async clear() {\n const tid = threadId();\n const removed = pendingRuns.removeAll();\n if (tid && removed.length > 0) {\n await Promise.all(\n removed.map((e) => client.runs.cancel(tid!, e.id)),\n );\n }\n },\n },\n\n switchThread(newThreadId: string | null) {\n const current = threadId() ?? null;\n if (newThreadId !== current) {\n const prevThreadId = threadId();\n threadId.set(newThreadId ?? undefined);\n stream.clear();\n\n const removed = pendingRuns.removeAll();\n if (prevThreadId && removed.length > 0) {\n void Promise.all(\n removed.map((e) => client.runs.cancel(prevThreadId, e.id)),\n );\n }\n\n if (newThreadId != null) {\n options.onThreadId?.(newThreadId);\n }\n }\n },\n\n get subagents() {\n return stream.getSubagents();\n },\n get activeSubagents() {\n return stream.getActiveSubagents();\n },\n getSubagent(toolCallId: string) {\n return stream.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return stream.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return stream.getSubagentsByMessage(messageId);\n },\n };\n}\n\nexport type {\n BaseStream,\n UseAgentStream,\n UseAgentStreamOptions,\n UseDeepAgentStream,\n UseDeepAgentStreamOptions,\n ResolveStreamInterface,\n ResolveStreamOptions,\n InferStateType,\n InferToolCalls,\n InferSubagentStates,\n InferNodeNames,\n InferBag,\n MessageMetadata,\n UseStreamOptions,\n UseStreamCustomOptions,\n UseStreamTransport,\n UseStreamThread,\n GetToolCallsType,\n AgentTypeConfigLike,\n IsAgentLike,\n ExtractAgentConfig,\n InferAgentToolCalls,\n SubagentToolCall,\n SubagentStatus,\n SubAgentLike,\n CompiledSubAgentLike,\n DeepAgentTypeConfigLike,\n IsDeepAgentLike,\n ExtractDeepAgentConfig,\n ExtractSubAgentMiddleware,\n InferDeepAgentSubagents,\n InferSubagentByName,\n InferSubagentState,\n InferSubagentNames,\n SubagentStateMap,\n DefaultSubagentStates,\n BaseSubagentState,\n QueueEntry,\n QueueInterface,\n} from \"@langchain/langgraph-sdk/ui\";\n\nexport type ToolCallWithResult<ToolCall = DefaultToolCall> =\n _ToolCallWithResult<ToolCall, CoreToolMessage, CoreAIMessage>;\nexport type {\n ToolCallState,\n DefaultToolCall,\n ToolCallFromTool,\n ToolCallsFromTools,\n} from \"@langchain/langgraph-sdk\";\n\nexport {\n SubagentManager,\n extractToolCallIdFromNamespace,\n calculateDepthFromNamespace,\n extractParentIdFromNamespace,\n isSubagentNamespace,\n} from \"@langchain/langgraph-sdk/ui\";\n"],"mappings":"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"}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as _langchain_langgraph_sdk0 from "@langchain/langgraph-sdk";
|
|
2
|
+
import { BagTemplate, Client, DefaultToolCall, DefaultToolCall as DefaultToolCall$1, Interrupt, Message, StreamEvent, StreamMode, ThreadState, ToolCallFromTool, ToolCallState, ToolCallWithResult as ToolCallWithResult$1, ToolCallsFromTools } from "@langchain/langgraph-sdk";
|
|
3
|
+
import * as _angular_core0 from "@angular/core";
|
|
4
|
+
import * as _langchain_langgraph_sdk_ui0 from "@langchain/langgraph-sdk/ui";
|
|
5
|
+
import { AgentTypeConfigLike, AnyStreamOptions, BaseStream, BaseSubagentState, CompiledSubAgentLike, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, FetchStreamTransport, GetConfigurableType, GetInterruptType, GetToolCallsType, InferAgentToolCalls, InferBag, InferBag as InferBag$1, InferDeepAgentSubagents, InferNodeNames, InferStateType, InferStateType as InferStateType$1, InferSubagentByName, InferSubagentNames, InferSubagentState, InferSubagentStates, InferToolCalls, IsAgentLike, IsDeepAgentLike, MessageMetadata, MessageMetadata as MessageMetadata$1, QueueEntry, QueueInterface, ResolveStreamInterface, ResolveStreamInterface as ResolveStreamInterface$1, ResolveStreamOptions, ResolveStreamOptions as ResolveStreamOptions$1, SubAgentLike, SubagentManager, SubagentStateMap, SubagentStatus, SubagentToolCall, SubmitOptions, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamCustomOptions as UseStreamCustomOptions$1, UseStreamOptions, UseStreamThread, UseStreamTransport, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "@langchain/langgraph-sdk/ui";
|
|
6
|
+
import { AIMessage, BaseMessage, ToolMessage } from "@langchain/core/messages";
|
|
7
|
+
|
|
8
|
+
//#region src/index.d.ts
|
|
9
|
+
type ClassToolCallWithResult<T> = T extends ToolCallWithResult$1<infer TC, unknown, unknown> ? ToolCallWithResult$1<TC, ToolMessage, AIMessage> : T;
|
|
10
|
+
type WithClassMessages<T> = Omit<T, "messages" | "getMessagesMetadata" | "toolCalls" | "getToolCalls"> & {
|
|
11
|
+
messages: BaseMessage[];
|
|
12
|
+
getMessagesMetadata: (message: BaseMessage, index?: number) => MessageMetadata$1<Record<string, unknown>> | undefined;
|
|
13
|
+
} & ("toolCalls" extends keyof T ? {
|
|
14
|
+
toolCalls: T extends {
|
|
15
|
+
toolCalls: (infer TC)[];
|
|
16
|
+
} ? ClassToolCallWithResult<TC>[] : never;
|
|
17
|
+
} : unknown) & ("getToolCalls" extends keyof T ? {
|
|
18
|
+
getToolCalls: T extends {
|
|
19
|
+
getToolCalls: (message: infer _M) => (infer TC)[];
|
|
20
|
+
} ? (message: AIMessage) => ClassToolCallWithResult<TC>[] : never;
|
|
21
|
+
} : unknown);
|
|
22
|
+
declare function useStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: ResolveStreamOptions$1<T, InferBag$1<T, Bag>>): WithClassMessages<ResolveStreamInterface$1<T, InferBag$1<T, Bag>>>;
|
|
23
|
+
declare function useStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: UseStreamCustomOptions$1<InferStateType$1<T>, InferBag$1<T, Bag>>): WithClassMessages<ResolveStreamInterface$1<T, InferBag$1<T, Bag>>>;
|
|
24
|
+
declare function useStreamLGP<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends {
|
|
25
|
+
ConfigurableType?: Record<string, unknown>;
|
|
26
|
+
InterruptType?: unknown;
|
|
27
|
+
CustomEventType?: unknown;
|
|
28
|
+
UpdateType?: unknown;
|
|
29
|
+
} = BagTemplate>(options: AnyStreamOptions<StateType, Bag>): {
|
|
30
|
+
assistantId: string;
|
|
31
|
+
client: Client<_langchain_langgraph_sdk0.DefaultValues, _langchain_langgraph_sdk0.DefaultValues, unknown>;
|
|
32
|
+
values: _angular_core0.Signal<any>;
|
|
33
|
+
error: _angular_core0.Signal<unknown>;
|
|
34
|
+
isLoading: _angular_core0.WritableSignal<boolean>;
|
|
35
|
+
branch: _angular_core0.WritableSignal<string>;
|
|
36
|
+
setBranch: (value: string) => void;
|
|
37
|
+
messages: _angular_core0.Signal<Message[]>;
|
|
38
|
+
toolCalls: _angular_core0.Signal<ToolCallWithResult$1<DefaultToolCall$1>[]>;
|
|
39
|
+
getToolCalls: (message: Message) => ToolCallWithResult$1<DefaultToolCall$1>[];
|
|
40
|
+
interrupt: _angular_core0.Signal<Interrupt<GetInterruptType<Bag>> | undefined>;
|
|
41
|
+
interrupts: _angular_core0.Signal<Interrupt<GetInterruptType<Bag>>[]>;
|
|
42
|
+
history: _angular_core0.Signal<ThreadState<any>[]>;
|
|
43
|
+
isThreadLoading: _angular_core0.Signal<boolean>;
|
|
44
|
+
experimental_branchTree: _angular_core0.Signal<_langchain_langgraph_sdk_ui0.Sequence<any>>;
|
|
45
|
+
getMessagesMetadata: (message: Message, index?: number | undefined) => MessageMetadata$1<StateType> | undefined;
|
|
46
|
+
submit: (values: StateType, submitOptions?: SubmitOptions<StateType, GetConfigurableType<Bag>> | undefined) => Promise<void>;
|
|
47
|
+
stop: () => Promise<void>;
|
|
48
|
+
joinStream: (runId: string, lastEventId?: string | undefined, joinOptions?: {
|
|
49
|
+
streamMode?: StreamMode[] | StreamMode | undefined;
|
|
50
|
+
filter?: ((event: {
|
|
51
|
+
id?: string | undefined;
|
|
52
|
+
event: StreamEvent;
|
|
53
|
+
data: unknown;
|
|
54
|
+
}) => boolean) | undefined;
|
|
55
|
+
} | undefined) => Promise<void>;
|
|
56
|
+
queue: {
|
|
57
|
+
entries: _angular_core0.WritableSignal<readonly _langchain_langgraph_sdk_ui0.QueueEntry<StateType, SubmitOptions<StateType, GetConfigurableType<Bag>>>[]>;
|
|
58
|
+
size: _angular_core0.WritableSignal<number>;
|
|
59
|
+
cancel(id: string): Promise<boolean>;
|
|
60
|
+
clear(): Promise<void>;
|
|
61
|
+
};
|
|
62
|
+
switchThread(newThreadId: string | null): void;
|
|
63
|
+
readonly subagents: Map<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, DefaultToolCall$1, string>>;
|
|
64
|
+
readonly activeSubagents: _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, DefaultToolCall$1, string>[];
|
|
65
|
+
getSubagent(toolCallId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, DefaultToolCall$1, string> | undefined;
|
|
66
|
+
getSubagentsByType(type: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, DefaultToolCall$1, string>[];
|
|
67
|
+
getSubagentsByMessage(messageId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, DefaultToolCall$1, string>[];
|
|
68
|
+
};
|
|
69
|
+
type ToolCallWithResult<ToolCall = DefaultToolCall$1> = ToolCallWithResult$1<ToolCall, ToolMessage, AIMessage>;
|
|
70
|
+
//#endregion
|
|
71
|
+
export { type AgentTypeConfigLike, type BaseStream, type BaseSubagentState, type CompiledSubAgentLike, type DeepAgentTypeConfigLike, type DefaultSubagentStates, type DefaultToolCall, type ExtractAgentConfig, type ExtractDeepAgentConfig, type ExtractSubAgentMiddleware, FetchStreamTransport, type GetToolCallsType, type InferAgentToolCalls, type InferBag, type InferDeepAgentSubagents, type InferNodeNames, type InferStateType, type InferSubagentByName, type InferSubagentNames, type InferSubagentState, type InferSubagentStates, type InferToolCalls, type IsAgentLike, type IsDeepAgentLike, type MessageMetadata, type QueueEntry, type QueueInterface, type ResolveStreamInterface, type ResolveStreamOptions, type SubAgentLike, SubagentManager, type SubagentStateMap, type SubagentStatus, type SubagentToolCall, type ToolCallFromTool, type ToolCallState, ToolCallWithResult, type ToolCallsFromTools, type UseAgentStream, type UseAgentStreamOptions, type UseDeepAgentStream, type UseDeepAgentStreamOptions, type UseStreamCustomOptions, type UseStreamOptions, type UseStreamThread, type UseStreamTransport, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace, useStream, useStreamLGP };
|
|
72
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;;;;KAiDK,uBAAA,MACH,CAAA,SAAU,oBAAA,+BACN,oBAAA,CAAoB,EAAA,EAAI,WAAA,EAAiB,SAAA,IACzC,CAAA;AAAA,KAED,iBAAA,MAAuB,IAAA,CAC1B,CAAA;EAGA,QAAA,EAAU,WAAA;EACV,mBAAA,GACE,OAAA,EAAS,WAAA,EACT,KAAA,cACG,iBAAA,CAAgB,MAAA;AAAA,+BACQ,CAAA;EAEvB,SAAA,EAAW,CAAA;IAAY,SAAA;EAAA,IACnB,uBAAA,CAAwB,EAAA;AAAA,6CAIJ,CAAA;EAExB,YAAA,EAAc,CAAA;IACZ,YAAA,GAAe,OAAA;EAAA,KAEZ,OAAA,EAAS,SAAA,KAAkB,uBAAA,CAAwB,EAAA;AAAA;AAAA,iBAqBhD,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EAAS,sBAAA,CAAqB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA,KAC5C,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;AAAA,iBAE3C,SAAA,KACV,MAAA,+BACQ,WAAA,GAAc,WAAA,CAAA,CAE1B,OAAA,EAAS,wBAAA,CAAuB,gBAAA,CAAe,CAAA,GAAI,UAAA,CAAS,CAAA,EAAG,GAAA,KAC9D,iBAAA,CAAkB,wBAAA,CAAuB,CAAA,EAAG,UAAA,CAAS,CAAA,EAAG,GAAA;AAAA,iBAmB3C,YAAA,mBACI,MAAA,oBAA0B,MAAA;EAE1C,gBAAA,GAAmB,MAAA;EACnB,aAAA;EACA,eAAA;EACA,UAAA;AAAA,IACE,WAAA,CAAA,CACJ,OAAA,EAAS,gBAAA,CAAiB,SAAA,EAAW,GAAA;;iBAAZ,yBAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsqBf,kBAAA,YAA8B,iBAAA,IACxC,oBAAA,CAAoB,QAAA,EAAU,WAAA,EAAiB,SAAA"}
|