@langchain/langgraph-sdk 1.6.4 → 1.7.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.
Files changed (187) hide show
  1. package/dist/client.cjs +4 -2
  2. package/dist/client.cjs.map +1 -1
  3. package/dist/client.d.cts +7 -0
  4. package/dist/client.d.cts.map +1 -1
  5. package/dist/client.d.ts +7 -0
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +4 -2
  8. package/dist/client.js.map +1 -1
  9. package/dist/index.d.cts +4 -4
  10. package/dist/index.d.ts +4 -4
  11. package/dist/react/index.cjs +46 -10
  12. package/dist/react/index.cjs.map +1 -0
  13. package/dist/react/index.d.cts +14 -11
  14. package/dist/react/index.d.cts.map +1 -0
  15. package/dist/react/index.d.ts +14 -11
  16. package/dist/react/index.d.ts.map +1 -0
  17. package/dist/react/index.js +14 -4
  18. package/dist/react/index.js.map +1 -0
  19. package/dist/react-ui/index.cjs +38 -13
  20. package/dist/react-ui/index.d.cts +1 -2
  21. package/dist/react-ui/index.d.ts +1 -2
  22. package/dist/react-ui/index.js +2 -8
  23. package/dist/react-ui/server/index.cjs +14 -4
  24. package/dist/react-ui/server/index.d.cts +1 -2
  25. package/dist/react-ui/server/index.d.ts +1 -2
  26. package/dist/react-ui/server/index.js +1 -2
  27. package/dist/schema.d.cts +2 -0
  28. package/dist/schema.d.cts.map +1 -1
  29. package/dist/schema.d.ts +2 -0
  30. package/dist/schema.d.ts.map +1 -1
  31. package/dist/types.messages.d.cts +5 -3
  32. package/dist/types.messages.d.cts.map +1 -1
  33. package/dist/types.messages.d.ts +5 -3
  34. package/dist/types.messages.d.ts.map +1 -1
  35. package/dist/types.stream.d.cts +40 -2
  36. package/dist/types.stream.d.cts.map +1 -1
  37. package/dist/types.stream.d.ts +40 -2
  38. package/dist/types.stream.d.ts.map +1 -1
  39. package/dist/ui/branching.cjs +24 -0
  40. package/dist/ui/branching.cjs.map +1 -1
  41. package/dist/ui/branching.d.cts +26 -1
  42. package/dist/ui/branching.d.cts.map +1 -1
  43. package/dist/ui/branching.d.ts +26 -1
  44. package/dist/ui/branching.d.ts.map +1 -1
  45. package/dist/ui/branching.js +25 -1
  46. package/dist/ui/branching.js.map +1 -1
  47. package/dist/ui/index.cjs +30 -0
  48. package/dist/ui/index.d.cts +15 -0
  49. package/dist/ui/index.d.ts +15 -0
  50. package/dist/ui/index.js +11 -0
  51. package/dist/ui/interrupts.cjs +21 -0
  52. package/dist/ui/interrupts.cjs.map +1 -0
  53. package/dist/ui/interrupts.d.cts +11 -0
  54. package/dist/ui/interrupts.d.cts.map +1 -0
  55. package/dist/ui/interrupts.d.ts +11 -0
  56. package/dist/ui/interrupts.d.ts.map +1 -0
  57. package/dist/ui/interrupts.js +20 -0
  58. package/dist/ui/interrupts.js.map +1 -0
  59. package/dist/ui/manager.cjs +12 -3
  60. package/dist/ui/manager.cjs.map +1 -1
  61. package/dist/ui/manager.d.cts +224 -0
  62. package/dist/ui/manager.d.cts.map +1 -0
  63. package/dist/ui/manager.d.ts +224 -0
  64. package/dist/ui/manager.d.ts.map +1 -0
  65. package/dist/ui/manager.js +12 -3
  66. package/dist/ui/manager.js.map +1 -1
  67. package/dist/ui/messages.cjs +19 -0
  68. package/dist/ui/messages.cjs.map +1 -1
  69. package/dist/ui/messages.d.cts +36 -0
  70. package/dist/ui/messages.d.cts.map +1 -0
  71. package/dist/ui/messages.d.ts +36 -0
  72. package/dist/ui/messages.d.ts.map +1 -0
  73. package/dist/ui/messages.js +18 -1
  74. package/dist/ui/messages.js.map +1 -1
  75. package/dist/ui/queue.cjs +75 -0
  76. package/dist/ui/queue.cjs.map +1 -0
  77. package/dist/ui/queue.d.cts +72 -0
  78. package/dist/ui/queue.d.cts.map +1 -0
  79. package/dist/ui/queue.d.ts +72 -0
  80. package/dist/ui/queue.d.ts.map +1 -0
  81. package/dist/ui/queue.js +74 -0
  82. package/dist/ui/queue.js.map +1 -0
  83. package/dist/ui/stream/base.d.cts +17 -1
  84. package/dist/ui/stream/base.d.cts.map +1 -1
  85. package/dist/ui/stream/base.d.ts +17 -1
  86. package/dist/ui/stream/base.d.ts.map +1 -1
  87. package/dist/ui/stream/index.d.cts +4 -4
  88. package/dist/ui/stream/index.d.cts.map +1 -1
  89. package/dist/ui/stream/index.d.ts +4 -4
  90. package/dist/ui/stream/index.d.ts.map +1 -1
  91. package/dist/ui/subagents.cjs +4 -1
  92. package/dist/ui/subagents.cjs.map +1 -1
  93. package/dist/ui/subagents.d.cts +7 -0
  94. package/dist/ui/subagents.d.cts.map +1 -1
  95. package/dist/ui/subagents.d.ts +7 -0
  96. package/dist/ui/subagents.d.ts.map +1 -1
  97. package/dist/ui/subagents.js +4 -1
  98. package/dist/ui/subagents.js.map +1 -1
  99. package/dist/ui/transport.cjs +31 -0
  100. package/dist/ui/transport.cjs.map +1 -0
  101. package/dist/{react/stream.custom.d.cts → ui/transport.d.cts} +3 -3
  102. package/dist/ui/transport.d.cts.map +1 -0
  103. package/dist/{react/stream.custom.d.ts → ui/transport.d.ts} +3 -3
  104. package/dist/ui/transport.d.ts.map +1 -0
  105. package/dist/ui/transport.js +31 -0
  106. package/dist/ui/transport.js.map +1 -0
  107. package/dist/ui/types.d.cts +134 -18
  108. package/dist/ui/types.d.cts.map +1 -1
  109. package/dist/ui/types.d.ts +134 -18
  110. package/dist/ui/types.d.ts.map +1 -1
  111. package/dist/ui/utils.d.cts +7 -0
  112. package/dist/ui/utils.d.cts.map +1 -0
  113. package/dist/ui/utils.d.ts +7 -0
  114. package/dist/ui/utils.d.ts.map +1 -0
  115. package/dist/utils/index.cjs +9 -0
  116. package/dist/utils/index.d.cts +4 -0
  117. package/dist/utils/index.d.ts +4 -0
  118. package/dist/utils/index.js +5 -0
  119. package/dist/utils/sse.d.cts +11 -0
  120. package/dist/utils/sse.d.cts.map +1 -0
  121. package/dist/utils/sse.d.ts +11 -0
  122. package/dist/utils/sse.d.ts.map +1 -0
  123. package/dist/utils/stream.d.cts +19 -0
  124. package/dist/utils/stream.d.cts.map +1 -0
  125. package/dist/utils/stream.d.ts +19 -0
  126. package/dist/utils/stream.d.ts.map +1 -0
  127. package/dist/utils/tools.cjs +26 -17
  128. package/dist/utils/tools.cjs.map +1 -1
  129. package/dist/utils/tools.d.cts +7 -0
  130. package/dist/utils/tools.d.cts.map +1 -0
  131. package/dist/utils/tools.d.ts +7 -0
  132. package/dist/utils/tools.d.ts.map +1 -0
  133. package/dist/utils/tools.js +26 -17
  134. package/dist/utils/tools.js.map +1 -1
  135. package/package.json +42 -13
  136. package/dist/react/stream.cjs +0 -18
  137. package/dist/react/stream.cjs.map +0 -1
  138. package/dist/react/stream.custom.cjs +0 -164
  139. package/dist/react/stream.custom.cjs.map +0 -1
  140. package/dist/react/stream.custom.d.cts.map +0 -1
  141. package/dist/react/stream.custom.d.ts.map +0 -1
  142. package/dist/react/stream.custom.js +0 -162
  143. package/dist/react/stream.custom.js.map +0 -1
  144. package/dist/react/stream.d.cts +0 -174
  145. package/dist/react/stream.d.cts.map +0 -1
  146. package/dist/react/stream.d.ts +0 -174
  147. package/dist/react/stream.d.ts.map +0 -1
  148. package/dist/react/stream.js +0 -17
  149. package/dist/react/stream.js.map +0 -1
  150. package/dist/react/stream.lgp.cjs +0 -482
  151. package/dist/react/stream.lgp.cjs.map +0 -1
  152. package/dist/react/stream.lgp.js +0 -481
  153. package/dist/react/stream.lgp.js.map +0 -1
  154. package/dist/react/thread.cjs +0 -21
  155. package/dist/react/thread.cjs.map +0 -1
  156. package/dist/react/thread.js +0 -20
  157. package/dist/react/thread.js.map +0 -1
  158. package/dist/react/types.d.cts +0 -75
  159. package/dist/react/types.d.cts.map +0 -1
  160. package/dist/react/types.d.ts +0 -75
  161. package/dist/react/types.d.ts.map +0 -1
  162. package/dist/react-ui/client.cjs +0 -138
  163. package/dist/react-ui/client.cjs.map +0 -1
  164. package/dist/react-ui/client.d.cts +0 -76
  165. package/dist/react-ui/client.d.cts.map +0 -1
  166. package/dist/react-ui/client.d.ts +0 -76
  167. package/dist/react-ui/client.d.ts.map +0 -1
  168. package/dist/react-ui/client.js +0 -132
  169. package/dist/react-ui/client.js.map +0 -1
  170. package/dist/react-ui/index.cjs.map +0 -1
  171. package/dist/react-ui/index.js.map +0 -1
  172. package/dist/react-ui/server/server.cjs +0 -57
  173. package/dist/react-ui/server/server.cjs.map +0 -1
  174. package/dist/react-ui/server/server.d.cts +0 -54
  175. package/dist/react-ui/server/server.d.cts.map +0 -1
  176. package/dist/react-ui/server/server.d.ts +0 -54
  177. package/dist/react-ui/server/server.d.ts.map +0 -1
  178. package/dist/react-ui/server/server.js +0 -56
  179. package/dist/react-ui/server/server.js.map +0 -1
  180. package/dist/react-ui/types.cjs +0 -38
  181. package/dist/react-ui/types.cjs.map +0 -1
  182. package/dist/react-ui/types.d.cts +0 -25
  183. package/dist/react-ui/types.d.cts.map +0 -1
  184. package/dist/react-ui/types.d.ts +0 -25
  185. package/dist/react-ui/types.d.ts.map +0 -1
  186. package/dist/react-ui/types.js +0 -35
  187. package/dist/react-ui/types.js.map +0 -1
