@assistant-ui/core 0.2.23 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react/adapters/LocalStorageThreadListAdapter.js +2 -2
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +40 -55
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.js +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.js.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.js +3 -3
- package/dist/react/interactables-legacy/useInteractableState.js.map +1 -1
- package/dist/react/model-context/useAssistantContext.js +1 -1
- package/dist/react/model-context/useAssistantContext.js.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.js +1 -1
- package/dist/react/model-context/useAssistantDataUI.js.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.js +1 -1
- package/dist/react/model-context/useAssistantInstructions.js.map +1 -1
- package/dist/react/model-context/useAssistantTool.js +29 -25
- package/dist/react/model-context/useAssistantTool.js.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.js +1 -1
- package/dist/react/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.js +1 -1
- package/dist/react/model-context/useAuiToolOverrides.js.map +1 -1
- package/dist/react/model-context/useInteractable.d.ts.map +1 -1
- package/dist/react/model-context/useInteractable.js +3 -5
- package/dist/react/model-context/useInteractable.js.map +1 -1
- package/dist/react/model-context/useInteractableState.js +2 -2
- package/dist/react/model-context/useInteractableState.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.js +3 -3
- package/dist/react/primitive-hooks/useActionBarCopy.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.js +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.js +2 -2
- package/dist/react/primitive-hooks/useActionBarFeedback.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.js +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.js +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.js +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.js +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.js +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.js +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.js +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.js +1 -1
- package/dist/react/primitive-hooks/useComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.js +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.js +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.js +2 -2
- package/dist/react/primitive-hooks/useMessageBranching.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.js +1 -1
- package/dist/react/primitive-hooks/useMessageReload.js.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +7 -7
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.js +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.js +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.js +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.js +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.js +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.js +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.js.map +1 -1
- package/dist/react/primitive-hooks/useVoice.js +5 -13
- package/dist/react/primitive-hooks/useVoice.js.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.js +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.js +1 -1
- package/dist/react/primitives/composer/ComposerQueue.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +1 -1
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +84 -122
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.js +1 -1
- package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.js +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.js +2 -2
- package/dist/react/providers/AttachmentByIndexProvider.js.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.js +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.js.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js +30 -18
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js.map +1 -1
- package/dist/react/providers/MessageByIdProvider.js +2 -2
- package/dist/react/providers/MessageByIdProvider.js.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.js +2 -2
- package/dist/react/providers/MessageByIndexProvider.js.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.js +30 -18
- package/dist/react/providers/PartByIndexProvider.js.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.js +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.js.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.js +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.js +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +3 -3
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +32 -20
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/createRuntimeExtras.js +1 -1
- package/dist/react/runtimes/createRuntimeExtras.js.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +0 -6
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +1 -3
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/groupParts.js +1 -3
- package/dist/react/utils/groupParts.js.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +4 -3
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/store/clients/runtime-adapter.js +3 -3
- package/dist/store/clients/runtime-adapter.js.map +1 -1
- package/package.json +5 -5
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +2 -2
- package/src/react/client/Tools.ts +0 -7
- package/src/react/interactables-legacy/useAssistantInteractable.ts +1 -1
- package/src/react/interactables-legacy/useInteractableState.ts +3 -3
- package/src/react/model-context/useAssistantContext.ts +1 -1
- package/src/react/model-context/useAssistantDataUI.ts +1 -1
- package/src/react/model-context/useAssistantInstructions.ts +1 -1
- package/src/react/model-context/useAssistantTool.ts +2 -2
- package/src/react/model-context/useAssistantToolUI.ts +1 -1
- package/src/react/model-context/useAuiToolOverrides.ts +1 -1
- package/src/react/model-context/useInteractable.ts +3 -7
- package/src/react/model-context/useInteractableState.ts +2 -2
- package/src/react/primitive-hooks/useActionBarCopy.test.ts +2 -2
- package/src/react/primitive-hooks/useActionBarCopy.ts +3 -3
- package/src/react/primitive-hooks/useActionBarEdit.ts +1 -1
- package/src/react/primitive-hooks/useActionBarFeedback.ts +2 -2
- package/src/react/primitive-hooks/useActionBarReload.ts +1 -1
- package/src/react/primitive-hooks/useActionBarSpeak.ts +1 -1
- package/src/react/primitive-hooks/useActionBarStopSpeaking.ts +1 -1
- package/src/react/primitive-hooks/useBranchPickerNext.ts +1 -1
- package/src/react/primitive-hooks/useBranchPickerPrevious.ts +1 -1
- package/src/react/primitive-hooks/useComposerAddAttachment.ts +1 -1
- package/src/react/primitive-hooks/useComposerCancel.ts +1 -1
- package/src/react/primitive-hooks/useComposerDictate.ts +1 -1
- package/src/react/primitive-hooks/useComposerSend.ts +1 -1
- package/src/react/primitive-hooks/useEditComposerCancel.ts +1 -1
- package/src/react/primitive-hooks/useEditComposerSend.ts +1 -1
- package/src/react/primitive-hooks/useMessageBranching.ts +2 -2
- package/src/react/primitive-hooks/useMessageReload.ts +1 -1
- package/src/react/primitive-hooks/useSuggestionTrigger.ts +9 -9
- package/src/react/primitive-hooks/useThreadListItemArchive.ts +1 -1
- package/src/react/primitive-hooks/useThreadListItemDelete.ts +1 -1
- package/src/react/primitive-hooks/useThreadListItemTrigger.ts +1 -1
- package/src/react/primitive-hooks/useThreadListItemUnarchive.ts +1 -1
- package/src/react/primitive-hooks/useThreadListLoadMore.ts +1 -1
- package/src/react/primitive-hooks/useThreadListNew.ts +1 -1
- package/src/react/primitive-hooks/useVoice.ts +5 -5
- package/src/react/primitives/chainOfThought/ChainOfThoughtParts.tsx +1 -1
- package/src/react/primitives/composer/ComposerAttachments.tsx +1 -1
- package/src/react/primitives/composer/ComposerQueue.tsx +1 -3
- package/src/react/primitives/message/MessageAttachments.tsx +1 -3
- package/src/react/primitives/message/MessageParts.tsx +9 -9
- package/src/react/primitives/thread/ThreadMessages.tsx +1 -1
- package/src/react/primitives/thread/ThreadSuggestions.tsx +1 -1
- package/src/react/primitives/threadList/ThreadListItems.tsx +1 -1
- package/src/react/providers/AttachmentByIndexProvider.tsx +2 -2
- package/src/react/providers/ChainOfThoughtByIndicesProvider.tsx +1 -1
- package/src/react/providers/ChainOfThoughtPartByIndexProvider.tsx +2 -19
- package/src/react/providers/MessageByIdProvider.tsx +2 -2
- package/src/react/providers/MessageByIndexProvider.tsx +2 -2
- package/src/react/providers/PartByIndexProvider.tsx +2 -16
- package/src/react/providers/QueueItemByIndexProvider.tsx +1 -1
- package/src/react/providers/ReadonlyThreadProvider.tsx +1 -1
- package/src/react/providers/SuggestionByIndexProvider.tsx +1 -1
- package/src/react/providers/ThreadListItemByIndexProvider.tsx +1 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +3 -3
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +32 -7
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +26 -16
- package/src/react/runtimes/createRuntimeExtras.test.ts +1 -1
- package/src/react/runtimes/createRuntimeExtras.ts +1 -1
- package/src/react/types/scopes/tools.ts +0 -6
- package/src/react/utils/groupParts.ts +1 -7
- package/src/runtimes/local/local-thread-runtime-core.test.ts +38 -0
- package/src/runtimes/local/local-thread-runtime-core.ts +6 -3
- package/src/store/clients/runtime-adapter.ts +3 -3
- package/src/tests/groupParts.test.ts +3 -48
|
@@ -226,7 +226,7 @@ const defaultComponents = {
|
|
|
226
226
|
ReasoningGroup: ({ children }) => children
|
|
227
227
|
};
|
|
228
228
|
const MessagePartComponent = (t0) => {
|
|
229
|
-
const $ = c(
|
|
229
|
+
const $ = c(41);
|
|
230
230
|
const { components: t1 } = t0;
|
|
231
231
|
let t2;
|
|
232
232
|
if ($[0] !== t1) {
|
|
@@ -252,138 +252,120 @@ const MessagePartComponent = (t0) => {
|
|
|
252
252
|
const part = useAuiState(_temp5);
|
|
253
253
|
const type = part.type;
|
|
254
254
|
if (type === "tool-call") {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
$[4] = aui;
|
|
259
|
-
$[5] = t11;
|
|
260
|
-
} else t11 = $[5];
|
|
261
|
-
const addResult = t11.addToolResult;
|
|
262
|
-
let t12;
|
|
263
|
-
if ($[6] !== aui) {
|
|
264
|
-
t12 = aui.part();
|
|
265
|
-
$[6] = aui;
|
|
266
|
-
$[7] = t12;
|
|
267
|
-
} else t12 = $[7];
|
|
268
|
-
const resume = t12.resumeToolCall;
|
|
269
|
-
let t13;
|
|
270
|
-
if ($[8] !== aui) {
|
|
271
|
-
t13 = aui.part();
|
|
272
|
-
$[8] = aui;
|
|
273
|
-
$[9] = t13;
|
|
274
|
-
} else t13 = $[9];
|
|
275
|
-
const respondToApproval = t13.respondToToolApproval;
|
|
255
|
+
const addResult = aui.part.addToolResult;
|
|
256
|
+
const resume = aui.part.resumeToolCall;
|
|
257
|
+
const respondToApproval = aui.part.respondToToolApproval;
|
|
276
258
|
if ("Override" in tools) {
|
|
277
|
-
let
|
|
278
|
-
if ($[
|
|
279
|
-
|
|
259
|
+
let t11;
|
|
260
|
+
if ($[4] !== addResult || $[5] !== part || $[6] !== respondToApproval || $[7] !== resume || $[8] !== tools.Override) {
|
|
261
|
+
t11 = /* @__PURE__ */ jsx(tools.Override, {
|
|
280
262
|
...part,
|
|
281
263
|
addResult,
|
|
282
264
|
resume,
|
|
283
265
|
respondToApproval
|
|
284
266
|
});
|
|
285
|
-
$[
|
|
286
|
-
$[
|
|
287
|
-
$[
|
|
288
|
-
$[
|
|
289
|
-
$[
|
|
290
|
-
$[
|
|
291
|
-
} else
|
|
292
|
-
return
|
|
267
|
+
$[4] = addResult;
|
|
268
|
+
$[5] = part;
|
|
269
|
+
$[6] = respondToApproval;
|
|
270
|
+
$[7] = resume;
|
|
271
|
+
$[8] = tools.Override;
|
|
272
|
+
$[9] = t11;
|
|
273
|
+
} else t11 = $[9];
|
|
274
|
+
return t11;
|
|
293
275
|
}
|
|
294
276
|
const Tool = tools.by_name?.[part.toolName] ?? tools.Fallback;
|
|
295
|
-
let
|
|
296
|
-
if ($[
|
|
297
|
-
|
|
277
|
+
let t11;
|
|
278
|
+
if ($[10] !== Tool || $[11] !== addResult || $[12] !== part || $[13] !== respondToApproval || $[14] !== resume) {
|
|
279
|
+
t11 = /* @__PURE__ */ jsx(ToolUIDisplay, {
|
|
298
280
|
...part,
|
|
299
281
|
Fallback: Tool,
|
|
300
282
|
addResult,
|
|
301
283
|
resume,
|
|
302
284
|
respondToApproval
|
|
303
285
|
});
|
|
304
|
-
$[
|
|
305
|
-
$[
|
|
306
|
-
$[
|
|
307
|
-
$[
|
|
308
|
-
$[
|
|
309
|
-
$[
|
|
310
|
-
} else
|
|
311
|
-
return
|
|
286
|
+
$[10] = Tool;
|
|
287
|
+
$[11] = addResult;
|
|
288
|
+
$[12] = part;
|
|
289
|
+
$[13] = respondToApproval;
|
|
290
|
+
$[14] = resume;
|
|
291
|
+
$[15] = t11;
|
|
292
|
+
} else t11 = $[15];
|
|
293
|
+
return t11;
|
|
312
294
|
}
|
|
313
295
|
if (part.status?.type === "requires-action") throw new Error("Encountered unexpected requires-action status");
|
|
314
296
|
switch (type) {
|
|
315
297
|
case "text": {
|
|
316
298
|
let t11;
|
|
317
|
-
if ($[
|
|
299
|
+
if ($[16] !== Text || $[17] !== part) {
|
|
318
300
|
t11 = /* @__PURE__ */ jsx(Text, { ...part });
|
|
319
|
-
$[
|
|
320
|
-
$[
|
|
321
|
-
$[
|
|
322
|
-
} else t11 = $[
|
|
301
|
+
$[16] = Text;
|
|
302
|
+
$[17] = part;
|
|
303
|
+
$[18] = t11;
|
|
304
|
+
} else t11 = $[18];
|
|
323
305
|
return t11;
|
|
324
306
|
}
|
|
325
307
|
case "reasoning": {
|
|
326
308
|
let t11;
|
|
327
|
-
if ($[
|
|
309
|
+
if ($[19] !== Reasoning || $[20] !== part) {
|
|
328
310
|
t11 = /* @__PURE__ */ jsx(Reasoning, { ...part });
|
|
329
|
-
$[
|
|
330
|
-
$[
|
|
331
|
-
$[
|
|
332
|
-
} else t11 = $[
|
|
311
|
+
$[19] = Reasoning;
|
|
312
|
+
$[20] = part;
|
|
313
|
+
$[21] = t11;
|
|
314
|
+
} else t11 = $[21];
|
|
333
315
|
return t11;
|
|
334
316
|
}
|
|
335
317
|
case "source": {
|
|
336
318
|
let t11;
|
|
337
|
-
if ($[
|
|
319
|
+
if ($[22] !== Source || $[23] !== part) {
|
|
338
320
|
t11 = /* @__PURE__ */ jsx(Source, { ...part });
|
|
339
|
-
$[
|
|
340
|
-
$[
|
|
341
|
-
$[
|
|
342
|
-
} else t11 = $[
|
|
321
|
+
$[22] = Source;
|
|
322
|
+
$[23] = part;
|
|
323
|
+
$[24] = t11;
|
|
324
|
+
} else t11 = $[24];
|
|
343
325
|
return t11;
|
|
344
326
|
}
|
|
345
327
|
case "image": {
|
|
346
328
|
let t11;
|
|
347
|
-
if ($[
|
|
329
|
+
if ($[25] !== Image || $[26] !== part) {
|
|
348
330
|
t11 = /* @__PURE__ */ jsx(Image, { ...part });
|
|
349
|
-
$[
|
|
350
|
-
$[
|
|
351
|
-
$[
|
|
352
|
-
} else t11 = $[
|
|
331
|
+
$[25] = Image;
|
|
332
|
+
$[26] = part;
|
|
333
|
+
$[27] = t11;
|
|
334
|
+
} else t11 = $[27];
|
|
353
335
|
return t11;
|
|
354
336
|
}
|
|
355
337
|
case "file": {
|
|
356
338
|
let t11;
|
|
357
|
-
if ($[
|
|
339
|
+
if ($[28] !== File || $[29] !== part) {
|
|
358
340
|
t11 = /* @__PURE__ */ jsx(File, { ...part });
|
|
359
|
-
$[
|
|
360
|
-
$[
|
|
361
|
-
$[
|
|
362
|
-
} else t11 = $[
|
|
341
|
+
$[28] = File;
|
|
342
|
+
$[29] = part;
|
|
343
|
+
$[30] = t11;
|
|
344
|
+
} else t11 = $[30];
|
|
363
345
|
return t11;
|
|
364
346
|
}
|
|
365
347
|
case "audio": {
|
|
366
348
|
let t11;
|
|
367
|
-
if ($[
|
|
349
|
+
if ($[31] !== Audio || $[32] !== part) {
|
|
368
350
|
t11 = /* @__PURE__ */ jsx(Audio, { ...part });
|
|
369
|
-
$[
|
|
370
|
-
$[
|
|
371
|
-
$[
|
|
372
|
-
} else t11 = $[
|
|
351
|
+
$[31] = Audio;
|
|
352
|
+
$[32] = part;
|
|
353
|
+
$[33] = t11;
|
|
354
|
+
} else t11 = $[33];
|
|
373
355
|
return t11;
|
|
374
356
|
}
|
|
375
357
|
case "data": {
|
|
376
358
|
const Data = data?.by_name?.[part.name] ?? data?.Fallback;
|
|
377
359
|
let t11;
|
|
378
|
-
if ($[
|
|
360
|
+
if ($[34] !== Data || $[35] !== part) {
|
|
379
361
|
t11 = /* @__PURE__ */ jsx(DataUIDisplay, {
|
|
380
362
|
...part,
|
|
381
363
|
Fallback: Data
|
|
382
364
|
});
|
|
383
|
-
$[
|
|
384
|
-
$[
|
|
385
|
-
$[
|
|
386
|
-
} else t11 = $[
|
|
365
|
+
$[34] = Data;
|
|
366
|
+
$[35] = part;
|
|
367
|
+
$[36] = t11;
|
|
368
|
+
} else t11 = $[36];
|
|
387
369
|
return t11;
|
|
388
370
|
}
|
|
389
371
|
case "generative-ui": {
|
|
@@ -393,17 +375,17 @@ const MessagePartComponent = (t0) => {
|
|
|
393
375
|
}
|
|
394
376
|
const t11 = part;
|
|
395
377
|
let t12;
|
|
396
|
-
if ($[
|
|
378
|
+
if ($[37] !== generativeUI.Fallback || $[38] !== generativeUI.components || $[39] !== t11.spec) {
|
|
397
379
|
t12 = /* @__PURE__ */ jsx(GenerativeUIRender, {
|
|
398
380
|
spec: t11.spec,
|
|
399
381
|
components: generativeUI.components,
|
|
400
382
|
Fallback: generativeUI.Fallback
|
|
401
383
|
});
|
|
402
|
-
$[
|
|
403
|
-
$[
|
|
404
|
-
$[
|
|
405
|
-
$[
|
|
406
|
-
} else t12 = $[
|
|
384
|
+
$[37] = generativeUI.Fallback;
|
|
385
|
+
$[38] = generativeUI.components;
|
|
386
|
+
$[39] = t11.spec;
|
|
387
|
+
$[40] = t12;
|
|
388
|
+
} else t12 = $[40];
|
|
407
389
|
return t12;
|
|
408
390
|
}
|
|
409
391
|
default:
|
|
@@ -549,47 +531,27 @@ function resolveToolRender(toolsState, part) {
|
|
|
549
531
|
* current part context. Reads tool registry and part state from context.
|
|
550
532
|
*/
|
|
551
533
|
const RegisteredToolUI = () => {
|
|
552
|
-
const $ = c(
|
|
534
|
+
const $ = c(6);
|
|
553
535
|
const aui = useAui();
|
|
554
536
|
const part = useAuiState(_temp7);
|
|
555
537
|
const Render = useAuiState(_temp8);
|
|
556
538
|
if (!Render || part.type !== "tool-call") return null;
|
|
557
539
|
let t0;
|
|
558
|
-
if ($[0] !== aui) {
|
|
559
|
-
t0 =
|
|
560
|
-
$[0] = aui;
|
|
561
|
-
$[1] = t0;
|
|
562
|
-
} else t0 = $[1];
|
|
563
|
-
const t1 = t0.addToolResult;
|
|
564
|
-
let t2;
|
|
565
|
-
if ($[2] !== aui) {
|
|
566
|
-
t2 = aui.part();
|
|
567
|
-
$[2] = aui;
|
|
568
|
-
$[3] = t2;
|
|
569
|
-
} else t2 = $[3];
|
|
570
|
-
const t3 = t2.resumeToolCall;
|
|
571
|
-
let t4;
|
|
572
|
-
if ($[4] !== aui) {
|
|
573
|
-
t4 = aui.part();
|
|
574
|
-
$[4] = aui;
|
|
575
|
-
$[5] = t4;
|
|
576
|
-
} else t4 = $[5];
|
|
577
|
-
let t5;
|
|
578
|
-
if ($[6] !== Render || $[7] !== part || $[8] !== t0.addToolResult || $[9] !== t2.resumeToolCall || $[10] !== t4.respondToToolApproval) {
|
|
579
|
-
t5 = /* @__PURE__ */ jsx(Render, {
|
|
540
|
+
if ($[0] !== Render || $[1] !== aui.part.addToolResult || $[2] !== aui.part.respondToToolApproval || $[3] !== aui.part.resumeToolCall || $[4] !== part) {
|
|
541
|
+
t0 = /* @__PURE__ */ jsx(Render, {
|
|
580
542
|
...part,
|
|
581
|
-
addResult:
|
|
582
|
-
resume:
|
|
583
|
-
respondToApproval:
|
|
543
|
+
addResult: aui.part.addToolResult,
|
|
544
|
+
resume: aui.part.resumeToolCall,
|
|
545
|
+
respondToApproval: aui.part.respondToToolApproval
|
|
584
546
|
});
|
|
585
|
-
$[
|
|
586
|
-
$[
|
|
587
|
-
$[
|
|
588
|
-
$[
|
|
589
|
-
$[
|
|
590
|
-
$[
|
|
591
|
-
} else
|
|
592
|
-
return
|
|
547
|
+
$[0] = Render;
|
|
548
|
+
$[1] = aui.part.addToolResult;
|
|
549
|
+
$[2] = aui.part.respondToToolApproval;
|
|
550
|
+
$[3] = aui.part.resumeToolCall;
|
|
551
|
+
$[4] = part;
|
|
552
|
+
$[5] = t0;
|
|
553
|
+
} else t0 = $[5];
|
|
554
|
+
return t0;
|
|
593
555
|
};
|
|
594
556
|
/**
|
|
595
557
|
* Stable propless component that renders the registered data renderer UI
|
|
@@ -653,12 +615,12 @@ const MessagePartChildrenInner = ({ children }) => {
|
|
|
653
615
|
const aui = useAui();
|
|
654
616
|
const dataRenderers = useAuiState((s) => s.dataRenderers);
|
|
655
617
|
return /* @__PURE__ */ jsx(RenderChildrenWithAccessor, {
|
|
656
|
-
getItemState: (client) => client.part
|
|
618
|
+
getItemState: (client) => client.part.getState(),
|
|
657
619
|
children: (getItem) => children({ get part() {
|
|
658
620
|
const state = getItem();
|
|
659
621
|
if (state.type === "tool-call") {
|
|
660
|
-
const hasUI = resolveToolRender(aui.tools
|
|
661
|
-
const partMethods = aui.part
|
|
622
|
+
const hasUI = resolveToolRender(aui.tools.getState(), state) !== null;
|
|
623
|
+
const partMethods = aui.part;
|
|
662
624
|
return {
|
|
663
625
|
...state,
|
|
664
626
|
toolUI: hasUI ? /* @__PURE__ */ jsx(RegisteredToolUI, {}) : null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageParts.js","names":["ComponentType","FC","ReactNode","memo","PropsWithChildren","useMemo","RenderChildrenWithAccessor","useAuiState","useAui","PartState","PartByIndexProvider","TextMessagePartProvider","ChainOfThoughtByIndicesProvider","getMessageQuote","Unstable_AudioMessagePartComponent","DataMessagePartComponent","DataMessagePartProps","EmptyMessagePartComponent","TextMessagePartComponent","ImageMessagePartComponent","SourceMessagePartComponent","ToolCallMessagePartComponent","ToolCallMessagePartProps","FileMessagePartComponent","ReasoningMessagePartComponent","ReasoningGroupComponent","QuoteMessagePartComponent","GenerativeUIComponentRegistry","GenerativeUIRender","isMcpAppUri","MessagePartStatus","GenerativeUIMessagePart","DataRenderersState","ToolsState","useShallow","MessagePartRange","type","index","startIndex","endIndex","idKey","createGroupState","groupType","T","start","startGroup","endGroup","ranges","push","finalize","groupMessageParts","messageTypes","useChainOfThought","partIds","chainOfThoughtGroup","i","length","toolGroup","reasoningGroup","claimed","Set","range","id","undefined","has","add","useMessagePartsGroups","$","_c","_temp2","_temp4","t0","bb0","t1","Symbol","for","t2","MessagePrimitiveParts","DataConfig","by_name","Record","Fallback","BaseComponents","Empty","Text","Source","Image","File","Unstable_Audio","data","Quote","generativeUI","components","component","props","ToolsConfig","Override","StandardComponents","Reasoning","tools","ToolGroup","ReasoningGroup","ChainOfThought","ChainOfThoughtComponents","Props","unstable_showEmptyOnNonTextEnd","children","value","part","EnrichedPartState","ToolUIDisplay","toolName","s","toolUIs","render","Render","getDataRenderer","dataRenderers","name","inlineFallback","named","renderers","fallbacks","DataUIDisplay","defaultComponents","MessagePartComponentProps","MessagePartComponent","t3","t4","t5","t6","t7","t8","t9","Audio","t10","aui","_temp5","t11","addResult","addToolResult","t12","resume","resumeToolCall","t13","respondToApproval","respondToToolApproval","t14","Tool","status","Error","Data","process","env","NODE_ENV","console","warn","spec","MessagePrimitivePartByIndex","prev","next","displayName","EmptyPartFallback","Component","COMPLETE_STATUS","Object","freeze","RUNNING_STATUS","EmptyPartsImpl","_temp6","EmptyParts","ConditionalEmptyImpl","enabled","message","parts","lastPart","shouldShowEmpty","ConditionalEmpty","QuoteRendererImpl","quoteInfo","messageId","text","QuoteRenderer","resolveToolRender","toolsState","Extract","mcp","app","resourceUri","mcpApp","RegisteredToolUI","_temp7","_temp8","RegisteredDataRendererUI","_temp9","_temp0","DefaultPartFallback","partType","_temp1","toolUI","dataRendererUI","Exclude","EMPTY_RUNNING_TEXT_PART","MessagePartChildrenProps","MessagePartChildrenInner","Pick","client","getState","getItem","state","hasUI","partMethods","MessagePartChildren","MessagePrimitivePartsInner","contentLength","_temp10","isRunning","_temp11","isEmptyRunning","_","Array","from","MessagePrimitivePartsCompat","_temp12","messageRanges","toolLeafKey","partIndex","map","ChainOfThoughtComponent","ToolGroupComponent","partIndex_0","__0","i_0","partIndex_1","partsElements","_temp","c","_temp3","c_0","toolCallId","s_0"],"sources":["../../../../src/react/primitives/message/MessageParts.tsx"],"sourcesContent":["import {\n type ComponentType,\n type FC,\n type ReactNode,\n memo,\n type PropsWithChildren,\n useMemo,\n} from \"react\";\nimport {\n RenderChildrenWithAccessor,\n useAuiState,\n useAui,\n} from \"@assistant-ui/store\";\nimport type { PartState } from \"../../../store/scopes/part\";\nimport { PartByIndexProvider } from \"../../providers/PartByIndexProvider\";\nimport { TextMessagePartProvider } from \"../../providers/TextMessagePartProvider\";\nimport { ChainOfThoughtByIndicesProvider } from \"../../providers/ChainOfThoughtByIndicesProvider\";\nimport { getMessageQuote } from \"../../utils/getMessageQuote\";\nimport type {\n Unstable_AudioMessagePartComponent,\n DataMessagePartComponent,\n DataMessagePartProps,\n EmptyMessagePartComponent,\n TextMessagePartComponent,\n ImageMessagePartComponent,\n SourceMessagePartComponent,\n ToolCallMessagePartComponent,\n ToolCallMessagePartProps,\n FileMessagePartComponent,\n ReasoningMessagePartComponent,\n ReasoningGroupComponent,\n QuoteMessagePartComponent,\n GenerativeUIComponentRegistry,\n} from \"../../types/MessagePartComponentTypes\";\nimport { GenerativeUIRender } from \"../generativeUI/GenerativeUI\";\nimport {\n isMcpAppUri,\n type MessagePartStatus,\n type GenerativeUIMessagePart,\n} from \"../../../types/message\";\nimport type { DataRenderersState } from \"../../types/scopes/dataRenderers\";\nimport type { ToolsState } from \"../../types/scopes/tools\";\nimport { useShallow } from \"zustand/shallow\";\n\ntype MessagePartRange =\n | { type: \"single\"; index: number }\n | {\n type: \"toolGroup\";\n startIndex: number;\n endIndex: number;\n idKey?: string | undefined;\n }\n | {\n type: \"reasoningGroup\";\n startIndex: number;\n endIndex: number;\n idKey?: string | undefined;\n }\n | {\n type: \"chainOfThoughtGroup\";\n startIndex: number;\n endIndex: number;\n idKey?: string | undefined;\n };\n\n/**\n * Creates a group state manager for a specific part type.\n * Returns functions to start, end, and finalize groups.\n */\nconst createGroupState = <\n T extends \"toolGroup\" | \"reasoningGroup\" | \"chainOfThoughtGroup\",\n>(\n groupType: T,\n) => {\n let start = -1;\n\n return {\n startGroup: (index: number) => {\n if (start === -1) {\n start = index;\n }\n },\n endGroup: (endIndex: number, ranges: MessagePartRange[]) => {\n if (start !== -1) {\n ranges.push({\n type: groupType,\n startIndex: start,\n endIndex,\n } as MessagePartRange);\n start = -1;\n }\n },\n finalize: (endIndex: number, ranges: MessagePartRange[]) => {\n if (start !== -1) {\n ranges.push({\n type: groupType,\n startIndex: start,\n endIndex,\n } as MessagePartRange);\n }\n },\n };\n};\n\n/**\n * Groups consecutive tool-call and reasoning message parts into ranges.\n * Always groups tool calls and reasoning parts, even if there's only one.\n * When useChainOfThought is true, groups tool-call and reasoning parts together.\n * `partIds[i]` optionally carries a stable identity for part `i`; group\n * ranges derive an `idKey` from their first part's id (first claim wins).\n */\nexport const groupMessageParts = (\n messageTypes: readonly string[],\n useChainOfThought: boolean,\n partIds?: readonly (string | undefined)[],\n): MessagePartRange[] => {\n const ranges: MessagePartRange[] = [];\n\n if (useChainOfThought) {\n const chainOfThoughtGroup = createGroupState(\"chainOfThoughtGroup\");\n\n for (let i = 0; i < messageTypes.length; i++) {\n const type = messageTypes[i];\n\n if (type === \"tool-call\" || type === \"reasoning\") {\n chainOfThoughtGroup.startGroup(i);\n } else {\n chainOfThoughtGroup.endGroup(i - 1, ranges);\n ranges.push({ type: \"single\", index: i });\n }\n }\n\n chainOfThoughtGroup.finalize(messageTypes.length - 1, ranges);\n } else {\n const toolGroup = createGroupState(\"toolGroup\");\n const reasoningGroup = createGroupState(\"reasoningGroup\");\n\n for (let i = 0; i < messageTypes.length; i++) {\n const type = messageTypes[i];\n\n if (type === \"tool-call\") {\n reasoningGroup.endGroup(i - 1, ranges);\n toolGroup.startGroup(i);\n } else if (type === \"reasoning\") {\n toolGroup.endGroup(i - 1, ranges);\n reasoningGroup.startGroup(i);\n } else {\n toolGroup.endGroup(i - 1, ranges);\n reasoningGroup.endGroup(i - 1, ranges);\n ranges.push({ type: \"single\", index: i });\n }\n }\n\n toolGroup.finalize(messageTypes.length - 1, ranges);\n reasoningGroup.finalize(messageTypes.length - 1, ranges);\n }\n\n if (partIds) {\n const claimed = new Set<string>();\n for (const range of ranges) {\n if (range.type === \"single\") continue;\n const id = partIds[range.startIndex];\n if (id !== undefined && !claimed.has(id)) {\n claimed.add(id);\n range.idKey = `id:${id}`;\n }\n }\n }\n\n return ranges;\n};\n\nconst useMessagePartsGroups = (\n useChainOfThought: boolean,\n): { ranges: MessagePartRange[]; partIds: (string | undefined)[] } => {\n const messageTypes = useAuiState(\n useShallow((s) => s.message.parts.map((c: any) => c.type)),\n );\n const partIds = useAuiState(\n useShallow((s) =>\n s.message.parts.map((c: any) =>\n c.type === \"tool-call\" ? c.toolCallId : undefined,\n ),\n ),\n );\n\n return useMemo(() => {\n if (messageTypes.length === 0) {\n return { ranges: [], partIds };\n }\n return {\n ranges: groupMessageParts(messageTypes, useChainOfThought, partIds),\n partIds,\n };\n }, [messageTypes, partIds, useChainOfThought]);\n};\n\nexport namespace MessagePrimitiveParts {\n type DataConfig = {\n /** Map data event names to specific components */\n by_name?: Record<string, DataMessagePartComponent | undefined> | undefined;\n /** Fallback component for unmatched data events */\n Fallback?: DataMessagePartComponent | undefined;\n };\n\n type BaseComponents = {\n /** Component for rendering empty messages */\n Empty?: EmptyMessagePartComponent | undefined;\n /** Component for rendering text content */\n Text?: TextMessagePartComponent | undefined;\n /** Component for rendering source content */\n Source?: SourceMessagePartComponent | undefined;\n /** Component for rendering image content */\n Image?: ImageMessagePartComponent | undefined;\n /** Component for rendering file content */\n File?: FileMessagePartComponent | undefined;\n /** Component for rendering audio content (experimental) */\n Unstable_Audio?: Unstable_AudioMessagePartComponent | undefined;\n /** Configuration for data part rendering */\n data?: DataConfig | undefined;\n /** Component for rendering a quoted message reference (from metadata, not parts) */\n Quote?: QuoteMessagePartComponent | undefined;\n /**\n * Configuration for generative-ui part rendering.\n *\n * `components` is the consumer-provided allowlist of React components\n * the agent's JSON spec is permitted to render. Any name not present in\n * the registry is rejected with a typed `GenerativeUIRenderError` —\n * this is the security boundary in the same-realm rendering path.\n */\n generativeUI?:\n | {\n /** The component allowlist (the security boundary). */\n components: GenerativeUIComponentRegistry;\n /** Optional fallback for unknown component names. */\n Fallback?:\n | ComponentType<{ component: string; props?: unknown }>\n | undefined;\n }\n | undefined;\n };\n\n type ToolsConfig =\n | {\n /** Map of tool names to their specific components */\n by_name?:\n | Record<string, ToolCallMessagePartComponent | undefined>\n | undefined;\n /** Fallback component for unregistered tools */\n Fallback?: ComponentType<ToolCallMessagePartProps> | undefined;\n }\n | {\n /** Override component that handles all tool calls */\n Override: ComponentType<ToolCallMessagePartProps>;\n };\n\n /**\n * Standard component configuration for rendering reasoning and tool-call parts\n * individually (with optional grouping).\n *\n * Cannot be combined with `ChainOfThought`.\n */\n type StandardComponents = BaseComponents & {\n /** Component for rendering reasoning content (typically hidden) */\n Reasoning?: ReasoningMessagePartComponent | undefined;\n /** Configuration for tool call rendering */\n tools?: ToolsConfig | undefined;\n\n /**\n * Component for rendering grouped consecutive tool calls.\n *\n * @param startIndex - Index of the first tool call in the group\n * @param endIndex - Index of the last tool call in the group\n * @param children - Rendered tool call components to display within the group\n *\n * @deprecated Use `<MessagePrimitive.GroupedParts>` with a custom `groupBy` instead.\n */\n ToolGroup?: ComponentType<\n PropsWithChildren<{ startIndex: number; endIndex: number }>\n >;\n\n /**\n * Component for rendering grouped reasoning parts.\n *\n * @param startIndex - Index of the first reasoning part in the group\n * @param endIndex - Index of the last reasoning part in the group\n * @param children - Rendered reasoning part components\n *\n * @deprecated Use `<MessagePrimitive.GroupedParts>` with a custom `groupBy` instead.\n */\n ReasoningGroup?: ReasoningGroupComponent;\n\n ChainOfThought?: never;\n };\n\n /**\n * Chain of thought component configuration.\n *\n * When `ChainOfThought` is set, it takes control of rendering ALL reasoning and\n * tool-call parts in the message. The `Reasoning`, `tools`, `ReasoningGroup`, and\n * `ToolGroup` components cannot be used alongside it.\n */\n type ChainOfThoughtComponents = BaseComponents & {\n /**\n * @deprecated Use `<MessagePrimitive.GroupedParts>` with a `groupBy`\n * that returns `[\"group-thought\", ...]` for reasoning and tool-call\n * parts. See `@assistant-ui/ui` for a worked example.\n */\n ChainOfThought: ComponentType;\n\n Reasoning?: never;\n tools?: never;\n ToolGroup?: never;\n ReasoningGroup?: never;\n };\n\n export type Props =\n | {\n /**\n * Component configuration for rendering different types of message content.\n *\n * Use either `Reasoning`/`tools`/`ToolGroup`/`ReasoningGroup` for standard rendering,\n * or `ChainOfThought` to group all reasoning and tool-call parts into a single\n * collapsible component. These two modes are mutually exclusive.\n */\n components?: StandardComponents | ChainOfThoughtComponents | undefined;\n /**\n * When enabled, shows the Empty component if the last part in the message\n * is anything other than Text or Reasoning.\n *\n * @experimental This API is experimental and may change in future versions.\n * @default true\n */\n unstable_showEmptyOnNonTextEnd?: boolean | undefined;\n children?: never;\n }\n | {\n /** Render function called for each part. Receives the enriched part state. */\n children: (value: { part: EnrichedPartState }) => ReactNode;\n components?: never;\n unstable_showEmptyOnNonTextEnd?: never;\n };\n}\n\nconst ToolUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: ToolCallMessagePartComponent | undefined;\n} & ToolCallMessagePartProps) => {\n const Render = useAuiState(\n (s) => s.tools.toolUIs[props.toolName]?.[0]?.render ?? Fallback,\n );\n if (!Render) return null;\n return <Render {...props} />;\n};\n\nconst getDataRenderer = (\n dataRenderers: DataRenderersState,\n name: string,\n inlineFallback: DataMessagePartComponent | undefined,\n): DataMessagePartComponent | undefined => {\n const named = dataRenderers.renderers[name]?.[0];\n if (named) return named;\n return dataRenderers.fallbacks[0] ?? inlineFallback;\n};\n\nconst DataUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: DataMessagePartComponent | undefined;\n} & DataMessagePartProps) => {\n const Render = useAuiState((s) =>\n getDataRenderer(s.dataRenderers, props.name, Fallback),\n );\n if (!Render) return null;\n return <Render {...props} />;\n};\n\n/**\n * Platform-agnostic no-op default components.\n * Each platform (web, RN) wraps MessagePrimitiveParts with its own defaults.\n */\nexport const defaultComponents = {\n Text: () => null,\n Reasoning: () => null,\n Source: () => null,\n Image: () => null,\n File: () => null,\n Unstable_Audio: () => null,\n ToolGroup: ({ children }: PropsWithChildren) => children,\n ReasoningGroup: ({ children }: PropsWithChildren) => children,\n} satisfies MessagePrimitiveParts.Props[\"components\"];\n\ntype MessagePartComponentProps = {\n components: MessagePrimitiveParts.Props[\"components\"];\n};\n\nexport const MessagePartComponent: FC<MessagePartComponentProps> = ({\n components: {\n Text = defaultComponents.Text,\n Reasoning = defaultComponents.Reasoning,\n Image = defaultComponents.Image,\n Source = defaultComponents.Source,\n File = defaultComponents.File,\n Unstable_Audio: Audio = defaultComponents.Unstable_Audio,\n tools = {},\n data,\n generativeUI,\n } = {},\n}) => {\n const aui = useAui();\n const part = useAuiState((s) => s.part);\n\n const type = part.type;\n if (type === \"tool-call\") {\n const addResult = aui.part().addToolResult;\n const resume = aui.part().resumeToolCall;\n const respondToApproval = aui.part().respondToToolApproval;\n if (\"Override\" in tools)\n return (\n <tools.Override\n {...part}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n />\n );\n const Tool = tools.by_name?.[part.toolName] ?? tools.Fallback;\n return (\n <ToolUIDisplay\n {...part}\n Fallback={Tool}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n />\n );\n }\n\n if (part.status?.type === \"requires-action\")\n throw new Error(\"Encountered unexpected requires-action status\");\n\n switch (type) {\n case \"text\":\n return <Text {...part} />;\n\n case \"reasoning\":\n return <Reasoning {...part} />;\n\n case \"source\":\n return <Source {...part} />;\n\n case \"image\":\n return <Image {...part} />;\n\n case \"file\":\n return <File {...part} />;\n\n case \"audio\":\n return <Audio {...part} />;\n\n case \"data\": {\n const Data = data?.by_name?.[part.name] ?? data?.Fallback;\n return <DataUIDisplay {...part} Fallback={Data} />;\n }\n\n case \"generative-ui\": {\n if (!generativeUI?.components) {\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV !== \"production\"\n ) {\n console.warn(\n \"MessagePrimitive.Parts received a generative-ui part but no \" +\n \"`components.generativeUI.components` allowlist was provided. \" +\n \"Pass an allowlist or render with <MessagePrimitive.GenerativeUI />.\",\n );\n }\n return null;\n }\n return (\n <GenerativeUIRender\n spec={(part as GenerativeUIMessagePart).spec}\n components={generativeUI.components}\n Fallback={generativeUI.Fallback}\n />\n );\n }\n\n default:\n console.warn(`Unknown message part type: ${type}`);\n return null;\n }\n};\n\nexport namespace MessagePrimitivePartByIndex {\n export type Props = {\n index: number;\n components: MessagePrimitiveParts.Props[\"components\"];\n };\n}\n\n/**\n * Renders a single message part at the specified index.\n */\nexport const MessagePrimitivePartByIndex: FC<MessagePrimitivePartByIndex.Props> =\n memo(\n ({ index, components }) => {\n return (\n <PartByIndexProvider index={index}>\n <MessagePartComponent components={components} />\n </PartByIndexProvider>\n );\n },\n (prev, next) =>\n prev.index === next.index &&\n prev.components?.Text === next.components?.Text &&\n prev.components?.Reasoning === next.components?.Reasoning &&\n prev.components?.Source === next.components?.Source &&\n prev.components?.Image === next.components?.Image &&\n prev.components?.File === next.components?.File &&\n prev.components?.Unstable_Audio === next.components?.Unstable_Audio &&\n prev.components?.tools === next.components?.tools &&\n prev.components?.data === next.components?.data &&\n prev.components?.generativeUI === next.components?.generativeUI &&\n prev.components?.ToolGroup === next.components?.ToolGroup &&\n prev.components?.ReasoningGroup === next.components?.ReasoningGroup,\n );\n\nMessagePrimitivePartByIndex.displayName = \"MessagePrimitive.PartByIndex\";\n\nconst EmptyPartFallback: FC<{\n status: MessagePartStatus;\n component: TextMessagePartComponent;\n}> = ({ status, component: Component }) => {\n return (\n <TextMessagePartProvider text=\"\" isRunning={status.type === \"running\"}>\n <Component type=\"text\" text=\"\" status={status} />\n </TextMessagePartProvider>\n );\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst RUNNING_STATUS: MessagePartStatus = Object.freeze({\n type: \"running\",\n});\n\nconst EmptyPartsImpl: FC<MessagePartComponentProps> = ({ components }) => {\n const status = useAuiState(\n (s) => (s.message.status ?? COMPLETE_STATUS) as MessagePartStatus,\n );\n\n if (components?.Empty) return <components.Empty status={status} />;\n\n if (status.type !== \"running\") return null;\n\n return (\n <EmptyPartFallback\n status={status}\n component={components?.Text ?? defaultComponents.Text}\n />\n );\n};\n\nconst EmptyParts = memo(\n EmptyPartsImpl,\n (prev, next) =>\n prev.components?.Empty === next.components?.Empty &&\n prev.components?.Text === next.components?.Text,\n);\n\nconst ConditionalEmptyImpl: FC<{\n components: MessagePrimitiveParts.Props[\"components\"];\n enabled: boolean;\n}> = ({ components, enabled }) => {\n const shouldShowEmpty = useAuiState((s) => {\n if (!enabled) return false;\n if (s.message.parts.length === 0) return false;\n\n const lastPart = s.message.parts[s.message.parts.length - 1];\n return lastPart?.type !== \"text\" && lastPart?.type !== \"reasoning\";\n });\n\n if (!shouldShowEmpty) return null;\n return <EmptyParts components={components} />;\n};\n\nconst ConditionalEmpty = memo(\n ConditionalEmptyImpl,\n (prev, next) =>\n prev.enabled === next.enabled &&\n prev.components?.Empty === next.components?.Empty &&\n prev.components?.Text === next.components?.Text,\n);\n\nconst QuoteRendererImpl: FC<{ Quote: QuoteMessagePartComponent }> = ({\n Quote,\n}) => {\n const quoteInfo = useAuiState(getMessageQuote);\n if (!quoteInfo) return null;\n return <Quote text={quoteInfo.text} messageId={quoteInfo.messageId} />;\n};\n\nconst QuoteRenderer = memo(QuoteRendererImpl);\n\nfunction resolveToolRender(\n toolsState: ToolsState,\n part: Extract<PartState, { type: \"tool-call\" }>,\n): ToolCallMessagePartComponent | null {\n const named = toolsState.toolUIs[part.toolName]?.[0]?.render ?? null;\n if (named) return named;\n if (isMcpAppUri(part.mcp?.app?.resourceUri) && toolsState.mcpApp) {\n return toolsState.mcpApp.render;\n }\n return null;\n}\n\n/**\n * Stable propless component that renders the registered tool UI for the\n * current part context. Reads tool registry and part state from context.\n */\nconst RegisteredToolUI: FC = () => {\n const aui = useAui();\n const part = useAuiState((s) => s.part);\n const Render = useAuiState((s) =>\n s.part.type === \"tool-call\" ? resolveToolRender(s.tools, s.part) : null,\n );\n\n if (!Render || part.type !== \"tool-call\") return null;\n\n return (\n <Render\n {...part}\n addResult={aui.part().addToolResult}\n resume={aui.part().resumeToolCall}\n respondToApproval={aui.part().respondToToolApproval}\n />\n );\n};\n\n/**\n * Stable propless component that renders the registered data renderer UI\n * for the current part context.\n */\nconst RegisteredDataRendererUI: FC = () => {\n const part = useAuiState((s) => s.part);\n const Render = useAuiState((s) =>\n s.part.type === \"data\"\n ? (getDataRenderer(s.dataRenderers, s.part.name, undefined) ?? null)\n : null,\n );\n\n if (!Render || part.type !== \"data\") return null;\n\n return <Render {...(part as DataMessagePartProps)} />;\n};\n\n/**\n * Fallback component rendered when the children render function returns null.\n * Renders registered tool/data UIs via context.\n * For all other part types, renders nothing.\n *\n * This allows users to write:\n * {({ part }) => {\n * if (part.type === \"text\") return <MyText />;\n * return null; // tool UIs and data UIs still render via registry\n * }}\n *\n * To explicitly render nothing (suppressing registered UIs), return <></>.\n */\nconst DefaultPartFallback: FC = () => {\n const partType = useAuiState((s) => s.part.type);\n\n if (partType === \"tool-call\") return <RegisteredToolUI />;\n if (partType === \"data\") return <RegisteredDataRendererUI />;\n\n return null;\n};\n\nexport type { PartState };\n\n/**\n * Enriched part state passed to children render functions.\n *\n * For tool-call parts, adds `toolUI`, `addResult`, and `resume`.\n * For data parts, adds `dataRendererUI`.\n *\n * The render function is also invoked once with a synthetic empty text part\n * (`{ type: \"text\", text: \"\", status: { type: \"running\" } }`) when the\n * assistant message has no parts yet but is in the running state, so a\n * loading indicator can render. Differentiate this from a real empty text\n * via `part.status?.type === \"running\" && part.text === \"\"`.\n */\nexport type EnrichedPartState =\n | (Extract<PartState, { type: \"tool-call\" }> & {\n /** The registered tool UI element, or null if none registered. */\n readonly toolUI: ReactNode;\n /** Add a tool result to this tool call. */\n addResult: ToolCallMessagePartProps[\"addResult\"];\n /** Resume a tool call waiting for human input. */\n resume: ToolCallMessagePartProps[\"resume\"];\n /** Respond to a server-side tool approval gate. */\n respondToApproval: ToolCallMessagePartProps[\"respondToApproval\"];\n })\n | (Extract<PartState, { type: \"data\" }> & {\n /** The registered data renderer UI element, or null if none registered. */\n readonly dataRendererUI: ReactNode;\n })\n | Exclude<PartState, { type: \"tool-call\" } | { type: \"data\" }>;\n\nconst EMPTY_RUNNING_TEXT_PART: Extract<EnrichedPartState, { type: \"text\" }> =\n Object.freeze({\n type: \"text\",\n text: \"\",\n status: RUNNING_STATUS,\n });\n\n/**\n * @internal\n * Renders a single part by index, calling `children` with the\n * {@link EnrichedPartState} (tool/data UI enrichments + addResult/resume\n * for tool calls). Shared between `<MessagePrimitive.Parts>` and\n * `<MessagePrimitive.GroupedParts>`. Returns whatever `children`\n * returns — callers decide how to handle a `null` return.\n */\ntype MessagePartChildrenProps = {\n index: number;\n children: (value: { part: EnrichedPartState }) => ReactNode;\n};\n\nconst MessagePartChildrenInner: FC<\n Pick<MessagePartChildrenProps, \"children\">\n> = ({ children }) => {\n const aui = useAui();\n // Subscribed (not snapshotted like `tools`) so fallbacks registered\n // after the first render trigger a re-render and `hasUI` re-evaluates.\n const dataRenderers = useAuiState((s) => s.dataRenderers);\n\n return (\n <RenderChildrenWithAccessor\n getItemState={(client) => client.part().getState()}\n >\n {(getItem) =>\n children({\n get part() {\n const state = getItem();\n if (state.type === \"tool-call\") {\n const toolsState = aui.tools().getState();\n const hasUI = resolveToolRender(toolsState, state) !== null;\n const partMethods = aui.part();\n return {\n ...state,\n toolUI: hasUI ? <RegisteredToolUI /> : null,\n addResult: partMethods.addToolResult,\n resume: partMethods.resumeToolCall,\n respondToApproval: partMethods.respondToToolApproval,\n };\n }\n if (state.type === \"data\") {\n const hasUI =\n getDataRenderer(dataRenderers, state.name, undefined) !==\n undefined;\n return {\n ...state,\n dataRendererUI: hasUI ? <RegisteredDataRendererUI /> : null,\n };\n }\n return state;\n },\n })\n }\n </RenderChildrenWithAccessor>\n );\n};\n\nexport const MessagePartChildren: FC<MessagePartChildrenProps> = ({\n index,\n children,\n}) => {\n return (\n <PartByIndexProvider index={index}>\n <MessagePartChildrenInner>{children}</MessagePartChildrenInner>\n </PartByIndexProvider>\n );\n};\n\nconst MessagePrimitivePartsInner: FC<{\n children: (value: { part: EnrichedPartState }) => ReactNode;\n}> = ({ children }) => {\n const contentLength = useAuiState((s) => s.message.parts.length);\n const isRunning = useAuiState(\n (s) => (s.message.status?.type ?? \"complete\") === \"running\",\n );\n const isEmptyRunning = contentLength === 0 && isRunning;\n\n if (contentLength === 0) {\n if (!isEmptyRunning) return null;\n return (\n <TextMessagePartProvider text=\"\" isRunning>\n {children({ part: EMPTY_RUNNING_TEXT_PART })}\n </TextMessagePartProvider>\n );\n }\n\n return (\n <>\n {Array.from({ length: contentLength }, (_, index) => (\n <MessagePartChildren key={index} index={index}>\n {(value) => children(value) ?? <DefaultPartFallback />}\n </MessagePartChildren>\n ))}\n </>\n );\n};\n\n/**\n * Renders the parts of a message with support for multiple content types.\n *\n * This is the platform-agnostic base. Each platform wraps this with its own\n * default components (web uses `<p>`, `<span>`; RN would use `<Text>`, etc.).\n */\nexport const MessagePrimitiveParts: FC<MessagePrimitiveParts.Props> = ({\n components,\n unstable_showEmptyOnNonTextEnd = true,\n children,\n}) => {\n if (children) {\n return <MessagePrimitivePartsInner>{children}</MessagePrimitivePartsInner>;\n }\n return (\n <MessagePrimitivePartsCompat\n components={components}\n unstable_showEmptyOnNonTextEnd={unstable_showEmptyOnNonTextEnd}\n />\n );\n};\n\nMessagePrimitiveParts.displayName = \"MessagePrimitive.Parts\";\n\nconst MessagePrimitivePartsCompat: FC<{\n components: MessagePrimitiveParts.Props[\"components\"];\n unstable_showEmptyOnNonTextEnd: boolean;\n}> = ({ components, unstable_showEmptyOnNonTextEnd }) => {\n const contentLength = useAuiState((s) => s.message.parts.length);\n const useChainOfThought = !!components?.ChainOfThought;\n const { ranges: messageRanges, partIds } =\n useMessagePartsGroups(useChainOfThought);\n\n const partsElements = useMemo(() => {\n if (contentLength === 0) {\n return <EmptyParts components={components} />;\n }\n\n const claimed = new Set<string>();\n const toolLeafKey = (partIndex: number) => {\n const id = partIds[partIndex];\n if (id !== undefined && !claimed.has(id)) {\n claimed.add(id);\n return `part-id:${id}`;\n }\n return `part-${partIndex}`;\n };\n\n return messageRanges.map((range) => {\n if (range.type === \"single\") {\n return (\n <MessagePrimitivePartByIndex\n key={range.index}\n index={range.index}\n components={components}\n />\n );\n } else if (range.type === \"chainOfThoughtGroup\") {\n const ChainOfThoughtComponent = components?.ChainOfThought;\n if (!ChainOfThoughtComponent) return null;\n return (\n <ChainOfThoughtByIndicesProvider\n key={`chainOfThought-${range.idKey ?? range.startIndex}`}\n startIndex={range.startIndex}\n endIndex={range.endIndex}\n >\n <ChainOfThoughtComponent />\n </ChainOfThoughtByIndicesProvider>\n );\n } else if (range.type === \"toolGroup\") {\n const ToolGroupComponent =\n components?.ToolGroup ?? defaultComponents.ToolGroup;\n return (\n <ToolGroupComponent\n key={`tool-${range.idKey ?? range.startIndex}`}\n startIndex={range.startIndex}\n endIndex={range.endIndex}\n >\n {Array.from(\n { length: range.endIndex - range.startIndex + 1 },\n (_, i) => {\n const partIndex = range.startIndex + i;\n return (\n <MessagePrimitivePartByIndex\n key={toolLeafKey(partIndex)}\n index={partIndex}\n components={components}\n />\n );\n },\n )}\n </ToolGroupComponent>\n );\n } else {\n // reasoningGroup\n const ReasoningGroupComponent =\n components?.ReasoningGroup ?? defaultComponents.ReasoningGroup;\n return (\n <ReasoningGroupComponent\n key={`reasoning-${range.startIndex}`}\n startIndex={range.startIndex}\n endIndex={range.endIndex}\n >\n {Array.from(\n { length: range.endIndex - range.startIndex + 1 },\n (_, i) => {\n const partIndex = range.startIndex + i;\n return (\n <MessagePrimitivePartByIndex\n key={`part-${partIndex}`}\n index={partIndex}\n components={components}\n />\n );\n },\n )}\n </ReasoningGroupComponent>\n );\n }\n });\n }, [messageRanges, partIds, components, contentLength]);\n\n return (\n <>\n {components?.Quote && <QuoteRenderer Quote={components.Quote} />}\n {partsElements}\n <ConditionalEmpty\n components={components}\n enabled={unstable_showEmptyOnNonTextEnd}\n />\n </>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageParts.js","names":["ComponentType","FC","ReactNode","memo","PropsWithChildren","useMemo","RenderChildrenWithAccessor","useAuiState","useAui","PartState","PartByIndexProvider","TextMessagePartProvider","ChainOfThoughtByIndicesProvider","getMessageQuote","Unstable_AudioMessagePartComponent","DataMessagePartComponent","DataMessagePartProps","EmptyMessagePartComponent","TextMessagePartComponent","ImageMessagePartComponent","SourceMessagePartComponent","ToolCallMessagePartComponent","ToolCallMessagePartProps","FileMessagePartComponent","ReasoningMessagePartComponent","ReasoningGroupComponent","QuoteMessagePartComponent","GenerativeUIComponentRegistry","GenerativeUIRender","isMcpAppUri","MessagePartStatus","GenerativeUIMessagePart","DataRenderersState","ToolsState","useShallow","MessagePartRange","type","index","startIndex","endIndex","idKey","createGroupState","groupType","T","start","startGroup","endGroup","ranges","push","finalize","groupMessageParts","messageTypes","useChainOfThought","partIds","chainOfThoughtGroup","i","length","toolGroup","reasoningGroup","claimed","Set","range","id","undefined","has","add","useMessagePartsGroups","$","_c","_temp2","_temp4","t0","bb0","t1","Symbol","for","t2","MessagePrimitiveParts","DataConfig","by_name","Record","Fallback","BaseComponents","Empty","Text","Source","Image","File","Unstable_Audio","data","Quote","generativeUI","components","component","props","ToolsConfig","Override","StandardComponents","Reasoning","tools","ToolGroup","ReasoningGroup","ChainOfThought","ChainOfThoughtComponents","Props","unstable_showEmptyOnNonTextEnd","children","value","part","EnrichedPartState","ToolUIDisplay","toolName","s","toolUIs","render","Render","getDataRenderer","dataRenderers","name","inlineFallback","named","renderers","fallbacks","DataUIDisplay","defaultComponents","MessagePartComponentProps","MessagePartComponent","t3","t4","t5","t6","t7","t8","t9","Audio","t10","aui","_temp5","addResult","addToolResult","resume","resumeToolCall","respondToApproval","respondToToolApproval","t11","Tool","status","Error","Data","process","env","NODE_ENV","console","warn","t12","spec","MessagePrimitivePartByIndex","prev","next","displayName","EmptyPartFallback","Component","COMPLETE_STATUS","Object","freeze","RUNNING_STATUS","EmptyPartsImpl","_temp6","EmptyParts","ConditionalEmptyImpl","enabled","message","parts","lastPart","shouldShowEmpty","ConditionalEmpty","QuoteRendererImpl","quoteInfo","messageId","text","QuoteRenderer","resolveToolRender","toolsState","Extract","mcp","app","resourceUri","mcpApp","RegisteredToolUI","_temp7","_temp8","RegisteredDataRendererUI","_temp9","_temp0","DefaultPartFallback","partType","_temp1","toolUI","dataRendererUI","Exclude","EMPTY_RUNNING_TEXT_PART","MessagePartChildrenProps","MessagePartChildrenInner","Pick","client","getState","getItem","state","hasUI","partMethods","MessagePartChildren","MessagePrimitivePartsInner","contentLength","_temp10","isRunning","_temp11","isEmptyRunning","_","Array","from","MessagePrimitivePartsCompat","_temp12","messageRanges","toolLeafKey","partIndex","map","ChainOfThoughtComponent","ToolGroupComponent","partIndex_0","__0","i_0","partIndex_1","partsElements","_temp","c","_temp3","c_0","toolCallId","s_0"],"sources":["../../../../src/react/primitives/message/MessageParts.tsx"],"sourcesContent":["import {\n type ComponentType,\n type FC,\n type ReactNode,\n memo,\n type PropsWithChildren,\n useMemo,\n} from \"react\";\nimport {\n RenderChildrenWithAccessor,\n useAuiState,\n useAui,\n} from \"@assistant-ui/store\";\nimport type { PartState } from \"../../../store/scopes/part\";\nimport { PartByIndexProvider } from \"../../providers/PartByIndexProvider\";\nimport { TextMessagePartProvider } from \"../../providers/TextMessagePartProvider\";\nimport { ChainOfThoughtByIndicesProvider } from \"../../providers/ChainOfThoughtByIndicesProvider\";\nimport { getMessageQuote } from \"../../utils/getMessageQuote\";\nimport type {\n Unstable_AudioMessagePartComponent,\n DataMessagePartComponent,\n DataMessagePartProps,\n EmptyMessagePartComponent,\n TextMessagePartComponent,\n ImageMessagePartComponent,\n SourceMessagePartComponent,\n ToolCallMessagePartComponent,\n ToolCallMessagePartProps,\n FileMessagePartComponent,\n ReasoningMessagePartComponent,\n ReasoningGroupComponent,\n QuoteMessagePartComponent,\n GenerativeUIComponentRegistry,\n} from \"../../types/MessagePartComponentTypes\";\nimport { GenerativeUIRender } from \"../generativeUI/GenerativeUI\";\nimport {\n isMcpAppUri,\n type MessagePartStatus,\n type GenerativeUIMessagePart,\n} from \"../../../types/message\";\nimport type { DataRenderersState } from \"../../types/scopes/dataRenderers\";\nimport type { ToolsState } from \"../../types/scopes/tools\";\nimport { useShallow } from \"zustand/shallow\";\n\ntype MessagePartRange =\n | { type: \"single\"; index: number }\n | {\n type: \"toolGroup\";\n startIndex: number;\n endIndex: number;\n idKey?: string | undefined;\n }\n | {\n type: \"reasoningGroup\";\n startIndex: number;\n endIndex: number;\n idKey?: string | undefined;\n }\n | {\n type: \"chainOfThoughtGroup\";\n startIndex: number;\n endIndex: number;\n idKey?: string | undefined;\n };\n\n/**\n * Creates a group state manager for a specific part type.\n * Returns functions to start, end, and finalize groups.\n */\nconst createGroupState = <\n T extends \"toolGroup\" | \"reasoningGroup\" | \"chainOfThoughtGroup\",\n>(\n groupType: T,\n) => {\n let start = -1;\n\n return {\n startGroup: (index: number) => {\n if (start === -1) {\n start = index;\n }\n },\n endGroup: (endIndex: number, ranges: MessagePartRange[]) => {\n if (start !== -1) {\n ranges.push({\n type: groupType,\n startIndex: start,\n endIndex,\n } as MessagePartRange);\n start = -1;\n }\n },\n finalize: (endIndex: number, ranges: MessagePartRange[]) => {\n if (start !== -1) {\n ranges.push({\n type: groupType,\n startIndex: start,\n endIndex,\n } as MessagePartRange);\n }\n },\n };\n};\n\n/**\n * Groups consecutive tool-call and reasoning message parts into ranges.\n * Always groups tool calls and reasoning parts, even if there's only one.\n * When useChainOfThought is true, groups tool-call and reasoning parts together.\n * `partIds[i]` optionally carries a stable identity for part `i`; group\n * ranges derive an `idKey` from their first part's id (first claim wins).\n */\nexport const groupMessageParts = (\n messageTypes: readonly string[],\n useChainOfThought: boolean,\n partIds?: readonly (string | undefined)[],\n): MessagePartRange[] => {\n const ranges: MessagePartRange[] = [];\n\n if (useChainOfThought) {\n const chainOfThoughtGroup = createGroupState(\"chainOfThoughtGroup\");\n\n for (let i = 0; i < messageTypes.length; i++) {\n const type = messageTypes[i];\n\n if (type === \"tool-call\" || type === \"reasoning\") {\n chainOfThoughtGroup.startGroup(i);\n } else {\n chainOfThoughtGroup.endGroup(i - 1, ranges);\n ranges.push({ type: \"single\", index: i });\n }\n }\n\n chainOfThoughtGroup.finalize(messageTypes.length - 1, ranges);\n } else {\n const toolGroup = createGroupState(\"toolGroup\");\n const reasoningGroup = createGroupState(\"reasoningGroup\");\n\n for (let i = 0; i < messageTypes.length; i++) {\n const type = messageTypes[i];\n\n if (type === \"tool-call\") {\n reasoningGroup.endGroup(i - 1, ranges);\n toolGroup.startGroup(i);\n } else if (type === \"reasoning\") {\n toolGroup.endGroup(i - 1, ranges);\n reasoningGroup.startGroup(i);\n } else {\n toolGroup.endGroup(i - 1, ranges);\n reasoningGroup.endGroup(i - 1, ranges);\n ranges.push({ type: \"single\", index: i });\n }\n }\n\n toolGroup.finalize(messageTypes.length - 1, ranges);\n reasoningGroup.finalize(messageTypes.length - 1, ranges);\n }\n\n if (partIds) {\n const claimed = new Set<string>();\n for (const range of ranges) {\n if (range.type === \"single\") continue;\n const id = partIds[range.startIndex];\n if (id !== undefined && !claimed.has(id)) {\n claimed.add(id);\n range.idKey = `id:${id}`;\n }\n }\n }\n\n return ranges;\n};\n\nconst useMessagePartsGroups = (\n useChainOfThought: boolean,\n): { ranges: MessagePartRange[]; partIds: (string | undefined)[] } => {\n const messageTypes = useAuiState(\n useShallow((s) => s.message.parts.map((c: any) => c.type)),\n );\n const partIds = useAuiState(\n useShallow((s) =>\n s.message.parts.map((c: any) =>\n c.type === \"tool-call\" ? c.toolCallId : undefined,\n ),\n ),\n );\n\n return useMemo(() => {\n if (messageTypes.length === 0) {\n return { ranges: [], partIds };\n }\n return {\n ranges: groupMessageParts(messageTypes, useChainOfThought, partIds),\n partIds,\n };\n }, [messageTypes, partIds, useChainOfThought]);\n};\n\nexport namespace MessagePrimitiveParts {\n type DataConfig = {\n /** Map data event names to specific components */\n by_name?: Record<string, DataMessagePartComponent | undefined> | undefined;\n /** Fallback component for unmatched data events */\n Fallback?: DataMessagePartComponent | undefined;\n };\n\n type BaseComponents = {\n /** Component for rendering empty messages */\n Empty?: EmptyMessagePartComponent | undefined;\n /** Component for rendering text content */\n Text?: TextMessagePartComponent | undefined;\n /** Component for rendering source content */\n Source?: SourceMessagePartComponent | undefined;\n /** Component for rendering image content */\n Image?: ImageMessagePartComponent | undefined;\n /** Component for rendering file content */\n File?: FileMessagePartComponent | undefined;\n /** Component for rendering audio content (experimental) */\n Unstable_Audio?: Unstable_AudioMessagePartComponent | undefined;\n /** Configuration for data part rendering */\n data?: DataConfig | undefined;\n /** Component for rendering a quoted message reference (from metadata, not parts) */\n Quote?: QuoteMessagePartComponent | undefined;\n /**\n * Configuration for generative-ui part rendering.\n *\n * `components` is the consumer-provided allowlist of React components\n * the agent's JSON spec is permitted to render. Any name not present in\n * the registry is rejected with a typed `GenerativeUIRenderError` —\n * this is the security boundary in the same-realm rendering path.\n */\n generativeUI?:\n | {\n /** The component allowlist (the security boundary). */\n components: GenerativeUIComponentRegistry;\n /** Optional fallback for unknown component names. */\n Fallback?:\n | ComponentType<{ component: string; props?: unknown }>\n | undefined;\n }\n | undefined;\n };\n\n type ToolsConfig =\n | {\n /** Map of tool names to their specific components */\n by_name?:\n | Record<string, ToolCallMessagePartComponent | undefined>\n | undefined;\n /** Fallback component for unregistered tools */\n Fallback?: ComponentType<ToolCallMessagePartProps> | undefined;\n }\n | {\n /** Override component that handles all tool calls */\n Override: ComponentType<ToolCallMessagePartProps>;\n };\n\n /**\n * Standard component configuration for rendering reasoning and tool-call parts\n * individually (with optional grouping).\n *\n * Cannot be combined with `ChainOfThought`.\n */\n type StandardComponents = BaseComponents & {\n /** Component for rendering reasoning content (typically hidden) */\n Reasoning?: ReasoningMessagePartComponent | undefined;\n /** Configuration for tool call rendering */\n tools?: ToolsConfig | undefined;\n\n /**\n * Component for rendering grouped consecutive tool calls.\n *\n * @param startIndex - Index of the first tool call in the group\n * @param endIndex - Index of the last tool call in the group\n * @param children - Rendered tool call components to display within the group\n *\n * @deprecated Use `<MessagePrimitive.GroupedParts>` with a custom `groupBy` instead.\n */\n ToolGroup?: ComponentType<\n PropsWithChildren<{ startIndex: number; endIndex: number }>\n >;\n\n /**\n * Component for rendering grouped reasoning parts.\n *\n * @param startIndex - Index of the first reasoning part in the group\n * @param endIndex - Index of the last reasoning part in the group\n * @param children - Rendered reasoning part components\n *\n * @deprecated Use `<MessagePrimitive.GroupedParts>` with a custom `groupBy` instead.\n */\n ReasoningGroup?: ReasoningGroupComponent;\n\n ChainOfThought?: never;\n };\n\n /**\n * Chain of thought component configuration.\n *\n * When `ChainOfThought` is set, it takes control of rendering ALL reasoning and\n * tool-call parts in the message. The `Reasoning`, `tools`, `ReasoningGroup`, and\n * `ToolGroup` components cannot be used alongside it.\n */\n type ChainOfThoughtComponents = BaseComponents & {\n /**\n * @deprecated Use `<MessagePrimitive.GroupedParts>` with a `groupBy`\n * that returns `[\"group-thought\", ...]` for reasoning and tool-call\n * parts. See `@assistant-ui/ui` for a worked example.\n */\n ChainOfThought: ComponentType;\n\n Reasoning?: never;\n tools?: never;\n ToolGroup?: never;\n ReasoningGroup?: never;\n };\n\n export type Props =\n | {\n /**\n * Component configuration for rendering different types of message content.\n *\n * Use either `Reasoning`/`tools`/`ToolGroup`/`ReasoningGroup` for standard rendering,\n * or `ChainOfThought` to group all reasoning and tool-call parts into a single\n * collapsible component. These two modes are mutually exclusive.\n */\n components?: StandardComponents | ChainOfThoughtComponents | undefined;\n /**\n * When enabled, shows the Empty component if the last part in the message\n * is anything other than Text or Reasoning.\n *\n * @experimental This API is experimental and may change in future versions.\n * @default true\n */\n unstable_showEmptyOnNonTextEnd?: boolean | undefined;\n children?: never;\n }\n | {\n /** Render function called for each part. Receives the enriched part state. */\n children: (value: { part: EnrichedPartState }) => ReactNode;\n components?: never;\n unstable_showEmptyOnNonTextEnd?: never;\n };\n}\n\nconst ToolUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: ToolCallMessagePartComponent | undefined;\n} & ToolCallMessagePartProps) => {\n const Render = useAuiState(\n (s) => s.tools.toolUIs[props.toolName]?.[0]?.render ?? Fallback,\n );\n if (!Render) return null;\n return <Render {...props} />;\n};\n\nconst getDataRenderer = (\n dataRenderers: DataRenderersState,\n name: string,\n inlineFallback: DataMessagePartComponent | undefined,\n): DataMessagePartComponent | undefined => {\n const named = dataRenderers.renderers[name]?.[0];\n if (named) return named;\n return dataRenderers.fallbacks[0] ?? inlineFallback;\n};\n\nconst DataUIDisplay = ({\n Fallback,\n ...props\n}: {\n Fallback: DataMessagePartComponent | undefined;\n} & DataMessagePartProps) => {\n const Render = useAuiState((s) =>\n getDataRenderer(s.dataRenderers, props.name, Fallback),\n );\n if (!Render) return null;\n return <Render {...props} />;\n};\n\n/**\n * Platform-agnostic no-op default components.\n * Each platform (web, RN) wraps MessagePrimitiveParts with its own defaults.\n */\nexport const defaultComponents = {\n Text: () => null,\n Reasoning: () => null,\n Source: () => null,\n Image: () => null,\n File: () => null,\n Unstable_Audio: () => null,\n ToolGroup: ({ children }: PropsWithChildren) => children,\n ReasoningGroup: ({ children }: PropsWithChildren) => children,\n} satisfies MessagePrimitiveParts.Props[\"components\"];\n\ntype MessagePartComponentProps = {\n components: MessagePrimitiveParts.Props[\"components\"];\n};\n\nexport const MessagePartComponent: FC<MessagePartComponentProps> = ({\n components: {\n Text = defaultComponents.Text,\n Reasoning = defaultComponents.Reasoning,\n Image = defaultComponents.Image,\n Source = defaultComponents.Source,\n File = defaultComponents.File,\n Unstable_Audio: Audio = defaultComponents.Unstable_Audio,\n tools = {},\n data,\n generativeUI,\n } = {},\n}) => {\n const aui = useAui();\n const part = useAuiState((s) => s.part);\n\n const type = part.type;\n if (type === \"tool-call\") {\n const addResult = aui.part.addToolResult;\n const resume = aui.part.resumeToolCall;\n const respondToApproval = aui.part.respondToToolApproval;\n if (\"Override\" in tools)\n return (\n <tools.Override\n {...part}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n />\n );\n const Tool = tools.by_name?.[part.toolName] ?? tools.Fallback;\n return (\n <ToolUIDisplay\n {...part}\n Fallback={Tool}\n addResult={addResult}\n resume={resume}\n respondToApproval={respondToApproval}\n />\n );\n }\n\n if (part.status?.type === \"requires-action\")\n throw new Error(\"Encountered unexpected requires-action status\");\n\n switch (type) {\n case \"text\":\n return <Text {...part} />;\n\n case \"reasoning\":\n return <Reasoning {...part} />;\n\n case \"source\":\n return <Source {...part} />;\n\n case \"image\":\n return <Image {...part} />;\n\n case \"file\":\n return <File {...part} />;\n\n case \"audio\":\n return <Audio {...part} />;\n\n case \"data\": {\n const Data = data?.by_name?.[part.name] ?? data?.Fallback;\n return <DataUIDisplay {...part} Fallback={Data} />;\n }\n\n case \"generative-ui\": {\n if (!generativeUI?.components) {\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV !== \"production\"\n ) {\n console.warn(\n \"MessagePrimitive.Parts received a generative-ui part but no \" +\n \"`components.generativeUI.components` allowlist was provided. \" +\n \"Pass an allowlist or render with <MessagePrimitive.GenerativeUI />.\",\n );\n }\n return null;\n }\n return (\n <GenerativeUIRender\n spec={(part as GenerativeUIMessagePart).spec}\n components={generativeUI.components}\n Fallback={generativeUI.Fallback}\n />\n );\n }\n\n default:\n console.warn(`Unknown message part type: ${type}`);\n return null;\n }\n};\n\nexport namespace MessagePrimitivePartByIndex {\n export type Props = {\n index: number;\n components: MessagePrimitiveParts.Props[\"components\"];\n };\n}\n\n/**\n * Renders a single message part at the specified index.\n */\nexport const MessagePrimitivePartByIndex: FC<MessagePrimitivePartByIndex.Props> =\n memo(\n ({ index, components }) => {\n return (\n <PartByIndexProvider index={index}>\n <MessagePartComponent components={components} />\n </PartByIndexProvider>\n );\n },\n (prev, next) =>\n prev.index === next.index &&\n prev.components?.Text === next.components?.Text &&\n prev.components?.Reasoning === next.components?.Reasoning &&\n prev.components?.Source === next.components?.Source &&\n prev.components?.Image === next.components?.Image &&\n prev.components?.File === next.components?.File &&\n prev.components?.Unstable_Audio === next.components?.Unstable_Audio &&\n prev.components?.tools === next.components?.tools &&\n prev.components?.data === next.components?.data &&\n prev.components?.generativeUI === next.components?.generativeUI &&\n prev.components?.ToolGroup === next.components?.ToolGroup &&\n prev.components?.ReasoningGroup === next.components?.ReasoningGroup,\n );\n\nMessagePrimitivePartByIndex.displayName = \"MessagePrimitive.PartByIndex\";\n\nconst EmptyPartFallback: FC<{\n status: MessagePartStatus;\n component: TextMessagePartComponent;\n}> = ({ status, component: Component }) => {\n return (\n <TextMessagePartProvider text=\"\" isRunning={status.type === \"running\"}>\n <Component type=\"text\" text=\"\" status={status} />\n </TextMessagePartProvider>\n );\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst RUNNING_STATUS: MessagePartStatus = Object.freeze({\n type: \"running\",\n});\n\nconst EmptyPartsImpl: FC<MessagePartComponentProps> = ({ components }) => {\n const status = useAuiState(\n (s) => (s.message.status ?? COMPLETE_STATUS) as MessagePartStatus,\n );\n\n if (components?.Empty) return <components.Empty status={status} />;\n\n if (status.type !== \"running\") return null;\n\n return (\n <EmptyPartFallback\n status={status}\n component={components?.Text ?? defaultComponents.Text}\n />\n );\n};\n\nconst EmptyParts = memo(\n EmptyPartsImpl,\n (prev, next) =>\n prev.components?.Empty === next.components?.Empty &&\n prev.components?.Text === next.components?.Text,\n);\n\nconst ConditionalEmptyImpl: FC<{\n components: MessagePrimitiveParts.Props[\"components\"];\n enabled: boolean;\n}> = ({ components, enabled }) => {\n const shouldShowEmpty = useAuiState((s) => {\n if (!enabled) return false;\n if (s.message.parts.length === 0) return false;\n\n const lastPart = s.message.parts[s.message.parts.length - 1];\n return lastPart?.type !== \"text\" && lastPart?.type !== \"reasoning\";\n });\n\n if (!shouldShowEmpty) return null;\n return <EmptyParts components={components} />;\n};\n\nconst ConditionalEmpty = memo(\n ConditionalEmptyImpl,\n (prev, next) =>\n prev.enabled === next.enabled &&\n prev.components?.Empty === next.components?.Empty &&\n prev.components?.Text === next.components?.Text,\n);\n\nconst QuoteRendererImpl: FC<{ Quote: QuoteMessagePartComponent }> = ({\n Quote,\n}) => {\n const quoteInfo = useAuiState(getMessageQuote);\n if (!quoteInfo) return null;\n return <Quote text={quoteInfo.text} messageId={quoteInfo.messageId} />;\n};\n\nconst QuoteRenderer = memo(QuoteRendererImpl);\n\nfunction resolveToolRender(\n toolsState: ToolsState,\n part: Extract<PartState, { type: \"tool-call\" }>,\n): ToolCallMessagePartComponent | null {\n const named = toolsState.toolUIs[part.toolName]?.[0]?.render ?? null;\n if (named) return named;\n if (isMcpAppUri(part.mcp?.app?.resourceUri) && toolsState.mcpApp) {\n return toolsState.mcpApp.render;\n }\n return null;\n}\n\n/**\n * Stable propless component that renders the registered tool UI for the\n * current part context. Reads tool registry and part state from context.\n */\nconst RegisteredToolUI: FC = () => {\n const aui = useAui();\n const part = useAuiState((s) => s.part);\n const Render = useAuiState((s) =>\n s.part.type === \"tool-call\" ? resolveToolRender(s.tools, s.part) : null,\n );\n\n if (!Render || part.type !== \"tool-call\") return null;\n\n return (\n <Render\n {...part}\n addResult={aui.part.addToolResult}\n resume={aui.part.resumeToolCall}\n respondToApproval={aui.part.respondToToolApproval}\n />\n );\n};\n\n/**\n * Stable propless component that renders the registered data renderer UI\n * for the current part context.\n */\nconst RegisteredDataRendererUI: FC = () => {\n const part = useAuiState((s) => s.part);\n const Render = useAuiState((s) =>\n s.part.type === \"data\"\n ? (getDataRenderer(s.dataRenderers, s.part.name, undefined) ?? null)\n : null,\n );\n\n if (!Render || part.type !== \"data\") return null;\n\n return <Render {...(part as DataMessagePartProps)} />;\n};\n\n/**\n * Fallback component rendered when the children render function returns null.\n * Renders registered tool/data UIs via context.\n * For all other part types, renders nothing.\n *\n * This allows users to write:\n * {({ part }) => {\n * if (part.type === \"text\") return <MyText />;\n * return null; // tool UIs and data UIs still render via registry\n * }}\n *\n * To explicitly render nothing (suppressing registered UIs), return <></>.\n */\nconst DefaultPartFallback: FC = () => {\n const partType = useAuiState((s) => s.part.type);\n\n if (partType === \"tool-call\") return <RegisteredToolUI />;\n if (partType === \"data\") return <RegisteredDataRendererUI />;\n\n return null;\n};\n\nexport type { PartState };\n\n/**\n * Enriched part state passed to children render functions.\n *\n * For tool-call parts, adds `toolUI`, `addResult`, and `resume`.\n * For data parts, adds `dataRendererUI`.\n *\n * The render function is also invoked once with a synthetic empty text part\n * (`{ type: \"text\", text: \"\", status: { type: \"running\" } }`) when the\n * assistant message has no parts yet but is in the running state, so a\n * loading indicator can render. Differentiate this from a real empty text\n * via `part.status?.type === \"running\" && part.text === \"\"`.\n */\nexport type EnrichedPartState =\n | (Extract<PartState, { type: \"tool-call\" }> & {\n /** The registered tool UI element, or null if none registered. */\n readonly toolUI: ReactNode;\n /** Add a tool result to this tool call. */\n addResult: ToolCallMessagePartProps[\"addResult\"];\n /** Resume a tool call waiting for human input. */\n resume: ToolCallMessagePartProps[\"resume\"];\n /** Respond to a server-side tool approval gate. */\n respondToApproval: ToolCallMessagePartProps[\"respondToApproval\"];\n })\n | (Extract<PartState, { type: \"data\" }> & {\n /** The registered data renderer UI element, or null if none registered. */\n readonly dataRendererUI: ReactNode;\n })\n | Exclude<PartState, { type: \"tool-call\" } | { type: \"data\" }>;\n\nconst EMPTY_RUNNING_TEXT_PART: Extract<EnrichedPartState, { type: \"text\" }> =\n Object.freeze({\n type: \"text\",\n text: \"\",\n status: RUNNING_STATUS,\n });\n\n/**\n * @internal\n * Renders a single part by index, calling `children` with the\n * {@link EnrichedPartState} (tool/data UI enrichments + addResult/resume\n * for tool calls). Shared between `<MessagePrimitive.Parts>` and\n * `<MessagePrimitive.GroupedParts>`. Returns whatever `children`\n * returns — callers decide how to handle a `null` return.\n */\ntype MessagePartChildrenProps = {\n index: number;\n children: (value: { part: EnrichedPartState }) => ReactNode;\n};\n\nconst MessagePartChildrenInner: FC<\n Pick<MessagePartChildrenProps, \"children\">\n> = ({ children }) => {\n const aui = useAui();\n // Subscribed (not snapshotted like `tools`) so fallbacks registered\n // after the first render trigger a re-render and `hasUI` re-evaluates.\n const dataRenderers = useAuiState((s) => s.dataRenderers);\n\n return (\n <RenderChildrenWithAccessor\n getItemState={(client) => client.part.getState()}\n >\n {(getItem) =>\n children({\n get part() {\n const state = getItem();\n if (state.type === \"tool-call\") {\n const toolsState = aui.tools.getState();\n const hasUI = resolveToolRender(toolsState, state) !== null;\n const partMethods = aui.part;\n return {\n ...state,\n toolUI: hasUI ? <RegisteredToolUI /> : null,\n addResult: partMethods.addToolResult,\n resume: partMethods.resumeToolCall,\n respondToApproval: partMethods.respondToToolApproval,\n };\n }\n if (state.type === \"data\") {\n const hasUI =\n getDataRenderer(dataRenderers, state.name, undefined) !==\n undefined;\n return {\n ...state,\n dataRendererUI: hasUI ? <RegisteredDataRendererUI /> : null,\n };\n }\n return state;\n },\n })\n }\n </RenderChildrenWithAccessor>\n );\n};\n\nexport const MessagePartChildren: FC<MessagePartChildrenProps> = ({\n index,\n children,\n}) => {\n return (\n <PartByIndexProvider index={index}>\n <MessagePartChildrenInner>{children}</MessagePartChildrenInner>\n </PartByIndexProvider>\n );\n};\n\nconst MessagePrimitivePartsInner: FC<{\n children: (value: { part: EnrichedPartState }) => ReactNode;\n}> = ({ children }) => {\n const contentLength = useAuiState((s) => s.message.parts.length);\n const isRunning = useAuiState(\n (s) => (s.message.status?.type ?? \"complete\") === \"running\",\n );\n const isEmptyRunning = contentLength === 0 && isRunning;\n\n if (contentLength === 0) {\n if (!isEmptyRunning) return null;\n return (\n <TextMessagePartProvider text=\"\" isRunning>\n {children({ part: EMPTY_RUNNING_TEXT_PART })}\n </TextMessagePartProvider>\n );\n }\n\n return (\n <>\n {Array.from({ length: contentLength }, (_, index) => (\n <MessagePartChildren key={index} index={index}>\n {(value) => children(value) ?? <DefaultPartFallback />}\n </MessagePartChildren>\n ))}\n </>\n );\n};\n\n/**\n * Renders the parts of a message with support for multiple content types.\n *\n * This is the platform-agnostic base. Each platform wraps this with its own\n * default components (web uses `<p>`, `<span>`; RN would use `<Text>`, etc.).\n */\nexport const MessagePrimitiveParts: FC<MessagePrimitiveParts.Props> = ({\n components,\n unstable_showEmptyOnNonTextEnd = true,\n children,\n}) => {\n if (children) {\n return <MessagePrimitivePartsInner>{children}</MessagePrimitivePartsInner>;\n }\n return (\n <MessagePrimitivePartsCompat\n components={components}\n unstable_showEmptyOnNonTextEnd={unstable_showEmptyOnNonTextEnd}\n />\n );\n};\n\nMessagePrimitiveParts.displayName = \"MessagePrimitive.Parts\";\n\nconst MessagePrimitivePartsCompat: FC<{\n components: MessagePrimitiveParts.Props[\"components\"];\n unstable_showEmptyOnNonTextEnd: boolean;\n}> = ({ components, unstable_showEmptyOnNonTextEnd }) => {\n const contentLength = useAuiState((s) => s.message.parts.length);\n const useChainOfThought = !!components?.ChainOfThought;\n const { ranges: messageRanges, partIds } =\n useMessagePartsGroups(useChainOfThought);\n\n const partsElements = useMemo(() => {\n if (contentLength === 0) {\n return <EmptyParts components={components} />;\n }\n\n const claimed = new Set<string>();\n const toolLeafKey = (partIndex: number) => {\n const id = partIds[partIndex];\n if (id !== undefined && !claimed.has(id)) {\n claimed.add(id);\n return `part-id:${id}`;\n }\n return `part-${partIndex}`;\n };\n\n return messageRanges.map((range) => {\n if (range.type === \"single\") {\n return (\n <MessagePrimitivePartByIndex\n key={range.index}\n index={range.index}\n components={components}\n />\n );\n } else if (range.type === \"chainOfThoughtGroup\") {\n const ChainOfThoughtComponent = components?.ChainOfThought;\n if (!ChainOfThoughtComponent) return null;\n return (\n <ChainOfThoughtByIndicesProvider\n key={`chainOfThought-${range.idKey ?? range.startIndex}`}\n startIndex={range.startIndex}\n endIndex={range.endIndex}\n >\n <ChainOfThoughtComponent />\n </ChainOfThoughtByIndicesProvider>\n );\n } else if (range.type === \"toolGroup\") {\n const ToolGroupComponent =\n components?.ToolGroup ?? defaultComponents.ToolGroup;\n return (\n <ToolGroupComponent\n key={`tool-${range.idKey ?? range.startIndex}`}\n startIndex={range.startIndex}\n endIndex={range.endIndex}\n >\n {Array.from(\n { length: range.endIndex - range.startIndex + 1 },\n (_, i) => {\n const partIndex = range.startIndex + i;\n return (\n <MessagePrimitivePartByIndex\n key={toolLeafKey(partIndex)}\n index={partIndex}\n components={components}\n />\n );\n },\n )}\n </ToolGroupComponent>\n );\n } else {\n // reasoningGroup\n const ReasoningGroupComponent =\n components?.ReasoningGroup ?? defaultComponents.ReasoningGroup;\n return (\n <ReasoningGroupComponent\n key={`reasoning-${range.startIndex}`}\n startIndex={range.startIndex}\n endIndex={range.endIndex}\n >\n {Array.from(\n { length: range.endIndex - range.startIndex + 1 },\n (_, i) => {\n const partIndex = range.startIndex + i;\n return (\n <MessagePrimitivePartByIndex\n key={`part-${partIndex}`}\n index={partIndex}\n components={components}\n />\n );\n },\n )}\n </ReasoningGroupComponent>\n );\n }\n });\n }, [messageRanges, partIds, components, contentLength]);\n\n return (\n <>\n {components?.Quote && <QuoteRenderer Quote={components.Quote} />}\n {partsElements}\n <ConditionalEmpty\n components={components}\n enabled={unstable_showEmptyOnNonTextEnd}\n />\n </>\n );\n};\n"],"mappings":"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"}
|
|
@@ -135,7 +135,7 @@ const ThreadPrimitiveMessagesInner = ({ children }) => {
|
|
|
135
135
|
return Array.from({ length: messagesLength }, (_, index) => /* @__PURE__ */ jsx(MessageByIndexProvider, {
|
|
136
136
|
index,
|
|
137
137
|
children: /* @__PURE__ */ jsx(RenderChildrenWithAccessor, {
|
|
138
|
-
getItemState: (aui) => aui.thread
|
|
138
|
+
getItemState: (aui) => aui.thread.message({ index }).getState(),
|
|
139
139
|
children: (getItem) => children({ get message() {
|
|
140
140
|
return getItem();
|
|
141
141
|
} })
|