@langchain/svelte 0.0.1 → 0.1.2
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 +56 -6
- package/dist/index.cjs +73 -60
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -12
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +26 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -34
- package/dist/index.js.map +1 -1
- package/dist/stream.custom.cjs +26 -10
- package/dist/stream.custom.cjs.map +1 -1
- package/dist/stream.custom.js +27 -11
- package/dist/stream.custom.js.map +1 -1
- package/package.json +24 -19
package/dist/stream.custom.js
CHANGED
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import { derived, get, writable } from "svelte/store";
|
|
2
2
|
import { onDestroy } from "svelte";
|
|
3
|
-
import { MessageTupleManager, StreamManager, extractInterrupts, toMessageClass } from "@langchain/langgraph-sdk/ui";
|
|
3
|
+
import { MessageTupleManager, StreamManager, ensureMessageInstances, extractInterrupts, toMessageClass } from "@langchain/langgraph-sdk/ui";
|
|
4
4
|
import { getToolCallsWithResults } from "@langchain/langgraph-sdk/utils";
|
|
5
|
-
|
|
6
5
|
//#region src/stream.custom.ts
|
|
7
6
|
function useStreamCustom(options) {
|
|
8
|
-
const
|
|
7
|
+
const messageManager = new MessageTupleManager();
|
|
8
|
+
const stream = new StreamManager(messageManager, {
|
|
9
9
|
throttle: options.throttle ?? false,
|
|
10
10
|
subagentToolNames: options.subagentToolNames,
|
|
11
11
|
filterSubagentMessages: options.filterSubagentMessages,
|
|
12
12
|
toMessage: toMessageClass
|
|
13
13
|
});
|
|
14
14
|
let threadId = options.threadId ?? null;
|
|
15
|
+
const branch = writable("");
|
|
15
16
|
const streamValues = writable(stream.values);
|
|
16
17
|
const streamError = writable(stream.error);
|
|
17
18
|
const isLoading = writable(stream.isLoading);
|
|
19
|
+
const subagentVersion = writable(0);
|
|
18
20
|
const unsubscribe = stream.subscribe(() => {
|
|
19
21
|
streamValues.set(stream.values);
|
|
20
22
|
streamError.set(stream.error);
|
|
21
23
|
isLoading.set(stream.isLoading);
|
|
24
|
+
subagentVersion.update((v) => v + 1);
|
|
22
25
|
});
|
|
23
26
|
onDestroy(() => {
|
|
24
27
|
unsubscribe();
|
|
@@ -88,6 +91,7 @@ function useStreamCustom(options) {
|
|
|
88
91
|
onSuccess: () => void 0,
|
|
89
92
|
onError(error) {
|
|
90
93
|
options.onError?.(error, void 0);
|
|
94
|
+
submitOptions?.onError?.(error, void 0);
|
|
91
95
|
}
|
|
92
96
|
});
|
|
93
97
|
}
|
|
@@ -97,7 +101,7 @@ function useStreamCustom(options) {
|
|
|
97
101
|
const values = derived([streamValues], ([$streamValues]) => $streamValues ?? {});
|
|
98
102
|
const messages = derived([streamValues], ([$streamValues]) => {
|
|
99
103
|
if (!$streamValues) return [];
|
|
100
|
-
return getMessages($streamValues);
|
|
104
|
+
return ensureMessageInstances(getMessages($streamValues));
|
|
101
105
|
});
|
|
102
106
|
const toolCalls = derived([streamValues], ([$streamValues]) => {
|
|
103
107
|
if (!$streamValues) return [];
|
|
@@ -117,6 +121,19 @@ function useStreamCustom(options) {
|
|
|
117
121
|
if (!$streamValues) return [];
|
|
118
122
|
return getToolCallsWithResults(getMessages($streamValues)).filter((tc) => tc.aiMessage.id === message.id);
|
|
119
123
|
}
|
|
124
|
+
function setBranch(value) {
|
|
125
|
+
branch.set(value);
|
|
126
|
+
}
|
|
127
|
+
function getMessagesMetadata(message, index) {
|
|
128
|
+
const streamMetadata = messageManager.get(message.id)?.metadata;
|
|
129
|
+
if (streamMetadata != null) return {
|
|
130
|
+
messageId: message.id ?? String(index),
|
|
131
|
+
firstSeenState: void 0,
|
|
132
|
+
branch: void 0,
|
|
133
|
+
branchOptions: void 0,
|
|
134
|
+
streamMetadata
|
|
135
|
+
};
|
|
136
|
+
}
|
|
120
137
|
return {
|
|
121
138
|
values,
|
|
122
139
|
error: streamError,
|
|
@@ -124,6 +141,9 @@ function useStreamCustom(options) {
|
|
|
124
141
|
stop,
|
|
125
142
|
submit,
|
|
126
143
|
switchThread,
|
|
144
|
+
branch,
|
|
145
|
+
setBranch,
|
|
146
|
+
getMessagesMetadata,
|
|
127
147
|
queue: {
|
|
128
148
|
entries: writable([]),
|
|
129
149
|
size: writable(0),
|
|
@@ -137,12 +157,8 @@ function useStreamCustom(options) {
|
|
|
137
157
|
messages,
|
|
138
158
|
toolCalls,
|
|
139
159
|
getToolCalls,
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
},
|
|
143
|
-
get activeSubagents() {
|
|
144
|
-
return stream.getActiveSubagents();
|
|
145
|
-
},
|
|
160
|
+
subagents: derived(subagentVersion, () => stream.getSubagents()),
|
|
161
|
+
activeSubagents: derived(subagentVersion, () => stream.getActiveSubagents()),
|
|
146
162
|
getSubagent(toolCallId) {
|
|
147
163
|
return stream.getSubagent(toolCallId);
|
|
148
164
|
},
|
|
@@ -154,7 +170,7 @@ function useStreamCustom(options) {
|
|
|
154
170
|
}
|
|
155
171
|
};
|
|
156
172
|
}
|
|
157
|
-
|
|
158
173
|
//#endregion
|
|
159
174
|
export { useStreamCustom };
|
|
175
|
+
|
|
160
176
|
//# sourceMappingURL=stream.custom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.custom.js","names":[],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { writable, derived, get } from \"svelte/store\";\nimport { onDestroy } from \"svelte\";\nimport {\n StreamManager,\n MessageTupleManager,\n extractInterrupts,\n toMessageClass,\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} from \"@langchain/langgraph-sdk/ui\";\nimport { getToolCallsWithResults } from \"@langchain/langgraph-sdk/utils\";\nimport type { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\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 let threadId: string | null = options.threadId ?? null;\n\n const streamValues = writable<StateType | null>(stream.values);\n const streamError = writable<unknown>(stream.error);\n const isLoading = writable(stream.isLoading);\n\n const unsubscribe = stream.subscribe(() => {\n streamValues.set(stream.values);\n streamError.set(stream.error);\n isLoading.set(stream.isLoading);\n });\n\n onDestroy(() => {\n unsubscribe();\n });\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 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;\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 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: () => undefined,\n onError(error) {\n options.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 = derived(\n [streamValues],\n ([$streamValues]) => $streamValues ?? ({} as StateType),\n );\n\n const messages = derived([streamValues], ([$streamValues]) => {\n if (!$streamValues) return [] as Message<ToolCallType>[];\n return getMessages($streamValues) as Message<ToolCallType>[];\n });\n\n const toolCalls = derived([streamValues], ([$streamValues]) => {\n if (!$streamValues) return [];\n const msgs = getMessages($streamValues);\n return getToolCallsWithResults<ToolCallType>(msgs);\n });\n\n const interrupt = derived([streamValues], ([$streamValues]) =>\n extractInterrupts<InterruptType>($streamValues),\n );\n\n const interrupts = derived(\n [streamValues],\n ([$streamValues]): Interrupt<InterruptType>[] => {\n if (\n $streamValues != null &&\n \"__interrupt__\" in $streamValues &&\n Array.isArray($streamValues.__interrupt__)\n ) {\n const valueInterrupts = $streamValues.__interrupt__;\n if (valueInterrupts.length === 0) return [{ when: \"breakpoint\" }];\n return valueInterrupts;\n }\n\n return [];\n },\n );\n\n function getToolCalls(message: Message) {\n const $streamValues = get(streamValues);\n if (!$streamValues) return [];\n const msgs = getMessages($streamValues);\n const allToolCalls = getToolCallsWithResults<ToolCallType>(msgs);\n return allToolCalls.filter((tc) => tc.aiMessage.id === message.id);\n }\n\n return {\n values,\n error: streamError,\n isLoading,\n\n stop,\n submit,\n switchThread,\n\n queue: {\n entries: writable([]),\n size: writable(0),\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n interrupt,\n interrupts,\n\n messages,\n toolCalls,\n getToolCalls,\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stream.custom.js","names":[],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { writable, derived, get } from \"svelte/store\";\nimport { onDestroy } from \"svelte\";\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 { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\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 let threadId: string | null = options.threadId ?? null;\n\n const branch = writable<string>(\"\");\n\n const streamValues = writable<StateType | null>(stream.values);\n const streamError = writable<unknown>(stream.error);\n const isLoading = writable(stream.isLoading);\n\n const subagentVersion = writable(0);\n\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 onDestroy(() => {\n unsubscribe();\n });\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 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;\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 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: () => undefined,\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 = derived(\n [streamValues],\n ([$streamValues]) => $streamValues ?? ({} as StateType),\n );\n\n const messages = derived([streamValues], ([$streamValues]) => {\n if (!$streamValues) return [];\n return ensureMessageInstances(getMessages($streamValues));\n });\n\n const toolCalls = derived([streamValues], ([$streamValues]) => {\n if (!$streamValues) return [];\n const msgs = getMessages($streamValues);\n return getToolCallsWithResults<ToolCallType>(msgs);\n });\n\n const interrupt = derived([streamValues], ([$streamValues]) =>\n extractInterrupts<InterruptType>($streamValues),\n );\n\n const interrupts = derived(\n [streamValues],\n ([$streamValues]): Interrupt<InterruptType>[] => {\n if (\n $streamValues != null &&\n \"__interrupt__\" in $streamValues &&\n Array.isArray($streamValues.__interrupt__)\n ) {\n const valueInterrupts = $streamValues.__interrupt__;\n if (valueInterrupts.length === 0) return [{ when: \"breakpoint\" }];\n return valueInterrupts;\n }\n\n return [];\n },\n );\n\n function getToolCalls(message: Message) {\n const $streamValues = get(streamValues);\n if (!$streamValues) return [];\n const msgs = getMessages($streamValues);\n const allToolCalls = getToolCallsWithResults<ToolCallType>(msgs);\n return allToolCalls.filter((tc) => tc.aiMessage.id === message.id);\n }\n\n function setBranch(value: string) {\n branch.set(value);\n }\n\n function getMessagesMetadata(\n message: Message,\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: writable([]),\n size: writable(0),\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n interrupt,\n interrupts,\n\n messages,\n toolCalls,\n getToolCalls,\n\n subagents: derived(subagentVersion, () => stream.getSubagents()),\n\n activeSubagents: derived(subagentVersion, () =>\n 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"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,42 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@langchain/svelte",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Svelte integration for LangGraph & LangChain",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+ssh://git@github.com/langchain-ai/langgraphjs.git",
|
|
10
|
+
"directory": "libs/sdk-svelte"
|
|
11
|
+
},
|
|
7
12
|
"dependencies": {
|
|
8
|
-
"@langchain/langgraph-sdk": "^1.
|
|
13
|
+
"@langchain/langgraph-sdk": "^1.7.0"
|
|
9
14
|
},
|
|
10
15
|
"devDependencies": {
|
|
11
|
-
"@hono/node-server": "^1.
|
|
12
|
-
"@langchain/core": "^1.1.
|
|
16
|
+
"@hono/node-server": "^1.19.11",
|
|
17
|
+
"@langchain/core": "^1.1.31",
|
|
13
18
|
"@langchain/scripts": "^0.1.4",
|
|
14
19
|
"@sveltejs/vite-plugin-svelte": "^6.2.4",
|
|
15
|
-
"@tsconfig/recommended": "^1.0.
|
|
16
|
-
"@types/node": "^
|
|
17
|
-
"@types/uuid": "^9.0.1",
|
|
20
|
+
"@tsconfig/recommended": "^1.0.13",
|
|
21
|
+
"@types/node": "^25.4.0",
|
|
18
22
|
"@typescript-eslint/eslint-plugin": "^6.12.0",
|
|
19
23
|
"@typescript-eslint/parser": "^6.12.0",
|
|
20
|
-
"@vitest/browser": "^
|
|
21
|
-
"
|
|
24
|
+
"@vitest/browser": "^4.0.18",
|
|
25
|
+
"@vitest/browser-webdriverio": "^4.0.18",
|
|
26
|
+
"deepagents": "^1.8.1",
|
|
22
27
|
"eslint": "^8.33.0",
|
|
23
28
|
"eslint-config-airbnb-base": "^15.0.0",
|
|
24
29
|
"eslint-config-prettier": "^8.6.0",
|
|
25
30
|
"eslint-plugin-import": "^2.29.1",
|
|
26
31
|
"eslint-plugin-no-instanceof": "^1.0.1",
|
|
27
32
|
"eslint-plugin-prettier": "^4.2.1",
|
|
28
|
-
"hono": "^4.7
|
|
29
|
-
"langchain": "^1.2.
|
|
33
|
+
"hono": "^4.12.7",
|
|
34
|
+
"langchain": "^1.2.30",
|
|
30
35
|
"prettier": "^3.8.1",
|
|
31
|
-
"svelte": "^5.
|
|
32
|
-
"typescript": "^
|
|
33
|
-
"vitest": "^
|
|
34
|
-
"vitest-browser-svelte": "^
|
|
35
|
-
"webdriverio": "^9.
|
|
36
|
+
"svelte": "^5.53.9",
|
|
37
|
+
"typescript": "^5.9.3",
|
|
38
|
+
"vitest": "^4.0.18",
|
|
39
|
+
"vitest-browser-svelte": "^2.0.2",
|
|
40
|
+
"webdriverio": "^9.25.0",
|
|
36
41
|
"zod": "^4.3.6",
|
|
37
|
-
"@langchain/langgraph
|
|
38
|
-
"@langchain/langgraph-api": "^1.1.
|
|
39
|
-
"@langchain/langgraph": "^1.
|
|
42
|
+
"@langchain/langgraph": "^1.2.2",
|
|
43
|
+
"@langchain/langgraph-api": "^1.1.15",
|
|
44
|
+
"@langchain/langgraph-checkpoint": "^1.0.0"
|
|
40
45
|
},
|
|
41
46
|
"peerDependencies": {
|
|
42
47
|
"@langchain/core": "^1.1.27",
|