mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-08-15 22:18:00 +00:00
60 lines
1.3 KiB
TypeScript
60 lines
1.3 KiB
TypeScript
import {
|
|
isMessageItem,
|
|
isFunctionCallItem,
|
|
isWebSearchCallItem,
|
|
AnyResponseItem,
|
|
} from "../utils/item-types";
|
|
import { MessageItemComponent } from "./message-item";
|
|
import { FunctionCallItemComponent } from "./function-call-item";
|
|
import { WebSearchItemComponent } from "./web-search-item";
|
|
import { GenericItemComponent } from "./generic-item";
|
|
|
|
interface ItemRendererProps {
|
|
item: AnyResponseItem;
|
|
index: number;
|
|
keyPrefix: string;
|
|
defaultRole?: string;
|
|
}
|
|
|
|
export function ItemRenderer({
|
|
item,
|
|
index,
|
|
keyPrefix,
|
|
defaultRole = "unknown",
|
|
}: ItemRendererProps) {
|
|
if (isMessageItem(item)) {
|
|
return (
|
|
<MessageItemComponent
|
|
item={item}
|
|
index={index}
|
|
keyPrefix={keyPrefix}
|
|
defaultRole={defaultRole}
|
|
/>
|
|
);
|
|
}
|
|
|
|
if (isFunctionCallItem(item)) {
|
|
return (
|
|
<FunctionCallItemComponent
|
|
item={item}
|
|
index={index}
|
|
keyPrefix={keyPrefix}
|
|
/>
|
|
);
|
|
}
|
|
|
|
if (isWebSearchCallItem(item)) {
|
|
return (
|
|
<WebSearchItemComponent item={item} index={index} keyPrefix={keyPrefix} />
|
|
);
|
|
}
|
|
|
|
// Fallback to generic item for unknown types
|
|
return (
|
|
<GenericItemComponent
|
|
item={item as Record<string, unknown>}
|
|
index={index}
|
|
keyPrefix={keyPrefix}
|
|
/>
|
|
);
|
|
}
|