import { Type } from "@mariozechner/pi-ai"; export const richOutputParameters = Type.Object({ kind: Type.Union([ Type.Literal("report"), Type.Literal("findings"), Type.Literal("validation"), Type.Literal("benchmark"), Type.Literal("stardock"), Type.Literal("table"), Type.Literal("note"), ], { description: "Presentation intent for legacy payload renderers or broad grouping for generic blocks." }), style: Type.Optional(Type.Union([Type.Literal("inline"), Type.Literal("card")], { description: "Visual style. inline blends with normal timeline output; card adds a background box." })), title: Type.String({ description: "Short title for the timeline entry." }), summary: Type.Optional(Type.String({ description: "One or two sentence compact summary." })), blocks: Type.Optional( Type.Array( Type.Object({ type: Type.Union([ Type.Literal("heading"), Type.Literal("text"), Type.Literal("formula"), Type.Literal("diagram"), Type.Literal("table"), Type.Literal("tree"), Type.Literal("progress"), Type.Literal("code"), Type.Literal("callout"), Type.Literal("kv"), Type.Literal("rule"), Type.Literal("link"), Type.Literal("sparkline"), Type.Literal("image"), Type.Literal("capabilities"), Type.Literal("badge"), Type.Literal("chart"), ]), text: Type.Optional(Type.String()), level: Type.Optional(Type.Number()), latex: Type.Optional(Type.String()), fallback: Type.Optional(Type.String()), language: Type.Optional(Type.String()), tone: Type.Optional(Type.Union([Type.Literal("info"), Type.Literal("success"), Type.Literal("warning"), Type.Literal("error")])) , label: Type.Optional(Type.String()), value: Type.Optional(Type.Unknown()), total: Type.Optional(Type.Number()), columns: Type.Optional(Type.Array(Type.String())), rows: Type.Optional(Type.Array(Type.Array(Type.Unknown()))), items: Type.Optional(Type.Array(Type.Unknown())), nodes: Type.Optional(Type.Array(Type.Unknown())), edges: Type.Optional(Type.Array(Type.Unknown())), url: Type.Optional(Type.String()), path: Type.Optional(Type.String()), values: Type.Optional(Type.Array(Type.Number())), data: Type.Optional(Type.String()), mimeType: Type.Optional(Type.String()), alt: Type.Optional(Type.String()), maxWidthCells: Type.Optional(Type.Number()), maxHeightCells: Type.Optional(Type.Number()), format: Type.Optional(Type.String()), render: Type.Optional(Type.Union([Type.Literal("auto"), Type.Literal("text"), Type.Literal("svg")])) , size: Type.Optional(Type.Union([Type.Literal("compact"), Type.Literal("normal"), Type.Literal("wide"), Type.Literal("full")])) , showSource: Type.Optional(Type.Boolean()), svgPath: Type.Optional(Type.String()), pngPath: Type.Optional(Type.String()), renderError: Type.Optional(Type.String()), spec: Type.Optional(Type.Unknown()), jsonPath: Type.Optional(Type.String()), }, { description: "Generic terminal-native components to render. Prefer blocks when the output is not domain-specific." }), )), markdown: Type.Optional(Type.String({ description: "Optional Markdown fallback or additional details for legacy rendering." })), payload: Type.Optional(Type.Unknown()), }); export const richOutputToolResultSchema = richOutputParameters;