@@ -1,75 +0,0 @@
1
- import { ThreadState } from "../schema.cjs";
2
- import { Message } from "../types.messages.cjs";
3
- import { StreamMode } from "../types.stream.cjs";
4
- import { StreamEvent } from "../types.cjs";
5
- import { Client } from "../client.cjs";
6
- import { BagTemplate } from "../types.template.cjs";
7
- import { BaseSubagentState, CompiledSubAgentLike, CustomSubmitOptions, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, GetConfigurableType, GetInterruptType, GetToolCallsType, GetUpdateType, InferDeepAgentSubagents, InferSubagentByName, InferSubagentNames, InferSubagentState, IsDeepAgentLike, MessageMetadata, RunCallbackMeta, StreamBase, SubAgentLike, SubagentStateMap, SubagentStream, SubagentStreamInterface, SubmitOptions, UseStreamCustomOptions, UseStreamOptions, UseStreamThread, UseStreamTransport } from "../ui/types.cjs";
8
- import { Sequence } from "../ui/branching.cjs";
9
-
10
- //#region src/react/types.d.ts
11
- interface UseStream<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate, SubagentStates extends Record<string, unknown> = DefaultSubagentStates> extends StreamBase<StateType, GetToolCallsType<StateType>, GetInterruptType<Bag>, SubagentStates> {
12
- /**
13
- * Whether the thread is currently being loaded.
14
- */
15
- isThreadLoading: boolean;
16
- /**
17
- * Stops the stream.
18
- */
19
- stop: () => Promise<void>;
20
- /**
21
- * Create and stream a run to the thread.
22
- */
23
- submit: (values: GetUpdateType<Bag, StateType> | null | undefined, options?: SubmitOptions<StateType, GetConfigurableType<Bag>>) => Promise<void>;
24
- /**
25
- * The current branch of the thread.
26
- */
27
- branch: string;
28
- /**
29
- * Set the branch of the thread.
30
- */
31
- setBranch: (branch: string) => void;
32
- /**
33
- * Flattened history of thread states of a thread.
34
- */
35
- history: ThreadState<StateType>[];
36
- /**
37
- * Tree of all branches for the thread.
38
- * @experimental
39
- */
40
- experimental_branchTree: Sequence<StateType>;
41
- /**
42
- * Get the metadata for a message, such as first thread state the message
43
- * was seen in and branch information.
44
- *
45
- * @param message - The message to get the metadata for.
46
- * @param index - The index of the message in the thread.
47
- * @returns The metadata for the message.
48
- */
49
- getMessagesMetadata: (message: Message<GetToolCallsType<StateType>>, index?: number) => MessageMetadata<StateType> | undefined;
50
- /**
51
- * LangGraph SDK client used to send request and receive responses.
52
- */
53
- client: Client;
54
- /**
55
- * The ID of the assistant to use.
56
- */
57
- assistantId: string;
58
- /**
59
- * Join an active stream.
60
- */
61
- joinStream: (runId: string, lastEventId?: string, options?: {
62
- streamMode?: StreamMode | StreamMode[];
63
- filter?: (event: {
64
- id?: string;
65
- event: StreamEvent;
66
- data: unknown;
67
- }) => boolean;
68
- }) => Promise<void>;
69
- }
70
- type UseStreamCustom<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate, SubagentStates extends Record<string, unknown> = DefaultSubagentStates> = Pick<UseStream<StateType, Bag, SubagentStates>, "values" | "error" | "isLoading" | "stop" | "interrupt" | "interrupts" | "messages" | "toolCalls" | "getToolCalls" | "subagents" | "activeSubagents" | "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage"> & {
71
- submit: (values: GetUpdateType<Bag, StateType> | null | undefined, options?: CustomSubmitOptions<StateType, GetConfigurableType<Bag>>) => Promise<void>;
72
- };
73
- //#endregion
74
- export { UseStream, UseStreamCustom };
75
- //# sourceMappingURL=types.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.cts","names":[],"sources":["../../src/react/types.tsx"],"mappings":";;;;;;;;;;UA0EiB,SAAA,mBACG,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,yBACH,MAAA,oBAA0B,qBAAA,UACzC,UAAA,CACN,SAAA,EACA,gBAAA,CAAiB,SAAA,GACjB,gBAAA,CAAiB,GAAA,GACjB,cAAA;EARa;;;EAaf,eAAA;EAZ4C;;;EAiB5C,IAAA,QAAY,OAAA;EAfqC;;;EAoBjD,MAAA,GACE,MAAA,EAAQ,aAAA,CAAc,GAAA,EAAK,SAAA,sBAC3B,OAAA,GAAU,aAAA,CAAc,SAAA,EAAW,mBAAA,CAAoB,GAAA,OACpD,OAAA;EAnBc;;;EAwBnB,MAAA;EAPwB;;;EAYxB,SAAA,GAAY,MAAA;EAX6C;;;EAgBzD,OAAA,EAAS,WAAA,CAAY,SAAA;EAAA;;;;EAMrB,uBAAA,EAAyB,QAAA,CAAS,SAAA;EAWf;;;;;;;;EADnB,mBAAA,GACE,OAAA,EAAS,OAAA,CAAQ,gBAAA,CAAiB,SAAA,IAClC,KAAA,cACG,eAAA,CAAgB,SAAA;EAxDb;;;EA6DR,MAAA,EAAQ,MAAA;EAhEU;;;EAqElB,WAAA;EApE0B;;;EAyE1B,UAAA,GACE,KAAA,UACA,WAAA,WACA,OAAA;IACE,UAAA,GAAa,UAAA,GAAa,UAAA;IAC1B,MAAA,IAAU,KAAA;MACR,EAAA;MACA,KAAA,EAAO,WAAA;MACP,IAAA;IAAA;EAAA,MAGD,OAAA;AAAA;AAAA,KAGK,eAAA,mBACQ,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,yBACH,MAAA,oBAA0B,qBAAA,IAC/C,IAAA,CACF,SAAA,CAAU,SAAA,EAAW,GAAA,EAAK,cAAA;EAgB1B,MAAA,GACE,MAAA,EAAQ,aAAA,CAAc,GAAA,EAAK,SAAA,sBAC3B,OAAA,GAAU,mBAAA,CAAoB,SAAA,EAAW,mBAAA,CAAoB,GAAA,OAC1D,OAAA;AAAA"}
@@ -1,75 +0,0 @@
1
- import { ThreadState } from "../schema.js";
2
- import { Message } from "../types.messages.js";
3
- import { StreamMode } from "../types.stream.js";
4
- import { StreamEvent } from "../types.js";
5
- import { Client } from "../client.js";
6
- import { BagTemplate } from "../types.template.js";
7
- import { BaseSubagentState, CompiledSubAgentLike, CustomSubmitOptions, DeepAgentTypeConfigLike, DefaultSubagentStates, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, GetConfigurableType, GetInterruptType, GetToolCallsType, GetUpdateType, InferDeepAgentSubagents, InferSubagentByName, InferSubagentNames, InferSubagentState, IsDeepAgentLike, MessageMetadata, RunCallbackMeta, StreamBase, SubAgentLike, SubagentStateMap, SubagentStream, SubagentStreamInterface, SubmitOptions, UseStreamCustomOptions, UseStreamOptions, UseStreamThread, UseStreamTransport } from "../ui/types.js";
8
- import { Sequence } from "../ui/branching.js";
9
-
10
- //#region src/react/types.d.ts
11
- interface UseStream<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate, SubagentStates extends Record<string, unknown> = DefaultSubagentStates> extends StreamBase<StateType, GetToolCallsType<StateType>, GetInterruptType<Bag>, SubagentStates> {
12
- /**
13
- * Whether the thread is currently being loaded.
14
- */
15
- isThreadLoading: boolean;
16
- /**
17
- * Stops the stream.
18
- */
19
- stop: () => Promise<void>;
20
- /**
21
- * Create and stream a run to the thread.
22
- */
23
- submit: (values: GetUpdateType<Bag, StateType> | null | undefined, options?: SubmitOptions<StateType, GetConfigurableType<Bag>>) => Promise<void>;
24
- /**
25
- * The current branch of the thread.
26
- */
27
- branch: string;
28
- /**
29
- * Set the branch of the thread.
30
- */
31
- setBranch: (branch: string) => void;
32
- /**
33
- * Flattened history of thread states of a thread.
34
- */
35
- history: ThreadState<StateType>[];
36
- /**
37
- * Tree of all branches for the thread.
38
- * @experimental
39
- */
40
- experimental_branchTree: Sequence<StateType>;
41
- /**
42
- * Get the metadata for a message, such as first thread state the message
43
- * was seen in and branch information.
44
- *
45
- * @param message - The message to get the metadata for.
46
- * @param index - The index of the message in the thread.
47
- * @returns The metadata for the message.
48
- */
49
- getMessagesMetadata: (message: Message<GetToolCallsType<StateType>>, index?: number) => MessageMetadata<StateType> | undefined;
50
- /**
51
- * LangGraph SDK client used to send request and receive responses.
52
- */
53
- client: Client;
54
- /**
55
- * The ID of the assistant to use.
56
- */
57
- assistantId: string;
58
- /**
59
- * Join an active stream.
60
- */
61
- joinStream: (runId: string, lastEventId?: string, options?: {
62
- streamMode?: StreamMode | StreamMode[];
63
- filter?: (event: {
64
- id?: string;
65
- event: StreamEvent;
66
- data: unknown;
67
- }) => boolean;
68
- }) => Promise<void>;
69
- }
70
- type UseStreamCustom<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate, SubagentStates extends Record<string, unknown> = DefaultSubagentStates> = Pick<UseStream<StateType, Bag, SubagentStates>, "values" | "error" | "isLoading" | "stop" | "interrupt" | "interrupts" | "messages" | "toolCalls" | "getToolCalls" | "subagents" | "activeSubagents" | "getSubagent" | "getSubagentsByType" | "getSubagentsByMessage"> & {
71
- submit: (values: GetUpdateType<Bag, StateType> | null | undefined, options?: CustomSubmitOptions<StateType, GetConfigurableType<Bag>>) => Promise<void>;
72
- };
73
- //#endregion
74
- export { UseStream, UseStreamCustom };
75
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/react/types.tsx"],"mappings":";;;;;;;;;;UA0EiB,SAAA,mBACG,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,yBACH,MAAA,oBAA0B,qBAAA,UACzC,UAAA,CACN,SAAA,EACA,gBAAA,CAAiB,SAAA,GACjB,gBAAA,CAAiB,GAAA,GACjB,cAAA;EARa;;;EAaf,eAAA;EAZ4C;;;EAiB5C,IAAA,QAAY,OAAA;EAfqC;;;EAoBjD,MAAA,GACE,MAAA,EAAQ,aAAA,CAAc,GAAA,EAAK,SAAA,sBAC3B,OAAA,GAAU,aAAA,CAAc,SAAA,EAAW,mBAAA,CAAoB,GAAA,OACpD,OAAA;EAnBc;;;EAwBnB,MAAA;EAPwB;;;EAYxB,SAAA,GAAY,MAAA;EAX6C;;;EAgBzD,OAAA,EAAS,WAAA,CAAY,SAAA;EAAA;;;;EAMrB,uBAAA,EAAyB,QAAA,CAAS,SAAA;EAWf;;;;;;;;EADnB,mBAAA,GACE,OAAA,EAAS,OAAA,CAAQ,gBAAA,CAAiB,SAAA,IAClC,KAAA,cACG,eAAA,CAAgB,SAAA;EAxDb;;;EA6DR,MAAA,EAAQ,MAAA;EAhEU;;;EAqElB,WAAA;EApE0B;;;EAyE1B,UAAA,GACE,KAAA,UACA,WAAA,WACA,OAAA;IACE,UAAA,GAAa,UAAA,GAAa,UAAA;IAC1B,MAAA,IAAU,KAAA;MACR,EAAA;MACA,KAAA,EAAO,WAAA;MACP,IAAA;IAAA;EAAA,MAGD,OAAA;AAAA;AAAA,KAGK,eAAA,mBACQ,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,yBACH,MAAA,oBAA0B,qBAAA,IAC/C,IAAA,CACF,SAAA,CAAU,SAAA,EAAW,GAAA,EAAK,cAAA;EAgB1B,MAAA,GACE,MAAA,EAAQ,aAAA,CAAc,GAAA,EAAK,SAAA,sBAC3B,OAAA,GAAU,mBAAA,CAAoB,SAAA,EAAW,mBAAA,CAAoB,GAAA,OAC1D,OAAA;AAAA"}
@@ -1,138 +0,0 @@
1
- "use client";
2
-
3
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
4
- const require_stream = require('../react/stream.cjs');
5
- require('../react/index.cjs');
6
- let react = require("react");
7
- react = require_runtime.__toESM(react);
8
- let react_dom = require("react-dom");
9
- react_dom = require_runtime.__toESM(react_dom);
10
- let react_jsx_runtime = require("react/jsx-runtime");
11
- react_jsx_runtime = require_runtime.__toESM(react_jsx_runtime);
12
-
13
- //#region src/react-ui/client.tsx
14
- const UseStreamContext = react.createContext(null);
15
- function useStreamContext() {
16
- const ctx = react.useContext(UseStreamContext);
17
- if (!ctx) throw new Error("useStreamContext must be used within a LoadExternalComponent");
18
- return new Proxy(ctx, { get(target, prop) {
19
- if (prop === "meta") return target.meta;
20
- return target.stream[prop];
21
- } });
22
- }
23
- var ComponentStore = class {
24
- cache = {};
25
- boundCache = {};
26
- callbacks = {};
27
- respond(shadowRootId, comp, targetElement) {
28
- this.cache[shadowRootId] = {
29
- comp,
30
- target: targetElement
31
- };
32
- this.callbacks[shadowRootId]?.forEach((c) => c(comp, targetElement));
33
- }
34
- getBoundStore(shadowRootId) {
35
- this.boundCache[shadowRootId] ??= {
36
- subscribe: (onStoreChange) => {
37
- this.callbacks[shadowRootId] ??= [];
38
- this.callbacks[shadowRootId].push(onStoreChange);
39
- return () => {
40
- this.callbacks[shadowRootId] = this.callbacks[shadowRootId].filter((c) => c !== onStoreChange);
41
- };
42
- },
43
- getSnapshot: () => this.cache[shadowRootId]
44
- };
45
- return this.boundCache[shadowRootId];
46
- }
47
- };
48
- const COMPONENT_STORE = new ComponentStore();
49
- const EXT_STORE_SYMBOL = Symbol.for("LGUI_EXT_STORE");
50
- const REQUIRE_SYMBOL = Symbol.for("LGUI_REQUIRE");
51
- const REQUIRE_EXTRA_SYMBOL = Symbol.for("LGUI_REQUIRE_EXTRA");
52
- const isIterable = (value) => value != null && typeof value === "object" && Symbol.iterator in value;
53
- const isPromise = (value) => value != null && typeof value === "object" && "then" in value && typeof value.then === "function";
54
- const isReactNode = (value) => {
55
- if (react.isValidElement(value)) return true;
56
- if (value == null) return true;
57
- if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") return true;
58
- if (isIterable(value)) return true;
59
- if (isPromise(value)) return true;
60
- return false;
61
- };
62
- function LoadExternalComponent({ stream, namespace, message, meta, fallback, components, ...props }) {
63
- const ref = react.useRef(null);
64
- const shadowRootId = `child-shadow-${react.useId()}`;
65
- const store = react.useMemo(() => COMPONENT_STORE.getBoundStore(shadowRootId), [shadowRootId]);
66
- const state = react.useSyncExternalStore(store.subscribe, store.getSnapshot);
67
- const clientComponent = components?.[message.name];
68
- const hasClientComponent = clientComponent != null;
69
- let fallbackComponent = null;
70
- if (isReactNode(fallback)) fallbackComponent = fallback;
71
- else if (typeof fallback === "object" && fallback != null) fallbackComponent = fallback?.[message.name];
72
- const uiNamespace = namespace ?? stream.assistantId;
73
- const uiClient = stream.client["~ui"];
74
- react.useEffect(() => {
75
- if (hasClientComponent) return;
76
- uiClient.getComponent(uiNamespace, message.name).then((html) => {
77
- const dom = ref.current;
78
- if (!dom) return;
79
- const root = dom.shadowRoot ?? dom.attachShadow({ mode: "open" });
80
- const fragment = document.createRange().createContextualFragment(html.replace("{{shadowRootId}}", shadowRootId));
81
- root.appendChild(fragment);
82
- });
83
- }, [
84
- uiClient,
85
- uiNamespace,
86
- message.name,
87
- shadowRootId,
88
- hasClientComponent
89
- ]);
90
- if (hasClientComponent) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UseStreamContext.Provider, {
91
- value: {
92
- stream,
93
- meta
94
- },
95
- children: react.createElement(clientComponent, message.props)
96
- });
97
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
98
- id: shadowRootId,
99
- ref,
100
- ...props
101
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UseStreamContext.Provider, {
102
- value: {
103
- stream,
104
- meta
105
- },
106
- children: state?.target != null ? react_dom.createPortal(react.createElement(state.comp, message.props), state.target) : fallbackComponent
107
- })] });
108
- }
109
- function experimental_loadShare(name, module) {
110
- if (typeof window === "undefined") return;
111
- window[REQUIRE_EXTRA_SYMBOL] ??= {};
112
- window[REQUIRE_EXTRA_SYMBOL][name] = module;
113
- }
114
- function bootstrapUiContext() {
115
- if (typeof window === "undefined") return;
116
- window[EXT_STORE_SYMBOL] = COMPONENT_STORE;
117
- window[REQUIRE_SYMBOL] = (name) => {
118
- if (name === "react") return react;
119
- if (name === "react-dom") return react_dom;
120
- if (name === "react/jsx-runtime") return react_jsx_runtime;
121
- if (name === "@langchain/langgraph-sdk/react") return { useStream: require_stream.useStream };
122
- if (name === "@langchain/langgraph-sdk/react-ui") return {
123
- useStreamContext,
124
- LoadExternalComponent: () => {
125
- throw new Error("Nesting LoadExternalComponent is not supported");
126
- }
127
- };
128
- if (window[REQUIRE_EXTRA_SYMBOL] != null && typeof window[REQUIRE_EXTRA_SYMBOL] === "object" && name in window[REQUIRE_EXTRA_SYMBOL]) return window[REQUIRE_EXTRA_SYMBOL][name];
129
- throw new Error(`Unknown module...: ${name}`);
130
- };
131
- }
132
-
133
- //#endregion
134
- exports.LoadExternalComponent = LoadExternalComponent;
135
- exports.bootstrapUiContext = bootstrapUiContext;
136
- exports.experimental_loadShare = experimental_loadShare;
137
- exports.useStreamContext = useStreamContext;
138
- //# sourceMappingURL=client.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.cjs","names":["React","ReactDOM","JsxRuntime"],"sources":["../../src/react-ui/client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport type { UIMessage } from \"./types.js\";\nimport { useStream } from \"../react/index.js\";\nimport type { UseStream } from \"../react/types.js\";\nimport type { BagTemplate } from \"../types.template.js\";\n\nconst UseStreamContext = React.createContext<{\n stream: ReturnType<typeof useStream>;\n meta: unknown;\n}>(null!);\n\ntype GetMetaType<Bag extends BagTemplate> = Bag extends { MetaType: unknown }\n ? Bag[\"MetaType\"]\n : unknown;\n\ninterface UseStreamContext<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate\n> extends UseStream<StateType, Bag> {\n meta?: GetMetaType<Bag>;\n}\n\nexport function useStreamContext<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate\n>(): UseStreamContext<StateType, Bag> {\n const ctx = React.useContext(UseStreamContext);\n if (!ctx) {\n throw new Error(\n \"useStreamContext must be used within a LoadExternalComponent\"\n );\n }\n\n return new Proxy(ctx, {\n get(target, prop: keyof UseStreamContext<StateType, Bag>) {\n if (prop === \"meta\") return target.meta;\n return target.stream[prop as keyof typeof target.stream];\n },\n }) as unknown as UseStreamContext<StateType, Bag>;\n}\n\ninterface ComponentTarget {\n comp: React.FunctionComponent | React.ComponentClass;\n target: HTMLElement;\n}\n\nclass ComponentStore {\n private cache: Record<string, ComponentTarget> = {};\n\n private boundCache: Record<\n string,\n {\n subscribe: (onStoreChange: () => void) => () => void;\n getSnapshot: () => ComponentTarget | undefined;\n }\n > = {};\n\n private callbacks: Record<\n string,\n ((\n comp: React.FunctionComponent | React.ComponentClass,\n el: HTMLElement\n ) => void)[]\n > = {};\n\n respond(\n shadowRootId: string,\n comp: React.FunctionComponent | React.ComponentClass,\n targetElement: HTMLElement\n ) {\n this.cache[shadowRootId] = { comp, target: targetElement };\n this.callbacks[shadowRootId]?.forEach((c) => c(comp, targetElement));\n }\n\n getBoundStore(shadowRootId: string) {\n this.boundCache[shadowRootId] ??= {\n subscribe: (onStoreChange: () => void) => {\n this.callbacks[shadowRootId] ??= [];\n this.callbacks[shadowRootId].push(onStoreChange);\n return () => {\n this.callbacks[shadowRootId] = this.callbacks[shadowRootId].filter(\n (c) => c !== onStoreChange\n );\n };\n },\n getSnapshot: () => this.cache[shadowRootId],\n };\n\n return this.boundCache[shadowRootId];\n }\n}\n\nconst COMPONENT_STORE = new ComponentStore();\nconst EXT_STORE_SYMBOL = Symbol.for(\"LGUI_EXT_STORE\");\nconst REQUIRE_SYMBOL = Symbol.for(\"LGUI_REQUIRE\");\nconst REQUIRE_EXTRA_SYMBOL = Symbol.for(\"LGUI_REQUIRE_EXTRA\");\n\ninterface LoadExternalComponentProps\n extends Pick<React.HTMLAttributes<HTMLDivElement>, \"style\" | \"className\"> {\n /** Stream of the assistant */\n stream: ReturnType<typeof useStream>;\n\n /** Namespace of UI components. Defaults to assistant ID. */\n namespace?: string;\n\n /** UI message to be rendered */\n message: UIMessage;\n\n /** Additional context to be passed to the child component */\n meta?: unknown;\n\n /** Fallback to be rendered when the component is loading */\n fallback?: React.ReactNode | Record<string, React.ReactNode>;\n\n /**\n * Map of components that can be rendered directly without fetching the UI code\n * from the server.\n */\n components?: Record<string, React.FunctionComponent | React.ComponentClass>;\n}\n\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n value != null && typeof value === \"object\" && Symbol.iterator in value;\n\nconst isPromise = (value: unknown): value is Promise<unknown> =>\n value != null &&\n typeof value === \"object\" &&\n \"then\" in value &&\n typeof value.then === \"function\";\n\nconst isReactNode = (value: unknown): value is React.ReactNode => {\n if (React.isValidElement(value)) return true;\n if (value == null) return true;\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\" ||\n typeof value === \"boolean\"\n ) {\n return true;\n }\n\n if (isIterable(value)) return true;\n if (isPromise(value)) return true;\n\n return false;\n};\n\nexport function LoadExternalComponent({\n stream,\n namespace,\n message,\n meta,\n fallback,\n components,\n ...props\n}: LoadExternalComponentProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const id = React.useId();\n const shadowRootId = `child-shadow-${id}`;\n\n const store = React.useMemo(\n () => COMPONENT_STORE.getBoundStore(shadowRootId),\n [shadowRootId]\n );\n const state = React.useSyncExternalStore(store.subscribe, store.getSnapshot);\n\n const clientComponent = components?.[message.name];\n const hasClientComponent = clientComponent != null;\n\n let fallbackComponent = null;\n if (isReactNode(fallback)) {\n fallbackComponent = fallback;\n } else if (typeof fallback === \"object\" && fallback != null) {\n fallbackComponent = fallback?.[message.name];\n }\n\n const uiNamespace = namespace ?? stream.assistantId;\n const uiClient = stream.client[\"~ui\"];\n React.useEffect(() => {\n if (hasClientComponent) return;\n void uiClient.getComponent(uiNamespace, message.name).then((html) => {\n const dom = ref.current;\n if (!dom) return;\n const root = dom.shadowRoot ?? dom.attachShadow({ mode: \"open\" });\n const fragment = document\n .createRange()\n .createContextualFragment(\n html.replace(\"{{shadowRootId}}\", shadowRootId)\n );\n root.appendChild(fragment);\n });\n }, [uiClient, uiNamespace, message.name, shadowRootId, hasClientComponent]);\n\n if (hasClientComponent) {\n return (\n <UseStreamContext.Provider value={{ stream, meta }}>\n {React.createElement(clientComponent, message.props)}\n </UseStreamContext.Provider>\n );\n }\n\n return (\n <>\n <div id={shadowRootId} ref={ref} {...props} />\n\n <UseStreamContext.Provider value={{ stream, meta }}>\n {state?.target != null\n ? ReactDOM.createPortal(\n React.createElement(state.comp, message.props),\n state.target\n )\n : fallbackComponent}\n </UseStreamContext.Provider>\n </>\n );\n}\n\ndeclare global {\n interface Window {\n [EXT_STORE_SYMBOL]: ComponentStore;\n [REQUIRE_SYMBOL]: (name: string) => unknown;\n [REQUIRE_EXTRA_SYMBOL]: Record<string, unknown>;\n }\n}\n\nexport function experimental_loadShare(name: string, module: unknown) {\n if (typeof window === \"undefined\") return;\n\n window[REQUIRE_EXTRA_SYMBOL] ??= {};\n window[REQUIRE_EXTRA_SYMBOL][name] = module;\n}\n\nexport function bootstrapUiContext() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n window[EXT_STORE_SYMBOL] = COMPONENT_STORE;\n window[REQUIRE_SYMBOL] = (name: string) => {\n if (name === \"react\") return React;\n if (name === \"react-dom\") return ReactDOM;\n if (name === \"react/jsx-runtime\") return JsxRuntime;\n if (name === \"@langchain/langgraph-sdk/react\") return { useStream };\n if (name === \"@langchain/langgraph-sdk/react-ui\") {\n return {\n useStreamContext,\n LoadExternalComponent: () => {\n throw new Error(\"Nesting LoadExternalComponent is not supported\");\n },\n };\n }\n\n if (\n window[REQUIRE_EXTRA_SYMBOL] != null &&\n typeof window[REQUIRE_EXTRA_SYMBOL] === \"object\" &&\n name in window[REQUIRE_EXTRA_SYMBOL]\n ) {\n return window[REQUIRE_EXTRA_SYMBOL][name];\n }\n\n throw new Error(`Unknown module...: ${name}`);\n };\n}\n"],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- import { DefaultToolCall } from "../types.messages.cjs";
2
- import { BagTemplate } from "../types.template.cjs";
3
- import { DefaultSubagentStates } from "../ui/types.cjs";
4
- import { UseDeepAgentStream } from "../ui/stream/deep-agent.cjs";
5
- import { UseStream } from "../react/types.cjs";
6
- import { useStream } from "../react/stream.cjs";
7
- import { UIMessage } from "./types.cjs";
8
- import * as React from "react";
9
- import * as JsxRuntime from "react/jsx-runtime";
10
-
11
- //#region src/react-ui/client.d.ts
12
- declare const UseStreamContext: React.Context<{
13
- stream: UseDeepAgentStream<Record<string, unknown>, DefaultToolCall, DefaultSubagentStates, BagTemplate>;
14
- meta: unknown;
15
- }>;
16
- type GetMetaType<Bag extends BagTemplate> = Bag extends {
17
- MetaType: unknown;
18
- } ? Bag["MetaType"] : unknown;
19
- interface UseStreamContext<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate> extends UseStream<StateType, Bag> {
20
- meta?: GetMetaType<Bag>;
21
- }
22
- declare function useStreamContext<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(): UseStreamContext<StateType, Bag>;
23
- interface ComponentTarget {
24
- comp: React.FunctionComponent | React.ComponentClass;
25
- target: HTMLElement;
26
- }
27
- declare class ComponentStore {
28
- private cache;
29
- private boundCache;
30
- private callbacks;
31
- respond(shadowRootId: string, comp: React.FunctionComponent | React.ComponentClass, targetElement: HTMLElement): void;
32
- getBoundStore(shadowRootId: string): {
33
- subscribe: (onStoreChange: () => void) => () => void;
34
- getSnapshot: () => ComponentTarget | undefined;
35
- };
36
- }
37
- declare const EXT_STORE_SYMBOL: unique symbol;
38
- declare const REQUIRE_SYMBOL: unique symbol;
39
- declare const REQUIRE_EXTRA_SYMBOL: unique symbol;
40
- interface LoadExternalComponentProps extends Pick<React.HTMLAttributes<HTMLDivElement>, "style" | "className"> {
41
- /** Stream of the assistant */
42
- stream: ReturnType<typeof useStream>;
43
- /** Namespace of UI components. Defaults to assistant ID. */
44
- namespace?: string;
45
- /** UI message to be rendered */
46
- message: UIMessage;
47
- /** Additional context to be passed to the child component */
48
- meta?: unknown;
49
- /** Fallback to be rendered when the component is loading */
50
- fallback?: React.ReactNode | Record<string, React.ReactNode>;
51
- /**
52
- * Map of components that can be rendered directly without fetching the UI code
53
- * from the server.
54
- */
55
- components?: Record<string, React.FunctionComponent | React.ComponentClass>;
56
- }
57
- declare function LoadExternalComponent({
58
- stream,
59
- namespace,
60
- message,
61
- meta,
62
- fallback,
63
- components,
64
- ...props
65
- }: LoadExternalComponentProps): JsxRuntime.JSX.Element;
66
- declare global {
67
- interface Window {
68
- [EXT_STORE_SYMBOL]: ComponentStore;
69
- [REQUIRE_SYMBOL]: (name: string) => unknown;
70
- [REQUIRE_EXTRA_SYMBOL]: Record<string, unknown>;
71
- }
72
- }
73
- declare function experimental_loadShare(name: string, module: unknown): void;
74
- //#endregion
75
- export { LoadExternalComponent, experimental_loadShare, useStreamContext };
76
- //# sourceMappingURL=client.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.cts","names":[],"sources":["../../src/react-ui/client.tsx"],"mappings":";;;;;;;;;;;cAUM,gBAAA,EAAgB,KAAA,CAAA,OAAA;;;;KAKjB,WAAA,aAAwB,WAAA,IAAe,GAAA;EAAc,QAAA;AAAA,IACtD,GAAA;AAAA,UAGM,gBAAA,mBACU,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,UAClB,SAAA,CAAU,SAAA,EAAW,GAAA;EAC7B,IAAA,GAAO,WAAA,CAAY,GAAA;AAAA;AAAA,iBAGL,gBAAA,mBACI,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,CAAA,CAAA,GACvB,gBAAA,CAAiB,SAAA,EAAW,GAAA;AAAA,UAgBvB,eAAA;EACR,IAAA,EAAM,KAAA,CAAM,iBAAA,GAAoB,KAAA,CAAM,cAAA;EACtC,MAAA,EAAQ,WAAA;AAAA;AAAA,cAGJ,cAAA;EAAA,QACI,KAAA;EAAA,QAEA,UAAA;EAAA,QAQA,SAAA;EAQR,OAAA,CACE,YAAA,UACA,IAAA,EAAM,KAAA,CAAM,iBAAA,GAAoB,KAAA,CAAM,cAAA,EACtC,aAAA,EAAe,WAAA;EAMjB,aAAA,CAAc,YAAA;;;;;cAmBV,gBAAA;AAAA,cACA,cAAA;AAAA,cACA,oBAAA;AAAA,UAEI,0BAAA,SACA,IAAA,CAAK,KAAA,CAAM,cAAA,CAAe,cAAA;EAvFpB;EAyFd,MAAA,EAAQ,UAAA,QAAkB,SAAA;EAzFgB;EA4F1C,SAAA;EA3FK;EA8FL,OAAA,EAAS,SAAA;EA/FM;EAkGf,IAAA;EAlG0C;EAqG1C,QAAA,GAAW,KAAA,CAAM,SAAA,GAAY,MAAA,SAAe,KAAA,CAAM,SAAA;EApGhD;;;AAAG;EA0GL,UAAA,GAAa,MAAA,SAAe,KAAA,CAAM,iBAAA,GAAoB,KAAA,CAAM,cAAA;AAAA;AAAA,iBA8B9C,qBAAA,CAAA;EACd,MAAA;EACA,SAAA;EACA,OAAA;EACA,IAAA;EACA,QAAA;EACA,UAAA;EAAA,GACG;AAAA,GACF,0BAAA,GAA0B,UAAA,CAAA,GAAA,CAAA,OAAA;AAAA,QA8DrB,MAAA;EAAA,UACI,MAAA;IAAA,CACP,gBAAA,GAAmB,cAAA;IAAA,CACnB,cAAA,IAAkB,IAAA;IAAA,CAClB,oBAAA,GAAuB,MAAA;EAAA;AAAA;AAAA,iBAIZ,sBAAA,CAAuB,IAAA,UAAc,MAAA"}
@@ -1,76 +0,0 @@
1
- import { DefaultToolCall } from "../types.messages.js";
2
- import { BagTemplate } from "../types.template.js";
3
- import { DefaultSubagentStates } from "../ui/types.js";
4
- import { UseDeepAgentStream } from "../ui/stream/deep-agent.js";
5
- import { UseStream } from "../react/types.js";
6
- import { useStream } from "../react/stream.js";
7
- import { UIMessage } from "./types.js";
8
- import * as React from "react";
9
- import * as JsxRuntime from "react/jsx-runtime";
10
-
11
- //#region src/react-ui/client.d.ts
12
- declare const UseStreamContext: React.Context<{
13
- stream: UseDeepAgentStream<Record<string, unknown>, DefaultToolCall, DefaultSubagentStates, BagTemplate>;
14
- meta: unknown;
15
- }>;
16
- type GetMetaType<Bag extends BagTemplate> = Bag extends {
17
- MetaType: unknown;
18
- } ? Bag["MetaType"] : unknown;
19
- interface UseStreamContext<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate> extends UseStream<StateType, Bag> {
20
- meta?: GetMetaType<Bag>;
21
- }
22
- declare function useStreamContext<StateType extends Record<string, unknown> = Record<string, unknown>, Bag extends BagTemplate = BagTemplate>(): UseStreamContext<StateType, Bag>;
23
- interface ComponentTarget {
24
- comp: React.FunctionComponent | React.ComponentClass;
25
- target: HTMLElement;
26
- }
27
- declare class ComponentStore {
28
- private cache;
29
- private boundCache;
30
- private callbacks;
31
- respond(shadowRootId: string, comp: React.FunctionComponent | React.ComponentClass, targetElement: HTMLElement): void;
32
- getBoundStore(shadowRootId: string): {
33
- subscribe: (onStoreChange: () => void) => () => void;
34
- getSnapshot: () => ComponentTarget | undefined;
35
- };
36
- }
37
- declare const EXT_STORE_SYMBOL: unique symbol;
38
- declare const REQUIRE_SYMBOL: unique symbol;
39
- declare const REQUIRE_EXTRA_SYMBOL: unique symbol;
40
- interface LoadExternalComponentProps extends Pick<React.HTMLAttributes<HTMLDivElement>, "style" | "className"> {
41
- /** Stream of the assistant */
42
- stream: ReturnType<typeof useStream>;
43
- /** Namespace of UI components. Defaults to assistant ID. */
44
- namespace?: string;
45
- /** UI message to be rendered */
46
- message: UIMessage;
47
- /** Additional context to be passed to the child component */
48
- meta?: unknown;
49
- /** Fallback to be rendered when the component is loading */
50
- fallback?: React.ReactNode | Record<string, React.ReactNode>;
51
- /**
52
- * Map of components that can be rendered directly without fetching the UI code
53
- * from the server.
54
- */
55
- components?: Record<string, React.FunctionComponent | React.ComponentClass>;
56
- }
57
- declare function LoadExternalComponent({
58
- stream,
59
- namespace,
60
- message,
61
- meta,
62
- fallback,
63
- components,
64
- ...props
65
- }: LoadExternalComponentProps): JsxRuntime.JSX.Element;
66
- declare global {
67
- interface Window {
68
- [EXT_STORE_SYMBOL]: ComponentStore;
69
- [REQUIRE_SYMBOL]: (name: string) => unknown;
70
- [REQUIRE_EXTRA_SYMBOL]: Record<string, unknown>;
71
- }
72
- }
73
- declare function experimental_loadShare(name: string, module: unknown): void;
74
- //#endregion
75
- export { LoadExternalComponent, experimental_loadShare, useStreamContext };
76
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","names":[],"sources":["../../src/react-ui/client.tsx"],"mappings":";;;;;;;;;;;cAUM,gBAAA,EAAgB,KAAA,CAAA,OAAA;;;;KAKjB,WAAA,aAAwB,WAAA,IAAe,GAAA;EAAc,QAAA;AAAA,IACtD,GAAA;AAAA,UAGM,gBAAA,mBACU,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,UAClB,SAAA,CAAU,SAAA,EAAW,GAAA;EAC7B,IAAA,GAAO,WAAA,CAAY,GAAA;AAAA;AAAA,iBAGL,gBAAA,mBACI,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,CAAA,CAAA,GACvB,gBAAA,CAAiB,SAAA,EAAW,GAAA;AAAA,UAgBvB,eAAA;EACR,IAAA,EAAM,KAAA,CAAM,iBAAA,GAAoB,KAAA,CAAM,cAAA;EACtC,MAAA,EAAQ,WAAA;AAAA;AAAA,cAGJ,cAAA;EAAA,QACI,KAAA;EAAA,QAEA,UAAA;EAAA,QAQA,SAAA;EAQR,OAAA,CACE,YAAA,UACA,IAAA,EAAM,KAAA,CAAM,iBAAA,GAAoB,KAAA,CAAM,cAAA,EACtC,aAAA,EAAe,WAAA;EAMjB,aAAA,CAAc,YAAA;;;;;cAmBV,gBAAA;AAAA,cACA,cAAA;AAAA,cACA,oBAAA;AAAA,UAEI,0BAAA,SACA,IAAA,CAAK,KAAA,CAAM,cAAA,CAAe,cAAA;EAvFpB;EAyFd,MAAA,EAAQ,UAAA,QAAkB,SAAA;EAzFgB;EA4F1C,SAAA;EA3FK;EA8FL,OAAA,EAAS,SAAA;EA/FM;EAkGf,IAAA;EAlG0C;EAqG1C,QAAA,GAAW,KAAA,CAAM,SAAA,GAAY,MAAA,SAAe,KAAA,CAAM,SAAA;EApGhD;;;AAAG;EA0GL,UAAA,GAAa,MAAA,SAAe,KAAA,CAAM,iBAAA,GAAoB,KAAA,CAAM,cAAA;AAAA;AAAA,iBA8B9C,qBAAA,CAAA;EACd,MAAA;EACA,SAAA;EACA,OAAA;EACA,IAAA;EACA,QAAA;EACA,UAAA;EAAA,GACG;AAAA,GACF,0BAAA,GAA0B,UAAA,CAAA,GAAA,CAAA,OAAA;AAAA,QA8DrB,MAAA;EAAA,UACI,MAAA;IAAA,CACP,gBAAA,GAAmB,cAAA;IAAA,CACnB,cAAA,IAAkB,IAAA;IAAA,CAClB,oBAAA,GAAuB,MAAA;EAAA;AAAA;AAAA,iBAIZ,sBAAA,CAAuB,IAAA,UAAc,MAAA"}
@@ -1,132 +0,0 @@
1
- "use client";
2
-
3
- import { useStream } from "../react/stream.js";
4
- import "../react/index.js";
5
- import * as React from "react";
6
- import * as ReactDOM from "react-dom";
7
- import * as JsxRuntime from "react/jsx-runtime";
8
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
-
10
- //#region src/react-ui/client.tsx
11
- const UseStreamContext = React.createContext(null);
12
- function useStreamContext() {
13
- const ctx = React.useContext(UseStreamContext);
14
- if (!ctx) throw new Error("useStreamContext must be used within a LoadExternalComponent");
15
- return new Proxy(ctx, { get(target, prop) {
16
- if (prop === "meta") return target.meta;
17
- return target.stream[prop];
18
- } });
19
- }
20
- var ComponentStore = class {
21
- cache = {};
22
- boundCache = {};
23
- callbacks = {};
24
- respond(shadowRootId, comp, targetElement) {
25
- this.cache[shadowRootId] = {
26
- comp,
27
- target: targetElement
28
- };
29
- this.callbacks[shadowRootId]?.forEach((c) => c(comp, targetElement));
30
- }
31
- getBoundStore(shadowRootId) {
32
- this.boundCache[shadowRootId] ??= {
33
- subscribe: (onStoreChange) => {
34
- this.callbacks[shadowRootId] ??= [];
35
- this.callbacks[shadowRootId].push(onStoreChange);
36
- return () => {
37
- this.callbacks[shadowRootId] = this.callbacks[shadowRootId].filter((c) => c !== onStoreChange);
38
- };
39
- },
40
- getSnapshot: () => this.cache[shadowRootId]
41
- };
42
- return this.boundCache[shadowRootId];
43
- }
44
- };
45
- const COMPONENT_STORE = new ComponentStore();
46
- const EXT_STORE_SYMBOL = Symbol.for("LGUI_EXT_STORE");
47
- const REQUIRE_SYMBOL = Symbol.for("LGUI_REQUIRE");
48
- const REQUIRE_EXTRA_SYMBOL = Symbol.for("LGUI_REQUIRE_EXTRA");
49
- const isIterable = (value) => value != null && typeof value === "object" && Symbol.iterator in value;
50
- const isPromise = (value) => value != null && typeof value === "object" && "then" in value && typeof value.then === "function";
51
- const isReactNode = (value) => {
52
- if (React.isValidElement(value)) return true;
53
- if (value == null) return true;
54
- if (typeof value === "string" || typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") return true;
55
- if (isIterable(value)) return true;
56
- if (isPromise(value)) return true;
57
- return false;
58
- };
59
- function LoadExternalComponent({ stream, namespace, message, meta, fallback, components, ...props }) {
60
- const ref = React.useRef(null);
61
- const shadowRootId = `child-shadow-${React.useId()}`;
62
- const store = React.useMemo(() => COMPONENT_STORE.getBoundStore(shadowRootId), [shadowRootId]);
63
- const state = React.useSyncExternalStore(store.subscribe, store.getSnapshot);
64
- const clientComponent = components?.[message.name];
65
- const hasClientComponent = clientComponent != null;
66
- let fallbackComponent = null;
67
- if (isReactNode(fallback)) fallbackComponent = fallback;
68
- else if (typeof fallback === "object" && fallback != null) fallbackComponent = fallback?.[message.name];
69
- const uiNamespace = namespace ?? stream.assistantId;
70
- const uiClient = stream.client["~ui"];
71
- React.useEffect(() => {
72
- if (hasClientComponent) return;
73
- uiClient.getComponent(uiNamespace, message.name).then((html) => {
74
- const dom = ref.current;
75
- if (!dom) return;
76
- const root = dom.shadowRoot ?? dom.attachShadow({ mode: "open" });
77
- const fragment = document.createRange().createContextualFragment(html.replace("{{shadowRootId}}", shadowRootId));
78
- root.appendChild(fragment);
79
- });
80
- }, [
81
- uiClient,
82
- uiNamespace,
83
- message.name,
84
- shadowRootId,
85
- hasClientComponent
86
- ]);
87
- if (hasClientComponent) return /* @__PURE__ */ jsx(UseStreamContext.Provider, {
88
- value: {
89
- stream,
90
- meta
91
- },
92
- children: React.createElement(clientComponent, message.props)
93
- });
94
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
95
- id: shadowRootId,
96
- ref,
97
- ...props
98
- }), /* @__PURE__ */ jsx(UseStreamContext.Provider, {
99
- value: {
100
- stream,
101
- meta
102
- },
103
- children: state?.target != null ? ReactDOM.createPortal(React.createElement(state.comp, message.props), state.target) : fallbackComponent
104
- })] });
105
- }
106
- function experimental_loadShare(name, module) {
107
- if (typeof window === "undefined") return;
108
- window[REQUIRE_EXTRA_SYMBOL] ??= {};
109
- window[REQUIRE_EXTRA_SYMBOL][name] = module;
110
- }
111
- function bootstrapUiContext() {
112
- if (typeof window === "undefined") return;
113
- window[EXT_STORE_SYMBOL] = COMPONENT_STORE;
114
- window[REQUIRE_SYMBOL] = (name) => {
115
- if (name === "react") return React;
116
- if (name === "react-dom") return ReactDOM;
117
- if (name === "react/jsx-runtime") return JsxRuntime;
118
- if (name === "@langchain/langgraph-sdk/react") return { useStream };
119
- if (name === "@langchain/langgraph-sdk/react-ui") return {
120
- useStreamContext,
121
- LoadExternalComponent: () => {
122
- throw new Error("Nesting LoadExternalComponent is not supported");
123
- }
124
- };
125
- if (window[REQUIRE_EXTRA_SYMBOL] != null && typeof window[REQUIRE_EXTRA_SYMBOL] === "object" && name in window[REQUIRE_EXTRA_SYMBOL]) return window[REQUIRE_EXTRA_SYMBOL][name];
126
- throw new Error(`Unknown module...: ${name}`);
127
- };
128
- }
129
-
130
- //#endregion
131
- export { LoadExternalComponent, bootstrapUiContext, experimental_loadShare, useStreamContext };
132
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../../src/react-ui/client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport type { UIMessage } from \"./types.js\";\nimport { useStream } from \"../react/index.js\";\nimport type { UseStream } from \"../react/types.js\";\nimport type { BagTemplate } from \"../types.template.js\";\n\nconst UseStreamContext = React.createContext<{\n stream: ReturnType<typeof useStream>;\n meta: unknown;\n}>(null!);\n\ntype GetMetaType<Bag extends BagTemplate> = Bag extends { MetaType: unknown }\n ? Bag[\"MetaType\"]\n : unknown;\n\ninterface UseStreamContext<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate\n> extends UseStream<StateType, Bag> {\n meta?: GetMetaType<Bag>;\n}\n\nexport function useStreamContext<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate\n>(): UseStreamContext<StateType, Bag> {\n const ctx = React.useContext(UseStreamContext);\n if (!ctx) {\n throw new Error(\n \"useStreamContext must be used within a LoadExternalComponent\"\n );\n }\n\n return new Proxy(ctx, {\n get(target, prop: keyof UseStreamContext<StateType, Bag>) {\n if (prop === \"meta\") return target.meta;\n return target.stream[prop as keyof typeof target.stream];\n },\n }) as unknown as UseStreamContext<StateType, Bag>;\n}\n\ninterface ComponentTarget {\n comp: React.FunctionComponent | React.ComponentClass;\n target: HTMLElement;\n}\n\nclass ComponentStore {\n private cache: Record<string, ComponentTarget> = {};\n\n private boundCache: Record<\n string,\n {\n subscribe: (onStoreChange: () => void) => () => void;\n getSnapshot: () => ComponentTarget | undefined;\n }\n > = {};\n\n private callbacks: Record<\n string,\n ((\n comp: React.FunctionComponent | React.ComponentClass,\n el: HTMLElement\n ) => void)[]\n > = {};\n\n respond(\n shadowRootId: string,\n comp: React.FunctionComponent | React.ComponentClass,\n targetElement: HTMLElement\n ) {\n this.cache[shadowRootId] = { comp, target: targetElement };\n this.callbacks[shadowRootId]?.forEach((c) => c(comp, targetElement));\n }\n\n getBoundStore(shadowRootId: string) {\n this.boundCache[shadowRootId] ??= {\n subscribe: (onStoreChange: () => void) => {\n this.callbacks[shadowRootId] ??= [];\n this.callbacks[shadowRootId].push(onStoreChange);\n return () => {\n this.callbacks[shadowRootId] = this.callbacks[shadowRootId].filter(\n (c) => c !== onStoreChange\n );\n };\n },\n getSnapshot: () => this.cache[shadowRootId],\n };\n\n return this.boundCache[shadowRootId];\n }\n}\n\nconst COMPONENT_STORE = new ComponentStore();\nconst EXT_STORE_SYMBOL = Symbol.for(\"LGUI_EXT_STORE\");\nconst REQUIRE_SYMBOL = Symbol.for(\"LGUI_REQUIRE\");\nconst REQUIRE_EXTRA_SYMBOL = Symbol.for(\"LGUI_REQUIRE_EXTRA\");\n\ninterface LoadExternalComponentProps\n extends Pick<React.HTMLAttributes<HTMLDivElement>, \"style\" | \"className\"> {\n /** Stream of the assistant */\n stream: ReturnType<typeof useStream>;\n\n /** Namespace of UI components. Defaults to assistant ID. */\n namespace?: string;\n\n /** UI message to be rendered */\n message: UIMessage;\n\n /** Additional context to be passed to the child component */\n meta?: unknown;\n\n /** Fallback to be rendered when the component is loading */\n fallback?: React.ReactNode | Record<string, React.ReactNode>;\n\n /**\n * Map of components that can be rendered directly without fetching the UI code\n * from the server.\n */\n components?: Record<string, React.FunctionComponent | React.ComponentClass>;\n}\n\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n value != null && typeof value === \"object\" && Symbol.iterator in value;\n\nconst isPromise = (value: unknown): value is Promise<unknown> =>\n value != null &&\n typeof value === \"object\" &&\n \"then\" in value &&\n typeof value.then === \"function\";\n\nconst isReactNode = (value: unknown): value is React.ReactNode => {\n if (React.isValidElement(value)) return true;\n if (value == null) return true;\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\" ||\n typeof value === \"boolean\"\n ) {\n return true;\n }\n\n if (isIterable(value)) return true;\n if (isPromise(value)) return true;\n\n return false;\n};\n\nexport function LoadExternalComponent({\n stream,\n namespace,\n message,\n meta,\n fallback,\n components,\n ...props\n}: LoadExternalComponentProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const id = React.useId();\n const shadowRootId = `child-shadow-${id}`;\n\n const store = React.useMemo(\n () => COMPONENT_STORE.getBoundStore(shadowRootId),\n [shadowRootId]\n );\n const state = React.useSyncExternalStore(store.subscribe, store.getSnapshot);\n\n const clientComponent = components?.[message.name];\n const hasClientComponent = clientComponent != null;\n\n let fallbackComponent = null;\n if (isReactNode(fallback)) {\n fallbackComponent = fallback;\n } else if (typeof fallback === \"object\" && fallback != null) {\n fallbackComponent = fallback?.[message.name];\n }\n\n const uiNamespace = namespace ?? stream.assistantId;\n const uiClient = stream.client[\"~ui\"];\n React.useEffect(() => {\n if (hasClientComponent) return;\n void uiClient.getComponent(uiNamespace, message.name).then((html) => {\n const dom = ref.current;\n if (!dom) return;\n const root = dom.shadowRoot ?? dom.attachShadow({ mode: \"open\" });\n const fragment = document\n .createRange()\n .createContextualFragment(\n html.replace(\"{{shadowRootId}}\", shadowRootId)\n );\n root.appendChild(fragment);\n });\n }, [uiClient, uiNamespace, message.name, shadowRootId, hasClientComponent]);\n\n if (hasClientComponent) {\n return (\n <UseStreamContext.Provider value={{ stream, meta }}>\n {React.createElement(clientComponent, message.props)}\n </UseStreamContext.Provider>\n );\n }\n\n return (\n <>\n <div id={shadowRootId} ref={ref} {...props} />\n\n <UseStreamContext.Provider value={{ stream, meta }}>\n {state?.target != null\n ? ReactDOM.createPortal(\n React.createElement(state.comp, message.props),\n state.target\n )\n : fallbackComponent}\n </UseStreamContext.Provider>\n </>\n );\n}\n\ndeclare global {\n interface Window {\n [EXT_STORE_SYMBOL]: ComponentStore;\n [REQUIRE_SYMBOL]: (name: string) => unknown;\n [REQUIRE_EXTRA_SYMBOL]: Record<string, unknown>;\n }\n}\n\nexport function experimental_loadShare(name: string, module: unknown) {\n if (typeof window === \"undefined\") return;\n\n window[REQUIRE_EXTRA_SYMBOL] ??= {};\n window[REQUIRE_EXTRA_SYMBOL][name] = module;\n}\n\nexport function bootstrapUiContext() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n window[EXT_STORE_SYMBOL] = COMPONENT_STORE;\n window[REQUIRE_SYMBOL] = (name: string) => {\n if (name === \"react\") return React;\n if (name === \"react-dom\") return ReactDOM;\n if (name === \"react/jsx-runtime\") return JsxRuntime;\n if (name === \"@langchain/langgraph-sdk/react\") return { useStream };\n if (name === \"@langchain/langgraph-sdk/react-ui\") {\n return {\n useStreamContext,\n LoadExternalComponent: () => {\n throw new Error(\"Nesting LoadExternalComponent is not supported\");\n },\n };\n }\n\n if (\n window[REQUIRE_EXTRA_SYMBOL] != null &&\n typeof window[REQUIRE_EXTRA_SYMBOL] === \"object\" &&\n name in window[REQUIRE_EXTRA_SYMBOL]\n ) {\n return window[REQUIRE_EXTRA_SYMBOL][name];\n }\n\n throw new Error(`Unknown module...: ${name}`);\n };\n}\n"],"mappings":";;;;;;;;;;AAUA,MAAM,mBAAmB,MAAM,cAG5B,KAAM;AAaT,SAAgB,mBAGsB;CACpC,MAAM,MAAM,MAAM,WAAW,iBAAiB;AAC9C,KAAI,CAAC,IACH,OAAM,IAAI,MACR,+DACD;AAGH,QAAO,IAAI,MAAM,KAAK,EACpB,IAAI,QAAQ,MAA8C;AACxD,MAAI,SAAS,OAAQ,QAAO,OAAO;AACnC,SAAO,OAAO,OAAO;IAExB,CAAC;;AAQJ,IAAM,iBAAN,MAAqB;CACnB,AAAQ,QAAyC,EAAE;CAEnD,AAAQ,aAMJ,EAAE;CAEN,AAAQ,YAMJ,EAAE;CAEN,QACE,cACA,MACA,eACA;AACA,OAAK,MAAM,gBAAgB;GAAE;GAAM,QAAQ;GAAe;AAC1D,OAAK,UAAU,eAAe,SAAS,MAAM,EAAE,MAAM,cAAc,CAAC;;CAGtE,cAAc,cAAsB;AAClC,OAAK,WAAW,kBAAkB;GAChC,YAAY,kBAA8B;AACxC,SAAK,UAAU,kBAAkB,EAAE;AACnC,SAAK,UAAU,cAAc,KAAK,cAAc;AAChD,iBAAa;AACX,UAAK,UAAU,gBAAgB,KAAK,UAAU,cAAc,QACzD,MAAM,MAAM,cACd;;;GAGL,mBAAmB,KAAK,MAAM;GAC/B;AAED,SAAO,KAAK,WAAW;;;AAI3B,MAAM,kBAAkB,IAAI,gBAAgB;AAC5C,MAAM,mBAAmB,OAAO,IAAI,iBAAiB;AACrD,MAAM,iBAAiB,OAAO,IAAI,eAAe;AACjD,MAAM,uBAAuB,OAAO,IAAI,qBAAqB;AA0B7D,MAAM,cAAc,UAClB,SAAS,QAAQ,OAAO,UAAU,YAAY,OAAO,YAAY;AAEnE,MAAM,aAAa,UACjB,SAAS,QACT,OAAO,UAAU,YACjB,UAAU,SACV,OAAO,MAAM,SAAS;AAExB,MAAM,eAAe,UAA6C;AAChE,KAAI,MAAM,eAAe,MAAM,CAAE,QAAO;AACxC,KAAI,SAAS,KAAM,QAAO;AAC1B,KACE,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,OAAO,UAAU,UAEjB,QAAO;AAGT,KAAI,WAAW,MAAM,CAAE,QAAO;AAC9B,KAAI,UAAU,MAAM,CAAE,QAAO;AAE7B,QAAO;;AAGT,SAAgB,sBAAsB,EACpC,QACA,WACA,SACA,MACA,UACA,YACA,GAAG,SAC0B;CAC7B,MAAM,MAAM,MAAM,OAAuB,KAAK;CAE9C,MAAM,eAAe,gBADV,MAAM,OAAO;CAGxB,MAAM,QAAQ,MAAM,cACZ,gBAAgB,cAAc,aAAa,EACjD,CAAC,aAAa,CACf;CACD,MAAM,QAAQ,MAAM,qBAAqB,MAAM,WAAW,MAAM,YAAY;CAE5E,MAAM,kBAAkB,aAAa,QAAQ;CAC7C,MAAM,qBAAqB,mBAAmB;CAE9C,IAAI,oBAAoB;AACxB,KAAI,YAAY,SAAS,CACvB,qBAAoB;UACX,OAAO,aAAa,YAAY,YAAY,KACrD,qBAAoB,WAAW,QAAQ;CAGzC,MAAM,cAAc,aAAa,OAAO;CACxC,MAAM,WAAW,OAAO,OAAO;AAC/B,OAAM,gBAAgB;AACpB,MAAI,mBAAoB;AACxB,EAAK,SAAS,aAAa,aAAa,QAAQ,KAAK,CAAC,MAAM,SAAS;GACnE,MAAM,MAAM,IAAI;AAChB,OAAI,CAAC,IAAK;GACV,MAAM,OAAO,IAAI,cAAc,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;GACjE,MAAM,WAAW,SACd,aAAa,CACb,yBACC,KAAK,QAAQ,oBAAoB,aAAa,CAC/C;AACH,QAAK,YAAY,SAAS;IAC1B;IACD;EAAC;EAAU;EAAa,QAAQ;EAAM;EAAc;EAAmB,CAAC;AAE3E,KAAI,mBACF,QACE,oBAAC,iBAAiB;EAAS,OAAO;GAAE;GAAQ;GAAM;YAC/C,MAAM,cAAc,iBAAiB,QAAQ,MAAM;GAC1B;AAIhC,QACE,4CACE,oBAAC;EAAI,IAAI;EAAmB;EAAK,GAAI;GAAS,EAE9C,oBAAC,iBAAiB;EAAS,OAAO;GAAE;GAAQ;GAAM;YAC/C,OAAO,UAAU,OACd,SAAS,aACP,MAAM,cAAc,MAAM,MAAM,QAAQ,MAAM,EAC9C,MAAM,OACP,GACD;GACsB,IAC3B;;AAYP,SAAgB,uBAAuB,MAAc,QAAiB;AACpE,KAAI,OAAO,WAAW,YAAa;AAEnC,QAAO,0BAA0B,EAAE;AACnC,QAAO,sBAAsB,QAAQ;;AAGvC,SAAgB,qBAAqB;AACnC,KAAI,OAAO,WAAW,YACpB;AAGF,QAAO,oBAAoB;AAC3B,QAAO,mBAAmB,SAAiB;AACzC,MAAI,SAAS,QAAS,QAAO;AAC7B,MAAI,SAAS,YAAa,QAAO;AACjC,MAAI,SAAS,oBAAqB,QAAO;AACzC,MAAI,SAAS,iCAAkC,QAAO,EAAE,WAAW;AACnE,MAAI,SAAS,oCACX,QAAO;GACL;GACA,6BAA6B;AAC3B,UAAM,IAAI,MAAM,iDAAiD;;GAEpE;AAGH,MACE,OAAO,yBAAyB,QAChC,OAAO,OAAO,0BAA0B,YACxC,QAAQ,OAAO,sBAEf,QAAO,OAAO,sBAAsB;AAGtC,QAAM,IAAI,MAAM,sBAAsB,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","names":["bootstrapUiContext"],"sources":["../../src/react-ui/index.ts"],"sourcesContent":["import { bootstrapUiContext } from \"./client.js\";\n\nbootstrapUiContext();\n\nexport {\n useStreamContext,\n LoadExternalComponent,\n experimental_loadShare,\n} from \"./client.js\";\nexport {\n uiMessageReducer,\n isUIMessage,\n isRemoveUIMessage,\n type UIMessage,\n type RemoveUIMessage,\n} from \"./types.js\";\n"],"mappings":";;;;;AAEAA,mCAAoB"}