import { Type, type Static, type TSchema } from "@alkdev/typebox"; export const CompatibleInputSchema = Type.Object({ value: Type.Number(), label: Type.Optional(Type.String()), }); export const CompatibleOutputSchema = Type.Object({ value: Type.Number(), label: Type.Optional(Type.String()), }); export type CompatibleInput = Static; export type CompatibleOutput = Static; export const NarrowOutputSchema = Type.Object({ value: Type.Number(), }); export const WideInputSchema = Type.Object({ value: Type.Number(), label: Type.Optional(Type.String()), metadata: Type.Optional(Type.Record(Type.String(), Type.String())), }); export type NarrowOutput = Static; export type WideInput = Static; export const IncompatibleNumberOutputSchema = Type.Object({ value: Type.Number(), }); export const IncompatibleStringInputSchema = Type.Object({ value: Type.String(), }); export type IncompatibleNumberOutput = Static; export type IncompatibleStringInput = Static; export const MissingRequiredFieldOutputSchema = Type.Object({ id: Type.String(), }); export const MissingRequiredFieldInputSchema = Type.Object({ id: Type.String(), name: Type.String(), }); export type MissingRequiredFieldOutput = Static; export type MissingRequiredFieldInput = Static; export const UnknownSchema = Type.Unknown(); export const compatiblePairs: Array<{ name: string; output: TSchema; input: TSchema; }> = [ { name: "identical-structure", output: CompatibleOutputSchema, input: CompatibleInputSchema, }, { name: "narrow-output-wide-input", output: NarrowOutputSchema, input: WideInputSchema, }, ]; export const incompatiblePairs: Array<{ name: string; output: TSchema; input: TSchema; }> = [ { name: "type-mismatch-number-string", output: IncompatibleNumberOutputSchema, input: IncompatibleStringInputSchema, }, { name: "missing-required-field", output: MissingRequiredFieldOutputSchema, input: MissingRequiredFieldInputSchema, }, ]; export const unknownSchemas: Array<{ name: string; schema: TSchema; }> = [ { name: "unknown-schema", schema: UnknownSchema, }, ];