/** * Configuration schema and types for spec-kit using Zod * * Provides runtime validation of configuration with TypeScript * type inference from Zod schemas. */ import { z } from 'zod'; /** * Zod schema for task ID configuration. * * Validates and provides defaults for task ID format settings. */ export declare const TaskIdConfigSchema: z.ZodObject<{ /** Prefix for task IDs (default: "T") */ idPrefix: z.ZodDefault; /** Number padding (default: 3, range: 1-6) */ idPadding: z.ZodDefault; /** Separator after prefix (default: "") */ idSeparator: z.ZodDefault; /** Prefix for group IDs (default: "TG") */ groupPrefix: z.ZodDefault; /** Separator for groups (default: "-") */ groupSeparator: z.ZodDefault; /** Group number padding (default: 3, range: 1-6) */ groupPadding: z.ZodDefault; }, "strip", z.ZodTypeAny, { idPrefix: string; idPadding: number; idSeparator: string; groupPrefix: string; groupSeparator: string; groupPadding: number; }, { idPrefix?: string | undefined; idPadding?: number | undefined; idSeparator?: string | undefined; groupPrefix?: string | undefined; groupSeparator?: string | undefined; groupPadding?: number | undefined; }>; /** * Task ID configuration type inferred from schema. */ export type TaskIdConfigType = z.infer; /** * Zod schema for customizable file names. * * Allows overriding default file names for spec artifacts. */ export declare const FileNamesSchema: z.ZodObject<{ /** Specification file name (default: "spec.md") */ spec: z.ZodDefault; /** Plan file name (default: "plan.md") */ plan: z.ZodDefault; /** Tasks file name (default: "tasks.md") */ tasks: z.ZodDefault; /** Research file name (default: "research.md") */ research: z.ZodDefault; /** Data model file name (default: "data-model.md") */ dataModel: z.ZodDefault; /** Quickstart file name (default: "quickstart.md") */ quickstart: z.ZodDefault; /** Clarifications file name (default: "clarifications.md") */ clarifications: z.ZodDefault; }, "strip", z.ZodTypeAny, { research: string; spec: string; plan: string; tasks: string; dataModel: string; quickstart: string; clarifications: string; }, { research?: string | undefined; spec?: string | undefined; plan?: string | undefined; tasks?: string | undefined; dataModel?: string | undefined; quickstart?: string | undefined; clarifications?: string | undefined; }>; /** * File names configuration type inferred from schema. */ export type FileNamesType = z.infer; /** * Zod schema for directory names. * * Allows overriding default directory names. */ export declare const DirectoryNamesSchema: z.ZodObject<{ /** Contracts directory name (default: "contracts") */ contracts: z.ZodDefault; /** Checklists directory name (default: "checklists") */ checklists: z.ZodDefault; }, "strip", z.ZodTypeAny, { contracts: string; checklists: string; }, { contracts?: string | undefined; checklists?: string | undefined; }>; /** * Directory names configuration type inferred from schema. */ export type DirectoryNamesType = z.infer; /** * Zod schema for the complete SpecKit configuration. * * Provides core configuration with extensibility hooks for plugins. * * @example * ```typescript * const config = SpecKitConfigSchema.parse({ * specDirectory: 'specs', * taskIdConfig: { * idPrefix: 'TASK', * idPadding: 4, * }, * }); * ``` */ export declare const SpecKitConfigSchema: z.ZodObject<{ /** Directory for spec artifacts (default: "specs") */ specDirectory: z.ZodDefault; /** Directory containing spec templates (default: ".spec-templates") */ templateDirectory: z.ZodDefault; /** Custom file names */ fileNames: z.ZodDefault; /** Plan file name (default: "plan.md") */ plan: z.ZodDefault; /** Tasks file name (default: "tasks.md") */ tasks: z.ZodDefault; /** Research file name (default: "research.md") */ research: z.ZodDefault; /** Data model file name (default: "data-model.md") */ dataModel: z.ZodDefault; /** Quickstart file name (default: "quickstart.md") */ quickstart: z.ZodDefault; /** Clarifications file name (default: "clarifications.md") */ clarifications: z.ZodDefault; }, "strip", z.ZodTypeAny, { research: string; spec: string; plan: string; tasks: string; dataModel: string; quickstart: string; clarifications: string; }, { research?: string | undefined; spec?: string | undefined; plan?: string | undefined; tasks?: string | undefined; dataModel?: string | undefined; quickstart?: string | undefined; clarifications?: string | undefined; }>>; /** Custom directory names */ directoryNames: z.ZodDefault; /** Checklists directory name (default: "checklists") */ checklists: z.ZodDefault; }, "strip", z.ZodTypeAny, { contracts: string; checklists: string; }, { contracts?: string | undefined; checklists?: string | undefined; }>>; /** Task ID format configuration */ taskIdConfig: z.ZodDefault; /** Number padding (default: 3, range: 1-6) */ idPadding: z.ZodDefault; /** Separator after prefix (default: "") */ idSeparator: z.ZodDefault; /** Prefix for group IDs (default: "TG") */ groupPrefix: z.ZodDefault; /** Separator for groups (default: "-") */ groupSeparator: z.ZodDefault; /** Group number padding (default: 3, range: 1-6) */ groupPadding: z.ZodDefault; }, "strip", z.ZodTypeAny, { idPrefix: string; idPadding: number; idSeparator: string; groupPrefix: string; groupSeparator: string; groupPadding: number; }, { idPrefix?: string | undefined; idPadding?: number | undefined; idSeparator?: string | undefined; groupPrefix?: string | undefined; groupSeparator?: string | undefined; groupPadding?: number | undefined; }>>; /** Extension point for plugins */ extensions: z.ZodDefault>; }, "strip", z.ZodTypeAny, { specDirectory: string; templateDirectory: string; fileNames: { research: string; spec: string; plan: string; tasks: string; dataModel: string; quickstart: string; clarifications: string; }; directoryNames: { contracts: string; checklists: string; }; taskIdConfig: { idPrefix: string; idPadding: number; idSeparator: string; groupPrefix: string; groupSeparator: string; groupPadding: number; }; extensions: Record; }, { specDirectory?: string | undefined; templateDirectory?: string | undefined; fileNames?: { research?: string | undefined; spec?: string | undefined; plan?: string | undefined; tasks?: string | undefined; dataModel?: string | undefined; quickstart?: string | undefined; clarifications?: string | undefined; } | undefined; directoryNames?: { contracts?: string | undefined; checklists?: string | undefined; } | undefined; taskIdConfig?: { idPrefix?: string | undefined; idPadding?: number | undefined; idSeparator?: string | undefined; groupPrefix?: string | undefined; groupSeparator?: string | undefined; groupPadding?: number | undefined; } | undefined; extensions?: Record | undefined; }>; /** * Complete SpecKit configuration type inferred from schema. */ export type SpecKitConfig = z.infer; /** * Default SpecKit configuration. * * Created by parsing an empty object through the schema, * which applies all defaults. */ export declare const DEFAULT_SPECKIT_CONFIG: SpecKitConfig; /** * Parse and validate a configuration object. * * @param config - Partial configuration to validate * @returns Validated and complete configuration with defaults applied * @throws ZodError if configuration is invalid * * @example * ```typescript * const config = parseConfig({ * specDirectory: 'features', * taskIdConfig: { idPrefix: 'F' }, * }); * // config.fileNames.spec === 'spec.md' (default applied) * ``` */ export declare function parseConfig(config: unknown): SpecKitConfig; /** * Safely parse a configuration object without throwing. * * @param config - Partial configuration to validate * @returns Parse result with success flag and either data or error * * @example * ```typescript * const result = safeParseConfig(userInput); * if (result.success) { * console.log(result.data.specDirectory); * } else { * console.error(result.error.issues); * } * ``` */ export declare function safeParseConfig(config: unknown): z.SafeParseReturnType; /** * Merge partial configuration with defaults. * * @param partial - Partial configuration to merge * @returns Complete configuration with defaults for missing values * * @example * ```typescript * const config = mergeConfig({ specDirectory: 'features' }); * // All other values use defaults * ``` */ export declare function mergeConfig(partial?: Partial): SpecKitConfig; //# sourceMappingURL=config.d.ts.map