@assistant-ui/core 0.2.18 → 0.2.20

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 (231) hide show
  1. package/dist/index.d.ts +4 -2
  2. package/dist/index.js +3 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/internal.d.ts +2 -1
  5. package/dist/internal.js +2 -1
  6. package/dist/model-context/interactable-composer-metadata.d.ts +105 -0
  7. package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -0
  8. package/dist/model-context/interactable-composer-metadata.js +259 -0
  9. package/dist/model-context/interactable-composer-metadata.js.map +1 -0
  10. package/dist/model-context/registry.d.ts.map +1 -1
  11. package/dist/model-context/registry.js +1 -0
  12. package/dist/model-context/registry.js.map +1 -1
  13. package/dist/model-context/types.d.ts +6 -0
  14. package/dist/model-context/types.d.ts.map +1 -1
  15. package/dist/model-context/types.js +4 -0
  16. package/dist/model-context/types.js.map +1 -1
  17. package/dist/react/AssistantProvider.d.ts +1 -1
  18. package/dist/react/AssistantProvider.js +1 -1
  19. package/dist/react/AssistantRuntimeProvider.d.ts +1 -1
  20. package/dist/react/RuntimeAdapter.js +1 -1
  21. package/dist/react/client/Interactables.d.ts +8 -2
  22. package/dist/react/client/Interactables.d.ts.map +1 -1
  23. package/dist/react/client/Interactables.js +190 -94
  24. package/dist/react/client/Interactables.js.map +1 -1
  25. package/dist/react/client/Tools.js +1 -1
  26. package/dist/react/client/interactable-model-context.d.ts +9 -6
  27. package/dist/react/client/interactable-model-context.d.ts.map +1 -1
  28. package/dist/react/client/interactable-model-context.js +154 -32
  29. package/dist/react/client/interactable-model-context.js.map +1 -1
  30. package/dist/react/index.d.ts +15 -6
  31. package/dist/react/index.js +12 -5
  32. package/dist/react/interactables-legacy/Interactables.d.ts +12 -0
  33. package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -0
  34. package/dist/react/interactables-legacy/Interactables.js +264 -0
  35. package/dist/react/interactables-legacy/Interactables.js.map +1 -0
  36. package/dist/react/interactables-legacy/interactable-model-context.d.ts +12 -0
  37. package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -0
  38. package/dist/react/interactables-legacy/interactable-model-context.js +54 -0
  39. package/dist/react/interactables-legacy/interactable-model-context.js.map +1 -0
  40. package/dist/react/interactables-legacy/scopes.d.ts +58 -0
  41. package/dist/react/interactables-legacy/scopes.d.ts.map +1 -0
  42. package/dist/react/interactables-legacy/scopes.js +0 -0
  43. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +31 -0
  44. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -0
  45. package/dist/react/{model-context → interactables-legacy}/useAssistantInteractable.js +6 -2
  46. package/dist/react/interactables-legacy/useAssistantInteractable.js.map +1 -0
  47. package/dist/react/interactables-legacy/useInteractableState.d.ts +21 -0
  48. package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -0
  49. package/dist/react/interactables-legacy/useInteractableState.js +84 -0
  50. package/dist/react/interactables-legacy/useInteractableState.js.map +1 -0
  51. package/dist/react/model-context/interactableTool.d.ts +53 -0
  52. package/dist/react/model-context/interactableTool.d.ts.map +1 -0
  53. package/dist/react/model-context/interactableTool.js +188 -0
  54. package/dist/react/model-context/interactableTool.js.map +1 -0
  55. package/dist/react/model-context/useAssistantContext.js +1 -1
  56. package/dist/react/model-context/useAssistantDataUI.js +1 -1
  57. package/dist/react/model-context/useAssistantInstructions.js +1 -1
  58. package/dist/react/model-context/useAssistantTool.js +1 -1
  59. package/dist/react/model-context/useAssistantToolUI.js +1 -1
  60. package/dist/react/model-context/useAuiToolOverrides.js +1 -1
  61. package/dist/react/model-context/useInteractable.d.ts +73 -0
  62. package/dist/react/model-context/useInteractable.d.ts.map +1 -0
  63. package/dist/react/model-context/useInteractable.js +100 -0
  64. package/dist/react/model-context/useInteractable.js.map +1 -0
  65. package/dist/react/model-context/useInteractableState.d.ts +8 -5
  66. package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
  67. package/dist/react/model-context/useInteractableState.js +48 -48
  68. package/dist/react/model-context/useInteractableState.js.map +1 -1
  69. package/dist/react/model-context/useInteractableVersions.d.ts +19 -0
  70. package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -0
  71. package/dist/react/model-context/useInteractableVersions.js +51 -0
  72. package/dist/react/model-context/useInteractableVersions.js.map +1 -0
  73. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +15 -0
  74. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -0
  75. package/dist/react/primitive-hooks/useThreadMessageIds.js +26 -0
  76. package/dist/react/primitive-hooks/useThreadMessageIds.js.map +1 -0
  77. package/dist/react/primitive-hooks/useVoice.js +1 -1
  78. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +1 -1
  79. package/dist/react/primitives/composer/ComposerAttachments.js +1 -1
  80. package/dist/react/primitives/composer/ComposerQueue.js +1 -1
  81. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
  82. package/dist/react/primitives/generativeUI/GenerativeUI.js +2 -2
  83. package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
  84. package/dist/react/primitives/message/MessageAttachments.js +1 -1
  85. package/dist/react/primitives/message/MessageGroupedParts.js +1 -1
  86. package/dist/react/primitives/message/MessageParts.js +1 -1
  87. package/dist/react/primitives/message/MessageQuote.js +1 -1
  88. package/dist/react/primitives/part/PartMessages.d.ts +5 -2
  89. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  90. package/dist/react/primitives/part/PartMessages.js +8 -8
  91. package/dist/react/primitives/part/PartMessages.js.map +1 -1
  92. package/dist/react/primitives/thread/ThreadMessages.d.ts +31 -1
  93. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  94. package/dist/react/primitives/thread/ThreadMessages.js +64 -2
  95. package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
  96. package/dist/react/primitives/thread/ThreadSuggestions.js +1 -1
  97. package/dist/react/primitives/threadList/ThreadListItems.js +1 -1
  98. package/dist/react/providers/MessageByIdProvider.d.ts +9 -0
  99. package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -0
  100. package/dist/react/providers/MessageByIdProvider.js +57 -0
  101. package/dist/react/providers/MessageByIdProvider.js.map +1 -0
  102. package/dist/react/providers/ReadonlyThreadProvider.js +1 -1
  103. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +1 -1
  104. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +3 -0
  105. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  106. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +16 -1
  107. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  108. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +1 -1
  109. package/dist/react/runtimes/cloud/auiV0.js +1 -1
  110. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +1 -1
  111. package/dist/react/runtimes/createRuntimeExtras.d.ts +20 -0
  112. package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -0
  113. package/dist/react/runtimes/createRuntimeExtras.js +43 -0
  114. package/dist/react/runtimes/createRuntimeExtras.js.map +1 -0
  115. package/dist/react/runtimes/useLocalRuntime.js +1 -1
  116. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  117. package/dist/react/runtimes/useRemoteThreadListRuntime.js +6 -2
  118. package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
  119. package/dist/react/runtimes/useStreamingTiming.d.ts +26 -0
  120. package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -0
  121. package/dist/react/runtimes/useStreamingTiming.js +43 -0
  122. package/dist/react/runtimes/useStreamingTiming.js.map +1 -0
  123. package/dist/react/types/scopes/interactables.d.ts +40 -24
  124. package/dist/react/types/scopes/interactables.d.ts.map +1 -1
  125. package/dist/react/types/store-augmentation.d.ts +3 -1
  126. package/dist/react/types/store-augmentation.d.ts.map +1 -1
  127. package/dist/react/utils/useJSONEqual.d.ts +11 -0
  128. package/dist/react/utils/useJSONEqual.d.ts.map +1 -0
  129. package/dist/react/utils/useJSONEqual.js +30 -0
  130. package/dist/react/utils/useJSONEqual.js.map +1 -0
  131. package/dist/runtime/base/base-composer-runtime-core.d.ts +5 -0
  132. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  133. package/dist/runtime/base/base-composer-runtime-core.js +13 -0
  134. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  135. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  136. package/dist/runtime/base/default-edit-composer-runtime-core.js +6 -1
  137. package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
  138. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  139. package/dist/runtime/base/default-thread-composer-runtime-core.js +4 -1
  140. package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
  141. package/dist/runtime/utils/message-repository.d.ts +1 -0
  142. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  143. package/dist/runtime/utils/message-repository.js +6 -3
  144. package/dist/runtime/utils/message-repository.js.map +1 -1
  145. package/dist/runtime/utils/streaming-timing.d.ts +59 -0
  146. package/dist/runtime/utils/streaming-timing.d.ts.map +1 -0
  147. package/dist/runtime/utils/streaming-timing.js +76 -0
  148. package/dist/runtime/utils/streaming-timing.js.map +1 -0
  149. package/dist/runtime/utils/thread-message-like.js +2 -1
  150. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  151. package/dist/runtimes/external-store/external-store-adapter.d.ts +26 -1
  152. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  153. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +9 -0
  154. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  155. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +19 -0
  156. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  157. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  158. package/dist/runtimes/local/local-thread-runtime-core.js +1 -1
  159. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  160. package/dist/runtimes/remote-thread-list/types.d.ts +12 -0
  161. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  162. package/dist/store/clients/suggestions.js +1 -1
  163. package/dist/store/clients/thread-message-client.js +1 -1
  164. package/dist/store/runtime-clients/composer-runtime-client.js +1 -1
  165. package/dist/store/runtime-clients/message-runtime-client.js +1 -1
  166. package/dist/store/runtime-clients/thread-list-item-runtime-client.js +1 -1
  167. package/dist/store/runtime-clients/thread-runtime-client.js +1 -1
  168. package/dist/tests/remote-thread-list-test-helpers.d.ts +1 -1
  169. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
  170. package/dist/tests/remote-thread-list-test-helpers.js +3 -2
  171. package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
  172. package/package.json +9 -9
  173. package/src/index.ts +17 -0
  174. package/src/internal.ts +7 -0
  175. package/src/model-context/interactable-composer-metadata.test.ts +550 -0
  176. package/src/model-context/interactable-composer-metadata.ts +395 -0
  177. package/src/model-context/registry.ts +5 -0
  178. package/src/model-context/types.ts +12 -0
  179. package/src/react/client/Interactables.test.ts +358 -0
  180. package/src/react/client/Interactables.ts +339 -86
  181. package/src/react/client/interactable-model-context.test.ts +418 -0
  182. package/src/react/client/interactable-model-context.ts +252 -58
  183. package/src/react/index.ts +72 -3
  184. package/src/react/interactables-legacy/Interactables.ts +332 -0
  185. package/src/react/interactables-legacy/interactable-model-context.test.ts +54 -0
  186. package/src/react/interactables-legacy/interactable-model-context.ts +80 -0
  187. package/src/react/interactables-legacy/scopes.ts +66 -0
  188. package/src/react/{model-context → interactables-legacy}/useAssistantInteractable.ts +10 -1
  189. package/src/react/interactables-legacy/useInteractableState.ts +67 -0
  190. package/src/react/model-context/interactableTool.tsx +175 -0
  191. package/src/react/model-context/useInteractable.ts +233 -0
  192. package/src/react/model-context/useInteractableState.ts +31 -23
  193. package/src/react/model-context/useInteractableVersions.ts +48 -0
  194. package/src/react/primitive-hooks/useThreadMessageIds.ts +27 -0
  195. package/src/react/primitives/generativeUI/GenerativeUI.tsx +5 -1
  196. package/src/react/primitives/part/PartMessages.test.tsx +17 -0
  197. package/src/react/primitives/part/PartMessages.tsx +13 -8
  198. package/src/react/primitives/thread/ThreadMessages.tsx +67 -0
  199. package/src/react/providers/MessageByIdProvider.tsx +23 -0
  200. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +21 -1
  201. package/src/react/runtimes/createRuntimeExtras.test.ts +58 -0
  202. package/src/react/runtimes/createRuntimeExtras.ts +68 -0
  203. package/src/react/runtimes/createRuntimeExtras.use.test.ts +50 -0
  204. package/src/react/runtimes/useRemoteThreadListRuntime.ts +13 -1
  205. package/src/react/runtimes/useStreamingTiming.ts +68 -0
  206. package/src/react/types/scopes/interactables.ts +45 -23
  207. package/src/react/types/store-augmentation.ts +4 -2
  208. package/src/react/utils/useJSONEqual.ts +20 -0
  209. package/src/runtime/base/base-composer-runtime-core.ts +13 -0
  210. package/src/runtime/base/default-edit-composer-runtime-core.ts +18 -1
  211. package/src/runtime/base/default-thread-composer-runtime-core.ts +11 -1
  212. package/src/runtime/utils/message-repository.ts +11 -7
  213. package/src/runtime/utils/streaming-timing.test.ts +301 -0
  214. package/src/runtime/utils/streaming-timing.ts +161 -0
  215. package/src/runtime/utils/thread-message-like.ts +2 -1
  216. package/src/runtimes/external-store/external-store-adapter.ts +28 -0
  217. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +33 -1
  218. package/src/runtimes/local/local-thread-runtime-core.ts +4 -1
  219. package/src/runtimes/remote-thread-list/types.ts +13 -0
  220. package/src/tests/MessageRepository.test.ts +2 -0
  221. package/src/tests/composer-can-send.test.ts +1 -0
  222. package/src/tests/default-edit-composer-runtime-core.test.ts +78 -1
  223. package/src/tests/default-thread-composer-runtime-core.test.ts +82 -0
  224. package/src/tests/external-store-thread-runtime-core.test.ts +337 -0
  225. package/src/tests/groupParts.test.ts +32 -0
  226. package/src/tests/remote-thread-list-reactive-threadId.test.ts +90 -0
  227. package/src/tests/remote-thread-list-test-helpers.ts +2 -1
  228. package/src/tests/thread-message-like.test.ts +50 -0
  229. package/dist/react/model-context/useAssistantInteractable.d.ts +0 -22
  230. package/dist/react/model-context/useAssistantInteractable.d.ts.map +0 -1
  231. package/dist/react/model-context/useAssistantInteractable.js.map +0 -1
