mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-06-27 18:50:41 +00:00
# What does this PR do? * Add responses list and detail views * Refactored components to be shared as much as possible between chat completions and responses ## Test Plan <img width="2014" alt="image" src="https://github.com/user-attachments/assets/6dee12ea-8876-4351-a6eb-2338058466ef" /> <img width="2021" alt="image" src="https://github.com/user-attachments/assets/6c7c71b8-25b7-4199-9c57-6960be5580c8" /> added tests
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import { useFunctionCallGrouping } from "../hooks/function-call-grouping";
|
|
import { ItemRenderer } from "../items/item-renderer";
|
|
import { GroupedFunctionCallItemComponent } from "../items/grouped-function-call-item";
|
|
import {
|
|
isFunctionCallItem,
|
|
isFunctionCallOutputItem,
|
|
AnyResponseItem,
|
|
} from "../utils/item-types";
|
|
|
|
interface GroupedItemsDisplayProps {
|
|
items: AnyResponseItem[];
|
|
keyPrefix: string;
|
|
defaultRole?: string;
|
|
}
|
|
|
|
export function GroupedItemsDisplay({
|
|
items,
|
|
keyPrefix,
|
|
defaultRole = "unknown",
|
|
}: GroupedItemsDisplayProps) {
|
|
const groupedItems = useFunctionCallGrouping(items);
|
|
|
|
return (
|
|
<>
|
|
{groupedItems.map((groupedItem) => {
|
|
// If this is a function call with an output, render the grouped component
|
|
if (
|
|
groupedItem.outputItem &&
|
|
isFunctionCallItem(groupedItem.item) &&
|
|
isFunctionCallOutputItem(groupedItem.outputItem)
|
|
) {
|
|
return (
|
|
<GroupedFunctionCallItemComponent
|
|
key={`${keyPrefix}-${groupedItem.index}`}
|
|
functionCall={groupedItem.item}
|
|
output={groupedItem.outputItem}
|
|
index={groupedItem.index}
|
|
keyPrefix={keyPrefix}
|
|
/>
|
|
);
|
|
}
|
|
|
|
// Otherwise, render the individual item
|
|
return (
|
|
<ItemRenderer
|
|
key={`${keyPrefix}-${groupedItem.index}`}
|
|
item={groupedItem.item}
|
|
index={groupedItem.index}
|
|
keyPrefix={keyPrefix}
|
|
defaultRole={defaultRole}
|
|
/>
|
|
);
|
|
})}
|
|
</>
|
|
);
|
|
}
|