e30e75b5d4
Code Quality / Oxlint + Oxfmt (push) Waiting to run
Code Quality / Template Sync (push) Waiting to run
Code Quality / Build Changed Packages (push) Waiting to run
Code Quality / Test Changed Packages (push) Waiting to run
Deploy Expo Example / Deploy Production (push) Waiting to run
Deploy Ink Example / Deploy Production (push) Waiting to run
Python Tests / pytest (assistant-stream, 3.10) (push) Waiting to run
Python Tests / pytest (assistant-stream, 3.12) (push) Waiting to run
Python Tests / pytest (assistant-ui-sync-server-api, 3.10) (push) Waiting to run
Python Tests / pytest (assistant-ui-sync-server-api, 3.12) (push) Waiting to run
Deploy Shadcn Registry / Deploy Production (push) Waiting to run
Template Metrics / LOC + Bundle Size (push) Waiting to run
Changesets / Create Version PR (push) Has been cancelled
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import type { ToolCallMessagePartComponent } from "@assistant-ui/react";
|
|
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
import { useState } from "react";
|
|
import { Button } from "@/components/ui/button";
|
|
|
|
export const ToolFallback: ToolCallMessagePartComponent = ({
|
|
toolName,
|
|
argsText,
|
|
result,
|
|
}) => {
|
|
const [isCollapsed, setIsCollapsed] = useState(true);
|
|
return (
|
|
<div className="mb-4 flex w-full flex-col gap-3 rounded-lg border py-3">
|
|
<div className="flex items-center gap-2 px-4">
|
|
<CheckIcon className="size-4" />
|
|
<p className="">
|
|
Used tool: <b>{toolName}</b>
|
|
</p>
|
|
<div className="flex-grow" />
|
|
<Button onClick={() => setIsCollapsed(!isCollapsed)}>
|
|
{isCollapsed ? <ChevronUpIcon /> : <ChevronDownIcon />}
|
|
</Button>
|
|
</div>
|
|
{!isCollapsed && (
|
|
<div className="flex flex-col gap-2 border-t pt-2">
|
|
<div className="px-4">
|
|
<pre className="whitespace-pre-wrap">{argsText}</pre>
|
|
</div>
|
|
{result !== undefined && (
|
|
<div className="border-t border-dashed px-4 pt-2">
|
|
<p className="font-semibold">Result:</p>
|
|
<pre className="whitespace-pre-wrap">
|
|
{typeof result === "string"
|
|
? result
|
|
: JSON.stringify(result, null, 2)}
|
|
</pre>
|
|
</div>
|
|
)}
|
|
</div>
|
|
)}
|
|
</div>
|
|
);
|
|
};
|