@langchain/svelte 0.4.6 → 1.0.0
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 +37 -443
- package/dist/context.cjs +72 -0
- package/dist/context.cjs.map +1 -0
- package/dist/context.d.cts +72 -0
- package/dist/context.d.cts.map +1 -0
- package/dist/context.d.ts +72 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +70 -0
- package/dist/context.js.map +1 -0
- package/dist/index.cjs +32 -316
- package/dist/index.d.cts +11 -97
- package/dist/index.d.ts +11 -97
- package/dist/index.js +10 -290
- package/dist/selectors.svelte.cjs +214 -0
- package/dist/selectors.svelte.cjs.map +1 -0
- package/dist/selectors.svelte.d.cts +146 -0
- package/dist/selectors.svelte.d.cts.map +1 -0
- package/dist/selectors.svelte.d.ts +146 -0
- package/dist/selectors.svelte.d.ts.map +1 -0
- package/dist/selectors.svelte.js +204 -0
- package/dist/selectors.svelte.js.map +1 -0
- package/dist/use-audio-player.svelte.cjs +608 -0
- package/dist/use-audio-player.svelte.cjs.map +1 -0
- package/dist/use-audio-player.svelte.d.cts +70 -0
- package/dist/use-audio-player.svelte.d.cts.map +1 -0
- package/dist/use-audio-player.svelte.d.ts +70 -0
- package/dist/use-audio-player.svelte.d.ts.map +1 -0
- package/dist/use-audio-player.svelte.js +608 -0
- package/dist/use-audio-player.svelte.js.map +1 -0
- package/dist/use-media-url.svelte.cjs +54 -0
- package/dist/use-media-url.svelte.cjs.map +1 -0
- package/dist/use-media-url.svelte.d.cts +29 -0
- package/dist/use-media-url.svelte.d.cts.map +1 -0
- package/dist/use-media-url.svelte.d.ts +29 -0
- package/dist/use-media-url.svelte.d.ts.map +1 -0
- package/dist/use-media-url.svelte.js +54 -0
- package/dist/use-media-url.svelte.js.map +1 -0
- package/dist/use-projection.svelte.cjs +62 -0
- package/dist/use-projection.svelte.cjs.map +1 -0
- package/dist/use-projection.svelte.d.cts +65 -0
- package/dist/use-projection.svelte.d.cts.map +1 -0
- package/dist/use-projection.svelte.d.ts +65 -0
- package/dist/use-projection.svelte.d.ts.map +1 -0
- package/dist/use-projection.svelte.js +62 -0
- package/dist/use-projection.svelte.js.map +1 -0
- package/dist/use-stream.svelte.cjs +193 -0
- package/dist/use-stream.svelte.cjs.map +1 -0
- package/dist/use-stream.svelte.d.cts +116 -0
- package/dist/use-stream.svelte.d.cts.map +1 -0
- package/dist/use-stream.svelte.d.ts +116 -0
- package/dist/use-stream.svelte.d.ts.map +1 -0
- package/dist/use-stream.svelte.js +191 -0
- package/dist/use-stream.svelte.js.map +1 -0
- package/dist/use-video-player.svelte.cjs +233 -0
- package/dist/use-video-player.svelte.cjs.map +1 -0
- package/dist/use-video-player.svelte.d.cts +66 -0
- package/dist/use-video-player.svelte.d.cts.map +1 -0
- package/dist/use-video-player.svelte.d.ts +66 -0
- package/dist/use-video-player.svelte.d.ts.map +1 -0
- package/dist/use-video-player.svelte.js +233 -0
- package/dist/use-video-player.svelte.js.map +1 -0
- package/package.json +9 -8
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/stream.custom.cjs +0 -122
- package/dist/stream.custom.cjs.map +0 -1
- package/dist/stream.custom.js +0 -122
- package/dist/stream.custom.js.map +0 -1
- package/dist/subagents.cjs +0 -81
- package/dist/subagents.cjs.map +0 -1
- package/dist/subagents.js +0 -81
- package/dist/subagents.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,97 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* ```svelte
|
|
13
|
-
* <script lang="ts">
|
|
14
|
-
* import { useStream, setStreamContext } from "@langchain/svelte";
|
|
15
|
-
*
|
|
16
|
-
* const stream = useStream({ assistantId: "agent", apiUrl: "..." });
|
|
17
|
-
* setStreamContext(stream);
|
|
18
|
-
* </script>
|
|
19
|
-
*
|
|
20
|
-
* <ChildComponent />
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
declare function setStreamContext<T extends ReturnType<typeof useStream>>(stream: T): T;
|
|
24
|
-
/**
|
|
25
|
-
* Retrieves the `useStream` instance previously provided by a parent
|
|
26
|
-
* component via {@link setStreamContext} or {@link provideStream}.
|
|
27
|
-
* Must be called during component initialisation.
|
|
28
|
-
*
|
|
29
|
-
* @throws If no stream context has been set by an ancestor component.
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```svelte
|
|
33
|
-
* <script lang="ts">
|
|
34
|
-
* import { getStreamContext } from "@langchain/svelte";
|
|
35
|
-
*
|
|
36
|
-
* const stream = getStreamContext();
|
|
37
|
-
* </script>
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
declare function getStreamContext<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(): WithClassMessages<ResolveStreamInterface$1<T, InferBag$1<T, Bag>>>;
|
|
41
|
-
/**
|
|
42
|
-
* Creates a shared `useStream` instance and makes it available to all
|
|
43
|
-
* descendant components via Svelte's `setContext`/`getContext`.
|
|
44
|
-
*
|
|
45
|
-
* Call this in a parent component's `<script>` block. Children access
|
|
46
|
-
* the shared stream via {@link getStream}.
|
|
47
|
-
*
|
|
48
|
-
* Uses the same context key as {@link setStreamContext}/{@link getStreamContext},
|
|
49
|
-
* so both retrieval functions work interchangeably.
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* ```svelte
|
|
53
|
-
* <!-- ChatContainer.svelte -->
|
|
54
|
-
* <script lang="ts">
|
|
55
|
-
* import { provideStream } from "@langchain/svelte";
|
|
56
|
-
*
|
|
57
|
-
* provideStream({
|
|
58
|
-
* assistantId: "agent",
|
|
59
|
-
* apiUrl: "http://localhost:2024",
|
|
60
|
-
* });
|
|
61
|
-
* </script>
|
|
62
|
-
*
|
|
63
|
-
* <ChatHeader />
|
|
64
|
-
* <MessageList />
|
|
65
|
-
* <MessageInput />
|
|
66
|
-
* ```
|
|
67
|
-
*
|
|
68
|
-
* @returns The stream instance (same as calling `useStream` directly).
|
|
69
|
-
*/
|
|
70
|
-
declare function provideStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: ResolveStreamOptions$1<T, InferBag$1<T, Bag>> | UseStreamCustomOptions$1<InferStateType$1<T>, InferBag$1<T, Bag>>): ReturnType<typeof useStream<T, Bag>>;
|
|
71
|
-
/**
|
|
72
|
-
* Retrieves the shared stream instance from the nearest ancestor that
|
|
73
|
-
* called {@link provideStream} or {@link setStreamContext}.
|
|
74
|
-
*
|
|
75
|
-
* Throws if no ancestor has provided a stream.
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* ```svelte
|
|
79
|
-
* <!-- MessageList.svelte -->
|
|
80
|
-
* <script lang="ts">
|
|
81
|
-
* import { getStream } from "@langchain/svelte";
|
|
82
|
-
*
|
|
83
|
-
* const stream = getStream();
|
|
84
|
-
* </script>
|
|
85
|
-
*
|
|
86
|
-
* {#each stream.messages as msg (msg.id)}
|
|
87
|
-
* <div>{msg.content}</div>
|
|
88
|
-
* {/each}
|
|
89
|
-
* ```
|
|
90
|
-
*/
|
|
91
|
-
declare function getStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(): ReturnType<typeof useStream<T, Bag>>;
|
|
92
|
-
declare function useStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: ResolveStreamOptions$1<T, InferBag$1<T, Bag>>): WithClassMessages<ResolveStreamInterface$1<T, InferBag$1<T, Bag>>>;
|
|
93
|
-
declare function useStream<T = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(options: UseStreamCustomOptions$1<InferStateType$1<T>, InferBag$1<T, Bag>>): WithClassMessages<ResolveStreamInterface$1<T, InferBag$1<T, Bag>>>;
|
|
94
|
-
type ToolCallWithResult<ToolCall = DefaultToolCall$1> = ToolCallWithResult$1<ToolCall, ToolMessage, AIMessage>;
|
|
95
|
-
//#endregion
|
|
96
|
-
export { type AgentTypeConfigLike, type AnyHeadlessToolImplementation, type BaseStream, type BaseSubagentState, type ClassSubagentStreamInterface, type CompiledSubAgentLike, type DeepAgentTypeConfigLike, type DefaultSubagentStates, type DefaultToolCall, type ExtractAgentConfig, type ExtractDeepAgentConfig, type ExtractSubAgentMiddleware, FetchStreamTransport, type FlushPendingHeadlessToolInterruptsOptions, type GetToolCallsType, type HeadlessToolImplementation, type HeadlessToolInterrupt, type InferAgentToolCalls, type InferBag, type InferDeepAgentSubagents, type InferNodeNames, type InferStateType, type InferSubagentByName, type InferSubagentNames, type InferSubagentState, type InferSubagentStates, type InferToolCalls, type IsAgentLike, type IsDeepAgentLike, type MessageMetadata, type OnToolCallback, type QueueEntry, type QueueInterface, type ResolveStreamInterface, type ResolveStreamOptions, type SubAgentLike, type SubagentApi, SubagentManager, type SubagentStateMap, type SubagentStatus, type SubagentStream, type SubagentStreamInterface, type SubagentToolCall, type ToolCallFromTool, type ToolCallState, ToolCallWithResult, type ToolCallsFromTools, type ToolEvent, type UseAgentStream, type UseAgentStreamOptions, type UseDeepAgentStream, type UseDeepAgentStreamOptions, type UseStreamCustomOptions, type UseStreamOptions, type UseStreamThread, type UseStreamTransport, calculateDepthFromNamespace, executeHeadlessTool, extractParentIdFromNamespace, extractToolCallIdFromNamespace, filterOutHeadlessToolInterrupts, findHeadlessTool, flushPendingHeadlessToolInterrupts, getStream, getStreamContext, handleHeadlessToolInterrupt, headlessToolResumeCommand, isHeadlessToolInterrupt, isSubagentNamespace, parseHeadlessToolInterruptPayload, provideStream, setStreamContext, useStream };
|
|
97
|
-
//# sourceMappingURL=index.d.ts.map
|
|
1
|
+
import { AgentServerOptions, AnyStream, CustomAdapterOptions, STREAM_CONTROLLER, StateOf, ThreadStream, UseStreamOptions, UseStreamResult, UseStreamReturn, useStream } from "./use-stream.svelte.js";
|
|
2
|
+
import { useProjection } from "./use-projection.svelte.js";
|
|
3
|
+
import { SelectorTarget, SubmissionQueueEntry, SubmissionQueueSnapshot, UseSubmissionQueueReturn, useAudio, useChannel, useExtension, useFiles, useImages, useMessageMetadata, useMessages, useSubmissionQueue, useToolCalls, useValues, useVideo } from "./selectors.svelte.js";
|
|
4
|
+
import { useMediaURL } from "./use-media-url.svelte.js";
|
|
5
|
+
import { AudioPlayerHandle, PlayerStatus, UseAudioPlayerOptions, useAudioPlayer } from "./use-audio-player.svelte.js";
|
|
6
|
+
import { UseVideoPlayerOptions, VideoPlayerHandle, useVideoPlayer } from "./use-video-player.svelte.js";
|
|
7
|
+
import { ProvideStreamCustomProps, ProvideStreamProps, STREAM_CONTEXT_KEY, getStream, provideStream } from "./context.js";
|
|
8
|
+
import { AnyHeadlessToolImplementation, DefaultToolCall, FlushPendingHeadlessToolInterruptsOptions, HeadlessToolImplementation, HeadlessToolInterrupt, HttpAgentServerAdapter, HttpAgentServerAdapterOptions, OnToolCallback, ToolCallFromTool, ToolCallState, ToolCallsFromTools, ToolEvent, executeHeadlessTool, filterOutHeadlessToolInterrupts, findHeadlessTool, flushPendingHeadlessToolInterrupts, handleHeadlessToolInterrupt, headlessToolResumeCommand, isHeadlessToolInterrupt, parseHeadlessToolInterruptPayload } from "@langchain/langgraph-sdk";
|
|
9
|
+
import { AgentServerAdapter, AnyMediaHandle, AssembledToolCall, AudioMedia, Channel, Event, FileMedia, ImageMedia, InferStateType, InferSubagentStates, InferToolCalls, MediaAssemblyError, MediaAssemblyErrorKind, MediaBase, MediaBlockType, MessageMetadata, MessageMetadataMap, StreamSubmitOptions, SubagentDiscoverySnapshot, SubgraphDiscoverySnapshot, ToolCallStatus, VideoMedia, WidenUpdateMessages } from "@langchain/langgraph-sdk/stream";
|
|
10
|
+
import { AcceptBaseMessages, GetToolCallsType, ResolveStreamInterface, ResolveStreamOptions, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions } from "@langchain/langgraph-sdk/ui";
|
|
11
|
+
export { type AcceptBaseMessages, type AgentServerAdapter, type AgentServerOptions, type AnyHeadlessToolImplementation, type AnyMediaHandle, type AnyStream, type AssembledToolCall, type AudioMedia, type AudioPlayerHandle, type Channel, type CustomAdapterOptions, type DefaultToolCall, type Event, type FileMedia, type FlushPendingHeadlessToolInterruptsOptions, type GetToolCallsType, type HeadlessToolImplementation, type HeadlessToolInterrupt, HttpAgentServerAdapter, type HttpAgentServerAdapterOptions, type ImageMedia, type InferStateType, type InferSubagentStates, type InferToolCalls, MediaAssemblyError, type MediaAssemblyErrorKind, type MediaBase, type MediaBlockType, type MessageMetadata, type MessageMetadataMap, type OnToolCallback, type PlayerStatus, type ProvideStreamCustomProps, type ProvideStreamProps, type ResolveStreamInterface, type ResolveStreamOptions, STREAM_CONTEXT_KEY, STREAM_CONTROLLER, type SelectorTarget, type StateOf, type StreamSubmitOptions, type SubagentDiscoverySnapshot, type SubgraphDiscoverySnapshot, type SubmissionQueueEntry, type SubmissionQueueSnapshot, type ThreadStream, type ToolCallFromTool, type ToolCallState, type ToolCallStatus, type ToolCallsFromTools, type ToolEvent, type UseAgentStream, type UseAgentStreamOptions, type UseAudioPlayerOptions, type UseDeepAgentStream, type UseDeepAgentStreamOptions, type UseStreamOptions, type UseStreamResult, type UseStreamReturn, type UseSubmissionQueueReturn, type UseVideoPlayerOptions, type VideoMedia, type VideoPlayerHandle, type WidenUpdateMessages, executeHeadlessTool, filterOutHeadlessToolInterrupts, findHeadlessTool, flushPendingHeadlessToolInterrupts, getStream, handleHeadlessToolInterrupt, headlessToolResumeCommand, isHeadlessToolInterrupt, parseHeadlessToolInterruptPayload, provideStream, useAudio, useAudioPlayer, useChannel, useExtension, useFiles, useImages, useMediaURL, useMessageMetadata, useMessages, useProjection, useStream, useSubmissionQueue, useToolCalls, useValues, useVideo, useVideoPlayer };
|
package/dist/index.js
CHANGED
|
@@ -1,290 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* Svelte's context API. Must be called during component initialisation
|
|
12
|
-
* (i.e. at the top level of a `<script>` block).
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```svelte
|
|
16
|
-
* <script lang="ts">
|
|
17
|
-
* import { useStream, setStreamContext } from "@langchain/svelte";
|
|
18
|
-
*
|
|
19
|
-
* const stream = useStream({ assistantId: "agent", apiUrl: "..." });
|
|
20
|
-
* setStreamContext(stream);
|
|
21
|
-
* <\/script>
|
|
22
|
-
*
|
|
23
|
-
* <ChildComponent />
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
function setStreamContext(stream) {
|
|
27
|
-
setContext(STREAM_CONTEXT_KEY, stream);
|
|
28
|
-
return stream;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Retrieves the `useStream` instance previously provided by a parent
|
|
32
|
-
* component via {@link setStreamContext} or {@link provideStream}.
|
|
33
|
-
* Must be called during component initialisation.
|
|
34
|
-
*
|
|
35
|
-
* @throws If no stream context has been set by an ancestor component.
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```svelte
|
|
39
|
-
* <script lang="ts">
|
|
40
|
-
* import { getStreamContext } from "@langchain/svelte";
|
|
41
|
-
*
|
|
42
|
-
* const stream = getStreamContext();
|
|
43
|
-
* <\/script>
|
|
44
|
-
* ```
|
|
45
|
-
*/
|
|
46
|
-
function getStreamContext() {
|
|
47
|
-
const ctx = getContext(STREAM_CONTEXT_KEY);
|
|
48
|
-
if (!ctx) throw new Error("getStreamContext must be used within a component that has called setStreamContext");
|
|
49
|
-
return ctx;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Creates a shared `useStream` instance and makes it available to all
|
|
53
|
-
* descendant components via Svelte's `setContext`/`getContext`.
|
|
54
|
-
*
|
|
55
|
-
* Call this in a parent component's `<script>` block. Children access
|
|
56
|
-
* the shared stream via {@link getStream}.
|
|
57
|
-
*
|
|
58
|
-
* Uses the same context key as {@link setStreamContext}/{@link getStreamContext},
|
|
59
|
-
* so both retrieval functions work interchangeably.
|
|
60
|
-
*
|
|
61
|
-
* @example
|
|
62
|
-
* ```svelte
|
|
63
|
-
* <!-- ChatContainer.svelte -->
|
|
64
|
-
* <script lang="ts">
|
|
65
|
-
* import { provideStream } from "@langchain/svelte";
|
|
66
|
-
*
|
|
67
|
-
* provideStream({
|
|
68
|
-
* assistantId: "agent",
|
|
69
|
-
* apiUrl: "http://localhost:2024",
|
|
70
|
-
* });
|
|
71
|
-
* <\/script>
|
|
72
|
-
*
|
|
73
|
-
* <ChatHeader />
|
|
74
|
-
* <MessageList />
|
|
75
|
-
* <MessageInput />
|
|
76
|
-
* ```
|
|
77
|
-
*
|
|
78
|
-
* @returns The stream instance (same as calling `useStream` directly).
|
|
79
|
-
*/
|
|
80
|
-
function provideStream(options) {
|
|
81
|
-
const stream = useStream(options);
|
|
82
|
-
setContext(STREAM_CONTEXT_KEY, stream);
|
|
83
|
-
return stream;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Retrieves the shared stream instance from the nearest ancestor that
|
|
87
|
-
* called {@link provideStream} or {@link setStreamContext}.
|
|
88
|
-
*
|
|
89
|
-
* Throws if no ancestor has provided a stream.
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* ```svelte
|
|
93
|
-
* <!-- MessageList.svelte -->
|
|
94
|
-
* <script lang="ts">
|
|
95
|
-
* import { getStream } from "@langchain/svelte";
|
|
96
|
-
*
|
|
97
|
-
* const stream = getStream();
|
|
98
|
-
* <\/script>
|
|
99
|
-
*
|
|
100
|
-
* {#each stream.messages as msg (msg.id)}
|
|
101
|
-
* <div>{msg.content}</div>
|
|
102
|
-
* {/each}
|
|
103
|
-
* ```
|
|
104
|
-
*/
|
|
105
|
-
function getStream() {
|
|
106
|
-
const context = getContext(STREAM_CONTEXT_KEY);
|
|
107
|
-
if (context == null) throw new Error("getStream() requires a parent component to call provideStream(). Add provideStream({ assistantId: '...' }) in an ancestor component.");
|
|
108
|
-
return context;
|
|
109
|
-
}
|
|
110
|
-
function useStream(options) {
|
|
111
|
-
if ("transport" in options) return useStreamCustom(options);
|
|
112
|
-
return useStreamLGP(options);
|
|
113
|
-
}
|
|
114
|
-
function useStreamLGP(options) {
|
|
115
|
-
const client = options.client ?? new Client({ apiUrl: options.apiUrl });
|
|
116
|
-
const orchestrator = new StreamOrchestrator(options, {
|
|
117
|
-
getClient: () => client,
|
|
118
|
-
getAssistantId: () => options.assistantId,
|
|
119
|
-
getMessagesKey: () => options.messagesKey ?? "messages"
|
|
120
|
-
});
|
|
121
|
-
orchestrator.initThreadId(options.threadId ?? void 0);
|
|
122
|
-
const version = writable(0);
|
|
123
|
-
const reactiveSubagents = createReactiveSubagentAccessors({
|
|
124
|
-
getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),
|
|
125
|
-
getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),
|
|
126
|
-
getSubagentsByMessage: (messageId) => orchestrator.getSubagentsByMessage(messageId)
|
|
127
|
-
}, version);
|
|
128
|
-
const unsubscribe = orchestrator.subscribe(() => {
|
|
129
|
-
version.update((v) => v + 1);
|
|
130
|
-
});
|
|
131
|
-
let fetchController = null;
|
|
132
|
-
const unsubReconstruct = derived(version, () => {
|
|
133
|
-
const hvMessages = orchestrator.messages;
|
|
134
|
-
if (!options.filterSubagentMessages) return false;
|
|
135
|
-
if (orchestrator.isLoading || orchestrator.historyData.isLoading) return false;
|
|
136
|
-
return hvMessages.length > 0;
|
|
137
|
-
}).subscribe(($should) => {
|
|
138
|
-
if ($should) {
|
|
139
|
-
fetchController?.abort();
|
|
140
|
-
fetchController = orchestrator.reconstructSubagentsIfNeeded();
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
const unsubDrain = derived(version, () => orchestrator.isLoading).subscribe(() => {
|
|
144
|
-
orchestrator.drainQueue();
|
|
145
|
-
});
|
|
146
|
-
let { shouldReconnect } = orchestrator;
|
|
147
|
-
onMount(() => {
|
|
148
|
-
if (shouldReconnect) {
|
|
149
|
-
if (orchestrator.tryReconnect()) shouldReconnect = false;
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
onDestroy(() => {
|
|
153
|
-
fetchController?.abort();
|
|
154
|
-
unsubscribe();
|
|
155
|
-
unsubReconstruct();
|
|
156
|
-
unsubDrain();
|
|
157
|
-
orchestrator.dispose();
|
|
158
|
-
});
|
|
159
|
-
const valuesStore = derived(version, () => {
|
|
160
|
-
orchestrator.trackStreamMode("values");
|
|
161
|
-
return orchestrator.values;
|
|
162
|
-
});
|
|
163
|
-
const errorStore = derived(version, () => orchestrator.error);
|
|
164
|
-
const isLoadingStore = derived(version, () => orchestrator.isLoading);
|
|
165
|
-
const branchStore = derived(version, () => orchestrator.branch);
|
|
166
|
-
const messagesStore = derived(version, () => {
|
|
167
|
-
orchestrator.trackStreamMode("messages-tuple", "values");
|
|
168
|
-
return ensureMessageInstances(orchestrator.messages);
|
|
169
|
-
});
|
|
170
|
-
const toolCallsStore = derived(version, () => {
|
|
171
|
-
orchestrator.trackStreamMode("messages-tuple", "values");
|
|
172
|
-
return orchestrator.toolCalls;
|
|
173
|
-
});
|
|
174
|
-
const interruptStore = derived(version, () => orchestrator.interrupt);
|
|
175
|
-
const interruptsStore = derived(version, () => orchestrator.interrupts);
|
|
176
|
-
const historyListStore = derived(version, () => orchestrator.flatHistory);
|
|
177
|
-
const isThreadLoadingStore = derived(version, () => orchestrator.isThreadLoading);
|
|
178
|
-
const experimentalBranchTreeStore = derived(version, () => orchestrator.experimental_branchTree);
|
|
179
|
-
const subagentsStore = derived(version, () => {
|
|
180
|
-
orchestrator.trackStreamMode("updates", "messages-tuple");
|
|
181
|
-
return reactiveSubagents.mapSubagents(orchestrator.subagents);
|
|
182
|
-
});
|
|
183
|
-
const activeSubagentsStore = derived(version, () => {
|
|
184
|
-
orchestrator.trackStreamMode("updates", "messages-tuple");
|
|
185
|
-
return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
|
|
186
|
-
});
|
|
187
|
-
const queueEntriesStore = derived(version, () => orchestrator.queueEntries);
|
|
188
|
-
const queueSizeStore = derived(version, () => orchestrator.queueSize);
|
|
189
|
-
const valuesRef = fromStore(valuesStore);
|
|
190
|
-
const errorRef = fromStore(errorStore);
|
|
191
|
-
const isLoadingRef = fromStore(isLoadingStore);
|
|
192
|
-
const branchRef = fromStore(branchStore);
|
|
193
|
-
const messagesRef = fromStore(messagesStore);
|
|
194
|
-
const toolCallsRef = fromStore(toolCallsStore);
|
|
195
|
-
const interruptRef = fromStore(interruptStore);
|
|
196
|
-
const interruptsRef = fromStore(interruptsStore);
|
|
197
|
-
const historyListRef = fromStore(historyListStore);
|
|
198
|
-
const isThreadLoadingRef = fromStore(isThreadLoadingStore);
|
|
199
|
-
const experimentalBranchTreeRef = fromStore(experimentalBranchTreeStore);
|
|
200
|
-
const subagentsRef = fromStore(subagentsStore);
|
|
201
|
-
const activeSubagentsRef = fromStore(activeSubagentsStore);
|
|
202
|
-
const queueEntriesRef = fromStore(queueEntriesStore);
|
|
203
|
-
const queueSizeRef = fromStore(queueSizeStore);
|
|
204
|
-
return {
|
|
205
|
-
assistantId: options.assistantId,
|
|
206
|
-
client,
|
|
207
|
-
get values() {
|
|
208
|
-
return valuesRef.current;
|
|
209
|
-
},
|
|
210
|
-
get error() {
|
|
211
|
-
return errorRef.current;
|
|
212
|
-
},
|
|
213
|
-
get isLoading() {
|
|
214
|
-
return isLoadingRef.current;
|
|
215
|
-
},
|
|
216
|
-
get isThreadLoading() {
|
|
217
|
-
return isThreadLoadingRef.current;
|
|
218
|
-
},
|
|
219
|
-
get branch() {
|
|
220
|
-
return branchRef.current;
|
|
221
|
-
},
|
|
222
|
-
setBranch(value) {
|
|
223
|
-
orchestrator.setBranch(value);
|
|
224
|
-
},
|
|
225
|
-
get messages() {
|
|
226
|
-
return messagesRef.current;
|
|
227
|
-
},
|
|
228
|
-
get toolCalls() {
|
|
229
|
-
return toolCallsRef.current;
|
|
230
|
-
},
|
|
231
|
-
getToolCalls(message) {
|
|
232
|
-
return orchestrator.getToolCalls(message);
|
|
233
|
-
},
|
|
234
|
-
get interrupt() {
|
|
235
|
-
return interruptRef.current;
|
|
236
|
-
},
|
|
237
|
-
get interrupts() {
|
|
238
|
-
return interruptsRef.current;
|
|
239
|
-
},
|
|
240
|
-
get history() {
|
|
241
|
-
return historyListRef.current;
|
|
242
|
-
},
|
|
243
|
-
get experimental_branchTree() {
|
|
244
|
-
return experimentalBranchTreeRef.current;
|
|
245
|
-
},
|
|
246
|
-
getMessagesMetadata(message, index) {
|
|
247
|
-
return orchestrator.getMessagesMetadata(message, index);
|
|
248
|
-
},
|
|
249
|
-
submit: (...args) => orchestrator.submit(...args),
|
|
250
|
-
stop: () => orchestrator.stop(),
|
|
251
|
-
joinStream: (...args) => orchestrator.joinStream(...args),
|
|
252
|
-
queue: {
|
|
253
|
-
get entries() {
|
|
254
|
-
return queueEntriesRef.current;
|
|
255
|
-
},
|
|
256
|
-
get size() {
|
|
257
|
-
return queueSizeRef.current;
|
|
258
|
-
},
|
|
259
|
-
cancel: (id) => orchestrator.cancelQueueItem(id),
|
|
260
|
-
clear: () => orchestrator.clearQueue()
|
|
261
|
-
},
|
|
262
|
-
switchThread(newThreadId) {
|
|
263
|
-
orchestrator.switchThread(newThreadId);
|
|
264
|
-
},
|
|
265
|
-
get subagents() {
|
|
266
|
-
orchestrator.trackStreamMode("updates", "messages-tuple");
|
|
267
|
-
return subagentsRef.current;
|
|
268
|
-
},
|
|
269
|
-
get activeSubagents() {
|
|
270
|
-
orchestrator.trackStreamMode("updates", "messages-tuple");
|
|
271
|
-
return activeSubagentsRef.current;
|
|
272
|
-
},
|
|
273
|
-
getSubagent(toolCallId) {
|
|
274
|
-
orchestrator.trackStreamMode("updates", "messages-tuple");
|
|
275
|
-
return reactiveSubagents.getSubagent(toolCallId);
|
|
276
|
-
},
|
|
277
|
-
getSubagentsByType(type) {
|
|
278
|
-
orchestrator.trackStreamMode("updates", "messages-tuple");
|
|
279
|
-
return reactiveSubagents.getSubagentsByType(type);
|
|
280
|
-
},
|
|
281
|
-
getSubagentsByMessage(messageId) {
|
|
282
|
-
orchestrator.trackStreamMode("updates", "messages-tuple");
|
|
283
|
-
return reactiveSubagents.getSubagentsByMessage(messageId);
|
|
284
|
-
}
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
//#endregion
|
|
288
|
-
export { FetchStreamTransport, SubagentManager, calculateDepthFromNamespace, executeHeadlessTool, extractParentIdFromNamespace, extractToolCallIdFromNamespace, filterOutHeadlessToolInterrupts, findHeadlessTool, flushPendingHeadlessToolInterrupts, getStream, getStreamContext, handleHeadlessToolInterrupt, headlessToolResumeCommand, isHeadlessToolInterrupt, isSubagentNamespace, parseHeadlessToolInterruptPayload, provideStream, setStreamContext, useStream };
|
|
289
|
-
|
|
290
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import { STREAM_CONTROLLER, useStream } from "./use-stream.svelte.js";
|
|
2
|
+
import { useProjection } from "./use-projection.svelte.js";
|
|
3
|
+
import { useAudio, useChannel, useExtension, useFiles, useImages, useMessageMetadata, useMessages, useSubmissionQueue, useToolCalls, useValues, useVideo } from "./selectors.svelte.js";
|
|
4
|
+
import { useMediaURL } from "./use-media-url.svelte.js";
|
|
5
|
+
import { useAudioPlayer } from "./use-audio-player.svelte.js";
|
|
6
|
+
import { useVideoPlayer } from "./use-video-player.svelte.js";
|
|
7
|
+
import { STREAM_CONTEXT_KEY, getStream, provideStream } from "./context.js";
|
|
8
|
+
import { HttpAgentServerAdapter, executeHeadlessTool, filterOutHeadlessToolInterrupts, findHeadlessTool, flushPendingHeadlessToolInterrupts, handleHeadlessToolInterrupt, headlessToolResumeCommand, isHeadlessToolInterrupt, parseHeadlessToolInterruptPayload } from "@langchain/langgraph-sdk";
|
|
9
|
+
import { MediaAssemblyError } from "@langchain/langgraph-sdk/stream";
|
|
10
|
+
export { HttpAgentServerAdapter, MediaAssemblyError, STREAM_CONTEXT_KEY, STREAM_CONTROLLER, executeHeadlessTool, filterOutHeadlessToolInterrupts, findHeadlessTool, flushPendingHeadlessToolInterrupts, getStream, handleHeadlessToolInterrupt, headlessToolResumeCommand, isHeadlessToolInterrupt, parseHeadlessToolInterruptPayload, provideStream, useAudio, useAudioPlayer, useChannel, useExtension, useFiles, useImages, useMediaURL, useMessageMetadata, useMessages, useProjection, useStream, useSubmissionQueue, useToolCalls, useValues, useVideo, useVideoPlayer };
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
const require_use_stream_svelte = require("./use-stream.svelte.cjs");
|
|
2
|
+
const require_use_projection_svelte = require("./use-projection.svelte.cjs");
|
|
3
|
+
let _langchain_langgraph_sdk_stream = require("@langchain/langgraph-sdk/stream");
|
|
4
|
+
//#region src/selectors.svelte.ts
|
|
5
|
+
const EMPTY_NAMESPACE = [];
|
|
6
|
+
function resolveNamespace(target) {
|
|
7
|
+
if (target == null) return EMPTY_NAMESPACE;
|
|
8
|
+
if (Array.isArray(target)) return target;
|
|
9
|
+
return target.namespace ?? EMPTY_NAMESPACE;
|
|
10
|
+
}
|
|
11
|
+
function isRoot(namespace) {
|
|
12
|
+
return namespace.length === 0;
|
|
13
|
+
}
|
|
14
|
+
function namespaceKey(namespace) {
|
|
15
|
+
return namespace.join(_langchain_langgraph_sdk_stream.NAMESPACE_SEPARATOR);
|
|
16
|
+
}
|
|
17
|
+
function isGetter(input) {
|
|
18
|
+
return typeof input === "function";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Internal helper that wires a reactive-or-static target into
|
|
22
|
+
* {@link useProjection}. Encapsulates the bookkeeping every selector
|
|
23
|
+
* otherwise repeats.
|
|
24
|
+
*/
|
|
25
|
+
function selectFromTarget(stream, target, initialValue, makeSpec, keyPrefix) {
|
|
26
|
+
if (isGetter(target)) {
|
|
27
|
+
const getTarget = target;
|
|
28
|
+
return require_use_projection_svelte.useProjection(() => {
|
|
29
|
+
return isRoot(resolveNamespace(getTarget())) ? null : require_use_stream_svelte.getRegistry(stream);
|
|
30
|
+
}, () => makeSpec(resolveNamespace(getTarget())), () => `${keyPrefix}|${namespaceKey(resolveNamespace(getTarget()))}`, initialValue);
|
|
31
|
+
}
|
|
32
|
+
const ns = resolveNamespace(target);
|
|
33
|
+
const key = `${keyPrefix}|${namespaceKey(ns)}`;
|
|
34
|
+
return require_use_projection_svelte.useProjection(isRoot(ns) ? null : require_use_stream_svelte.getRegistry(stream), () => makeSpec(ns), key, initialValue);
|
|
35
|
+
}
|
|
36
|
+
const EMPTY_MESSAGES = [];
|
|
37
|
+
const EMPTY_TOOLCALLS = [];
|
|
38
|
+
const EMPTY_EVENTS = [];
|
|
39
|
+
const EMPTY_AUDIO = [];
|
|
40
|
+
const EMPTY_IMAGES = [];
|
|
41
|
+
const EMPTY_VIDEO = [];
|
|
42
|
+
const EMPTY_FILES = [];
|
|
43
|
+
/**
|
|
44
|
+
* Subscribe to a scoped `messages` stream.
|
|
45
|
+
*
|
|
46
|
+
* Contract:
|
|
47
|
+
* - At the root (no `target`, or a static target that resolves to
|
|
48
|
+
* the root namespace) returns a handle whose `.current` delegates
|
|
49
|
+
* to `stream.messages` — the always-on root projection. No extra
|
|
50
|
+
* subscription is opened.
|
|
51
|
+
* - For any non-root namespace, mount triggers a ref-counted
|
|
52
|
+
* `messages` subscription scoped to that namespace. The
|
|
53
|
+
* subscription is released automatically when the owning
|
|
54
|
+
* component teardown fires (and the registry closes the
|
|
55
|
+
* underlying server subscription when the last consumer leaves).
|
|
56
|
+
* - A reactive `target` (getter form) re-binds the subscription on
|
|
57
|
+
* change. A getter that flips between root and scoped is
|
|
58
|
+
* supported: the root case short-circuits to the initial value
|
|
59
|
+
* because dynamic root delegation isn't meaningful — pass a
|
|
60
|
+
* static undefined/null target for root handles.
|
|
61
|
+
*
|
|
62
|
+
* Messages are always `BaseMessage` class instances from
|
|
63
|
+
* `@langchain/core/messages`.
|
|
64
|
+
*/
|
|
65
|
+
function useMessages(stream, target) {
|
|
66
|
+
if (!isGetter(target)) {
|
|
67
|
+
if (isRoot(resolveNamespace(target))) return { get current() {
|
|
68
|
+
return stream.messages;
|
|
69
|
+
} };
|
|
70
|
+
}
|
|
71
|
+
return selectFromTarget(stream, target, EMPTY_MESSAGES, (ns) => (0, _langchain_langgraph_sdk_stream.messagesProjection)(ns), "messages");
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Subscribe to a scoped `tools` (tool-call) stream. Same target and
|
|
75
|
+
* lifecycle rules as {@link useMessages}; at the root this returns a
|
|
76
|
+
* handle delegating to `stream.toolCalls`.
|
|
77
|
+
*/
|
|
78
|
+
function useToolCalls(stream, target) {
|
|
79
|
+
if (!isGetter(target)) {
|
|
80
|
+
if (isRoot(resolveNamespace(target))) return { get current() {
|
|
81
|
+
return stream.toolCalls;
|
|
82
|
+
} };
|
|
83
|
+
}
|
|
84
|
+
return selectFromTarget(stream, target, EMPTY_TOOLCALLS, (ns) => (0, _langchain_langgraph_sdk_stream.toolCallsProjection)(ns), "toolCalls");
|
|
85
|
+
}
|
|
86
|
+
function useValues(stream, target, options) {
|
|
87
|
+
if (!isGetter(target)) {
|
|
88
|
+
if (isRoot(resolveNamespace(target))) return { get current() {
|
|
89
|
+
return stream.values;
|
|
90
|
+
} };
|
|
91
|
+
}
|
|
92
|
+
const messagesKey = options?.messagesKey ?? "messages";
|
|
93
|
+
return selectFromTarget(stream, target, void 0, (ns) => (0, _langchain_langgraph_sdk_stream.valuesProjection)(ns, messagesKey), `values|${messagesKey}`);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Subscribe to a `custom:<name>` stream extension — most-recent
|
|
97
|
+
* payload emitted by the transformer, scoped to the target namespace.
|
|
98
|
+
*
|
|
99
|
+
* `name` accepts either a plain string or a getter so component
|
|
100
|
+
* state can drive the extension name at runtime.
|
|
101
|
+
*/
|
|
102
|
+
function useExtension(stream, name, target) {
|
|
103
|
+
const getName = () => isGetter(name) ? name() : name;
|
|
104
|
+
if (isGetter(target)) {
|
|
105
|
+
const getTarget = target;
|
|
106
|
+
return require_use_projection_svelte.useProjection(() => require_use_stream_svelte.getRegistry(stream), () => (0, _langchain_langgraph_sdk_stream.extensionProjection)(getName(), resolveNamespace(getTarget())), () => `extension|${getName()}|${namespaceKey(resolveNamespace(getTarget()))}`, void 0);
|
|
107
|
+
}
|
|
108
|
+
const ns = resolveNamespace(target);
|
|
109
|
+
return require_use_projection_svelte.useProjection(require_use_stream_svelte.getRegistry(stream), () => (0, _langchain_langgraph_sdk_stream.extensionProjection)(getName(), ns), () => `extension|${getName()}|${namespaceKey(ns)}`, void 0);
|
|
110
|
+
}
|
|
111
|
+
function useChannel(stream, channels, target, options) {
|
|
112
|
+
const getChannels = () => isGetter(channels) ? channels() : channels;
|
|
113
|
+
const getTarget = () => isGetter(target) ? target() : target;
|
|
114
|
+
const bufferSize = options?.bufferSize ?? "default";
|
|
115
|
+
const replayMode = options?.replay ?? true ? "replay" : "live";
|
|
116
|
+
return require_use_projection_svelte.useProjection(() => require_use_stream_svelte.getRegistry(stream), () => (0, _langchain_langgraph_sdk_stream.channelProjection)(getChannels(), resolveNamespace(getTarget()), options), () => {
|
|
117
|
+
return `channel|${bufferSize}|${replayMode}|${[...getChannels()].sort().join(",")}|${namespaceKey(resolveNamespace(getTarget()))}`;
|
|
118
|
+
}, EMPTY_EVENTS);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Subscribe to a scoped audio-media stream. Each handle is yielded
|
|
122
|
+
* on its first matching `content-block-start`, exposes
|
|
123
|
+
* `.partialBytes` for live access, settles `.blob` / `.objectURL` /
|
|
124
|
+
* `.transcript` on `message-finish`, and surfaces errors via
|
|
125
|
+
* `.error`.
|
|
126
|
+
*/
|
|
127
|
+
function useAudio(stream, target) {
|
|
128
|
+
return selectFromTarget(stream, target, EMPTY_AUDIO, (ns) => (0, _langchain_langgraph_sdk_stream.audioProjection)(ns), "audio");
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Subscribe to a scoped image-media stream. Pair with `useMediaURL`
|
|
132
|
+
* for `<img src>`.
|
|
133
|
+
*/
|
|
134
|
+
function useImages(stream, target) {
|
|
135
|
+
return selectFromTarget(stream, target, EMPTY_IMAGES, (ns) => (0, _langchain_langgraph_sdk_stream.imagesProjection)(ns), "images");
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Subscribe to a scoped video-media stream. Pair with `useMediaURL`
|
|
139
|
+
* for `<video src>`.
|
|
140
|
+
*/
|
|
141
|
+
function useVideo(stream, target) {
|
|
142
|
+
return selectFromTarget(stream, target, EMPTY_VIDEO, (ns) => (0, _langchain_langgraph_sdk_stream.videoProjection)(ns), "video");
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Subscribe to a scoped file-media stream. Pair with `useMediaURL`
|
|
146
|
+
* for an `<a download href>` target.
|
|
147
|
+
*/
|
|
148
|
+
function useFiles(stream, target) {
|
|
149
|
+
return selectFromTarget(stream, target, EMPTY_FILES, (ns) => (0, _langchain_langgraph_sdk_stream.filesProjection)(ns), "files");
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Read metadata recorded for a specific message id — today exposes
|
|
153
|
+
* `parentCheckpointId`, the checkpoint the message was first seen
|
|
154
|
+
* on. Designed for fork / edit flows:
|
|
155
|
+
*
|
|
156
|
+
* ```svelte
|
|
157
|
+
* <script lang="ts">
|
|
158
|
+
* const meta = useMessageMetadata(stream, () => selected?.id);
|
|
159
|
+
* <\/script>
|
|
160
|
+
* Parent: {meta.current?.parentCheckpointId ?? "root"}
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* `messageId` accepts a plain string or a getter — the binding
|
|
164
|
+
* re-evaluates whenever the id changes.
|
|
165
|
+
*/
|
|
166
|
+
function useMessageMetadata(stream, messageId) {
|
|
167
|
+
const store = stream[require_use_stream_svelte.STREAM_CONTROLLER].messageMetadataStore;
|
|
168
|
+
let map = $state(store.getSnapshot());
|
|
169
|
+
$effect(() => {
|
|
170
|
+
return store.subscribe(() => {
|
|
171
|
+
map = store.getSnapshot();
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
const getId = () => isGetter(messageId) ? messageId() : messageId;
|
|
175
|
+
return { get current() {
|
|
176
|
+
const key = getId();
|
|
177
|
+
if (key == null) return void 0;
|
|
178
|
+
return map.get(key);
|
|
179
|
+
} };
|
|
180
|
+
}
|
|
181
|
+
function useSubmissionQueue(stream) {
|
|
182
|
+
const controller = stream[require_use_stream_svelte.STREAM_CONTROLLER];
|
|
183
|
+
const store = controller.queueStore;
|
|
184
|
+
let entries = $state(store.getSnapshot());
|
|
185
|
+
$effect(() => {
|
|
186
|
+
return store.subscribe(() => {
|
|
187
|
+
entries = store.getSnapshot();
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
return {
|
|
191
|
+
get entries() {
|
|
192
|
+
return entries;
|
|
193
|
+
},
|
|
194
|
+
get size() {
|
|
195
|
+
return entries.length;
|
|
196
|
+
},
|
|
197
|
+
cancel: (id) => controller.cancelQueued(id),
|
|
198
|
+
clear: () => controller.clearQueue()
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
//#endregion
|
|
202
|
+
exports.useAudio = useAudio;
|
|
203
|
+
exports.useChannel = useChannel;
|
|
204
|
+
exports.useExtension = useExtension;
|
|
205
|
+
exports.useFiles = useFiles;
|
|
206
|
+
exports.useImages = useImages;
|
|
207
|
+
exports.useMessageMetadata = useMessageMetadata;
|
|
208
|
+
exports.useMessages = useMessages;
|
|
209
|
+
exports.useSubmissionQueue = useSubmissionQueue;
|
|
210
|
+
exports.useToolCalls = useToolCalls;
|
|
211
|
+
exports.useValues = useValues;
|
|
212
|
+
exports.useVideo = useVideo;
|
|
213
|
+
|
|
214
|
+
//# sourceMappingURL=selectors.svelte.cjs.map
|