@langchain/angular 0.2.0 → 0.3.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/README.md +17 -15
- package/dist/context.cjs +6 -52
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +55 -71
- package/dist/context.d.cts.map +1 -1
- package/dist/context.d.ts +51 -67
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +7 -52
- package/dist/context.js.map +1 -1
- package/dist/index.cjs +26 -462
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +255 -104
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +254 -103
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -463
- package/dist/index.js.map +1 -1
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/index.d.cts +2 -2
- package/dist/node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/index.d.ts +2 -2
- package/dist/stream-service-instance.d.cts +70 -0
- package/dist/stream-service-instance.d.cts.map +1 -0
- package/dist/stream-service-instance.d.ts +70 -0
- package/dist/stream-service-instance.d.ts.map +1 -0
- package/dist/stream.custom.cjs +59 -161
- package/dist/stream.custom.cjs.map +1 -1
- package/dist/stream.custom.d.cts +45 -0
- package/dist/stream.custom.d.cts.map +1 -0
- package/dist/stream.custom.d.ts +45 -0
- package/dist/stream.custom.d.ts.map +1 -0
- package/dist/stream.custom.js +60 -163
- package/dist/stream.custom.js.map +1 -1
- package/dist/stream.lgp.cjs +163 -0
- package/dist/stream.lgp.cjs.map +1 -0
- package/dist/stream.lgp.d.cts +57 -0
- package/dist/stream.lgp.d.cts.map +1 -0
- package/dist/stream.lgp.d.ts +57 -0
- package/dist/stream.lgp.d.ts.map +1 -0
- package/dist/stream.lgp.js +163 -0
- package/dist/stream.lgp.js.map +1 -0
- package/package.json +3 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { BaseMessage as BaseMessage$1 } from "@langchain/core/messages";
|
|
2
|
-
export { BaseMessage$1 as BaseMessage };
|
|
1
|
+
import { BaseMessage as BaseMessage$1, BaseMessageChunk } from "@langchain/core/messages";
|
|
2
|
+
export { BaseMessage$1 as BaseMessage, BaseMessageChunk };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { BaseMessage as BaseMessage$1 } from "@langchain/core/messages";
|
|
2
|
-
export { BaseMessage$1 as BaseMessage };
|
|
1
|
+
import { BaseMessage as BaseMessage$1, BaseMessageChunk } from "@langchain/core/messages";
|
|
2
|
+
export { BaseMessage$1 as BaseMessage, BaseMessageChunk };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Signal, WritableSignal } from "@angular/core";
|
|
2
|
+
import { BaseMessage } from "@langchain/core/messages";
|
|
3
|
+
import { AcceptBaseMessages, GetConfigurableType, GetInterruptType, MessageMetadata, SubagentStreamInterface, SubmitOptions } from "@langchain/langgraph-sdk/ui";
|
|
4
|
+
import { BagTemplate, Client, DefaultToolCall, Interrupt, Message, StreamEvent, StreamMode, ToolCallWithResult } from "@langchain/langgraph-sdk";
|
|
5
|
+
|
|
6
|
+
//#region src/stream-service-instance.d.ts
|
|
7
|
+
type AngularQueueInterface<T> = T extends {
|
|
8
|
+
entries: infer E;
|
|
9
|
+
size: infer S;
|
|
10
|
+
cancel: infer C;
|
|
11
|
+
clear: infer Cl;
|
|
12
|
+
} ? {
|
|
13
|
+
entries: WritableSignal<E>;
|
|
14
|
+
size: WritableSignal<S>;
|
|
15
|
+
cancel: C;
|
|
16
|
+
clear: Cl;
|
|
17
|
+
} : T;
|
|
18
|
+
/**
|
|
19
|
+
* Shape returned by {@link useStreamLGP} / {@link injectStreamCustom} after the
|
|
20
|
+
* Angular signal wrapper — the runtime API surface for {@link StreamService}.
|
|
21
|
+
*
|
|
22
|
+
* Uses the same message/tool/subagent types as the underlying SDK stream
|
|
23
|
+
* implementations so the object can be assigned without `as unknown`.
|
|
24
|
+
*/
|
|
25
|
+
interface StreamServiceInstance<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate> {
|
|
26
|
+
values: Signal<T>;
|
|
27
|
+
messages: Signal<BaseMessage[]>;
|
|
28
|
+
isLoading: WritableSignal<boolean>;
|
|
29
|
+
error: Signal<unknown>;
|
|
30
|
+
branch: WritableSignal<string>;
|
|
31
|
+
interrupt: Signal<Interrupt<GetInterruptType<Bag>> | undefined>;
|
|
32
|
+
interrupts: Signal<Interrupt<GetInterruptType<Bag>>[]>;
|
|
33
|
+
toolCalls: Signal<ToolCallWithResult<DefaultToolCall>[]>;
|
|
34
|
+
queue: AngularQueueInterface<{
|
|
35
|
+
entries: readonly {
|
|
36
|
+
id: string;
|
|
37
|
+
values: Partial<T> | null | undefined;
|
|
38
|
+
}[];
|
|
39
|
+
size: number;
|
|
40
|
+
cancel: (id: string) => Promise<boolean>;
|
|
41
|
+
clear: () => Promise<void>;
|
|
42
|
+
}>;
|
|
43
|
+
subagents: Signal<ReadonlyMap<string, SubagentStreamInterface>>;
|
|
44
|
+
activeSubagents: Signal<readonly SubagentStreamInterface[]>;
|
|
45
|
+
history: Signal<unknown>;
|
|
46
|
+
isThreadLoading: Signal<boolean>;
|
|
47
|
+
experimental_branchTree: Signal<unknown>;
|
|
48
|
+
client: Client;
|
|
49
|
+
assistantId: string;
|
|
50
|
+
submit(values: AcceptBaseMessages<Exclude<T, null | undefined>> | null | undefined, options?: SubmitOptions<T extends Record<string, unknown> ? T : Record<string, unknown>, GetConfigurableType<Bag>>): Promise<void>;
|
|
51
|
+
stop(): Promise<void>;
|
|
52
|
+
setBranch(value: string): void;
|
|
53
|
+
switchThread(newThreadId: string | null): void;
|
|
54
|
+
joinStream(runId: string, lastEventId?: string, options?: {
|
|
55
|
+
streamMode?: StreamMode | StreamMode[];
|
|
56
|
+
filter?: (event: {
|
|
57
|
+
id?: string;
|
|
58
|
+
event: StreamEvent;
|
|
59
|
+
data: unknown;
|
|
60
|
+
}) => boolean;
|
|
61
|
+
}): Promise<void>;
|
|
62
|
+
getMessagesMetadata(message: Message, index?: number): MessageMetadata<T extends Record<string, unknown> ? T : Record<string, unknown>> | undefined;
|
|
63
|
+
getToolCalls(message: Message): ToolCallWithResult<DefaultToolCall>[];
|
|
64
|
+
getSubagent(toolCallId: string): SubagentStreamInterface | undefined;
|
|
65
|
+
getSubagentsByType(type: string): SubagentStreamInterface[];
|
|
66
|
+
getSubagentsByMessage(messageId: string): SubagentStreamInterface[];
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { StreamServiceInstance };
|
|
70
|
+
//# sourceMappingURL=stream-service-instance.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-service-instance.d.cts","names":[],"sources":["../src/stream-service-instance.ts"],"mappings":";;;;;;KAqBK,qBAAA,MAA2B,CAAA;EAC9B,OAAA;EACA,IAAA;EACA,MAAA;EACA,KAAA;AAAA;EAGI,OAAA,EAAS,cAAA,CAAe,CAAA;EACxB,IAAA,EAAM,cAAA,CAAe,CAAA;EACrB,MAAA,EAAQ,CAAA;EACR,KAAA,EAAO,EAAA;AAAA,IAET,CAAA;;;;;;;;UASa,qBAAA,KACX,MAAA,+BACQ,WAAA,GAAc,WAAA;EAE1B,MAAA,EAAQ,MAAA,CAAO,CAAA;EACf,QAAA,EAAU,MAAA,CAAO,WAAA;EACjB,SAAA,EAAW,cAAA;EACX,KAAA,EAAO,MAAA;EACP,MAAA,EAAQ,cAAA;EACR,SAAA,EAAW,MAAA,CAAO,SAAA,CAAU,gBAAA,CAAiB,GAAA;EAC7C,UAAA,EAAY,MAAA,CAAO,SAAA,CAAU,gBAAA,CAAiB,GAAA;EAC9C,SAAA,EAAW,MAAA,CAAO,kBAAA,CAAmB,eAAA;EACrC,KAAA,EAAO,qBAAA;IACL,OAAA;MACE,EAAA;MACA,MAAA,EAAQ,OAAA,CAAQ,CAAA;IAAA;IAElB,IAAA;IACA,MAAA,GAAS,EAAA,aAAe,OAAA;IACxB,KAAA,QAAa,OAAA;EAAA;EAEf,SAAA,EAAW,MAAA,CAAO,WAAA,SAAoB,uBAAA;EACtC,eAAA,EAAiB,MAAA,UAAgB,uBAAA;EACjC,OAAA,EAAS,MAAA;EACT,eAAA,EAAiB,MAAA;EACjB,uBAAA,EAAyB,MAAA;EACzB,MAAA,EAAQ,MAAA;EACR,WAAA;EACA,MAAA,CACE,MAAA,EAAQ,kBAAA,CAAmB,OAAA,CAAQ,CAAA,yCACnC,OAAA,GAAU,aAAA,CACR,CAAA,SAAU,MAAA,oBAA0B,CAAA,GAAI,MAAA,mBACxC,mBAAA,CAAoB,GAAA,KAErB,OAAA;EACH,IAAA,IAAQ,OAAA;EACR,SAAA,CAAU,KAAA;EACV,YAAA,CAAa,WAAA;EACb,UAAA,CACE,KAAA,UACA,WAAA,WACA,OAAA;IACE,UAAA,GAAa,UAAA,GAAa,UAAA;IAC1B,MAAA,IAAU,KAAA;MACR,EAAA;MACA,KAAA,EAAO,WAAA;MACP,IAAA;IAAA;EAAA,IAGH,OAAA;EACH,mBAAA,CACE,OAAA,EAAS,OAAA,EACT,KAAA,YAEE,eAAA,CACE,CAAA,SAAU,MAAA,oBAA0B,CAAA,GAAI,MAAA;EAG9C,YAAA,CAAa,OAAA,EAAS,OAAA,GAAU,kBAAA,CAAmB,eAAA;EACnD,WAAA,CAAY,UAAA,WAAqB,uBAAA;EACjC,kBAAA,CAAmB,IAAA,WAAe,uBAAA;EAClC,qBAAA,CAAsB,SAAA,WAAoB,uBAAA;AAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Signal, WritableSignal } from "@angular/core";
|
|
2
|
+
import { AcceptBaseMessages, GetConfigurableType, GetInterruptType, MessageMetadata, SubagentStreamInterface, SubmitOptions } from "@langchain/langgraph-sdk/ui";
|
|
3
|
+
import { BagTemplate, Client, DefaultToolCall, Interrupt, Message, StreamEvent, StreamMode, ToolCallWithResult } from "@langchain/langgraph-sdk";
|
|
4
|
+
import { BaseMessage } from "@langchain/core/messages";
|
|
5
|
+
|
|
6
|
+
//#region src/stream-service-instance.d.ts
|
|
7
|
+
type AngularQueueInterface<T> = T extends {
|
|
8
|
+
entries: infer E;
|
|
9
|
+
size: infer S;
|
|
10
|
+
cancel: infer C;
|
|
11
|
+
clear: infer Cl;
|
|
12
|
+
} ? {
|
|
13
|
+
entries: WritableSignal<E>;
|
|
14
|
+
size: WritableSignal<S>;
|
|
15
|
+
cancel: C;
|
|
16
|
+
clear: Cl;
|
|
17
|
+
} : T;
|
|
18
|
+
/**
|
|
19
|
+
* Shape returned by {@link useStreamLGP} / {@link injectStreamCustom} after the
|
|
20
|
+
* Angular signal wrapper — the runtime API surface for {@link StreamService}.
|
|
21
|
+
*
|
|
22
|
+
* Uses the same message/tool/subagent types as the underlying SDK stream
|
|
23
|
+
* implementations so the object can be assigned without `as unknown`.
|
|
24
|
+
*/
|
|
25
|
+
interface StreamServiceInstance<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate> {
|
|
26
|
+
values: Signal<T>;
|
|
27
|
+
messages: Signal<BaseMessage[]>;
|
|
28
|
+
isLoading: WritableSignal<boolean>;
|
|
29
|
+
error: Signal<unknown>;
|
|
30
|
+
branch: WritableSignal<string>;
|
|
31
|
+
interrupt: Signal<Interrupt<GetInterruptType<Bag>> | undefined>;
|
|
32
|
+
interrupts: Signal<Interrupt<GetInterruptType<Bag>>[]>;
|
|
33
|
+
toolCalls: Signal<ToolCallWithResult<DefaultToolCall>[]>;
|
|
34
|
+
queue: AngularQueueInterface<{
|
|
35
|
+
entries: readonly {
|
|
36
|
+
id: string;
|
|
37
|
+
values: Partial<T> | null | undefined;
|
|
38
|
+
}[];
|
|
39
|
+
size: number;
|
|
40
|
+
cancel: (id: string) => Promise<boolean>;
|
|
41
|
+
clear: () => Promise<void>;
|
|
42
|
+
}>;
|
|
43
|
+
subagents: Signal<ReadonlyMap<string, SubagentStreamInterface>>;
|
|
44
|
+
activeSubagents: Signal<readonly SubagentStreamInterface[]>;
|
|
45
|
+
history: Signal<unknown>;
|
|
46
|
+
isThreadLoading: Signal<boolean>;
|
|
47
|
+
experimental_branchTree: Signal<unknown>;
|
|
48
|
+
client: Client;
|
|
49
|
+
assistantId: string;
|
|
50
|
+
submit(values: AcceptBaseMessages<Exclude<T, null | undefined>> | null | undefined, options?: SubmitOptions<T extends Record<string, unknown> ? T : Record<string, unknown>, GetConfigurableType<Bag>>): Promise<void>;
|
|
51
|
+
stop(): Promise<void>;
|
|
52
|
+
setBranch(value: string): void;
|
|
53
|
+
switchThread(newThreadId: string | null): void;
|
|
54
|
+
joinStream(runId: string, lastEventId?: string, options?: {
|
|
55
|
+
streamMode?: StreamMode | StreamMode[];
|
|
56
|
+
filter?: (event: {
|
|
57
|
+
id?: string;
|
|
58
|
+
event: StreamEvent;
|
|
59
|
+
data: unknown;
|
|
60
|
+
}) => boolean;
|
|
61
|
+
}): Promise<void>;
|
|
62
|
+
getMessagesMetadata(message: Message, index?: number): MessageMetadata<T extends Record<string, unknown> ? T : Record<string, unknown>> | undefined;
|
|
63
|
+
getToolCalls(message: Message): ToolCallWithResult<DefaultToolCall>[];
|
|
64
|
+
getSubagent(toolCallId: string): SubagentStreamInterface | undefined;
|
|
65
|
+
getSubagentsByType(type: string): SubagentStreamInterface[];
|
|
66
|
+
getSubagentsByMessage(messageId: string): SubagentStreamInterface[];
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { StreamServiceInstance };
|
|
70
|
+
//# sourceMappingURL=stream-service-instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-service-instance.d.ts","names":[],"sources":["../src/stream-service-instance.ts"],"mappings":";;;;;;KAqBK,qBAAA,MAA2B,CAAA;EAC9B,OAAA;EACA,IAAA;EACA,MAAA;EACA,KAAA;AAAA;EAGI,OAAA,EAAS,cAAA,CAAe,CAAA;EACxB,IAAA,EAAM,cAAA,CAAe,CAAA;EACrB,MAAA,EAAQ,CAAA;EACR,KAAA,EAAO,EAAA;AAAA,IAET,CAAA;;;;;;;;UASa,qBAAA,KACX,MAAA,+BACQ,WAAA,GAAc,WAAA;EAE1B,MAAA,EAAQ,MAAA,CAAO,CAAA;EACf,QAAA,EAAU,MAAA,CAAO,WAAA;EACjB,SAAA,EAAW,cAAA;EACX,KAAA,EAAO,MAAA;EACP,MAAA,EAAQ,cAAA;EACR,SAAA,EAAW,MAAA,CAAO,SAAA,CAAU,gBAAA,CAAiB,GAAA;EAC7C,UAAA,EAAY,MAAA,CAAO,SAAA,CAAU,gBAAA,CAAiB,GAAA;EAC9C,SAAA,EAAW,MAAA,CAAO,kBAAA,CAAmB,eAAA;EACrC,KAAA,EAAO,qBAAA;IACL,OAAA;MACE,EAAA;MACA,MAAA,EAAQ,OAAA,CAAQ,CAAA;IAAA;IAElB,IAAA;IACA,MAAA,GAAS,EAAA,aAAe,OAAA;IACxB,KAAA,QAAa,OAAA;EAAA;EAEf,SAAA,EAAW,MAAA,CAAO,WAAA,SAAoB,uBAAA;EACtC,eAAA,EAAiB,MAAA,UAAgB,uBAAA;EACjC,OAAA,EAAS,MAAA;EACT,eAAA,EAAiB,MAAA;EACjB,uBAAA,EAAyB,MAAA;EACzB,MAAA,EAAQ,MAAA;EACR,WAAA;EACA,MAAA,CACE,MAAA,EAAQ,kBAAA,CAAmB,OAAA,CAAQ,CAAA,yCACnC,OAAA,GAAU,aAAA,CACR,CAAA,SAAU,MAAA,oBAA0B,CAAA,GAAI,MAAA,mBACxC,mBAAA,CAAoB,GAAA,KAErB,OAAA;EACH,IAAA,IAAQ,OAAA;EACR,SAAA,CAAU,KAAA;EACV,YAAA,CAAa,WAAA;EACb,UAAA,CACE,KAAA,UACA,WAAA,WACA,OAAA;IACE,UAAA,GAAa,UAAA,GAAa,UAAA;IAC1B,MAAA,IAAU,KAAA;MACR,EAAA;MACA,KAAA,EAAO,WAAA;MACP,IAAA;IAAA;EAAA,IAGH,OAAA;EACH,mBAAA,CACE,OAAA,EAAS,OAAA,EACT,KAAA,YAEE,eAAA,CACE,CAAA,SAAU,MAAA,oBAA0B,CAAA,GAAI,MAAA;EAG9C,YAAA,CAAa,OAAA,EAAS,OAAA,GAAU,kBAAA,CAAmB,eAAA;EACnD,WAAA,CAAY,UAAA,WAAqB,uBAAA;EACjC,kBAAA,CAAmB,IAAA,WAAe,uBAAA;EAClC,qBAAA,CAAsB,SAAA,WAAoB,uBAAA;AAAA"}
|
package/dist/stream.custom.cjs
CHANGED
|
@@ -1,153 +1,52 @@
|
|
|
1
1
|
let _angular_core = require("@angular/core");
|
|
2
2
|
let _langchain_langgraph_sdk_ui = require("@langchain/langgraph-sdk/ui");
|
|
3
|
-
let _langchain_langgraph_sdk_utils = require("@langchain/langgraph-sdk/utils");
|
|
4
3
|
//#region src/stream.custom.ts
|
|
5
|
-
function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
next: [],
|
|
9
|
-
tasks: [],
|
|
10
|
-
metadata: void 0,
|
|
11
|
-
created_at: null,
|
|
12
|
-
checkpoint: {
|
|
13
|
-
thread_id: threadId,
|
|
14
|
-
checkpoint_id: null,
|
|
15
|
-
checkpoint_ns: "",
|
|
16
|
-
checkpoint_map: null
|
|
17
|
-
},
|
|
18
|
-
parent_checkpoint: null
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
function useStreamCustom(options) {
|
|
22
|
-
const messageManager = new _langchain_langgraph_sdk_ui.MessageTupleManager();
|
|
23
|
-
const stream = new _langchain_langgraph_sdk_ui.StreamManager(messageManager, {
|
|
24
|
-
throttle: options.throttle ?? false,
|
|
25
|
-
subagentToolNames: options.subagentToolNames,
|
|
26
|
-
filterSubagentMessages: options.filterSubagentMessages,
|
|
27
|
-
toMessage: _langchain_langgraph_sdk_ui.toMessageClass
|
|
28
|
-
});
|
|
29
|
-
const streamValues = (0, _angular_core.signal)(stream.values);
|
|
30
|
-
const streamError = (0, _angular_core.signal)(stream.error);
|
|
31
|
-
const isLoading = (0, _angular_core.signal)(stream.isLoading);
|
|
4
|
+
function injectStreamCustom(options) {
|
|
5
|
+
const orchestrator = new _langchain_langgraph_sdk_ui.CustomStreamOrchestrator(options);
|
|
6
|
+
const version = (0, _angular_core.signal)(0);
|
|
32
7
|
const subagentVersion = (0, _angular_core.signal)(0);
|
|
8
|
+
const isLoading = (0, _angular_core.signal)(orchestrator.isLoading);
|
|
33
9
|
(0, _angular_core.effect)((onCleanup) => {
|
|
34
|
-
const unsubscribe =
|
|
35
|
-
|
|
36
|
-
streamError.set(stream.error);
|
|
37
|
-
isLoading.set(stream.isLoading);
|
|
10
|
+
const unsubscribe = orchestrator.subscribe(() => {
|
|
11
|
+
version.update((v) => v + 1);
|
|
38
12
|
subagentVersion.update((v) => v + 1);
|
|
13
|
+
isLoading.set(orchestrator.isLoading);
|
|
39
14
|
});
|
|
40
15
|
onCleanup(() => unsubscribe());
|
|
41
16
|
});
|
|
42
|
-
let threadId = options.threadId ?? null;
|
|
43
|
-
const branch = (0, _angular_core.signal)("");
|
|
44
|
-
const getMessages = (value) => {
|
|
45
|
-
const messagesKey = options.messagesKey ?? "messages";
|
|
46
|
-
return Array.isArray(value[messagesKey]) ? value[messagesKey] : [];
|
|
47
|
-
};
|
|
48
|
-
const setMessages = (current, messages) => {
|
|
49
|
-
const messagesKey = options.messagesKey ?? "messages";
|
|
50
|
-
return {
|
|
51
|
-
...current,
|
|
52
|
-
[messagesKey]: messages
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
const historyValues = options.initialValues ?? {};
|
|
56
|
-
const historyMessages = getMessages(historyValues);
|
|
57
|
-
const shouldReconstructSubagents = options.filterSubagentMessages && !stream.isLoading && historyMessages.length > 0;
|
|
58
17
|
(0, _angular_core.effect)(() => {
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
18
|
+
version();
|
|
19
|
+
const loading = orchestrator.isLoading;
|
|
20
|
+
const hvMessages = orchestrator.messages;
|
|
21
|
+
if (options.filterSubagentMessages && !loading && hvMessages.length > 0) orchestrator.reconstructSubagentsIfNeeded();
|
|
62
22
|
});
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
function stop() {
|
|
71
|
-
return stream.stop(historyValues, { onStop: options.onStop });
|
|
72
|
-
}
|
|
73
|
-
async function submitDirect(values, submitOptions) {
|
|
74
|
-
const currentThreadId = options.threadId ?? null;
|
|
75
|
-
if (currentThreadId !== threadId) {
|
|
76
|
-
threadId = currentThreadId;
|
|
77
|
-
stream.clear();
|
|
78
|
-
}
|
|
79
|
-
let usableThreadId = threadId ?? submitOptions?.threadId;
|
|
80
|
-
stream.setStreamValues(() => {
|
|
81
|
-
if (submitOptions?.optimisticValues != null) return {
|
|
82
|
-
...historyValues,
|
|
83
|
-
...typeof submitOptions.optimisticValues === "function" ? submitOptions.optimisticValues(historyValues) : submitOptions.optimisticValues
|
|
84
|
-
};
|
|
85
|
-
return { ...historyValues };
|
|
86
|
-
});
|
|
87
|
-
await stream.start(async (signal) => {
|
|
88
|
-
if (!usableThreadId) {
|
|
89
|
-
usableThreadId = crypto.randomUUID();
|
|
90
|
-
threadId = usableThreadId;
|
|
91
|
-
options.onThreadId?.(usableThreadId);
|
|
92
|
-
}
|
|
93
|
-
if (!usableThreadId) throw new Error("Failed to obtain valid thread ID.");
|
|
94
|
-
return options.transport.stream({
|
|
95
|
-
input: values,
|
|
96
|
-
context: submitOptions?.context,
|
|
97
|
-
command: submitOptions?.command,
|
|
98
|
-
streamSubgraphs: submitOptions?.streamSubgraphs,
|
|
99
|
-
signal,
|
|
100
|
-
config: {
|
|
101
|
-
...submitOptions?.config,
|
|
102
|
-
configurable: {
|
|
103
|
-
thread_id: usableThreadId,
|
|
104
|
-
...submitOptions?.config?.configurable
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}, {
|
|
109
|
-
getMessages,
|
|
110
|
-
setMessages,
|
|
111
|
-
initialValues: {},
|
|
112
|
-
callbacks: options,
|
|
113
|
-
onSuccess: () => {
|
|
114
|
-
if (!usableThreadId) return void 0;
|
|
115
|
-
const finalValues = stream.values ?? historyValues;
|
|
116
|
-
options.onFinish?.(createCustomTransportThreadState(finalValues, usableThreadId), void 0);
|
|
117
|
-
},
|
|
118
|
-
onError(error) {
|
|
119
|
-
options.onError?.(error, void 0);
|
|
120
|
-
submitOptions?.onError?.(error, void 0);
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
async function submit(values, submitOptions) {
|
|
125
|
-
await submitDirect(values, submitOptions);
|
|
126
|
-
}
|
|
127
|
-
const values = (0, _angular_core.computed)(() => streamValues() ?? {});
|
|
128
|
-
function setBranch(value) {
|
|
129
|
-
branch.set(value);
|
|
130
|
-
}
|
|
131
|
-
function getMessagesMetadata(message, index) {
|
|
132
|
-
const streamMetadata = messageManager.get(message.id)?.metadata;
|
|
133
|
-
if (streamMetadata != null) return {
|
|
134
|
-
messageId: message.id ?? String(index),
|
|
135
|
-
firstSeenState: void 0,
|
|
136
|
-
branch: void 0,
|
|
137
|
-
branchOptions: void 0,
|
|
138
|
-
streamMetadata
|
|
139
|
-
};
|
|
140
|
-
}
|
|
23
|
+
const values = (0, _angular_core.computed)(() => {
|
|
24
|
+
version();
|
|
25
|
+
return orchestrator.values;
|
|
26
|
+
});
|
|
27
|
+
const branch = (0, _angular_core.signal)("");
|
|
141
28
|
return {
|
|
142
29
|
values,
|
|
143
|
-
error:
|
|
30
|
+
error: (0, _angular_core.computed)(() => {
|
|
31
|
+
version();
|
|
32
|
+
return orchestrator.error;
|
|
33
|
+
}),
|
|
144
34
|
isLoading,
|
|
145
|
-
stop,
|
|
146
|
-
submit,
|
|
147
|
-
|
|
35
|
+
stop: () => orchestrator.stop(),
|
|
36
|
+
async submit(values, submitOptions) {
|
|
37
|
+
await orchestrator.submit(values, submitOptions);
|
|
38
|
+
},
|
|
39
|
+
switchThread(newThreadId) {
|
|
40
|
+
orchestrator.switchThread(newThreadId);
|
|
41
|
+
},
|
|
148
42
|
branch,
|
|
149
|
-
setBranch
|
|
150
|
-
|
|
43
|
+
setBranch(value) {
|
|
44
|
+
branch.set(value);
|
|
45
|
+
orchestrator.setBranch(value);
|
|
46
|
+
},
|
|
47
|
+
getMessagesMetadata(message, index) {
|
|
48
|
+
return orchestrator.getMessagesMetadata(message, index);
|
|
49
|
+
},
|
|
151
50
|
queue: {
|
|
152
51
|
entries: (0, _angular_core.signal)([]),
|
|
153
52
|
size: (0, _angular_core.signal)(0),
|
|
@@ -157,52 +56,51 @@ function useStreamCustom(options) {
|
|
|
157
56
|
async clear() {}
|
|
158
57
|
},
|
|
159
58
|
interrupts: (0, _angular_core.computed)(() => {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const valueInterrupts = vals.__interrupt__;
|
|
163
|
-
if (valueInterrupts.length === 0) return [{ when: "breakpoint" }];
|
|
164
|
-
return valueInterrupts;
|
|
165
|
-
}
|
|
166
|
-
return [];
|
|
59
|
+
version();
|
|
60
|
+
return orchestrator.interrupts;
|
|
167
61
|
}),
|
|
168
62
|
interrupt: (0, _angular_core.computed)(() => {
|
|
169
|
-
|
|
63
|
+
version();
|
|
64
|
+
return orchestrator.interrupt;
|
|
170
65
|
}),
|
|
171
66
|
messages: (0, _angular_core.computed)(() => {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
return (0, _langchain_langgraph_sdk_ui.ensureMessageInstances)(getMessages(vals));
|
|
67
|
+
version();
|
|
68
|
+
return (0, _langchain_langgraph_sdk_ui.ensureMessageInstances)(orchestrator.messages);
|
|
175
69
|
}),
|
|
176
70
|
toolCalls: (0, _angular_core.computed)(() => {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
return (0, _langchain_langgraph_sdk_utils.getToolCallsWithResults)(getMessages(vals));
|
|
71
|
+
version();
|
|
72
|
+
return orchestrator.toolCalls;
|
|
180
73
|
}),
|
|
181
74
|
getToolCalls(message) {
|
|
182
|
-
|
|
183
|
-
if (!vals) return [];
|
|
184
|
-
return (0, _langchain_langgraph_sdk_utils.getToolCallsWithResults)(getMessages(vals)).filter((tc) => tc.aiMessage.id === message.id);
|
|
75
|
+
return orchestrator.getToolCalls(message);
|
|
185
76
|
},
|
|
186
|
-
|
|
77
|
+
subagents: (0, _angular_core.computed)(() => {
|
|
187
78
|
subagentVersion();
|
|
188
|
-
return
|
|
189
|
-
},
|
|
190
|
-
|
|
79
|
+
return orchestrator.subagents;
|
|
80
|
+
}),
|
|
81
|
+
activeSubagents: (0, _angular_core.computed)(() => {
|
|
191
82
|
subagentVersion();
|
|
192
|
-
return
|
|
193
|
-
},
|
|
83
|
+
return orchestrator.activeSubagents;
|
|
84
|
+
}),
|
|
194
85
|
getSubagent(toolCallId) {
|
|
195
|
-
return
|
|
86
|
+
return orchestrator.getSubagent(toolCallId);
|
|
196
87
|
},
|
|
197
88
|
getSubagentsByType(type) {
|
|
198
|
-
return
|
|
89
|
+
return orchestrator.getSubagentsByType(type);
|
|
199
90
|
},
|
|
200
91
|
getSubagentsByMessage(messageId) {
|
|
201
|
-
return
|
|
92
|
+
return orchestrator.getSubagentsByMessage(messageId);
|
|
202
93
|
}
|
|
203
94
|
};
|
|
204
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* @deprecated Use `injectStreamCustom` instead. `useStreamCustom` will be
|
|
98
|
+
* removed in a future major version. `injectStreamCustom` follows Angular's
|
|
99
|
+
* `inject*` naming convention for injection-based patterns.
|
|
100
|
+
*/
|
|
101
|
+
const useStreamCustom = injectStreamCustom;
|
|
205
102
|
//#endregion
|
|
103
|
+
exports.injectStreamCustom = injectStreamCustom;
|
|
206
104
|
exports.useStreamCustom = useStreamCustom;
|
|
207
105
|
|
|
208
106
|
//# sourceMappingURL=stream.custom.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.custom.cjs","names":["MessageTupleManager","StreamManager","toMessageClass"],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n StreamManager,\n MessageTupleManager,\n extractInterrupts,\n toMessageClass,\n ensureMessageInstances,\n type EventStreamEvent,\n type GetUpdateType,\n type GetCustomEventType,\n type GetInterruptType,\n type GetConfigurableType,\n type GetToolCallsType,\n type AnyStreamCustomOptions,\n type CustomSubmitOptions,\n type MessageMetadata,\n} from \"@langchain/langgraph-sdk/ui\";\nimport { getToolCallsWithResults } from \"@langchain/langgraph-sdk/utils\";\nimport type {\n BagTemplate,\n Message,\n Interrupt,\n ThreadState,\n} from \"@langchain/langgraph-sdk\";\n\nfunction createCustomTransportThreadState<\n StateType extends Record<string, unknown>,\n>(values: StateType, threadId: string): ThreadState<StateType> {\n return {\n values,\n next: [],\n tasks: [],\n metadata: undefined,\n created_at: null,\n checkpoint: {\n thread_id: threadId,\n checkpoint_id: null,\n checkpoint_ns: \"\",\n checkpoint_map: null,\n },\n parent_checkpoint: null,\n };\n}\n\nexport function useStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamCustomOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type CustomType = GetCustomEventType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n type ToolCallType = GetToolCallsType<StateType>;\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 streamValues = signal<StateType | null>(stream.values);\n const streamError = signal<unknown>(stream.error);\n const isLoading = signal(stream.isLoading);\n\n const subagentVersion = signal(0);\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 subagentVersion.update((v) => v + 1);\n });\n\n onCleanup(() => unsubscribe());\n });\n\n let threadId: string | null = options.threadId ?? null;\n\n const branch = signal<string>(\"\");\n\n const getMessages = (value: StateType): Message[] => {\n const messagesKey = options.messagesKey ?? \"messages\";\n return Array.isArray(value[messagesKey])\n ? (value[messagesKey] as Message[])\n : [];\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 historyValues = options.initialValues ?? ({} as StateType);\n\n const historyMessages = getMessages(historyValues);\n const shouldReconstructSubagents =\n options.filterSubagentMessages &&\n !stream.isLoading &&\n historyMessages.length > 0;\n\n effect(() => {\n const loading = isLoading();\n const hvMessages = getMessages(historyValues);\n const should =\n options.filterSubagentMessages && !loading && hvMessages.length > 0;\n if (should) {\n stream.reconstructSubagents(hvMessages, { skipIfPopulated: true });\n }\n });\n\n if (shouldReconstructSubagents) {\n stream.reconstructSubagents(historyMessages, { skipIfPopulated: true });\n }\n\n function switchThread(newThreadId: string | null) {\n if (newThreadId !== threadId) {\n threadId = newThreadId;\n stream.clear();\n }\n }\n\n function stop() {\n return stream.stop(historyValues, { onStop: options.onStop });\n }\n\n async function submitDirect(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>,\n ) {\n const currentThreadId = options.threadId ?? null;\n if (currentThreadId !== threadId) {\n threadId = currentThreadId;\n stream.clear();\n }\n\n let usableThreadId = threadId ?? submitOptions?.threadId;\n\n stream.setStreamValues(() => {\n if (submitOptions?.optimisticValues != null) {\n return {\n ...historyValues,\n ...(typeof submitOptions.optimisticValues === \"function\"\n ? submitOptions.optimisticValues(historyValues)\n : submitOptions.optimisticValues),\n };\n }\n\n return { ...historyValues };\n });\n\n await stream.start(\n async (signal: AbortSignal) => {\n if (!usableThreadId) {\n usableThreadId = crypto.randomUUID();\n threadId = usableThreadId;\n options.onThreadId?.(usableThreadId);\n }\n\n if (!usableThreadId) {\n throw new Error(\"Failed to obtain valid thread ID.\");\n }\n\n return options.transport.stream({\n input: values,\n context: submitOptions?.context,\n command: submitOptions?.command,\n streamSubgraphs: submitOptions?.streamSubgraphs,\n signal,\n config: {\n ...submitOptions?.config,\n configurable: {\n thread_id: usableThreadId,\n ...submitOptions?.config?.configurable,\n } as unknown as GetConfigurableType<Bag>,\n },\n }) as Promise<\n AsyncGenerator<EventStreamEvent<StateType, UpdateType, CustomType>>\n >;\n },\n {\n getMessages,\n setMessages,\n\n initialValues: {} as StateType,\n callbacks: options,\n\n onSuccess: () => {\n if (!usableThreadId) return undefined;\n\n const finalValues = stream.values ?? historyValues;\n options.onFinish?.(\n createCustomTransportThreadState(finalValues, usableThreadId),\n undefined,\n );\n\n return undefined;\n },\n onError(error) {\n options.onError?.(error, undefined);\n submitOptions?.onError?.(error, undefined);\n },\n },\n );\n }\n\n async function submit(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>,\n ) {\n await submitDirect(values, submitOptions);\n }\n\n const values = computed(() => streamValues() ?? ({} as StateType));\n\n function setBranch(value: string) {\n branch.set(value);\n }\n\n function getMessagesMetadata(\n message: Message<ToolCallType>,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n const streamMetadata = messageManager.get(message.id)?.metadata;\n if (streamMetadata != null) {\n return {\n messageId: message.id ?? String(index),\n firstSeenState: undefined,\n branch: undefined,\n branchOptions: undefined,\n streamMetadata,\n } as MessageMetadata<StateType>;\n }\n return undefined;\n }\n\n return {\n values,\n error: streamError,\n isLoading,\n\n stop,\n submit,\n switchThread,\n\n branch,\n setBranch,\n getMessagesMetadata,\n\n queue: {\n entries: signal([]),\n size: signal(0),\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n interrupts: computed((): Interrupt<InterruptType>[] => {\n const vals = streamValues();\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 return [];\n }),\n\n interrupt: computed((): Interrupt<InterruptType> | undefined => {\n return extractInterrupts<InterruptType>(streamValues());\n }),\n\n messages: computed(() => {\n const vals = streamValues();\n if (!vals) return [];\n return ensureMessageInstances(getMessages(vals));\n }),\n\n toolCalls: computed(() => {\n const vals = streamValues();\n if (!vals) return [];\n const msgs = getMessages(vals);\n return getToolCallsWithResults<ToolCallType>(msgs);\n }),\n\n getToolCalls(message: Message<ToolCallType>) {\n const vals = streamValues();\n if (!vals) return [];\n const msgs = getMessages(vals);\n const allToolCalls = getToolCallsWithResults<ToolCallType>(msgs);\n return allToolCalls.filter((tc) => tc.aiMessage.id === message.id);\n },\n\n get subagents() {\n void subagentVersion();\n return stream.getSubagents();\n },\n\n get activeSubagents() {\n void subagentVersion();\n return stream.getActiveSubagents();\n },\n\n getSubagent(toolCallId: string) {\n return stream.getSubagent(toolCallId);\n },\n\n getSubagentsByType(type: string) {\n return stream.getSubagentsByType(type);\n },\n\n getSubagentsByMessage(messageId: string) {\n return stream.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stream.custom.cjs","names":["CustomStreamOrchestrator"],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n CustomStreamOrchestrator,\n ensureMessageInstances,\n type AnyStreamCustomOptions,\n type CustomSubmitOptions,\n type GetUpdateType,\n type GetInterruptType,\n type GetConfigurableType,\n type GetToolCallsType,\n type MessageMetadata,\n} from \"@langchain/langgraph-sdk/ui\";\nimport type { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\n\nexport function injectStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamCustomOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n type ToolCallType = GetToolCallsType<StateType>;\n\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(options);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n const isLoading = signal(orchestrator.isLoading);\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n isLoading.set(orchestrator.isLoading);\n });\n onCleanup(() => unsubscribe());\n });\n\n effect(() => {\n void version();\n const loading = orchestrator.isLoading;\n const hvMessages = orchestrator.messages;\n if (options.filterSubagentMessages && !loading && hvMessages.length > 0) {\n orchestrator.reconstructSubagentsIfNeeded();\n }\n });\n\n const values = computed(() => {\n void version();\n return orchestrator.values;\n });\n\n const branch = signal<string>(\"\");\n\n return {\n values,\n error: computed(() => {\n void version();\n return orchestrator.error;\n }),\n isLoading,\n\n stop: () => orchestrator.stop(),\n\n async submit(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>,\n ) {\n await orchestrator.submit(values, submitOptions);\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n branch,\n setBranch(value: string) {\n branch.set(value);\n orchestrator.setBranch(value);\n },\n\n getMessagesMetadata(\n message: Message<ToolCallType>,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n queue: {\n entries: signal([]),\n size: signal(0),\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n interrupts: computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n }),\n\n interrupt: computed((): Interrupt<InterruptType> | undefined => {\n void version();\n return orchestrator.interrupt as Interrupt<InterruptType> | undefined;\n }),\n\n messages: computed(() => {\n void version();\n return ensureMessageInstances(orchestrator.messages);\n }),\n\n toolCalls: computed(() => {\n void version();\n return orchestrator.toolCalls;\n }),\n\n getToolCalls(message: Message<ToolCallType>) {\n return orchestrator.getToolCalls(message);\n },\n\n subagents: computed(() => {\n void subagentVersion();\n return orchestrator.subagents as ReadonlyMap<\n string,\n typeof orchestrator.subagents extends Map<string, infer V> ? V : never\n >;\n }),\n\n activeSubagents: computed(() => {\n void subagentVersion();\n return orchestrator.activeSubagents as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[];\n }),\n\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n\n/**\n * @deprecated Use `injectStreamCustom` instead. `useStreamCustom` will be\n * removed in a future major version. `injectStreamCustom` follows Angular's\n * `inject*` naming convention for injection-based patterns.\n */\nexport const useStreamCustom = injectStreamCustom;\n"],"mappings":";;;AAcA,SAAgB,mBAGd,SAAiD;CAMjD,MAAM,eAAe,IAAIA,4BAAAA,yBAAyC,QAAQ;CAE1E,MAAM,WAAA,GAAA,cAAA,QAAiB,EAAE;CACzB,MAAM,mBAAA,GAAA,cAAA,QAAyB,EAAE;CACjC,MAAM,aAAA,GAAA,cAAA,QAAmB,aAAa,UAAU;AAEhD,EAAA,GAAA,cAAA,SAAQ,cAAc;EACpB,MAAM,cAAc,aAAa,gBAAgB;AAC/C,WAAQ,QAAQ,MAAM,IAAI,EAAE;AAC5B,mBAAgB,QAAQ,MAAM,IAAI,EAAE;AACpC,aAAU,IAAI,aAAa,UAAU;IACrC;AACF,kBAAgB,aAAa,CAAC;GAC9B;AAEF,EAAA,GAAA,cAAA,cAAa;AACN,WAAS;EACd,MAAM,UAAU,aAAa;EAC7B,MAAM,aAAa,aAAa;AAChC,MAAI,QAAQ,0BAA0B,CAAC,WAAW,WAAW,SAAS,EACpE,cAAa,8BAA8B;GAE7C;CAEF,MAAM,UAAA,GAAA,cAAA,gBAAwB;AACvB,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,UAAA,GAAA,cAAA,QAAwB,GAAG;AAEjC,QAAO;EACL;EACA,QAAA,GAAA,cAAA,gBAAsB;AACf,YAAS;AACd,UAAO,aAAa;IACpB;EACF;EAEA,YAAY,aAAa,MAAM;EAE/B,MAAM,OACJ,QACA,eACA;AACA,SAAM,aAAa,OAAO,QAAQ,cAAc;;EAGlD,aAAa,aAA4B;AACvC,gBAAa,aAAa,YAAY;;EAGxC;EACA,UAAU,OAAe;AACvB,UAAO,IAAI,MAAM;AACjB,gBAAa,UAAU,MAAM;;EAG/B,oBACE,SACA,OACwC;AACxC,UAAO,aAAa,oBAAoB,SAAS,MAAM;;EAGzD,OAAO;GACL,UAAA,GAAA,cAAA,QAAgB,EAAE,CAAC;GACnB,OAAA,GAAA,cAAA,QAAa,EAAE;GACf,MAAM,SAAS;AACb,WAAO;;GAET,MAAM,QAAQ;GACf;EAED,aAAA,GAAA,cAAA,gBAAuD;AAChD,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,YAAA,GAAA,cAAA,gBAAgE;AACzD,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,WAAA,GAAA,cAAA,gBAAyB;AAClB,YAAS;AACd,WAAA,GAAA,4BAAA,wBAA8B,aAAa,SAAS;IACpD;EAEF,YAAA,GAAA,cAAA,gBAA0B;AACnB,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,aAAa,SAAgC;AAC3C,UAAO,aAAa,aAAa,QAAQ;;EAG3C,YAAA,GAAA,cAAA,gBAA0B;AACnB,oBAAiB;AACtB,UAAO,aAAa;IAIpB;EAEF,kBAAA,GAAA,cAAA,gBAAgC;AACzB,oBAAiB;AACtB,UAAO,aAAa;IAGpB;EAEF,YAAY,YAAoB;AAC9B,UAAO,aAAa,YAAY,WAAW;;EAE7C,mBAAmB,MAAc;AAC/B,UAAO,aAAa,mBAAmB,KAAK;;EAE9C,sBAAsB,WAAmB;AACvC,UAAO,aAAa,sBAAsB,UAAU;;EAEvD;;;;;;;AAQH,MAAa,kBAAkB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { BaseMessage as BaseMessage$1, BaseMessageChunk } from "./node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/index.cjs";
|
|
2
|
+
import * as _angular_core0 from "@angular/core";
|
|
3
|
+
import * as _langchain_core_messages0 from "@langchain/core/messages";
|
|
4
|
+
import * as _langchain_langgraph_sdk_ui0 from "@langchain/langgraph-sdk/ui";
|
|
5
|
+
import { AnyStreamCustomOptions, CustomSubmitOptions, GetConfigurableType, GetInterruptType, GetToolCallsType, GetUpdateType, MessageMetadata } from "@langchain/langgraph-sdk/ui";
|
|
6
|
+
import * as _langchain_langgraph_sdk0 from "@langchain/langgraph-sdk";
|
|
7
|
+
import { BagTemplate, Interrupt, Message } from "@langchain/langgraph-sdk";
|
|
8
|
+
|
|
9
|
+
//#region src/stream.custom.d.ts
|
|
10
|
+
declare function injectStreamCustom<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: AnyStreamCustomOptions<StateType, Bag>): {
|
|
11
|
+
values: _angular_core0.Signal<StateType>;
|
|
12
|
+
error: _angular_core0.Signal<unknown>;
|
|
13
|
+
isLoading: _angular_core0.WritableSignal<boolean>;
|
|
14
|
+
stop: () => void;
|
|
15
|
+
submit(values: GetUpdateType<Bag, StateType> | null | undefined, submitOptions?: CustomSubmitOptions<StateType, GetConfigurableType<Bag>> | undefined): Promise<void>;
|
|
16
|
+
switchThread(newThreadId: string | null): void;
|
|
17
|
+
branch: _angular_core0.WritableSignal<string>;
|
|
18
|
+
setBranch(value: string): void;
|
|
19
|
+
getMessagesMetadata(message: Message<GetToolCallsType<StateType>>, index?: number | undefined): MessageMetadata<StateType> | undefined;
|
|
20
|
+
queue: {
|
|
21
|
+
entries: _angular_core0.WritableSignal<never[]>;
|
|
22
|
+
size: _angular_core0.WritableSignal<number>;
|
|
23
|
+
cancel(): Promise<boolean>;
|
|
24
|
+
clear(): Promise<void>;
|
|
25
|
+
};
|
|
26
|
+
interrupts: _angular_core0.Signal<Interrupt<GetInterruptType<Bag>>[]>;
|
|
27
|
+
interrupt: _angular_core0.Signal<Interrupt<GetInterruptType<Bag>> | undefined>;
|
|
28
|
+
messages: _angular_core0.Signal<(BaseMessage$1<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType> | BaseMessageChunk<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType>)[]>;
|
|
29
|
+
toolCalls: _angular_core0.Signal<_langchain_langgraph_sdk0.ToolCallWithResult<_langchain_langgraph_sdk0.DefaultToolCall>[]>;
|
|
30
|
+
getToolCalls(message: Message<GetToolCallsType<StateType>>): _langchain_langgraph_sdk0.ToolCallWithResult<_langchain_langgraph_sdk0.DefaultToolCall>[];
|
|
31
|
+
subagents: _angular_core0.Signal<ReadonlyMap<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
|
|
32
|
+
activeSubagents: _angular_core0.Signal<readonly _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
|
|
33
|
+
getSubagent(toolCallId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string> | undefined;
|
|
34
|
+
getSubagentsByType(type: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
|
|
35
|
+
getSubagentsByMessage(messageId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Use `injectStreamCustom` instead. `useStreamCustom` will be
|
|
39
|
+
* removed in a future major version. `injectStreamCustom` follows Angular's
|
|
40
|
+
* `inject*` naming convention for injection-based patterns.
|
|
41
|
+
*/
|
|
42
|
+
declare const useStreamCustom: typeof injectStreamCustom;
|
|
43
|
+
//#endregion
|
|
44
|
+
export { injectStreamCustom, useStreamCustom };
|
|
45
|
+
//# sourceMappingURL=stream.custom.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.custom.d.cts","names":[],"sources":["../src/stream.custom.ts"],"mappings":";;;;;;;;;iBAcgB,kBAAA,mBACI,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,CAAA,CAC1B,OAAA,EAAS,sBAAA,CAAuB,SAAA,EAAW,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwIhC,eAAA,SAAe,kBAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { BaseMessage as BaseMessage$1, BaseMessageChunk } from "./node_modules/.pnpm/langchain@1.2.30_@langchain_core@1.1.31_@opentelemetry_api@1.9.0_openai@6.27.0_ws@8.19._0520fb05d9e85da5f9e061dfe28cdbc8/node_modules/langchain/dist/index.js";
|
|
2
|
+
import * as _angular_core0 from "@angular/core";
|
|
3
|
+
import * as _langchain_langgraph_sdk_ui0 from "@langchain/langgraph-sdk/ui";
|
|
4
|
+
import { AnyStreamCustomOptions, CustomSubmitOptions, GetConfigurableType, GetInterruptType, GetToolCallsType, GetUpdateType, MessageMetadata } from "@langchain/langgraph-sdk/ui";
|
|
5
|
+
import * as _langchain_langgraph_sdk0 from "@langchain/langgraph-sdk";
|
|
6
|
+
import { BagTemplate, Interrupt, Message } from "@langchain/langgraph-sdk";
|
|
7
|
+
import * as _langchain_core_messages0 from "@langchain/core/messages";
|
|
8
|
+
|
|
9
|
+
//#region src/stream.custom.d.ts
|
|
10
|
+
declare function injectStreamCustom<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: AnyStreamCustomOptions<StateType, Bag>): {
|
|
11
|
+
values: _angular_core0.Signal<StateType>;
|
|
12
|
+
error: _angular_core0.Signal<unknown>;
|
|
13
|
+
isLoading: _angular_core0.WritableSignal<boolean>;
|
|
14
|
+
stop: () => void;
|
|
15
|
+
submit(values: GetUpdateType<Bag, StateType> | null | undefined, submitOptions?: CustomSubmitOptions<StateType, GetConfigurableType<Bag>> | undefined): Promise<void>;
|
|
16
|
+
switchThread(newThreadId: string | null): void;
|
|
17
|
+
branch: _angular_core0.WritableSignal<string>;
|
|
18
|
+
setBranch(value: string): void;
|
|
19
|
+
getMessagesMetadata(message: Message<GetToolCallsType<StateType>>, index?: number | undefined): MessageMetadata<StateType> | undefined;
|
|
20
|
+
queue: {
|
|
21
|
+
entries: _angular_core0.WritableSignal<never[]>;
|
|
22
|
+
size: _angular_core0.WritableSignal<number>;
|
|
23
|
+
cancel(): Promise<boolean>;
|
|
24
|
+
clear(): Promise<void>;
|
|
25
|
+
};
|
|
26
|
+
interrupts: _angular_core0.Signal<Interrupt<GetInterruptType<Bag>>[]>;
|
|
27
|
+
interrupt: _angular_core0.Signal<Interrupt<GetInterruptType<Bag>> | undefined>;
|
|
28
|
+
messages: _angular_core0.Signal<(BaseMessage$1<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType> | BaseMessageChunk<_langchain_core_messages0.MessageStructure<_langchain_core_messages0.MessageToolSet>, _langchain_core_messages0.MessageType>)[]>;
|
|
29
|
+
toolCalls: _angular_core0.Signal<_langchain_langgraph_sdk0.ToolCallWithResult<_langchain_langgraph_sdk0.DefaultToolCall>[]>;
|
|
30
|
+
getToolCalls(message: Message<GetToolCallsType<StateType>>): _langchain_langgraph_sdk0.ToolCallWithResult<_langchain_langgraph_sdk0.DefaultToolCall>[];
|
|
31
|
+
subagents: _angular_core0.Signal<ReadonlyMap<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
|
|
32
|
+
activeSubagents: _angular_core0.Signal<readonly _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
|
|
33
|
+
getSubagent(toolCallId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string> | undefined;
|
|
34
|
+
getSubagentsByType(type: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
|
|
35
|
+
getSubagentsByMessage(messageId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Use `injectStreamCustom` instead. `useStreamCustom` will be
|
|
39
|
+
* removed in a future major version. `injectStreamCustom` follows Angular's
|
|
40
|
+
* `inject*` naming convention for injection-based patterns.
|
|
41
|
+
*/
|
|
42
|
+
declare const useStreamCustom: typeof injectStreamCustom;
|
|
43
|
+
//#endregion
|
|
44
|
+
export { injectStreamCustom, useStreamCustom };
|
|
45
|
+
//# sourceMappingURL=stream.custom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.custom.d.ts","names":[],"sources":["../src/stream.custom.ts"],"mappings":";;;;;;;;;iBAcgB,kBAAA,mBACI,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,CAAA,CAC1B,OAAA,EAAS,sBAAA,CAAuB,SAAA,EAAW,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwIhC,eAAA,SAAe,kBAAA"}
|