IndicatorInput:
    | {
        default: number;
        group?: string;
        key: string;
        label: string;
        max?: number;
        min?: number;
        step?: number;
        type: "number";
    }
    | {
        default: boolean;
        group?: string;
        key: string;
        label: string;
        type: "boolean";
    }
    | {
        default: string;
        group?: string;
        key: string;
        label: string;
        type: "color";
    }
    | {
        default: string;
        group?: string;
        key: string;
        label: string;
        type: "text";
    }
    | {
        default: string;
        group?: string;
        key: string;
        label: string;
        options: readonly { label: string; value: string }[];
        type: "select";
    }
    | {
        default: IndicatorSource;
        group?: string;
        key: string;
        label: string;
        type: "source";
    }

One tunable input. type is what a settings UI renders; the core only reads key/default.