@@ -1,80 +1,80 @@
1
+ "use client";
1
2
  import { useAui, useAuiState } from "@assistant-ui/store";
2
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
4
  //#region src/react/model-context/useInteractableState.ts
4
- /**
5
- * Reads and writes the state of a registered interactable.
6
- *
7
- * Pair with {@link useAssistantInteractable} which handles registration.
8
- */
9
- const useInteractableState = (id, fallback) => {
10
- const $ = c(19);
5
+ const useInteractableState = (id) => {
6
+ const $ = c(17);
11
7
  const aui = useAui();
12
- const state = useAuiState((s) => s.interactables.definitions[id]?.state) ?? fallback;
13
8
  let t0;
14
9
  if ($[0] !== id) {
15
- t0 = (s_0) => s_0.interactables.persistence[id];
10
+ t0 = (s) => s.unstable_interactables.definitions[id]?.state;
16
11
  $[0] = id;
17
12
  $[1] = t0;
18
13
  } else t0 = $[1];
19
- const persistenceStatus = useAuiState(t0);
14
+ const state = useAuiState(t0);
20
15
  let t1;
21
- if ($[2] !== aui || $[3] !== id) {
22
- t1 = (updater) => {
23
- aui.interactables().setState(id, (prev) => {
16
+ if ($[2] !== id) {
17
+ t1 = (s_0) => s_0.unstable_interactables.persistence[id];
18
+ $[2] = id;
19
+ $[3] = t1;
20
+ } else t1 = $[3];
21
+ const persistenceStatus = useAuiState(t1);
22
+ let t2;
23
+ if ($[4] !== aui || $[5] !== id) {
24
+ t2 = (updater) => {
25
+ aui.unstable_interactables().setState(id, (prev) => {
24
26
  if (typeof updater === "function") return updater(prev);
25
27
  return updater;
26
28
  });
27
29
  };
28
- $[2] = aui;
29
- $[3] = id;
30
- $[4] = t1;
31
- } else t1 = $[4];
32
- const setState = t1;
33
- let t2;
34
- if ($[5] !== aui || $[6] !== id) {
35
- t2 = (selected) => {
36
- aui.interactables().setSelected(id, selected);
37
- };
38
- $[5] = aui;
39
- $[6] = id;
40
- $[7] = t2;
41
- } else t2 = $[7];
42
- const setSelected = t2;
30
+ $[4] = aui;
31
+ $[5] = id;
32
+ $[6] = t2;
33
+ } else t2 = $[6];
34
+ const setState = t2;
43
35
  let t3;
44
- if ($[8] !== aui) {
45
- t3 = () => aui.interactables().flush();
46
- $[8] = aui;
47
- $[9] = t3;
48
- } else t3 = $[9];
36
+ if ($[7] !== aui) {
37
+ t3 = () => aui.unstable_interactables().flush();
38
+ $[7] = aui;
39
+ $[8] = t3;
40
+ } else t3 = $[8];
49
41
  const flush = t3;
50
42
  const t4 = persistenceStatus?.isPending ?? false;
51
43
  const t5 = persistenceStatus?.error;
52
44
  let t6;
53
- if ($[10] !== flush || $[11] !== setSelected || $[12] !== setState || $[13] !== t4 || $[14] !== t5) {
45
+ if ($[9] !== flush || $[10] !== setState || $[11] !== t4 || $[12] !== t5) {
54
46
  t6 = {
55
47
  setState,
56
- setSelected,
57
48
  isPending: t4,
58
49
  error: t5,
59
50
  flush
60
51
  };
61
- $[10] = flush;
62
- $[11] = setSelected;
63
- $[12] = setState;
64
- $[13] = t4;
65
- $[14] = t5;
66
- $[15] = t6;
67
- } else t6 = $[15];
52
+ $[9] = flush;
53
+ $[10] = setState;
54
+ $[11] = t4;
55
+ $[12] = t5;
56
+ $[13] = t6;
57
+ } else t6 = $[13];
68
58
  let t7;
69
- if ($[16] !== state || $[17] !== t6) {
59
+ if ($[14] !== state || $[15] !== t6) {
70
60
  t7 = [state, t6];
71
- $[16] = state;
72
- $[17] = t6;
73
- $[18] = t7;
74
- } else t7 = $[18];
61
+ $[14] = state;
62
+ $[15] = t6;
63
+ $[16] = t7;
64
+ } else t7 = $[16];
75
65
  return t7;
76
66
  };
67
+ /**
68
+ * Reads and writes the state of an interactable registered elsewhere, by id.
69
+ *
70
+ * Use this from secondary readers (children, siblings); the owning component
71
+ * registers with `unstable_useInteractable`, which returns state directly. Returns
72
+ * `undefined` until the owning interactable is registered.
73
+ *
74
+ * @deprecated Unstable / Experimental (not actually removed).
75
+ */
76
+ const unstable_useInteractableState = useInteractableState;
77
77
  //#endregion
78
- export { useInteractableState };
78
+ export { unstable_useInteractableState };
79
79
 
80
80
  //# sourceMappingURL=useInteractableState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInteractableState.js","names":["useCallback","useAui","useAuiState","StateUpdater","TState","prev","useInteractableState","id","fallback","$","_c","aui","state","s","interactables","definitions","t0","s_0","persistence","persistenceStatus","t1","updater","setState","t2","selected","setSelected","t3","flush","t4","isPending","t5","error","t6","t7"],"sources":["../../../src/react/model-context/useInteractableState.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\n\ntype StateUpdater<TState> = TState | ((prev: TState) => TState);\n\n/**\n * Reads and writes the state of a registered interactable.\n *\n * Pair with {@link useAssistantInteractable} which handles registration.\n */\nexport const useInteractableState = <TState>(\n id: string,\n fallback: TState,\n): [\n TState,\n {\n setState: (updater: StateUpdater<TState>) => void;\n setSelected: (selected: boolean) => void;\n isPending: boolean;\n error: unknown;\n flush: () => Promise<void>;\n },\n] => {\n const aui = useAui();\n\n const state =\n (useAuiState((s) => s.interactables.definitions[id]?.state) as TState) ??\n (fallback as TState);\n\n const persistenceStatus = useAuiState((s) => s.interactables.persistence[id]);\n\n const setState = useCallback(\n (updater: StateUpdater<TState>) => {\n aui.interactables().setState(id, (prev) => {\n if (typeof updater === \"function\") {\n return (updater as (prev: TState) => TState)(prev as TState);\n }\n return updater;\n });\n },\n [aui, id],\n );\n\n const setSelected = useCallback(\n (selected: boolean) => {\n aui.interactables().setSelected(id, selected);\n },\n [aui, id],\n );\n\n const flush = useCallback(() => aui.interactables().flush(), [aui]);\n\n return [\n state,\n {\n setState,\n setSelected,\n isPending: persistenceStatus?.isPending ?? false,\n error: persistenceStatus?.error,\n flush,\n },\n ];\n};\n"],"mappings":";;;;;;;;AAUA,MAAaM,wBAAuBC,IAAAC,aAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAalC,MAAAC,MAAYV,OAAO;CAEnB,MAAAW,QACGV,aAAYW,MAAOA,EAACC,cAAcC,YAAaR,GAAU,EAAAK,KAAA,KACzDJ;CAAoB,IAAAQ;CAAA,IAAAP,EAAA,OAAAF,IAAA;EAEeS,MAAAC,QAAOJ,IAACC,cAAcI,YAAaX;EAAGE,EAAA,KAAAF;EAAAE,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAA5E,MAAAU,oBAA0BjB,YAAYc,EAAsC;CAAE,IAAAI;CAAA,IAAAX,EAAA,OAAAE,OAAAF,EAAA,OAAAF,IAAA;EAG5Ea,MAAAC,YAAA;GACEV,IAAGG,cAAe,CAAC,CAAAQ,SAAUf,KAAIF,SAAA;IAC/B,IAAI,OAAOgB,YAAY,YAAU,OACvBA,QAAqChB,IAAc;IAC5D,OACMgB;GAAO,CACf;EAAC;EACHZ,EAAA,KAAAE;EAAAF,EAAA,KAAAF;EAAAE,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CARH,MAAAa,WAAiBF;CAUf,IAAAG;CAAA,IAAAd,EAAA,OAAAE,OAAAF,EAAA,OAAAF,IAAA;EAGAgB,MAAAC,aAAA;GACEb,IAAGG,cAAe,CAAC,CAAAW,YAAalB,IAAIiB,QAAQ;EAAC;EAC9Cf,EAAA,KAAAE;EAAAF,EAAA,KAAAF;EAAAE,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAHH,MAAAgB,cAAoBF;CAKlB,IAAAG;CAAA,IAAAjB,EAAA,OAAAE,KAAA;EAEwBe,WAAMf,IAAGG,cAAe,CAAC,CAAAa,MAAO;EAAClB,EAAA,KAAAE;EAAAF,EAAA,KAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAA3D,MAAAkB,QAAcD;CAOC,MAAAE,KAAAT,mBAAiBU,aAAjB;CACJ,MAAAC,KAAAX,mBAAiBY;CAAO,IAAAC;CAAA,IAAAvB,EAAA,QAAAkB,SAAAlB,EAAA,QAAAgB,eAAAhB,EAAA,QAAAa,YAAAb,EAAA,QAAAmB,MAAAnB,EAAA,QAAAqB,IAAA;EAJjCE,KAAA;GAAAV;GAAAG;GAAAI,WAGaD;GAAqCG,OACzCD;GAAwBH;EAEjC;EAAClB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAgB;EAAAhB,EAAA,MAAAa;EAAAb,EAAA,MAAAmB;EAAAnB,EAAA,MAAAqB;EAAArB,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,IAAAwB;CAAA,IAAAxB,EAAA,QAAAG,SAAAH,EAAA,QAAAuB,IAAA;EARIC,KAAA,CACLrB,OACAoB,EAMC;EACFvB,EAAA,MAAAG;EAAAH,EAAA,MAAAuB;EAAAvB,EAAA,MAAAwB;CAAA,OAAAA,KAAAxB,EAAA;CAAA,OATMwB;AASN"}
1
+ {"version":3,"file":"useInteractableState.js","names":["c","_c","useCallback","useAui","useAuiState","StateUpdater","TState","prev","useInteractableState","id","$","aui","t0","s","unstable_interactables","definitions","state","t1","s_0","persistence","persistenceStatus","t2","updater","setState","t3","flush","t4","isPending","t5","error","t6","t7","unstable_useInteractableState","Promise"],"sources":["../../../src/react/model-context/useInteractableState.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\n\ntype StateUpdater<TState> = TState | ((prev: TState) => TState);\n\nconst useInteractableState = <TState>(\n id: string,\n): [\n TState | undefined,\n {\n setState: (updater: StateUpdater<TState>) => void;\n isPending: boolean;\n error: unknown;\n flush: () => Promise<void>;\n },\n] => {\n const aui = useAui();\n\n const state = useAuiState(\n (s) => s.unstable_interactables.definitions[id]?.state,\n ) as TState | undefined;\n\n const persistenceStatus = useAuiState(\n (s) => s.unstable_interactables.persistence[id],\n );\n\n const setState = useCallback(\n (updater: StateUpdater<TState>) => {\n aui.unstable_interactables().setState(id, (prev) => {\n if (typeof updater === \"function\") {\n return (updater as (prev: TState) => TState)(prev as TState);\n }\n return updater;\n });\n },\n [aui, id],\n );\n\n const flush = useCallback(() => aui.unstable_interactables().flush(), [aui]);\n\n return [\n state,\n {\n setState,\n isPending: persistenceStatus?.isPending ?? false,\n error: persistenceStatus?.error,\n flush,\n },\n ];\n};\n\n/**\n * Reads and writes the state of an interactable registered elsewhere, by id.\n *\n * Use this from secondary readers (children, siblings); the owning component\n * registers with `unstable_useInteractable`, which returns state directly. Returns\n * `undefined` until the owning interactable is registered.\n *\n * @deprecated Unstable / Experimental (not actually removed).\n */\nexport const unstable_useInteractableState: <TState>(id: string) => [\n TState | undefined,\n {\n setState: (updater: StateUpdater<TState>) => void;\n isPending: boolean;\n error: unknown;\n flush: () => Promise<void>;\n },\n] = useInteractableState;\n"],"mappings":";;;;AAOA,MAAMQ,wBAAuBC,OAAA;CAAA,MAAAC,IAAAT,EAAA,EAAA;CAW3B,MAAAU,MAAYR,OAAO;CAAE,IAAAS;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAGnBG,MAAAC,MAAOA,EAACC,uBAAuBC,YAAaN,GAAU,EAAAO;EAAAN,EAAA,KAAAD;EAAAC,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CADxD,MAAAM,QAAcZ,YACZQ,EACF;CAAwB,IAAAK;CAAA,IAAAP,EAAA,OAAAD,IAAA;EAGtBQ,MAAAC,QAAOL,IAACC,uBAAuBK,YAAaV;EAAGC,EAAA,KAAAD;EAAAC,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CADjD,MAAAU,oBAA0BhB,YACxBa,EACF;CAAE,IAAAI;CAAA,IAAAX,EAAA,OAAAC,OAAAD,EAAA,OAAAD,IAAA;EAGAY,MAAAC,YAAA;GACEX,IAAGG,uBAAwB,CAAC,CAAAS,SAAUd,KAAIF,SAAA;IACxC,IAAI,OAAOe,YAAY,YAAU,OACvBA,QAAqCf,IAAc;IAC5D,OACMe;GAAO,CACf;EAAC;EACHZ,EAAA,KAAAC;EAAAD,EAAA,KAAAD;EAAAC,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CARH,MAAAa,WAAiBF;CAUf,IAAAG;CAAA,IAAAd,EAAA,OAAAC,KAAA;EAEwBa,WAAMb,IAAGG,uBAAwB,CAAC,CAAAW,MAAO;EAACf,EAAA,KAAAC;EAAAD,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAApE,MAAAe,QAAcD;CAMC,MAAAE,KAAAN,mBAAiBO,aAAjB;CACJ,MAAAC,KAAAR,mBAAiBS;CAAO,IAAAC;CAAA,IAAApB,EAAA,OAAAe,SAAAf,EAAA,QAAAa,YAAAb,EAAA,QAAAgB,MAAAhB,EAAA,QAAAkB,IAAA;EAHjCE,KAAA;GAAAP;GAAAI,WAEaD;GAAqCG,OACzCD;GAAwBH;EAEjC;EAACf,EAAA,KAAAe;EAAAf,EAAA,MAAAa;EAAAb,EAAA,MAAAgB;EAAAhB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,QAAAM,SAAAN,EAAA,QAAAoB,IAAA;EAPIC,KAAA,CACLf,OACAc,EAKC;EACFpB,EAAA,MAAAM;EAAAN,EAAA,MAAAoB;EAAApB,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,OARMqB;AAQN;;;;;;;;;;AAYH,MAAaC,gCAQTxB"}
@@ -0,0 +1,19 @@
1
+ import { Unstable_InteractableVersion } from "../../model-context/interactable-composer-metadata.js";
2
+
3
+ //#region src/react/model-context/useInteractableVersions.d.ts
4
+ /**
5
+ * Every version of a tool-created interactable recorded in the current
6
+ * thread, oldest first: the creating tool call, each user edit, and each
7
+ * `update_*` call. Each entry carries the full state as of that version and a
8
+ * `restore()` that sets the live instance back to it — enough for a version
9
+ * picker like an artifact's history dropdown.
10
+ *
11
+ * @deprecated Unstable / Experimental (not actually removed).
12
+ */
13
+ declare const unstable_useInteractableVersions: <TState = unknown>(id: string, name: string) => (Omit<Unstable_InteractableVersion, "state"> & {
14
+ state: TState;
15
+ restore: () => void;
16
+ })[];
17
+ //#endregion
18
+ export { unstable_useInteractableVersions };
19
+ //# sourceMappingURL=useInteractableVersions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInteractableVersions.d.ts","names":[],"sources":["../../../src/react/model-context/useInteractableVersions.ts"],"mappings":";;;;;AAyCA;;;;;;;cAAa,gCAAA,qBACX,EAAA,UACA,IAAA,cACI,IAAA,CAAK,4BAAA;EACT,KAAA,EAAO,MAAA;EACP,OAAA;AAAA"}
@@ -0,0 +1,51 @@
1
+ import { unstable_getInteractableVersions } from "../../model-context/interactable-composer-metadata.js";
2
+ import { unstable_useInteractableState } from "./useInteractableState.js";
3
+ import { useJSONEqual } from "../utils/useJSONEqual.js";
4
+ import { useAuiState } from "@assistant-ui/store";
5
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
6
+ //#region src/react/model-context/useInteractableVersions.ts
7
+ const useInteractableVersions = (id, name) => {
8
+ const $ = c(8);
9
+ let t0;
10
+ if ($[0] !== id || $[1] !== name) {
11
+ t0 = (s) => unstable_getInteractableVersions(s.thread.messages, id, name);
12
+ $[0] = id;
13
+ $[1] = name;
14
+ $[2] = t0;
15
+ } else t0 = $[2];
16
+ const versions = useAuiState(useJSONEqual(t0));
17
+ const [, t1] = unstable_useInteractableState(id);
18
+ const { setState } = t1;
19
+ let t2;
20
+ if ($[3] !== setState || $[4] !== versions) {
21
+ let t3;
22
+ if ($[6] !== setState) {
23
+ t3 = (v) => ({
24
+ ...v,
25
+ state: v.state,
26
+ restore: () => setState(v.state)
27
+ });
28
+ $[6] = setState;
29
+ $[7] = t3;
30
+ } else t3 = $[7];
31
+ t2 = versions.map(t3);
32
+ $[3] = setState;
33
+ $[4] = versions;
34
+ $[5] = t2;
35
+ } else t2 = $[5];
36
+ return t2;
37
+ };
38
+ /**
39
+ * Every version of a tool-created interactable recorded in the current
40
+ * thread, oldest first: the creating tool call, each user edit, and each
41
+ * `update_*` call. Each entry carries the full state as of that version and a
42
+ * `restore()` that sets the live instance back to it — enough for a version
43
+ * picker like an artifact's history dropdown.
44
+ *
45
+ * @deprecated Unstable / Experimental (not actually removed).
46
+ */
47
+ const unstable_useInteractableVersions = useInteractableVersions;
48
+ //#endregion
49
+ export { unstable_useInteractableVersions };
50
+
51
+ //# sourceMappingURL=useInteractableVersions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInteractableVersions.js","names":["useMemo","useAuiState","unstable_getInteractableVersions","getInteractableVersions","Unstable_InteractableVersion","unstable_useInteractableState","useInteractableState","useJSONEqual","useInteractableVersions","id","name","$","_c","t0","s","thread","messages","versions","t1","setState","t2","t3","v","state","TState","restore","map","unstable_useInteractableVersions","Omit"],"sources":["../../../src/react/model-context/useInteractableVersions.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport {\n unstable_getInteractableVersions as getInteractableVersions,\n type Unstable_InteractableVersion,\n} from \"../../model-context/interactable-composer-metadata\";\nimport { unstable_useInteractableState as useInteractableState } from \"./useInteractableState\";\nimport { useJSONEqual } from \"../utils/useJSONEqual\";\n\nconst useInteractableVersions = <TState = unknown>(\n id: string,\n name: string,\n): (Omit<Unstable_InteractableVersion, \"state\"> & {\n state: TState;\n restore: () => void;\n})[] => {\n const versions = useAuiState(\n useJSONEqual((s) => getInteractableVersions(s.thread.messages, id, name)),\n );\n const [, { setState }] = useInteractableState<TState>(id);\n\n return useMemo(\n () =>\n versions.map((v) => ({\n ...v,\n state: v.state as TState,\n restore: () => setState(v.state as TState),\n })),\n [versions, setState],\n );\n};\n\n/**\n * Every version of a tool-created interactable recorded in the current\n * thread, oldest first: the creating tool call, each user edit, and each\n * `update_*` call. Each entry carries the full state as of that version and a\n * `restore()` that sets the live instance back to it — enough for a version\n * picker like an artifact's history dropdown.\n *\n * @deprecated Unstable / Experimental (not actually removed).\n */\nexport const unstable_useInteractableVersions: <TState = unknown>(\n id: string,\n name: string,\n) => (Omit<Unstable_InteractableVersion, \"state\"> & {\n state: TState;\n restore: () => void;\n})[] = useInteractableVersions;\n"],"mappings":";;;;;;AASA,MAAMQ,2BAA0BC,IAAAC,SAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAF,MAAAE,EAAA,OAAAD,MAAA;EAQfG,MAAAC,MAAOX,iCAAwBW,EAACC,OAAOC,UAAWP,IAAIC,IAAI;EAACC,EAAA,KAAAF;EAAAE,EAAA,KAAAD;EAAAC,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAD1E,MAAAM,WAAiBhB,YACfM,aAAaM,EAA2D,CAC1E;CACA,MAAA,GAAAK,MAAyBZ,8BAA6BG,EAAE;CAA/C,MAAA,EAAAU,aAAAD;CAAY,IAAAE;CAAA,IAAAT,EAAA,OAAAQ,YAAAR,EAAA,OAAAM,UAAA;EAAA,IAAAI;EAAA,IAAAV,EAAA,OAAAQ,UAAA;GAIJE,MAAAC,OAAQ;IAAA,GAChBA;IAACC,OACGD,EAACC;IAAgBE,eACTN,SAASG,EAACC,KAAgB;GAC3C;GAAEZ,EAAA,KAAAQ;GAAAR,EAAA,KAAAU;EAAA,OAAAA,KAAAV,EAAA;EAJFS,KAAAH,SAAQS,IAAKL,EAIX;EAACV,EAAA,KAAAQ;EAAAR,EAAA,KAAAM;EAAAN,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,OAJHS;AAIG;;;;;;;;;;AAcT,MAAaO,mCAMNnB"}
@@ -0,0 +1,15 @@
1
+ //#region src/react/primitive-hooks/useThreadMessageIds.d.ts
2
+ /**
3
+ * Returns the ids of the messages in the current thread, in order.
4
+ *
5
+ * The returned array keeps a stable identity across content-only updates (e.g.
6
+ * streaming), changing reference only when the id sequence itself changes. Pair
7
+ * with `ThreadPrimitive.Unstable_MessageById` to drive a virtualized or custom
8
+ * message list.
9
+ *
10
+ * @deprecated Unstable / Experimental - may change in any release.
11
+ */
12
+ declare const unstable_useThreadMessageIds: () => readonly string[];
13
+ //#endregion
14
+ export { unstable_useThreadMessageIds };
15
+ //# sourceMappingURL=useThreadMessageIds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useThreadMessageIds.d.ts","names":[],"sources":["../../../src/react/primitive-hooks/useThreadMessageIds.ts"],"mappings":";;AA0BA;;;;AAA+D;;;;;cAAlD,4BAAA"}
@@ -0,0 +1,26 @@
1
+ import { useAuiState } from "@assistant-ui/store";
2
+ import { useRef } from "@assistant-ui/tap/react-shim";
3
+ //#region src/react/primitive-hooks/useThreadMessageIds.ts
4
+ const useThreadMessageIds = () => {
5
+ const messages = useAuiState((s) => s.thread.messages);
6
+ const prevIdsRef = useRef([]);
7
+ const ids = messages.map((m) => m.id);
8
+ const prev = prevIdsRef.current;
9
+ if (prev.length !== ids.length || prev.some((id, i) => id !== ids[i])) prevIdsRef.current = ids;
10
+ return prevIdsRef.current;
11
+ };
12
+ /**
13
+ * Returns the ids of the messages in the current thread, in order.
14
+ *
15
+ * The returned array keeps a stable identity across content-only updates (e.g.
16
+ * streaming), changing reference only when the id sequence itself changes. Pair
17
+ * with `ThreadPrimitive.Unstable_MessageById` to drive a virtualized or custom
18
+ * message list.
19
+ *
20
+ * @deprecated Unstable / Experimental - may change in any release.
21
+ */
22
+ const unstable_useThreadMessageIds = useThreadMessageIds;
23
+ //#endregion
24
+ export { unstable_useThreadMessageIds };
25
+
26
+ //# sourceMappingURL=useThreadMessageIds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useThreadMessageIds.js","names":["useRef","useAuiState","useThreadMessageIds","messages","s","thread","prevIdsRef","ids","map","m","id","prev","current","length","some","i","unstable_useThreadMessageIds"],"sources":["../../../src/react/primitive-hooks/useThreadMessageIds.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\n\nconst useThreadMessageIds = (): readonly string[] => {\n const messages = useAuiState((s) => s.thread.messages);\n const prevIdsRef = useRef<readonly string[]>([]);\n\n const ids = messages.map((m) => m.id);\n const prev = prevIdsRef.current;\n if (prev.length !== ids.length || prev.some((id, i) => id !== ids[i])) {\n prevIdsRef.current = ids;\n }\n\n return prevIdsRef.current;\n};\n\n/**\n * Returns the ids of the messages in the current thread, in order.\n *\n * The returned array keeps a stable identity across content-only updates (e.g.\n * streaming), changing reference only when the id sequence itself changes. Pair\n * with `ThreadPrimitive.Unstable_MessageById` to drive a virtualized or custom\n * message list.\n *\n * @deprecated Unstable / Experimental - may change in any release.\n */\nexport const unstable_useThreadMessageIds = useThreadMessageIds;\n"],"mappings":";;;AAGA,MAAME,4BAA+C;CACnD,MAAMC,WAAWF,aAAaG,MAAMA,EAAEC,OAAOF,QAAQ;CACrD,MAAMG,aAAaN,OAA0B,CAAA,CAAE;CAE/C,MAAMO,MAAMJ,SAASK,KAAKC,MAAMA,EAAEC,EAAE;CACpC,MAAMC,OAAOL,WAAWM;CACxB,IAAID,KAAKE,WAAWN,IAAIM,UAAUF,KAAKG,MAAMJ,IAAIK,MAAML,OAAOH,IAAIQ,EAAE,GAClET,WAAWM,UAAUL;CAGvB,OAAOD,WAAWM;AACpB;;;;;;;;;;;AAYA,MAAaI,+BAA+Bd"}
@@ -1,5 +1,5 @@
1
- import { useSyncExternalStore } from "@assistant-ui/tap/react-shim";
2
1
  import { useAui, useAuiState } from "@assistant-ui/store";
2
+ import { useSyncExternalStore } from "@assistant-ui/tap/react-shim";
3
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
4
  //#region src/react/primitive-hooks/useVoice.ts
5
5
  const useVoiceState = () => {
@@ -1,7 +1,7 @@
1
1
  import { ChainOfThoughtPartByIndexProvider } from "../../providers/ChainOfThoughtPartByIndexProvider.js";
2
2
  import { MessagePartComponent } from "../message/MessageParts.js";
3
- import { useMemo } from "@assistant-ui/tap/react-shim";
4
3
  import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
4
+ import { useMemo } from "@assistant-ui/tap/react-shim";
5
5
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  //#region src/react/primitives/chainOfThought/ChainOfThoughtParts.tsx
@@ -1,6 +1,6 @@
1
1
  import { ComposerAttachmentByIndexProvider } from "../../providers/AttachmentByIndexProvider.js";
2
- import { memo, useMemo } from "@assistant-ui/tap/react-shim";
3
2
  import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
3
+ import { memo, useMemo } from "@assistant-ui/tap/react-shim";
4
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/react/primitives/composer/ComposerAttachments.tsx
@@ -1,6 +1,6 @@
1
1
  import { QueueItemByIndexProvider } from "../../providers/QueueItemByIndexProvider.js";
2
- import { memo, useMemo } from "@assistant-ui/tap/react-shim";
3
2
  import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
3
+ import { memo, useMemo } from "@assistant-ui/tap/react-shim";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/react/primitives/composer/ComposerQueue.tsx
6
6
  const ComposerPrimitiveQueueInner = ({ children }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"GenerativeUI.d.ts","names":[],"sources":["../../../../src/react/primitives/generativeUI/GenerativeUI.tsx"],"mappings":";;;;;;;AAyBA;;;;cAAa,uBAAA,SAAgC,KAAK;EAAA,SAChC,aAAA;cAGd,aAAA,UACA,OAAA;AAAA;;;AAA+E;AAuEnF;;cAAa,kBAAA,EAAoB,EAAE,CAAC,uBAAA;AAAA,kBAgBnB,4BAAA;EAAA,KACH,KAAA;IADG;;;;;;;IASb,UAAA,EAAY,6BAAA;IARF;;;;;IAcV,IAAA,GAAO,gBAAA,cAGH;IADJ,QAAA,GACI,aAAA;MAAgB,SAAA;MAAmB,KAAA;IAAA;EAAA;AAAA;;;;;;;AAuBP;;;;;;;;;;;cADvB,4BAAA,EAA8B,EAAE,CAC3C,4BAAA,CAA6B,KAAA"}
1
+ {"version":3,"file":"GenerativeUI.d.ts","names":[],"sources":["../../../../src/react/primitives/generativeUI/GenerativeUI.tsx"],"mappings":";;;;;;;AAyBA;;;;cAAa,uBAAA,SAAgC,KAAK;EAAA,SAChC,aAAA;cAGd,aAAA,UACA,OAAA;AAAA;;;AAA+E;AA2EnF;;cAAa,kBAAA,EAAoB,EAAE,CAAC,uBAAA;AAAA,kBAgBnB,4BAAA;EAAA,KACH,KAAA;IADG;;;;;;;IASb,UAAA,EAAY,6BAAA;IARF;;;;;IAcV,IAAA,GAAO,gBAAA,cAGH;IADJ,QAAA,GACI,aAAA;MAAgB,SAAA;MAAmB,KAAA;IAAA;EAAA;AAAA;;;;;;;AAuBP;;;;;;;;;;;cADvB,4BAAA,EAA8B,EAAE,CAC3C,4BAAA,CAA6B,KAAA"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { createElement } from "@assistant-ui/tap/react-shim";
3
2
  import { useAuiState } from "@assistant-ui/store";
3
+ import { createElement } from "@assistant-ui/tap/react-shim";
4
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
5
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
6
6
  //#region src/react/primitives/generativeUI/GenerativeUI.tsx
@@ -22,7 +22,7 @@ const isObjectNode = (node) => typeof node === "object" && node !== null;
22
22
  const renderNode = (node, components, Fallback, path) => {
23
23
  if (node === void 0 || node === null) return null;
24
24
  if (typeof node === "string") return node;
25
- if (!isObjectNode(node) || !("component" in node)) {
25
+ if (!isObjectNode(node) || !("component" in node) || typeof node.component !== "string") {
26
26
  if (typeof process !== "undefined" && process.env?.NODE_ENV !== "production") console.warn(`[generative-ui] Skipping malformed node at ${path}:`, node);
27
27
  return null;
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GenerativeUI.js","names":["c","_c","ComponentType","FC","ReactNode","createElement","useMemo","useAuiState","GenerativeUINode","GenerativeUISpec","GenerativeUIComponentRegistry","GenerativeUIRenderProps","GenerativeUIRenderError","Error","componentName","constructor","message","name","isObjectNode","node","Exclude","renderNode","components","Fallback","path","undefined","process","env","NODE_ENV","console","warn","component","props","children","key","Resolved","renderedChildren","length","map","child","i","normalizeRoot","spec","root","Array","isArray","GenerativeUIRender","t0","$","t1","nodes","t2","t3","displayName","MessagePrimitiveGenerativeUI","Props","storeSpec","_temp","partSpec","s","part","type"],"sources":["../../../../src/react/primitives/generativeUI/GenerativeUI.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentType,\n type FC,\n type ReactNode,\n createElement,\n useMemo,\n} from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport type {\n GenerativeUINode,\n GenerativeUISpec,\n} from \"../../../types/message\";\nimport type {\n GenerativeUIComponentRegistry,\n GenerativeUIRenderProps,\n} from \"../../types/MessagePartComponentTypes\";\n\n/**\n * Thrown when a generative-ui spec references a component name that is not\n * present in the consumer-provided allowlist. The allowlist is the security\n * boundary in the same-realm rendering path — there is no fallback by\n * default. Pass `Fallback` to opt into a soft-fail UX.\n */\nexport class GenerativeUIRenderError extends Error {\n public readonly componentName: string;\n\n constructor(\n componentName: string,\n message = `Component \"${componentName}\" is not in the generative-ui allowlist.`,\n ) {\n super(message);\n this.name = \"GenerativeUIRenderError\";\n this.componentName = componentName;\n }\n}\n\nconst isObjectNode = (\n node: GenerativeUINode,\n): node is Exclude<GenerativeUINode, string> =>\n typeof node === \"object\" && node !== null;\n\nconst renderNode = (\n node: GenerativeUINode | undefined,\n components: GenerativeUIComponentRegistry,\n Fallback: GenerativeUIRenderProps[\"Fallback\"],\n path: string,\n): ReactNode => {\n if (node === undefined || node === null) return null;\n\n if (typeof node === \"string\") return node;\n\n if (!isObjectNode(node) || !(\"component\" in node)) {\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV !== \"production\"\n ) {\n console.warn(`[generative-ui] Skipping malformed node at ${path}:`, node);\n }\n return null;\n }\n\n const { component, props, children, key } = node;\n\n const Resolved = components[component];\n if (!Resolved) {\n if (Fallback) {\n return <Fallback key={key ?? path} component={component} props={props} />;\n }\n throw new GenerativeUIRenderError(component);\n }\n\n const renderedChildren = children?.length\n ? children.map((child, i) =>\n renderNode(child, components, Fallback, `${path}/${i}`),\n )\n : undefined;\n\n return createElement(\n Resolved,\n { ...(props ?? {}), key: key ?? path },\n ...(renderedChildren ?? []),\n );\n};\n\nconst normalizeRoot = (\n spec: GenerativeUISpec | undefined,\n): readonly GenerativeUINode[] => {\n if (!spec || spec.root === undefined || spec.root === null) return [];\n const root = spec.root;\n return Array.isArray(root)\n ? (root as readonly GenerativeUINode[])\n : [root as GenerativeUINode];\n};\n\n/**\n * Internal renderer. Resolves a {@link GenerativeUISpec} against the consumer\n * allowlist. Used by `MessagePrimitive.GenerativeUI` and by\n * `MessagePrimitive.Parts` when handling a `generative-ui` part.\n */\nexport const GenerativeUIRender: FC<GenerativeUIRenderProps> = ({\n spec,\n components,\n Fallback,\n}) => {\n const nodes = useMemo(() => normalizeRoot(spec), [spec]);\n\n return (\n <>\n {nodes.map((node, i) => renderNode(node, components, Fallback, `${i}`))}\n </>\n );\n};\n\nGenerativeUIRender.displayName = \"GenerativeUIRender\";\n\nexport namespace MessagePrimitiveGenerativeUI {\n export type Props = {\n /**\n * The component allowlist. Keys are the names referenced in the spec\n * (e.g. `\"Card\"`, `\"Button\"`), values are the React components.\n *\n * This is the security boundary — any name not in the allowlist is\n * rejected with {@link GenerativeUIRenderError}.\n */\n components: GenerativeUIComponentRegistry;\n /**\n * Optional override spec. If omitted, the primitive reads the\n * `generative-ui` part from the surrounding `MessagePartProvider` /\n * `PartByIndexProvider` context.\n */\n spec?: GenerativeUISpec | undefined;\n /** Optional fallback for unknown component names. */\n Fallback?:\n | ComponentType<{ component: string; props?: unknown }>\n | undefined;\n };\n}\n\n/**\n * Renders a generative-ui message part using a consumer-provided allowlist.\n *\n * The agent emits a `generative-ui` message part containing a JSON spec\n * (see {@link GenerativeUISpec}). This primitive walks the spec and resolves\n * each `component` name against the allowlist. Names not in the allowlist\n * throw {@link GenerativeUIRenderError} unless a `Fallback` is provided.\n *\n * Stream-friendly: a partial spec renders progressively as it is filled in.\n *\n * @example\n * ```tsx\n * <MessagePrimitive.GenerativeUI\n * components={{ Card: MyCard, Button: MyButton }}\n * />\n * ```\n */\nexport const MessagePrimitiveGenerativeUI: FC<\n MessagePrimitiveGenerativeUI.Props\n> = ({ components, spec, Fallback }) => {\n // Selector reads store state only — combining with the `spec` prop inside\n // the selector closes over a value that may change identity per render and\n // would trigger spurious tearing-detection re-renders in\n // `useSyncExternalStore`.\n const storeSpec = useAuiState((s) => {\n const part = s.part as { type?: string; spec?: GenerativeUISpec };\n return part?.type === \"generative-ui\" ? part.spec : undefined;\n });\n const partSpec = spec ?? storeSpec;\n\n if (!partSpec) return null;\n\n return (\n <GenerativeUIRender\n spec={partSpec}\n components={components}\n Fallback={Fallback}\n />\n );\n};\n\nMessagePrimitiveGenerativeUI.displayName = \"MessagePrimitive.GenerativeUI\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"GenerativeUI.js","names":["c","_c","ComponentType","FC","ReactNode","createElement","useMemo","useAuiState","GenerativeUINode","GenerativeUISpec","GenerativeUIComponentRegistry","GenerativeUIRenderProps","GenerativeUIRenderError","Error","componentName","constructor","message","name","isObjectNode","node","Exclude","renderNode","components","Fallback","path","undefined","component","process","env","NODE_ENV","console","warn","props","children","key","Resolved","renderedChildren","length","map","child","i","normalizeRoot","spec","root","Array","isArray","GenerativeUIRender","t0","$","t1","nodes","t2","t3","displayName","MessagePrimitiveGenerativeUI","Props","storeSpec","_temp","partSpec","s","part","type"],"sources":["../../../../src/react/primitives/generativeUI/GenerativeUI.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type ComponentType,\n type FC,\n type ReactNode,\n createElement,\n useMemo,\n} from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport type {\n GenerativeUINode,\n GenerativeUISpec,\n} from \"../../../types/message\";\nimport type {\n GenerativeUIComponentRegistry,\n GenerativeUIRenderProps,\n} from \"../../types/MessagePartComponentTypes\";\n\n/**\n * Thrown when a generative-ui spec references a component name that is not\n * present in the consumer-provided allowlist. The allowlist is the security\n * boundary in the same-realm rendering path — there is no fallback by\n * default. Pass `Fallback` to opt into a soft-fail UX.\n */\nexport class GenerativeUIRenderError extends Error {\n public readonly componentName: string;\n\n constructor(\n componentName: string,\n message = `Component \"${componentName}\" is not in the generative-ui allowlist.`,\n ) {\n super(message);\n this.name = \"GenerativeUIRenderError\";\n this.componentName = componentName;\n }\n}\n\nconst isObjectNode = (\n node: GenerativeUINode,\n): node is Exclude<GenerativeUINode, string> =>\n typeof node === \"object\" && node !== null;\n\nconst renderNode = (\n node: GenerativeUINode | undefined,\n components: GenerativeUIComponentRegistry,\n Fallback: GenerativeUIRenderProps[\"Fallback\"],\n path: string,\n): ReactNode => {\n if (node === undefined || node === null) return null;\n\n if (typeof node === \"string\") return node;\n\n if (\n !isObjectNode(node) ||\n !(\"component\" in node) ||\n typeof node.component !== \"string\"\n ) {\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV !== \"production\"\n ) {\n console.warn(`[generative-ui] Skipping malformed node at ${path}:`, node);\n }\n return null;\n }\n\n const { component, props, children, key } = node;\n\n const Resolved = components[component];\n if (!Resolved) {\n if (Fallback) {\n return <Fallback key={key ?? path} component={component} props={props} />;\n }\n throw new GenerativeUIRenderError(component);\n }\n\n const renderedChildren = children?.length\n ? children.map((child, i) =>\n renderNode(child, components, Fallback, `${path}/${i}`),\n )\n : undefined;\n\n return createElement(\n Resolved,\n { ...(props ?? {}), key: key ?? path },\n ...(renderedChildren ?? []),\n );\n};\n\nconst normalizeRoot = (\n spec: GenerativeUISpec | undefined,\n): readonly GenerativeUINode[] => {\n if (!spec || spec.root === undefined || spec.root === null) return [];\n const root = spec.root;\n return Array.isArray(root)\n ? (root as readonly GenerativeUINode[])\n : [root as GenerativeUINode];\n};\n\n/**\n * Internal renderer. Resolves a {@link GenerativeUISpec} against the consumer\n * allowlist. Used by `MessagePrimitive.GenerativeUI` and by\n * `MessagePrimitive.Parts` when handling a `generative-ui` part.\n */\nexport const GenerativeUIRender: FC<GenerativeUIRenderProps> = ({\n spec,\n components,\n Fallback,\n}) => {\n const nodes = useMemo(() => normalizeRoot(spec), [spec]);\n\n return (\n <>\n {nodes.map((node, i) => renderNode(node, components, Fallback, `${i}`))}\n </>\n );\n};\n\nGenerativeUIRender.displayName = \"GenerativeUIRender\";\n\nexport namespace MessagePrimitiveGenerativeUI {\n export type Props = {\n /**\n * The component allowlist. Keys are the names referenced in the spec\n * (e.g. `\"Card\"`, `\"Button\"`), values are the React components.\n *\n * This is the security boundary — any name not in the allowlist is\n * rejected with {@link GenerativeUIRenderError}.\n */\n components: GenerativeUIComponentRegistry;\n /**\n * Optional override spec. If omitted, the primitive reads the\n * `generative-ui` part from the surrounding `MessagePartProvider` /\n * `PartByIndexProvider` context.\n */\n spec?: GenerativeUISpec | undefined;\n /** Optional fallback for unknown component names. */\n Fallback?:\n | ComponentType<{ component: string; props?: unknown }>\n | undefined;\n };\n}\n\n/**\n * Renders a generative-ui message part using a consumer-provided allowlist.\n *\n * The agent emits a `generative-ui` message part containing a JSON spec\n * (see {@link GenerativeUISpec}). This primitive walks the spec and resolves\n * each `component` name against the allowlist. Names not in the allowlist\n * throw {@link GenerativeUIRenderError} unless a `Fallback` is provided.\n *\n * Stream-friendly: a partial spec renders progressively as it is filled in.\n *\n * @example\n * ```tsx\n * <MessagePrimitive.GenerativeUI\n * components={{ Card: MyCard, Button: MyButton }}\n * />\n * ```\n */\nexport const MessagePrimitiveGenerativeUI: FC<\n MessagePrimitiveGenerativeUI.Props\n> = ({ components, spec, Fallback }) => {\n // Selector reads store state only — combining with the `spec` prop inside\n // the selector closes over a value that may change identity per render and\n // would trigger spurious tearing-detection re-renders in\n // `useSyncExternalStore`.\n const storeSpec = useAuiState((s) => {\n const part = s.part as { type?: string; spec?: GenerativeUISpec };\n return part?.type === \"generative-ui\" ? part.spec : undefined;\n });\n const partSpec = spec ?? storeSpec;\n\n if (!partSpec) return null;\n\n return (\n <GenerativeUIRender\n spec={partSpec}\n components={components}\n Fallback={Fallback}\n />\n );\n};\n\nMessagePrimitiveGenerativeUI.displayName = \"MessagePrimitive.GenerativeUI\";\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { MessageAttachmentByIndexProvider } from "../../providers/AttachmentByIndexProvider.js";
2
- import { memo, useMemo } from "@assistant-ui/tap/react-shim";
3
2
  import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
3
+ import { memo, useMemo } from "@assistant-ui/tap/react-shim";
4
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/react/primitives/message/MessageAttachments.tsx
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { MessagePartChildren } from "./MessageParts.js";
3
3
  import { GROUPBY_MEMO_KEY, buildGroupTree } from "../../utils/groupParts.js";
4
- import { Fragment, useMemo } from "@assistant-ui/tap/react-shim";
5
4
  import { useAuiState } from "@assistant-ui/store";
5
+ import { Fragment, useMemo } from "@assistant-ui/tap/react-shim";
6
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { useShallow } from "zustand/shallow";
8
8
  //#region src/react/primitives/message/MessageGroupedParts.tsx
@@ -4,8 +4,8 @@ import { TextMessagePartProvider } from "../../providers/TextMessagePartProvider
4
4
  import { ChainOfThoughtByIndicesProvider } from "../../providers/ChainOfThoughtByIndicesProvider.js";
5
5
  import { getMessageQuote } from "../../utils/getMessageQuote.js";
6
6
  import { GenerativeUIRender } from "../generativeUI/GenerativeUI.js";
7
- import { memo } from "@assistant-ui/tap/react-shim";
8
7
  import { RenderChildrenWithAccessor, useAui, useAuiState } from "@assistant-ui/store";
8
+ import { memo } from "@assistant-ui/tap/react-shim";
9
9
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
10
10
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
11
  import { useShallow } from "zustand/shallow";
@@ -1,6 +1,6 @@
1
1
  import { getMessageQuote } from "../../utils/getMessageQuote.js";
2
- import { memo } from "@assistant-ui/tap/react-shim";
3
2
  import { useAuiState } from "@assistant-ui/store";
3
+ import { memo } from "@assistant-ui/tap/react-shim";
4
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
5
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
6
6
  //#region src/react/primitives/message/MessageQuote.tsx
@@ -5,10 +5,13 @@ import { FC, ReactNode } from "react";
5
5
  //#region src/react/primitives/part/PartMessages.d.ts
6
6
  declare namespace PartPrimitiveMessages {
7
7
  type Props = {
8
- components?: ThreadPrimitiveMessages.Props["components"]; /** Render function called for each message. Receives the message. */
9
- children?: (value: {
8
+ components: NonNullable<ThreadPrimitiveMessages.Props["components"]>;
9
+ children?: never;
10
+ } | {
11
+ /** Render function called for each message. Receives the message. */children: (value: {
10
12
  message: ThreadMessage;
11
13
  }) => ReactNode;
14
+ components?: never;
12
15
  };
13
16
  }
14
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PartMessages.d.ts","names":[],"sources":["../../../../src/react/primitives/part/PartMessages.tsx"],"mappings":";;;;;kBASiB,qBAAA;EAAA,KACH,KAAA;IACV,UAAA,GAAa,uBAAA,CAAwB,KAAA,gBAFH;IAIlC,QAAA,IAAY,KAAA;MAAS,OAAA,EAAS,aAAA;IAAA,MAAoB,SAAA;EAAA;AAAA;;;;;;;;;;;;AAAS;AAsC/D;;;;;;;;AAAsE;AAyBtE;;;cAzBa,yBAAA,EAA2B,EAAE,CAAC,qBAAA,CAAsB,KAAA;AAAA,cAyBpD,qBAAA,kBAAqB,oBAAA,CAAA,qBAAA,CAAA,KAAA"}
1
+ {"version":3,"file":"PartMessages.d.ts","names":[],"sources":["../../../../src/react/primitives/part/PartMessages.tsx"],"mappings":";;;;;kBASiB,qBAAA;EAAA,KACH,KAAA;IAEN,UAAA,EAAY,WAAA,CAAY,uBAAA,CAAwB,KAAA;IAChD,QAAA;EAAA;IADwB,qEAKxB,QAAA,GAAW,KAAA;MAAS,OAAA,EAAS,aAAA;IAAA,MAAoB,SAAA;IACjD,UAAA;EAAA;AAAA;;;;;;;;;;;;;AAAU;AAsClB;;;;;;;;AAAsE;AAyBtE;;cAzBa,yBAAA,EAA2B,EAAE,CAAC,qBAAA,CAAsB,KAAA;AAAA,cAyBpD,qBAAA,kBAAqB,oBAAA,CAAA,qBAAA,CAAA,KAAA"}
@@ -1,7 +1,7 @@
1
1
  import { ReadonlyThreadProvider } from "../../providers/ReadonlyThreadProvider.js";
2
2
  import { ThreadPrimitiveMessagesImpl } from "../thread/ThreadMessages.js";
3
- import { memo } from "@assistant-ui/tap/react-shim";
4
3
  import { useAuiState } from "@assistant-ui/store";
4
+ import { memo } from "@assistant-ui/tap/react-shim";
5
5
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  //#region src/react/primitives/part/PartMessages.tsx
@@ -37,11 +37,11 @@ const PartPrimitiveMessagesImpl = (t0) => {
37
37
  const { components, children } = t0;
38
38
  const messages = usePartMessages();
39
39
  if (!messages?.length) return null;
40
- if (children) {
40
+ if (components) {
41
41
  let t1;
42
- if ($[0] !== children) {
43
- t1 = /* @__PURE__ */ jsx(ThreadPrimitiveMessagesImpl, { children });
44
- $[0] = children;
42
+ if ($[0] !== components) {
43
+ t1 = /* @__PURE__ */ jsx(ThreadPrimitiveMessagesImpl, { components });
44
+ $[0] = components;
45
45
  $[1] = t1;
46
46
  } else t1 = $[1];
47
47
  let t2;
@@ -57,9 +57,9 @@ const PartPrimitiveMessagesImpl = (t0) => {
57
57
  return t2;
58
58
  }
59
59
  let t1;
60
- if ($[5] !== components) {
61
- t1 = /* @__PURE__ */ jsx(ThreadPrimitiveMessagesImpl, { components });
62
- $[5] = components;
60
+ if ($[5] !== children) {
61
+ t1 = /* @__PURE__ */ jsx(ThreadPrimitiveMessagesImpl, { children });
62
+ $[5] = children;
63
63
  $[6] = t1;
64
64
  } else t1 = $[6];
65
65
  let t2;
@@ -1 +1 @@
1
- {"version":3,"file":"PartMessages.js","names":["FC","ReactNode","memo","useAuiState","ThreadMessage","ReadonlyThreadProvider","ThreadPrimitiveMessages","ThreadPrimitiveMessagesImpl","PartPrimitiveMessages","Props","components","children","value","message","usePartMessages","_temp","PartPrimitiveMessagesImpl","t0","$","_c","messages","length","t1","t2","displayName","s","part","type","undefined"],"sources":["../../../../src/react/primitives/part/PartMessages.tsx"],"sourcesContent":["import { type FC, type ReactNode, memo } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport type { ThreadMessage } from \"../../../types/message\";\nimport { ReadonlyThreadProvider } from \"../../providers/ReadonlyThreadProvider\";\nimport {\n type ThreadPrimitiveMessages,\n ThreadPrimitiveMessagesImpl,\n} from \"../thread/ThreadMessages\";\n\nexport namespace PartPrimitiveMessages {\n export type Props = {\n components?: ThreadPrimitiveMessages.Props[\"components\"];\n /** Render function called for each message. Receives the message. */\n children?: (value: { message: ThreadMessage }) => ReactNode;\n };\n}\n\nconst usePartMessages = (): readonly ThreadMessage[] | undefined => {\n return useAuiState((s) => {\n const part = s.part;\n if (part.type !== \"tool-call\") return undefined;\n return \"messages\" in part\n ? (part.messages as readonly ThreadMessage[] | undefined)\n : undefined;\n });\n};\n\n/**\n * Renders the nested messages of a tool call part (e.g. sub-agent conversation).\n *\n * This primitive reads `messages` from the current tool call part in the PartScope\n * and renders them using a readonly thread context. All existing message and part\n * primitives work inside, and parent tool UI registrations are inherited.\n *\n * @example\n * ```tsx\n * const toolkit = defineToolkit({\n * invoke_sub_agent: {\n * type: \"backend\",\n * render: () => (\n * <PartPrimitive.Messages>\n * {({ message }) => {\n * if (message.role === \"user\") return <MyUserMessage />;\n * return <MyAssistantMessage />;\n * }}\n * </PartPrimitive.Messages>\n * ),\n * },\n * });\n * ```\n */\nexport const PartPrimitiveMessagesImpl: FC<PartPrimitiveMessages.Props> = ({\n components,\n children,\n}) => {\n const messages = usePartMessages();\n\n if (!messages?.length) return null;\n\n if (children) {\n return (\n <ReadonlyThreadProvider messages={messages}>\n <ThreadPrimitiveMessagesImpl>{children}</ThreadPrimitiveMessagesImpl>\n </ReadonlyThreadProvider>\n );\n }\n\n return (\n <ReadonlyThreadProvider messages={messages}>\n <ThreadPrimitiveMessagesImpl components={components!} />\n </ReadonlyThreadProvider>\n );\n};\n\nPartPrimitiveMessagesImpl.displayName = \"PartPrimitive.Messages\";\n\nexport const PartPrimitiveMessages = memo(PartPrimitiveMessagesImpl);\n"],"mappings":";;;;;;;AAiBA,MAAMc,wBAAkB;CAAA,OACfX,YAAYY,KAMlB;AAAC;;;;;;;;;;;;;;;;;;;;;;;;;AA2BJ,MAAaC,6BAA6DC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAT,YAAAC,aAAAM;CAIzE,MAAAG,WAAiBN,gBAAgB;CAEjC,IAAI,CAACM,UAAQC,QAAQ,OAAS;CAE9B,IAAIV,UAAQ;EAAA,IAAAW;EAAA,IAAAJ,EAAA,OAAAP,UAAA;GAGNW,KAAA,oBAAC,6BAAD,EAA8BX,SAAF,CAAA;GAAyCO,EAAA,KAAAP;GAAAO,EAAA,KAAAI;EAAA,OAAAA,KAAAJ,EAAA;EAAA,IAAAK;EAAA,IAAAL,EAAA,OAAAE,YAAAF,EAAA,OAAAI,IAAA;GADvEC,KAAA,oBAAC,wBAAD;IAAkCH;cAChCE;GADqB,CAAA;GAEEJ,EAAA,KAAAE;GAAAF,EAAA,KAAAI;GAAAJ,EAAA,KAAAK;EAAA,OAAAA,KAAAL,EAAA;EAAA,OAFzBK;CAEyB;CAE5B,IAAAD;CAAA,IAAAJ,EAAA,OAAAR,YAAA;EAIGY,KAAA,oBAAC,6BAAD,EAAyCZ,WAAU,CAAA;EAAKQ,EAAA,KAAAR;EAAAQ,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,IAAAK;CAAA,IAAAL,EAAA,OAAAE,YAAAF,EAAA,OAAAI,IAAA;EAD1DC,KAAA,oBAAC,wBAAD;GAAkCH;aAChCE;EADqB,CAAA;EAEEJ,EAAA,KAAAE;EAAAF,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OAFzBK;AAEyB;AAI7BP,0BAA0BQ,cAAc;AAExC,MAAahB,wBAAwBN,KAAKc,yBAAyB;AA3D3C,SAAAD,MAAAU,GAAA;CAEpB,MAAAC,OAAaD,EAACC;CACd,IAAIA,KAAIC,SAAU,aAAW;CAAmB,OACzC,cAAcD,OAChBA,KAAIN,WADFQ,KAAAA;AAEM"}
1
+ {"version":3,"file":"PartMessages.js","names":["FC","ReactNode","memo","useAuiState","ThreadMessage","ReadonlyThreadProvider","ThreadPrimitiveMessages","ThreadPrimitiveMessagesImpl","PartPrimitiveMessages","Props","components","NonNullable","children","value","message","usePartMessages","_temp","PartPrimitiveMessagesImpl","t0","$","_c","messages","length","t1","t2","displayName","s","part","type","undefined"],"sources":["../../../../src/react/primitives/part/PartMessages.tsx"],"sourcesContent":["import { type FC, type ReactNode, memo } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport type { ThreadMessage } from \"../../../types/message\";\nimport { ReadonlyThreadProvider } from \"../../providers/ReadonlyThreadProvider\";\nimport {\n type ThreadPrimitiveMessages,\n ThreadPrimitiveMessagesImpl,\n} from \"../thread/ThreadMessages\";\n\nexport namespace PartPrimitiveMessages {\n export type Props =\n | {\n components: NonNullable<ThreadPrimitiveMessages.Props[\"components\"]>;\n children?: never;\n }\n | {\n /** Render function called for each message. Receives the message. */\n children: (value: { message: ThreadMessage }) => ReactNode;\n components?: never;\n };\n}\n\nconst usePartMessages = (): readonly ThreadMessage[] | undefined => {\n return useAuiState((s) => {\n const part = s.part;\n if (part.type !== \"tool-call\") return undefined;\n return \"messages\" in part\n ? (part.messages as readonly ThreadMessage[] | undefined)\n : undefined;\n });\n};\n\n/**\n * Renders the nested messages of a tool call part (e.g. sub-agent conversation).\n *\n * This primitive reads `messages` from the current tool call part in the PartScope\n * and renders them using a readonly thread context. All existing message and part\n * primitives work inside, and parent tool UI registrations are inherited.\n *\n * @example\n * ```tsx\n * const toolkit = defineToolkit({\n * invoke_sub_agent: {\n * type: \"backend\",\n * render: () => (\n * <PartPrimitive.Messages>\n * {({ message }) => {\n * if (message.role === \"user\") return <MyUserMessage />;\n * return <MyAssistantMessage />;\n * }}\n * </PartPrimitive.Messages>\n * ),\n * },\n * });\n * ```\n */\nexport const PartPrimitiveMessagesImpl: FC<PartPrimitiveMessages.Props> = ({\n components,\n children,\n}) => {\n const messages = usePartMessages();\n\n if (!messages?.length) return null;\n\n if (components) {\n return (\n <ReadonlyThreadProvider messages={messages}>\n <ThreadPrimitiveMessagesImpl components={components} />\n </ReadonlyThreadProvider>\n );\n }\n\n return (\n <ReadonlyThreadProvider messages={messages}>\n <ThreadPrimitiveMessagesImpl>{children}</ThreadPrimitiveMessagesImpl>\n </ReadonlyThreadProvider>\n );\n};\n\nPartPrimitiveMessagesImpl.displayName = \"PartPrimitive.Messages\";\n\nexport const PartPrimitiveMessages = memo(PartPrimitiveMessagesImpl);\n"],"mappings":";;;;;;;AAsBA,MAAMe,wBAAkB;CAAA,OACfZ,YAAYa,KAMlB;AAAC;;;;;;;;;;;;;;;;;;;;;;;;;AA2BJ,MAAaC,6BAA6DC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAV,YAAAE,aAAAM;CAIzE,MAAAG,WAAiBN,gBAAgB;CAEjC,IAAI,CAACM,UAAQC,QAAQ,OAAS;CAE9B,IAAIZ,YAAU;EAAA,IAAAa;EAAA,IAAAJ,EAAA,OAAAT,YAAA;GAGRa,KAAA,oBAAC,6BAAD,EAAyCb,WAAU,CAAA;GAAIS,EAAA,KAAAT;GAAAS,EAAA,KAAAI;EAAA,OAAAA,KAAAJ,EAAA;EAAA,IAAAK;EAAA,IAAAL,EAAA,OAAAE,YAAAF,EAAA,OAAAI,IAAA;GADzDC,KAAA,oBAAC,wBAAD;IAAkCH;cAChCE;GADqB,CAAA;GAEEJ,EAAA,KAAAE;GAAAF,EAAA,KAAAI;GAAAJ,EAAA,KAAAK;EAAA,OAAAA,KAAAL,EAAA;EAAA,OAFzBK;CAEyB;CAE5B,IAAAD;CAAA,IAAAJ,EAAA,OAAAP,UAAA;EAIGW,KAAA,oBAAC,6BAAD,EAA8BX,SAAF,CAAA;EAAyCO,EAAA,KAAAP;EAAAO,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,IAAAK;CAAA,IAAAL,EAAA,OAAAE,YAAAF,EAAA,OAAAI,IAAA;EADvEC,KAAA,oBAAC,wBAAD;GAAkCH;aAChCE;EADqB,CAAA;EAEEJ,EAAA,KAAAE;EAAAF,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OAFzBK;AAEyB;AAI7BP,0BAA0BQ,cAAc;AAExC,MAAajB,wBAAwBN,KAAKe,yBAAyB;AA3D3C,SAAAD,MAAAU,GAAA;CAEpB,MAAAC,OAAaD,EAACC;CACd,IAAIA,KAAIC,SAAU,aAAW;CAAmB,OACzC,cAAcD,OAChBA,KAAIN,WADFQ,KAAAA;AAEM"}
@@ -42,6 +42,36 @@ declare namespace ThreadPrimitiveMessageByIndex {
42
42
  * Renders a single message at the specified index in the current thread.
43
43
  */
44
44
  declare const ThreadPrimitiveMessageByIndex: FC<ThreadPrimitiveMessageByIndex.Props>;
45
+ declare namespace ThreadPrimitiveUnstable_MessageById {
46
+ type Props = {
47
+ messageId: string;
48
+ components: MessagesComponentConfig;
49
+ };
50
+ }
51
+ /**
52
+ * Renders the message with the given id in the current thread.
53
+ *
54
+ * Unlike {@link ThreadPrimitiveMessageByIndex}, this keys off the message id,
55
+ * so it stays attached to the same message across reordering and windowing -
56
+ * the shape needed to drive a virtualized or custom message list together with
57
+ * `unstable_useThreadMessageIds`. A missing or removed id renders `null` rather
58
+ * than throwing.
59
+ *
60
+ * @deprecated Unstable / Experimental - may change in any release.
61
+ *
62
+ * @example
63
+ * ```tsx
64
+ * const messageIds = unstable_useThreadMessageIds();
65
+ * return messageIds.map((messageId) => (
66
+ * <ThreadPrimitive.Unstable_MessageById
67
+ * key={messageId}
68
+ * messageId={messageId}
69
+ * components={MESSAGE_COMPONENTS}
70
+ * />
71
+ * ));
72
+ * ```
73
+ */
74
+ declare const ThreadPrimitiveUnstable_MessageById: FC<ThreadPrimitiveUnstable_MessageById.Props>;
45
75
  /**
46
76
  * Renders all messages in the current thread.
47
77
  *
@@ -58,5 +88,5 @@ declare const ThreadPrimitiveMessageByIndex: FC<ThreadPrimitiveMessageByIndex.Pr
58
88
  declare const ThreadPrimitiveMessagesImpl: FC<ThreadPrimitiveMessages.Props>;
59
89
  declare const ThreadPrimitiveMessages: import("react").NamedExoticComponent<ThreadPrimitiveMessages.Props>;
60
90
  //#endregion
61
- export { ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl };
91
+ export { ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl, ThreadPrimitiveUnstable_MessageById };
62
92
  //# sourceMappingURL=ThreadMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadMessages.d.ts","names":[],"sources":["../../../../src/react/primitives/thread/ThreadMessages.tsx"],"mappings":";;;;KAWK,uBAAA;mDAGC,OAAA,EAAS,aAAA,EAHV;EAKC,YAAA,GAAe,aAAA;EAEf,gBAAA,GAAmB,aAAA,cAFJ;EAIf,qBAAA,GAAwB,aAAA,cAAA;EAExB,kBAAA,GAAqB,aAAA,cAEP;EAAd,WAAA,GAAc,aAAA,cAIE;EAFhB,gBAAA,GAAmB,aAAA,cAQJ;EANf,aAAA,GAAgB,aAAA;AAAA;EAYK,4DARrB,OAAA,GAAU,aAAA,cAYQ;EAVlB,YAAA,GAAe,aAAA,cAYc;EAV7B,gBAAA,GAAmB,aAAA,cAtBnB;EAwBA,qBAAA,GAAwB,aAAA,cAtBxB;EAwBA,kBAAA,GAAqB,aAAA,cAtBrB;EAwBA,WAAA,EAAa,aAAA,EAtBb;EAwBA,gBAAA,EAAkB,aAAA,EAtBlB;EAwBA,aAAA,GAAgB,aAAA;AAAA;AAAA,kBAGL,uBAAA;EAAA,KACH,KAAA;IAxBW,4DA2BjB,UAAA,EAAY,uBAAA;IACZ,QAAA;EAAA;IAtBQ,qEA0BR,QAAA,GAAW,KAAA;MAAS,OAAA,EAAS,YAAA;IAAA,MAAmB,SAAA;IAChD,UAAA;EAAA;AAAA;AAAA,kBAuFS,6BAAA;EAAA,KACH,KAAA;IACV,KAAA;IACA,UAAA,EAAY,uBAAuB;EAAA;AAAA;;;;cAO1B,6BAAA,EAA+B,EAAE,CAAC,6BAAA,CAA8B,KAAA;AA3G7E;;;;;;;;;;;;;AAAA,cAiKa,2BAAA,EAA6B,EAAE,CAAC,uBAAA,CAAwB,KAAA;AAAA,cAkBxD,uBAAA,kBAAuB,oBAAA,CAAA,uBAAA,CAAA,KAAA"}
1
+ {"version":3,"file":"ThreadMessages.d.ts","names":[],"sources":["../../../../src/react/primitives/thread/ThreadMessages.tsx"],"mappings":";;;;KAYK,uBAAA;mDAGC,OAAA,EAAS,aAAA,EAHV;EAKC,YAAA,GAAe,aAAA;EAEf,gBAAA,GAAmB,aAAA,cAFJ;EAIf,qBAAA,GAAwB,aAAA,cAAA;EAExB,kBAAA,GAAqB,aAAA,cAEP;EAAd,WAAA,GAAc,aAAA,cAIE;EAFhB,gBAAA,GAAmB,aAAA,cAQJ;EANf,aAAA,GAAgB,aAAA;AAAA;EAYK,4DARrB,OAAA,GAAU,aAAA,cAYQ;EAVlB,YAAA,GAAe,aAAA,cAYc;EAV7B,gBAAA,GAAmB,aAAA,cAtBnB;EAwBA,qBAAA,GAAwB,aAAA,cAtBxB;EAwBA,kBAAA,GAAqB,aAAA,cAtBrB;EAwBA,WAAA,EAAa,aAAA,EAtBb;EAwBA,gBAAA,EAAkB,aAAA,EAtBlB;EAwBA,aAAA,GAAgB,aAAA;AAAA;AAAA,kBAGL,uBAAA;EAAA,KACH,KAAA;IAxBW,4DA2BjB,UAAA,EAAY,uBAAA;IACZ,QAAA;EAAA;IAtBQ,qEA0BR,QAAA,GAAW,KAAA;MAAS,OAAA,EAAS,YAAA;IAAA,MAAmB,SAAA;IAChD,UAAA;EAAA;AAAA;AAAA,kBAqGS,6BAAA;EAAA,KACH,KAAA;IACV,KAAA;IACA,UAAA,EAAY,uBAAuB;EAAA;AAAA;;;;cAO1B,6BAAA,EAA+B,EAAE,CAAC,6BAAA,CAA8B,KAAA;AAAA,kBAgB5D,mCAAA;EAAA,KACH,KAAA;IACV,SAAA;IACA,UAAA,EAAY,uBAAuB;EAAA;AAAA;;;;;;;;;;;;;;AAlIrB;AAqGlB;;;;;;;;;cAwDa,mCAAA,EAAqC,EAAE,CAAC,mCAAA,CAAoC,KAAA;AA9CzF;;;;;;;;AAAkF;AAgBlF;;;;AAhBA,cA0Ga,2BAAA,EAA6B,EAAE,CAAC,uBAAA,CAAwB,KAAA;AAAA,cAkBxD,uBAAA,kBAAuB,oBAAA,CAAA,uBAAA,CAAA,KAAA"}