import type {
Attachment,
MessageRenderer,
ToolRenderer,
ArtifactMessage,
SessionData,
} from "@mariozechner/pi-web-ui";
import { Agent } from "@mariozechner/pi-agent-core";
import { getModel } from "@mariozechner/pi-ai";
// Custom message type
declare module "@mariozechner/pi-agent-core" {
interface CustomAgentMessages {
artifact: ArtifactMessage;
}
}
// Type-safe attachment
const attachment: Attachment = {
name: "file.txt",
type: "text/plain",
data: btoa("Hello, world!"),
};
// Type-safe message renderer
const artifactRenderer: MessageRenderer<ArtifactMessage> = ({ message }) => {
return <div>{message.content}</div>;
};
// Type-safe tool renderer
const searchRenderer: ToolRenderer = ({ details }) => {
return {
content: <div>Found {details.count} results</div>,
summary: `${details.count} results`,
};
};
// Type-safe session data
const session: SessionData = {
id: "session-123",
name: "My Chat",
messages: [],
model: getModel("anthropic", "claude-4.5-sonnet-20250514"),
thinkingLevel: "medium",
timestamp: Date.now(),
lastModified: Date.now(),
};