@langchain/angular 0.3.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/dist/context.cjs +6 -3
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +54 -25
- package/dist/context.d.cts.map +1 -1
- package/dist/context.d.ts +50 -21
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +6 -3
- package/dist/context.js.map +1 -1
- package/dist/index.cjs +3 -156
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -90
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +6 -89
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -156
- package/dist/index.js.map +1 -1
- 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 +7 -5
- package/dist/stream.custom.cjs.map +1 -1
- package/dist/stream.custom.d.cts +5 -5
- package/dist/stream.custom.d.cts.map +1 -1
- package/dist/stream.custom.d.ts +2 -2
- package/dist/stream.custom.d.ts.map +1 -1
- package/dist/stream.custom.js +7 -5
- 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
- package/dist/subagent-types.d.cts +0 -15
- package/dist/subagent-types.d.cts.map +0 -1
- package/dist/subagent-types.d.ts +0 -15
- package/dist/subagent-types.d.ts.map +0 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
let _angular_core = require("@angular/core");
|
|
2
|
+
let _langchain_langgraph_sdk_ui = require("@langchain/langgraph-sdk/ui");
|
|
3
|
+
let _langchain_langgraph_sdk = require("@langchain/langgraph-sdk");
|
|
4
|
+
//#region src/stream.lgp.ts
|
|
5
|
+
function useStreamLGP(options) {
|
|
6
|
+
const client = options.client ?? new _langchain_langgraph_sdk.Client({ apiUrl: options.apiUrl });
|
|
7
|
+
const orchestrator = new _langchain_langgraph_sdk_ui.StreamOrchestrator(options, {
|
|
8
|
+
getClient: () => client,
|
|
9
|
+
getAssistantId: () => options.assistantId,
|
|
10
|
+
getMessagesKey: () => options.messagesKey ?? "messages"
|
|
11
|
+
});
|
|
12
|
+
orchestrator.initThreadId(options.threadId ?? void 0);
|
|
13
|
+
const version = (0, _angular_core.signal)(0);
|
|
14
|
+
const subagentVersion = (0, _angular_core.signal)(0);
|
|
15
|
+
(0, _angular_core.effect)((onCleanup) => {
|
|
16
|
+
const unsubscribe = orchestrator.subscribe(() => {
|
|
17
|
+
version.update((v) => v + 1);
|
|
18
|
+
subagentVersion.update((v) => v + 1);
|
|
19
|
+
});
|
|
20
|
+
onCleanup(() => unsubscribe());
|
|
21
|
+
});
|
|
22
|
+
(0, _angular_core.effect)((onCleanup) => {
|
|
23
|
+
version();
|
|
24
|
+
const hvMessages = orchestrator.messages;
|
|
25
|
+
if (options.filterSubagentMessages && !orchestrator.isLoading && !orchestrator.historyData.isLoading && hvMessages.length > 0) {
|
|
26
|
+
const controller = orchestrator.reconstructSubagentsIfNeeded();
|
|
27
|
+
if (controller) onCleanup(() => controller.abort());
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const isLoadingForDrain = (0, _angular_core.computed)(() => {
|
|
31
|
+
version();
|
|
32
|
+
return orchestrator.isLoading;
|
|
33
|
+
});
|
|
34
|
+
(0, _angular_core.effect)(() => {
|
|
35
|
+
isLoadingForDrain();
|
|
36
|
+
orchestrator.drainQueue();
|
|
37
|
+
});
|
|
38
|
+
const { shouldReconnect } = orchestrator;
|
|
39
|
+
let hasReconnected = false;
|
|
40
|
+
(0, _angular_core.effect)(() => {
|
|
41
|
+
version();
|
|
42
|
+
const tid = orchestrator.threadId;
|
|
43
|
+
if (!hasReconnected && shouldReconnect && tid && !orchestrator.isLoading) {
|
|
44
|
+
if (orchestrator.tryReconnect()) hasReconnected = true;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const values = (0, _angular_core.computed)(() => {
|
|
48
|
+
version();
|
|
49
|
+
orchestrator.trackStreamMode("values");
|
|
50
|
+
return orchestrator.values;
|
|
51
|
+
});
|
|
52
|
+
const error = (0, _angular_core.computed)(() => {
|
|
53
|
+
version();
|
|
54
|
+
return orchestrator.error;
|
|
55
|
+
});
|
|
56
|
+
const isLoading = (0, _angular_core.signal)(orchestrator.isLoading);
|
|
57
|
+
(0, _angular_core.effect)(() => {
|
|
58
|
+
version();
|
|
59
|
+
isLoading.set(orchestrator.isLoading);
|
|
60
|
+
});
|
|
61
|
+
const branch = (0, _angular_core.signal)("");
|
|
62
|
+
(0, _angular_core.effect)(() => {
|
|
63
|
+
version();
|
|
64
|
+
const b = orchestrator.branch;
|
|
65
|
+
if (branch() !== b) branch.set(b);
|
|
66
|
+
});
|
|
67
|
+
const messages = (0, _angular_core.computed)(() => {
|
|
68
|
+
version();
|
|
69
|
+
orchestrator.trackStreamMode("messages-tuple", "values");
|
|
70
|
+
return (0, _langchain_langgraph_sdk_ui.ensureMessageInstances)(orchestrator.messages);
|
|
71
|
+
});
|
|
72
|
+
const toolCalls = (0, _angular_core.computed)(() => {
|
|
73
|
+
version();
|
|
74
|
+
orchestrator.trackStreamMode("messages-tuple", "values");
|
|
75
|
+
return orchestrator.toolCalls;
|
|
76
|
+
});
|
|
77
|
+
const interrupt = (0, _angular_core.computed)(() => {
|
|
78
|
+
version();
|
|
79
|
+
return orchestrator.interrupt;
|
|
80
|
+
});
|
|
81
|
+
const interrupts = (0, _angular_core.computed)(() => {
|
|
82
|
+
version();
|
|
83
|
+
return orchestrator.interrupts;
|
|
84
|
+
});
|
|
85
|
+
const historyList = (0, _angular_core.computed)(() => {
|
|
86
|
+
version();
|
|
87
|
+
return orchestrator.flatHistory;
|
|
88
|
+
});
|
|
89
|
+
const isThreadLoading = (0, _angular_core.computed)(() => {
|
|
90
|
+
version();
|
|
91
|
+
return orchestrator.isThreadLoading;
|
|
92
|
+
});
|
|
93
|
+
const experimentalBranchTree = (0, _angular_core.computed)(() => {
|
|
94
|
+
version();
|
|
95
|
+
return orchestrator.experimental_branchTree;
|
|
96
|
+
});
|
|
97
|
+
const queueEntries = (0, _angular_core.signal)(orchestrator.queueEntries);
|
|
98
|
+
const queueSize = (0, _angular_core.signal)(orchestrator.queueSize);
|
|
99
|
+
(0, _angular_core.effect)(() => {
|
|
100
|
+
version();
|
|
101
|
+
queueEntries.set(orchestrator.queueEntries);
|
|
102
|
+
queueSize.set(orchestrator.queueSize);
|
|
103
|
+
});
|
|
104
|
+
const subagents = (0, _angular_core.computed)(() => {
|
|
105
|
+
subagentVersion();
|
|
106
|
+
return orchestrator.subagents;
|
|
107
|
+
});
|
|
108
|
+
const activeSubagents = (0, _angular_core.computed)(() => {
|
|
109
|
+
subagentVersion();
|
|
110
|
+
return orchestrator.activeSubagents;
|
|
111
|
+
});
|
|
112
|
+
return {
|
|
113
|
+
assistantId: options.assistantId,
|
|
114
|
+
client,
|
|
115
|
+
values,
|
|
116
|
+
error,
|
|
117
|
+
isLoading,
|
|
118
|
+
branch,
|
|
119
|
+
setBranch(value) {
|
|
120
|
+
orchestrator.setBranch(value);
|
|
121
|
+
},
|
|
122
|
+
messages,
|
|
123
|
+
toolCalls,
|
|
124
|
+
getToolCalls(message) {
|
|
125
|
+
return orchestrator.getToolCalls(message);
|
|
126
|
+
},
|
|
127
|
+
interrupt,
|
|
128
|
+
interrupts,
|
|
129
|
+
history: historyList,
|
|
130
|
+
isThreadLoading,
|
|
131
|
+
experimental_branchTree: experimentalBranchTree,
|
|
132
|
+
getMessagesMetadata(message, index) {
|
|
133
|
+
return orchestrator.getMessagesMetadata(message, index);
|
|
134
|
+
},
|
|
135
|
+
submit: (values, submitOptions) => orchestrator.submit(values, submitOptions),
|
|
136
|
+
stop: () => orchestrator.stop(),
|
|
137
|
+
joinStream: (...args) => orchestrator.joinStream(...args),
|
|
138
|
+
queue: {
|
|
139
|
+
entries: queueEntries,
|
|
140
|
+
size: queueSize,
|
|
141
|
+
cancel: (id) => orchestrator.cancelQueueItem(id),
|
|
142
|
+
clear: () => orchestrator.clearQueue()
|
|
143
|
+
},
|
|
144
|
+
switchThread(newThreadId) {
|
|
145
|
+
orchestrator.switchThread(newThreadId);
|
|
146
|
+
},
|
|
147
|
+
subagents,
|
|
148
|
+
activeSubagents,
|
|
149
|
+
getSubagent(toolCallId) {
|
|
150
|
+
return orchestrator.getSubagent(toolCallId);
|
|
151
|
+
},
|
|
152
|
+
getSubagentsByType(type) {
|
|
153
|
+
return orchestrator.getSubagentsByType(type);
|
|
154
|
+
},
|
|
155
|
+
getSubagentsByMessage(messageId) {
|
|
156
|
+
return orchestrator.getSubagentsByMessage(messageId);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
//#endregion
|
|
161
|
+
exports.useStreamLGP = useStreamLGP;
|
|
162
|
+
|
|
163
|
+
//# sourceMappingURL=stream.lgp.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.lgp.cjs","names":["Client","StreamOrchestrator"],"sources":["../src/stream.lgp.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n StreamOrchestrator,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type SubmitOptions,\n type GetConfigurableType,\n type GetInterruptType,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type Message,\n type Interrupt,\n type BagTemplate,\n} from \"@langchain/langgraph-sdk\";\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 ConfigurableType = GetConfigurableType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n });\n onCleanup(() => unsubscribe());\n });\n\n // Subagent reconstruction\n effect((onCleanup) => {\n void version();\n const hvMessages = orchestrator.messages;\n const should =\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0;\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n });\n\n // Queue draining - track isLoading changes specifically so the drain\n // fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = computed(() => {\n void version();\n return orchestrator.isLoading;\n });\n effect(() => {\n void isLoadingForDrain();\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n const { shouldReconnect } = orchestrator;\n let hasReconnected = false;\n\n effect(() => {\n void version();\n const tid = orchestrator.threadId;\n if (!hasReconnected && shouldReconnect && tid && !orchestrator.isLoading) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) hasReconnected = true;\n }\n });\n\n const values = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version();\n return orchestrator.error;\n });\n\n const isLoading = signal(orchestrator.isLoading);\n effect(() => {\n void version();\n isLoading.set(orchestrator.isLoading);\n });\n\n const branch = signal<string>(\"\");\n effect(() => {\n void version();\n const b = orchestrator.branch;\n if (branch() !== b) branch.set(b);\n });\n\n const messages = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version();\n return orchestrator.interrupt;\n });\n\n const interrupts = computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const historyList = computed(() => {\n void version();\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version();\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version();\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = signal(orchestrator.queueEntries);\n const queueSize = signal(orchestrator.queueSize);\n effect(() => {\n void version();\n queueEntries.set(orchestrator.queueEntries);\n queueSize.set(orchestrator.queueSize);\n });\n\n const 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 const activeSubagents = computed(() => {\n void subagentVersion();\n return orchestrator.activeSubagents as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[];\n });\n\n return {\n assistantId: options.assistantId,\n client,\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n messages,\n toolCalls,\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n\n history: historyList,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata(\n message: Message,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n submit: (\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) => orchestrator.submit(values, submitOptions),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\n entries: queueEntries,\n size: queueSize,\n cancel: (id: string) => orchestrator.cancelQueueItem(id),\n clear: () => orchestrator.clearQueue(),\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n subagents,\n activeSubagents,\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"],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 { AnyStreamOptions, GetConfigurableType, GetInterruptType, MessageMetadata, SubmitOptions } from "@langchain/langgraph-sdk/ui";
|
|
6
|
+
import * as _langchain_langgraph_sdk0 from "@langchain/langgraph-sdk";
|
|
7
|
+
import { BagTemplate, Client, Interrupt, Message } from "@langchain/langgraph-sdk";
|
|
8
|
+
|
|
9
|
+
//#region src/stream.lgp.d.ts
|
|
10
|
+
declare function useStreamLGP<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends {
|
|
11
|
+
ConfigurableType?: Record<string, unknown>;
|
|
12
|
+
InterruptType?: unknown;
|
|
13
|
+
CustomEventType?: unknown;
|
|
14
|
+
UpdateType?: unknown;
|
|
15
|
+
} = BagTemplate>(options: AnyStreamOptions<StateType, Bag>): {
|
|
16
|
+
assistantId: string;
|
|
17
|
+
client: Client<_langchain_langgraph_sdk0.DefaultValues, _langchain_langgraph_sdk0.DefaultValues, unknown>;
|
|
18
|
+
values: _angular_core0.Signal<StateType>;
|
|
19
|
+
error: _angular_core0.Signal<unknown>;
|
|
20
|
+
isLoading: _angular_core0.WritableSignal<boolean>;
|
|
21
|
+
branch: _angular_core0.WritableSignal<string>;
|
|
22
|
+
setBranch(value: string): void;
|
|
23
|
+
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>)[]>;
|
|
24
|
+
toolCalls: _angular_core0.Signal<_langchain_langgraph_sdk0.ToolCallWithResult<_langchain_langgraph_sdk0.DefaultToolCall>[]>;
|
|
25
|
+
getToolCalls(message: Message): _langchain_langgraph_sdk0.ToolCallWithResult<_langchain_langgraph_sdk0.DefaultToolCall>[];
|
|
26
|
+
interrupt: _angular_core0.Signal<Interrupt<GetInterruptType<Bag>> | undefined>;
|
|
27
|
+
interrupts: _angular_core0.Signal<Interrupt<GetInterruptType<Bag>>[]>;
|
|
28
|
+
history: _angular_core0.Signal<_langchain_langgraph_sdk0.ThreadState<any>[]>;
|
|
29
|
+
isThreadLoading: _angular_core0.Signal<boolean>;
|
|
30
|
+
experimental_branchTree: _angular_core0.Signal<_langchain_langgraph_sdk_ui0.Sequence<any>>;
|
|
31
|
+
getMessagesMetadata(message: Message, index?: number | undefined): MessageMetadata<StateType> | undefined;
|
|
32
|
+
submit: (values: StateType, submitOptions?: SubmitOptions<StateType, GetConfigurableType<Bag>> | undefined) => Promise<void | Promise<void>>;
|
|
33
|
+
stop: () => void;
|
|
34
|
+
joinStream: (runId: string, lastEventId?: string | undefined, joinOptions?: {
|
|
35
|
+
streamMode?: _langchain_langgraph_sdk0.StreamMode[] | _langchain_langgraph_sdk0.StreamMode | undefined;
|
|
36
|
+
filter?: ((event: {
|
|
37
|
+
id?: string | undefined;
|
|
38
|
+
event: _langchain_langgraph_sdk0.StreamEvent;
|
|
39
|
+
data: unknown;
|
|
40
|
+
}) => boolean) | undefined;
|
|
41
|
+
} | undefined) => Promise<void>;
|
|
42
|
+
queue: {
|
|
43
|
+
entries: _angular_core0.WritableSignal<readonly _langchain_langgraph_sdk_ui0.QueueEntry<StateType, SubmitOptions<StateType, GetConfigurableType<Bag>>>[]>;
|
|
44
|
+
size: _angular_core0.WritableSignal<number>;
|
|
45
|
+
cancel: (id: string) => Promise<boolean>;
|
|
46
|
+
clear: () => Promise<void>;
|
|
47
|
+
};
|
|
48
|
+
switchThread(newThreadId: string | null): void;
|
|
49
|
+
subagents: _angular_core0.Signal<ReadonlyMap<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
|
|
50
|
+
activeSubagents: _angular_core0.Signal<readonly _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
|
|
51
|
+
getSubagent(toolCallId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string> | undefined;
|
|
52
|
+
getSubagentsByType(type: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
|
|
53
|
+
getSubagentsByMessage(messageId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
|
|
54
|
+
};
|
|
55
|
+
//#endregion
|
|
56
|
+
export { useStreamLGP };
|
|
57
|
+
//# sourceMappingURL=stream.lgp.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.lgp.d.cts","names":[],"sources":["../src/stream.lgp.ts"],"mappings":";;;;;;;;;iBAiBgB,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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 { AnyStreamOptions, GetConfigurableType, GetInterruptType, MessageMetadata, SubmitOptions } from "@langchain/langgraph-sdk/ui";
|
|
5
|
+
import * as _langchain_langgraph_sdk0 from "@langchain/langgraph-sdk";
|
|
6
|
+
import { BagTemplate, Client, Interrupt, Message } from "@langchain/langgraph-sdk";
|
|
7
|
+
import * as _langchain_core_messages0 from "@langchain/core/messages";
|
|
8
|
+
|
|
9
|
+
//#region src/stream.lgp.d.ts
|
|
10
|
+
declare function useStreamLGP<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends {
|
|
11
|
+
ConfigurableType?: Record<string, unknown>;
|
|
12
|
+
InterruptType?: unknown;
|
|
13
|
+
CustomEventType?: unknown;
|
|
14
|
+
UpdateType?: unknown;
|
|
15
|
+
} = BagTemplate>(options: AnyStreamOptions<StateType, Bag>): {
|
|
16
|
+
assistantId: string;
|
|
17
|
+
client: Client<_langchain_langgraph_sdk0.DefaultValues, _langchain_langgraph_sdk0.DefaultValues, unknown>;
|
|
18
|
+
values: _angular_core0.Signal<StateType>;
|
|
19
|
+
error: _angular_core0.Signal<unknown>;
|
|
20
|
+
isLoading: _angular_core0.WritableSignal<boolean>;
|
|
21
|
+
branch: _angular_core0.WritableSignal<string>;
|
|
22
|
+
setBranch(value: string): void;
|
|
23
|
+
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>)[]>;
|
|
24
|
+
toolCalls: _angular_core0.Signal<_langchain_langgraph_sdk0.ToolCallWithResult<_langchain_langgraph_sdk0.DefaultToolCall>[]>;
|
|
25
|
+
getToolCalls(message: Message): _langchain_langgraph_sdk0.ToolCallWithResult<_langchain_langgraph_sdk0.DefaultToolCall>[];
|
|
26
|
+
interrupt: _angular_core0.Signal<Interrupt<GetInterruptType<Bag>> | undefined>;
|
|
27
|
+
interrupts: _angular_core0.Signal<Interrupt<GetInterruptType<Bag>>[]>;
|
|
28
|
+
history: _angular_core0.Signal<_langchain_langgraph_sdk0.ThreadState<any>[]>;
|
|
29
|
+
isThreadLoading: _angular_core0.Signal<boolean>;
|
|
30
|
+
experimental_branchTree: _angular_core0.Signal<_langchain_langgraph_sdk_ui0.Sequence<any>>;
|
|
31
|
+
getMessagesMetadata(message: Message, index?: number | undefined): MessageMetadata<StateType> | undefined;
|
|
32
|
+
submit: (values: StateType, submitOptions?: SubmitOptions<StateType, GetConfigurableType<Bag>> | undefined) => Promise<void | Promise<void>>;
|
|
33
|
+
stop: () => void;
|
|
34
|
+
joinStream: (runId: string, lastEventId?: string | undefined, joinOptions?: {
|
|
35
|
+
streamMode?: _langchain_langgraph_sdk0.StreamMode[] | _langchain_langgraph_sdk0.StreamMode | undefined;
|
|
36
|
+
filter?: ((event: {
|
|
37
|
+
id?: string | undefined;
|
|
38
|
+
event: _langchain_langgraph_sdk0.StreamEvent;
|
|
39
|
+
data: unknown;
|
|
40
|
+
}) => boolean) | undefined;
|
|
41
|
+
} | undefined) => Promise<void>;
|
|
42
|
+
queue: {
|
|
43
|
+
entries: _angular_core0.WritableSignal<readonly _langchain_langgraph_sdk_ui0.QueueEntry<StateType, SubmitOptions<StateType, GetConfigurableType<Bag>>>[]>;
|
|
44
|
+
size: _angular_core0.WritableSignal<number>;
|
|
45
|
+
cancel: (id: string) => Promise<boolean>;
|
|
46
|
+
clear: () => Promise<void>;
|
|
47
|
+
};
|
|
48
|
+
switchThread(newThreadId: string | null): void;
|
|
49
|
+
subagents: _angular_core0.Signal<ReadonlyMap<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
|
|
50
|
+
activeSubagents: _angular_core0.Signal<readonly _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
|
|
51
|
+
getSubagent(toolCallId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string> | undefined;
|
|
52
|
+
getSubagentsByType(type: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
|
|
53
|
+
getSubagentsByMessage(messageId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
|
|
54
|
+
};
|
|
55
|
+
//#endregion
|
|
56
|
+
export { useStreamLGP };
|
|
57
|
+
//# sourceMappingURL=stream.lgp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.lgp.d.ts","names":[],"sources":["../src/stream.lgp.ts"],"mappings":";;;;;;;;;iBAiBgB,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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { computed, effect, signal } from "@angular/core";
|
|
2
|
+
import { StreamOrchestrator, ensureMessageInstances } from "@langchain/langgraph-sdk/ui";
|
|
3
|
+
import { Client } from "@langchain/langgraph-sdk";
|
|
4
|
+
//#region src/stream.lgp.ts
|
|
5
|
+
function useStreamLGP(options) {
|
|
6
|
+
const client = options.client ?? new Client({ apiUrl: options.apiUrl });
|
|
7
|
+
const orchestrator = new StreamOrchestrator(options, {
|
|
8
|
+
getClient: () => client,
|
|
9
|
+
getAssistantId: () => options.assistantId,
|
|
10
|
+
getMessagesKey: () => options.messagesKey ?? "messages"
|
|
11
|
+
});
|
|
12
|
+
orchestrator.initThreadId(options.threadId ?? void 0);
|
|
13
|
+
const version = signal(0);
|
|
14
|
+
const subagentVersion = signal(0);
|
|
15
|
+
effect((onCleanup) => {
|
|
16
|
+
const unsubscribe = orchestrator.subscribe(() => {
|
|
17
|
+
version.update((v) => v + 1);
|
|
18
|
+
subagentVersion.update((v) => v + 1);
|
|
19
|
+
});
|
|
20
|
+
onCleanup(() => unsubscribe());
|
|
21
|
+
});
|
|
22
|
+
effect((onCleanup) => {
|
|
23
|
+
version();
|
|
24
|
+
const hvMessages = orchestrator.messages;
|
|
25
|
+
if (options.filterSubagentMessages && !orchestrator.isLoading && !orchestrator.historyData.isLoading && hvMessages.length > 0) {
|
|
26
|
+
const controller = orchestrator.reconstructSubagentsIfNeeded();
|
|
27
|
+
if (controller) onCleanup(() => controller.abort());
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const isLoadingForDrain = computed(() => {
|
|
31
|
+
version();
|
|
32
|
+
return orchestrator.isLoading;
|
|
33
|
+
});
|
|
34
|
+
effect(() => {
|
|
35
|
+
isLoadingForDrain();
|
|
36
|
+
orchestrator.drainQueue();
|
|
37
|
+
});
|
|
38
|
+
const { shouldReconnect } = orchestrator;
|
|
39
|
+
let hasReconnected = false;
|
|
40
|
+
effect(() => {
|
|
41
|
+
version();
|
|
42
|
+
const tid = orchestrator.threadId;
|
|
43
|
+
if (!hasReconnected && shouldReconnect && tid && !orchestrator.isLoading) {
|
|
44
|
+
if (orchestrator.tryReconnect()) hasReconnected = true;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const values = computed(() => {
|
|
48
|
+
version();
|
|
49
|
+
orchestrator.trackStreamMode("values");
|
|
50
|
+
return orchestrator.values;
|
|
51
|
+
});
|
|
52
|
+
const error = computed(() => {
|
|
53
|
+
version();
|
|
54
|
+
return orchestrator.error;
|
|
55
|
+
});
|
|
56
|
+
const isLoading = signal(orchestrator.isLoading);
|
|
57
|
+
effect(() => {
|
|
58
|
+
version();
|
|
59
|
+
isLoading.set(orchestrator.isLoading);
|
|
60
|
+
});
|
|
61
|
+
const branch = signal("");
|
|
62
|
+
effect(() => {
|
|
63
|
+
version();
|
|
64
|
+
const b = orchestrator.branch;
|
|
65
|
+
if (branch() !== b) branch.set(b);
|
|
66
|
+
});
|
|
67
|
+
const messages = computed(() => {
|
|
68
|
+
version();
|
|
69
|
+
orchestrator.trackStreamMode("messages-tuple", "values");
|
|
70
|
+
return ensureMessageInstances(orchestrator.messages);
|
|
71
|
+
});
|
|
72
|
+
const toolCalls = computed(() => {
|
|
73
|
+
version();
|
|
74
|
+
orchestrator.trackStreamMode("messages-tuple", "values");
|
|
75
|
+
return orchestrator.toolCalls;
|
|
76
|
+
});
|
|
77
|
+
const interrupt = computed(() => {
|
|
78
|
+
version();
|
|
79
|
+
return orchestrator.interrupt;
|
|
80
|
+
});
|
|
81
|
+
const interrupts = computed(() => {
|
|
82
|
+
version();
|
|
83
|
+
return orchestrator.interrupts;
|
|
84
|
+
});
|
|
85
|
+
const historyList = computed(() => {
|
|
86
|
+
version();
|
|
87
|
+
return orchestrator.flatHistory;
|
|
88
|
+
});
|
|
89
|
+
const isThreadLoading = computed(() => {
|
|
90
|
+
version();
|
|
91
|
+
return orchestrator.isThreadLoading;
|
|
92
|
+
});
|
|
93
|
+
const experimentalBranchTree = computed(() => {
|
|
94
|
+
version();
|
|
95
|
+
return orchestrator.experimental_branchTree;
|
|
96
|
+
});
|
|
97
|
+
const queueEntries = signal(orchestrator.queueEntries);
|
|
98
|
+
const queueSize = signal(orchestrator.queueSize);
|
|
99
|
+
effect(() => {
|
|
100
|
+
version();
|
|
101
|
+
queueEntries.set(orchestrator.queueEntries);
|
|
102
|
+
queueSize.set(orchestrator.queueSize);
|
|
103
|
+
});
|
|
104
|
+
const subagents = computed(() => {
|
|
105
|
+
subagentVersion();
|
|
106
|
+
return orchestrator.subagents;
|
|
107
|
+
});
|
|
108
|
+
const activeSubagents = computed(() => {
|
|
109
|
+
subagentVersion();
|
|
110
|
+
return orchestrator.activeSubagents;
|
|
111
|
+
});
|
|
112
|
+
return {
|
|
113
|
+
assistantId: options.assistantId,
|
|
114
|
+
client,
|
|
115
|
+
values,
|
|
116
|
+
error,
|
|
117
|
+
isLoading,
|
|
118
|
+
branch,
|
|
119
|
+
setBranch(value) {
|
|
120
|
+
orchestrator.setBranch(value);
|
|
121
|
+
},
|
|
122
|
+
messages,
|
|
123
|
+
toolCalls,
|
|
124
|
+
getToolCalls(message) {
|
|
125
|
+
return orchestrator.getToolCalls(message);
|
|
126
|
+
},
|
|
127
|
+
interrupt,
|
|
128
|
+
interrupts,
|
|
129
|
+
history: historyList,
|
|
130
|
+
isThreadLoading,
|
|
131
|
+
experimental_branchTree: experimentalBranchTree,
|
|
132
|
+
getMessagesMetadata(message, index) {
|
|
133
|
+
return orchestrator.getMessagesMetadata(message, index);
|
|
134
|
+
},
|
|
135
|
+
submit: (values, submitOptions) => orchestrator.submit(values, submitOptions),
|
|
136
|
+
stop: () => orchestrator.stop(),
|
|
137
|
+
joinStream: (...args) => orchestrator.joinStream(...args),
|
|
138
|
+
queue: {
|
|
139
|
+
entries: queueEntries,
|
|
140
|
+
size: queueSize,
|
|
141
|
+
cancel: (id) => orchestrator.cancelQueueItem(id),
|
|
142
|
+
clear: () => orchestrator.clearQueue()
|
|
143
|
+
},
|
|
144
|
+
switchThread(newThreadId) {
|
|
145
|
+
orchestrator.switchThread(newThreadId);
|
|
146
|
+
},
|
|
147
|
+
subagents,
|
|
148
|
+
activeSubagents,
|
|
149
|
+
getSubagent(toolCallId) {
|
|
150
|
+
return orchestrator.getSubagent(toolCallId);
|
|
151
|
+
},
|
|
152
|
+
getSubagentsByType(type) {
|
|
153
|
+
return orchestrator.getSubagentsByType(type);
|
|
154
|
+
},
|
|
155
|
+
getSubagentsByMessage(messageId) {
|
|
156
|
+
return orchestrator.getSubagentsByMessage(messageId);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
//#endregion
|
|
161
|
+
export { useStreamLGP };
|
|
162
|
+
|
|
163
|
+
//# sourceMappingURL=stream.lgp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.lgp.js","names":[],"sources":["../src/stream.lgp.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n StreamOrchestrator,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type SubmitOptions,\n type GetConfigurableType,\n type GetInterruptType,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type Message,\n type Interrupt,\n type BagTemplate,\n} from \"@langchain/langgraph-sdk\";\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 ConfigurableType = GetConfigurableType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n });\n onCleanup(() => unsubscribe());\n });\n\n // Subagent reconstruction\n effect((onCleanup) => {\n void version();\n const hvMessages = orchestrator.messages;\n const should =\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0;\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n });\n\n // Queue draining - track isLoading changes specifically so the drain\n // fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = computed(() => {\n void version();\n return orchestrator.isLoading;\n });\n effect(() => {\n void isLoadingForDrain();\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n const { shouldReconnect } = orchestrator;\n let hasReconnected = false;\n\n effect(() => {\n void version();\n const tid = orchestrator.threadId;\n if (!hasReconnected && shouldReconnect && tid && !orchestrator.isLoading) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) hasReconnected = true;\n }\n });\n\n const values = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version();\n return orchestrator.error;\n });\n\n const isLoading = signal(orchestrator.isLoading);\n effect(() => {\n void version();\n isLoading.set(orchestrator.isLoading);\n });\n\n const branch = signal<string>(\"\");\n effect(() => {\n void version();\n const b = orchestrator.branch;\n if (branch() !== b) branch.set(b);\n });\n\n const messages = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version();\n return orchestrator.interrupt;\n });\n\n const interrupts = computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const historyList = computed(() => {\n void version();\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version();\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version();\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = signal(orchestrator.queueEntries);\n const queueSize = signal(orchestrator.queueSize);\n effect(() => {\n void version();\n queueEntries.set(orchestrator.queueEntries);\n queueSize.set(orchestrator.queueSize);\n });\n\n const 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 const activeSubagents = computed(() => {\n void subagentVersion();\n return orchestrator.activeSubagents as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[];\n });\n\n return {\n assistantId: options.assistantId,\n client,\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n messages,\n toolCalls,\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n\n history: historyList,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata(\n message: Message,\n index?: number,\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n submit: (\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>,\n ) => orchestrator.submit(values, submitOptions),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\n entries: queueEntries,\n size: queueSize,\n cancel: (id: string) => orchestrator.cancelQueueItem(id),\n clear: () => orchestrator.clearQueue(),\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n subagents,\n activeSubagents,\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"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@langchain/angular",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Angular integration for LangGraph & LangChain",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"directory": "libs/sdk-angular"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@langchain/langgraph-sdk": "^1.8.
|
|
13
|
+
"@langchain/langgraph-sdk": "^1.8.1"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@analogjs/vite-plugin-angular": "^2.3.1",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"vitest-browser-angular": "^0.3.0",
|
|
46
46
|
"webdriverio": "^9.25.0",
|
|
47
47
|
"zod": "^4.3.6",
|
|
48
|
-
"@langchain/langgraph": "^1.2.
|
|
48
|
+
"@langchain/langgraph": "^1.2.6",
|
|
49
49
|
"@langchain/langgraph-api": "^1.1.16",
|
|
50
50
|
"@langchain/langgraph-checkpoint": "^1.0.1"
|
|
51
51
|
},
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { DefaultToolCall } from "@langchain/langgraph-sdk";
|
|
2
|
-
import { BaseMessage } from "@langchain/core/messages";
|
|
3
|
-
import { SubagentStreamInterface } from "@langchain/langgraph-sdk/ui";
|
|
4
|
-
|
|
5
|
-
//#region src/subagent-types.d.ts
|
|
6
|
-
/**
|
|
7
|
-
* Subagent stream view with {@link BaseMessage} arrays (Angular SDK uses class
|
|
8
|
-
* messages end-to-end).
|
|
9
|
-
*/
|
|
10
|
-
type ClassSubagentStreamInterface<StateType = Record<string, unknown>, ToolCall = DefaultToolCall, SubagentName extends string = string> = Omit<SubagentStreamInterface<StateType, ToolCall, SubagentName>, "messages"> & {
|
|
11
|
-
messages: BaseMessage[];
|
|
12
|
-
};
|
|
13
|
-
//#endregion
|
|
14
|
-
export { ClassSubagentStreamInterface };
|
|
15
|
-
//# sourceMappingURL=subagent-types.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-types.d.cts","names":[],"sources":["../src/subagent-types.ts"],"mappings":";;;;;;;AAQA;;KAAY,4BAAA,aACE,MAAA,8BACD,eAAA,0CAET,IAAA,CACF,uBAAA,CAAwB,SAAA,EAAW,QAAA,EAAU,YAAA;EAG7C,QAAA,EAAU,WAAA;AAAA"}
|
package/dist/subagent-types.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { SubagentStreamInterface } from "@langchain/langgraph-sdk/ui";
|
|
2
|
-
import { DefaultToolCall } from "@langchain/langgraph-sdk";
|
|
3
|
-
import { BaseMessage } from "@langchain/core/messages";
|
|
4
|
-
|
|
5
|
-
//#region src/subagent-types.d.ts
|
|
6
|
-
/**
|
|
7
|
-
* Subagent stream view with {@link BaseMessage} arrays (Angular SDK uses class
|
|
8
|
-
* messages end-to-end).
|
|
9
|
-
*/
|
|
10
|
-
type ClassSubagentStreamInterface<StateType = Record<string, unknown>, ToolCall = DefaultToolCall, SubagentName extends string = string> = Omit<SubagentStreamInterface<StateType, ToolCall, SubagentName>, "messages"> & {
|
|
11
|
-
messages: BaseMessage[];
|
|
12
|
-
};
|
|
13
|
-
//#endregion
|
|
14
|
-
export { ClassSubagentStreamInterface };
|
|
15
|
-
//# sourceMappingURL=subagent-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-types.d.ts","names":[],"sources":["../src/subagent-types.ts"],"mappings":";;;;;;;AAQA;;KAAY,4BAAA,aACE,MAAA,8BACD,eAAA,0CAET,IAAA,CACF,uBAAA,CAAwB,SAAA,EAAW,QAAA,EAAU,YAAA;EAG7C,QAAA,EAAU,WAAA;AAAA"}
|