"use client"; import type { ToolCallMessagePartProps } from "@assistant-ui/react"; import type { ComponentType } from "react"; import { ToolCallIdProvider, useHitlBundle } from "@/lib/hitl"; import { PagerChrome } from "./pager-chrome"; /** * Wrap a tool-ui card so that, when a multi-card HITL bundle is active: * - cards belonging to the bundle but not the current step render ``null``; * - the current-step card renders normally and is followed by ``PagerChrome``. * * Cards stay completely unchanged — the wrapper provides the * ``ToolCallIdContext`` that ``useHitlDecision`` reads to stage decisions * against the right ``toolCallId`` instead of firing the global event. */ export function withBundleStep
>( Component: ComponentType
): ComponentType
{
function BundleStepWrapped(props: P) {
const bundle = useHitlBundle();
const toolCallId = props.toolCallId;
const inBundle = bundle?.isInBundle(toolCallId) ?? false;
const isStep = bundle?.isCurrentStep(toolCallId) ?? false;
if (bundle && inBundle && !isStep) return null;
return (
; }