import type { AnchorHTMLAttributes, ComponentType, ReactNode } from "react";
import type { SessionsHostAdapter } from "../sessions/host.js";
import type { ProfiledModelSelection } from "@polpo-ai/sdk";
export type PlaygroundAgent = {
name: string;
model?: ProfiledModelSelection;
assignedLoops?: string[];
role?: string;
};
export type LinkProps = AnchorHTMLAttributes & {
href: string;
children: ReactNode;
};
export type PlaygroundTraceResource = {
messages: unknown[];
isLoading: boolean;
isFetching: boolean;
refetch: () => unknown;
};
export interface PlaygroundHostAdapter {
sessions: SessionsHostAdapter;
showAvatars: boolean;
logoSrc: string;
data: {
dataPlaneBaseUrl(projectId: string): string;
useTrace(args: {
projectId: string;
sessionId: string | undefined;
active: boolean;
}): PlaygroundTraceResource;
};
navigation: {
searchEntries(): Iterable<[string, string]>;
replace(path: string, options?: {
scroll?: boolean;
}): void;
};
routes: {
projects(): string;
agents(projectId: string): string;
agent(projectId: string, agentName: string): string;
};
components: {
Link: ComponentType;
Image: ComponentType<{
src: string;
alt: string;
width: number;
height: number;
priority?: boolean;
className?: string;
}>;
ProviderIcon: ComponentType<{
provider: string;
size: number;
type: "mono";
className?: string;
}>;
ChatAgentSelector: ComponentType<{
agents: Array<{
name: string;
role?: string;
}>;
selected: string | undefined;
onSelect: (name: string) => void;
variant: "command";
fallbackLabel: string;
renderAvatar?: () => ReactNode;
className?: string;
}>;
ChatLanding: ComponentType<{
greeting: string;
subtitle: string;
inputPlaceholder: string;
header: ReactNode;
}>;
PolpoChat: ComponentType<{
baseUrl: string;
agent: string | undefined;
loop: string | undefined;
onSession: (sessionId: string | undefined) => void;
landing: ReactNode;
composerControls: ReactNode;
gutter: "none";
}>;
Select: ComponentType<{
value: string;
onValueChange: (value: string) => void;
children: ReactNode;
}>;
SelectTrigger: ComponentType<{
className?: string;
children: ReactNode;
}>;
SelectContent: ComponentType<{
children: ReactNode;
}>;
SelectItem: ComponentType<{
value: string;
children: ReactNode;
}>;
FilesBrowser: ComponentType<{
projectId: string;
embedded?: boolean;
}>;
RefreshButton: ComponentType<{
onClick: () => unknown;
busy?: boolean;
}>;
};
}
export declare function PlaygroundHostProvider({ host, children, }: {
host: PlaygroundHostAdapter;
children: ReactNode;
}): import("react").FunctionComponentElement>;
export declare function usePlaygroundHost(): PlaygroundHostAdapter;
//# sourceMappingURL=host.d.ts.map