{"version":3,"sources":["../src/utils/helpers.ts","../src/cli-helpers/zod_helpers.ts","../src/utils/console/formatter.ts","../src/env/helpers.ts","../src/utils/console/themes.ts","../src/utils/console/logger.ts","../src/cli-helpers/runner.ts","../src/version.ts","../src/config/types/targets.ts","../src/config/types/zod_targets.ts","../src/config/types/zod_commands.ts","../src/config/types/zod_config.ts","../src/config/types/commands.ts","../src/config/types/index.ts","../src/config/loader.ts","../src/generators/pre-processor.ts","../src/generators/generatorTypes/env.ts","../src/generators/generatorTypes/json.ts","../src/generators/generatorTypes/yaml.ts","../src/generators/generatorTypes/toml.ts","../src/generators/generatorTypes/template.ts","../src/generators/generatorTypes/json5.ts","../src/generators/generatorTypes/hjson.ts","../src/generators/generatorTypes/properties.ts","../src/generators/generatorTypes/xml.ts","../src/generators/generatorTypes/csv.ts","../src/generators/generatorTypes/cson.ts","../src/generators/generatorTypes/ini.ts","../src/utils/secrets.ts","../src/git/ignore-checker.ts","../src/generators/metadata.ts","../src/generators/index.ts","../src/cli-helpers/commands/generate.ts","../src/cli-helpers/commands/theme.ts","../src/cli-helpers/builder.ts","../src/cli-helpers/index.ts","../src/env/load.ts","../src/loaders/loaderTypes/toml.ts","../src/loaders/loaderTypes/json5.ts","../src/loaders/loaderTypes/jsonc.ts","../src/loaders/loaderTypes/hjson.ts","../src/loaders/loaderTypes/yaml.ts","../src/loaders/loaderTypes/ini.ts","../src/loaders/loaderTypes/properties.ts","../src/loaders/loaderTypes/env.ts","../src/loaders/loaderTypes/xml.ts","../src/loaders/loaderTypes/csv.ts","../src/loaders/loaderTypes/txt.ts","../src/loaders/loaderTypes/cson.ts","../src/loaders/index.ts","../src/index.ts"],"names":["path","z2","chalk","resolve","exec","platform","os","fs","xml","z3","group","config","z5","z6","z7","z9","z","createJiti","join","access","constants","yaml2","TOML","nunjucks","readFile","template","Handlebars","Mustache","format","JSON5","Hjson2","ini2","XMLBuilder","Papa","CSON","ini3","z11","execSync","mkdir","copyFile","dirname","readdir","unlink","writeFile","Command","cmd","flag","spawn","isAbsolute","env","fs2","TOML2","fs3","fs4","parse","fs5","Hjson","fs6","yaml3","fs7","ini","fs8","properties","Properties","fs9","fs10","XMLValidator","XMLParser","fs11","z14","fs12","fs13","fs14","z15"],"mappings":"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","file":"index.cjs","sourcesContent":["import * as z from \"zod\";\n\nexport type ZodIssueError = {\n    field: string;\n    message: string;\n    type: \"missing\" | \"invalid\" | \"type\";\n};\n\n/**\n * Converts Zod validation issues to user-friendly error objects\n * Supports all Zod v4 issue types with comprehensive error handling\n */\nexport function zodIssuesToErrors(issues: z.core.$ZodIssue[]): ZodIssueError[] {\n    return issues.map((issue) => {\n        const field = formatFieldPath(issue.path);\n\n        // Determine error type based on Zod error codes\n        let type: \"missing\" | \"invalid\" | \"type\" = \"invalid\";\n        let message = issue.message;\n\n        // Handle each issue type with specific logic and user-friendly messages\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const typedIssue = issue as any;\n\n                // Check if it's actually a missing field by looking at the message content\n                const isMissing =\n                    issue.message.includes(\"received undefined\") ||\n                    issue.message.includes(\"Required\") ||\n                    issue.message.includes(\"required\");\n\n                type = isMissing ? \"missing\" : \"type\";\n\n                if (type === \"missing\") {\n                    message = field\n                        ? `${field} is required`\n                        : \"This field is required\";\n                } else {\n                    // It's a type mismatch - extract expected type from issue or message\n                    if (typedIssue.expected) {\n                        message = field\n                            ? `${field} must be a ${typedIssue.expected}`\n                            : `Must be a ${typedIssue.expected}`;\n                    } else {\n                        // Fallback: try to extract from the default message\n                        const match = issue.message.match(/expected (\\w+)/);\n                        const expectedType = match ? match[1] : \"valid value\";\n                        message = field\n                            ? `${field} must be a ${expectedType}`\n                            : `Must be a ${expectedType}`;\n                    }\n                }\n                break;\n            }\n\n            case \"too_small\": {\n                const sizeIssue = issue as any;\n\n                if (sizeIssue.minimum !== undefined) {\n                    if (field.includes(\".\") || field.includes(\"[\")) {\n                        // For nested fields, use generic \"too small\" messages\n                        if (sizeIssue.inclusive) {\n                            message = field\n                                ? `${field} must be at least ${sizeIssue.minimum}`\n                                : `Must be at least ${sizeIssue.minimum}`;\n                        } else {\n                            message = field\n                                ? `${field} must be greater than ${sizeIssue.minimum}`\n                                : `Must be greater than ${sizeIssue.minimum}`;\n                        }\n                    } else {\n                        // For top-level fields, try to determine type from context\n                        const minValue = sizeIssue.minimum;\n                        if (\n                            typeof minValue === \"number\" &&\n                            minValue < 1000 &&\n                            minValue > -1000\n                        ) {\n                            // Likely a string length or array length\n                            const unit =\n                                minValue === 1 ? \"character\" : \"characters\";\n                            message = field\n                                ? `${field} must be at least ${minValue} ${unit}`\n                                : `Must be at least ${minValue} ${unit}`;\n                        } else {\n                            // Likely a number value\n                            const comparator = sizeIssue.inclusive ? \">=\" : \">\";\n                            message = field\n                                ? `${field} must be ${comparator} ${minValue}`\n                                : `Must be ${comparator} ${minValue}`;\n                        }\n                    }\n                }\n                break;\n            }\n\n            case \"too_big\": {\n                const sizeIssue = issue as any;\n\n                if (sizeIssue.maximum !== undefined) {\n                    if (field.includes(\".\") || field.includes(\"[\")) {\n                        // For nested fields, use generic \"too big\" messages\n                        if (sizeIssue.inclusive) {\n                            message = field\n                                ? `${field} must be at most ${sizeIssue.maximum}`\n                                : `Must be at most ${sizeIssue.maximum}`;\n                        } else {\n                            message = field\n                                ? `${field} must be less than ${sizeIssue.maximum}`\n                                : `Must be less than ${sizeIssue.maximum}`;\n                        }\n                    } else {\n                        // For top-level fields, try to determine type from context\n                        const maxValue = sizeIssue.maximum;\n                        if (\n                            typeof maxValue === \"number\" &&\n                            maxValue < 1000 &&\n                            maxValue > 0\n                        ) {\n                            // Likely a string length or array length\n                            const unit =\n                                maxValue === 1 ? \"character\" : \"characters\";\n                            message = field\n                                ? `${field} must be at most ${maxValue} ${unit}`\n                                : `Must be at most ${maxValue} ${unit}`;\n                        } else {\n                            // Likely a number value\n                            const comparator = sizeIssue.inclusive ? \"<=\" : \"<\";\n                            message = field\n                                ? `${field} must be ${comparator} ${maxValue}`\n                                : `Must be ${comparator} ${maxValue}`;\n                        }\n                    }\n                }\n                break;\n            }\n\n            case \"invalid_format\": {\n                const formatIssue = issue as any;\n\n                if (formatIssue.format) {\n                    const formatMessages: Record<string, string> = {\n                        email: \"valid email address\",\n                        url: \"valid URL\",\n                        uuid: \"valid UUID\",\n                        regex: \"valid format\",\n                        cuid: \"valid CUID\",\n                        cuid2: \"valid CUID2\",\n                        ulid: \"valid ULID\",\n                        datetime: \"valid datetime\",\n                        ip: \"valid IP address\",\n                        base64: \"valid base64 string\",\n                        nanoid: \"valid NanoID\",\n                    };\n\n                    const formatName =\n                        formatMessages[formatIssue.format] || \"valid format\";\n                    message = field\n                        ? `${field} must be a ${formatName}`\n                        : `Must be a ${formatName}`;\n                }\n                break;\n            }\n\n            case \"invalid_value\": {\n                const valueIssue = issue as any;\n\n                if (valueIssue.options && Array.isArray(valueIssue.options)) {\n                    message = field\n                        ? `${field} must be one of: ${valueIssue.options.join(\", \")}`\n                        : `Must be one of: ${valueIssue.options.join(\", \")}`;\n                } else if (valueIssue.expected) {\n                    message = field\n                        ? `${field} must be ${valueIssue.expected}`\n                        : `Must be ${valueIssue.expected}`;\n                }\n                break;\n            }\n\n            case \"unrecognized_keys\": {\n                const keysIssue = issue as any;\n\n                if (keysIssue.keys && Array.isArray(keysIssue.keys)) {\n                    const keys = keysIssue.keys.join(\", \");\n                    message = field\n                        ? `${field} contains unrecognized keys: ${keys}`\n                        : `Unrecognized keys: ${keys}`;\n                }\n                break;\n            }\n\n            case \"invalid_union\": {\n                message = field\n                    ? `${field} does not match any of the expected types`\n                    : \"Does not match any of the expected types\";\n                break;\n            }\n\n            case \"invalid_key\": {\n                message = field\n                    ? `${field} contains an invalid key`\n                    : \"Contains an invalid key\";\n                break;\n            }\n\n            case \"invalid_element\": {\n                message = field\n                    ? `${field} contains an invalid element`\n                    : \"Contains an invalid element\";\n                break;\n            }\n\n            case \"not_multiple_of\": {\n                const multipleIssue = issue as any;\n\n                if (multipleIssue.multipleOf !== undefined) {\n                    message = field\n                        ? `${field} must be a multiple of ${multipleIssue.multipleOf}`\n                        : `Must be a multiple of ${multipleIssue.multipleOf}`;\n                }\n                break;\n            }\n\n            case \"custom\": {\n                // For custom validations, use the provided message or fall back to a generic one\n                if (!message || message === \"Invalid input\") {\n                    message = field ? `${field} is invalid` : \"Invalid value\";\n                }\n                break;\n            }\n\n            // Handle any additional or unknown issue codes\n            default: {\n                if (!message || message === \"Invalid input\") {\n                    message = field ? `${field} is invalid` : \"Invalid value\";\n                }\n                break;\n            }\n        }\n\n        return {\n            field,\n            message,\n            type,\n        };\n    });\n}\n\n/**\n * Formats the field path from Zod's path array into a readable string\n * Examples:\n * - [] -> \"\"\n * - [\"name\"] -> \"name\"\n * - [\"user\", \"address\", \"street\"] -> \"user.address.street\"\n * - [\"items\", 0, \"name\"] -> \"items[0].name\"\n */\nfunction formatFieldPath(path: PropertyKey[]): string {\n    if (path.length === 0) return \"\";\n\n    return path.reduce<string>((acc, segment, index) => {\n        if (typeof segment === \"number\") {\n            return `${acc}[${segment}]`;\n        }\n\n        if (index === 0) {\n            return String(segment);\n        }\n\n        return `${acc}.${String(segment)}`;\n    }, \"\");\n}\n\n/**\n * Checks if a value is a plain object (dictionary) that can be safely merged\n * Returns true only for objects created with {} or new Object()\n * Returns false for class instances, arrays, null, primitives, etc.\n */\nfunction isPlainObject(obj: any): boolean {\n    if (typeof obj !== \"object\" || obj === null) return false;\n    if (Array.isArray(obj)) return false;\n\n    // Check if it's a plain object (created with {} or new Object())\n    const proto = Object.getPrototypeOf(obj);\n    return proto === Object.prototype || proto === null;\n}\n\n/**\n * Deeply merges two objects, combining properties recursively\n * Only merges plain objects (dictionaries) - overwrites complex objects like class instances\n * @param target - The target object to merge into\n * @param source - The source object to merge from\n * @returns A new object with merged properties\n */\nexport function deepMerge(target: any, source: any) {\n    const result = {...target};\n\n    for (const key in source) {\n        const sourceValue = source[key];\n        const targetValue = target[key];\n\n        // Only deep merge if both values are plain objects\n        if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\n            result[key] = deepMerge(targetValue, sourceValue);\n        } else {\n            // Otherwise, overwrite with source value\n            result[key] = sourceValue;\n        }\n    }\n\n    return result;\n}\n","import * as z from \"zod\";\nimport type {\n    ZodAdvancedCommand,\n    ZodAnyCommand,\n    ZodGroupCommand,\n    ZodStringCommand,\n} from \"../config/types\";\n\nexport function getCommandHelp(command: ZodAnyCommand): string | undefined {\n    if (typeof command === \"string\" || typeof command === \"function\") {\n        return undefined;\n    }\n    return command.help;\n}\n\nexport function isStringCommand(\n    command: ZodAnyCommand\n): command is ZodStringCommand {\n    return typeof command === \"object\" && command.type === \"string\";\n}\n\nexport function isAdvancedCommand(\n    command: ZodAnyCommand\n): command is ZodAdvancedCommand {\n    return typeof command === \"object\" && command.type === \"advanced\";\n}\n\nexport function isGroupCommand(\n    command: ZodAnyCommand\n): command is ZodGroupCommand {\n    return typeof command === \"object\" && command.type === \"group\";\n}\n\n// =============================================\n// ZOD-BASED VALIDATION\n// =============================================\n\nexport function validateOptionsWithZod(\n    rawOptions: Record<string, any>,\n    optionsSchema: Record<string, z.ZodType>\n): any {\n    // Preprocess: Convert comma-separated strings to arrays for array schemas\n    const processedOptions = {...rawOptions};\n\n    for (const [key, schema] of Object.entries(optionsSchema)) {\n        const info = analyzeZodSchema(schema);\n        if (\n            info.baseType === \"array\" &&\n            typeof processedOptions[key] === \"string\"\n        ) {\n            // Split comma-separated string into array\n            processedOptions[key] = processedOptions[key]\n                .split(\",\")\n                .map((s: string) => s.trim());\n        }\n    }\n\n    // Let Zod handle all type conversion, defaults, validation\n    return z.object(optionsSchema).parse(processedOptions);\n}\n\nexport function validateArgsWithZod(\n    rawArgs: any[],\n    argsSchema: Record<string, z.ZodType>\n): any {\n    const argNames = Object.keys(argsSchema);\n    const argsObject: Record<string, any> = {};\n\n    // Map positional args to schema keys\n    for (let i = 0; i < argNames.length; i++) {\n        const argName = argNames[i];\n        const value = rawArgs[i];\n        if (value !== undefined) {\n            argsObject[argName] = value;\n        }\n    }\n\n    try {\n        // Let Zod handle all type conversion, defaults, validation\n        return z.object(argsSchema).parse(argsObject);\n    } catch (error) {\n        if (error instanceof z.ZodError) {\n            throw new z.ZodError([\n                ...error.issues.map((issue) => ({\n                    ...issue,\n                    path: [\"args\", ...issue.path],\n                })),\n            ]);\n        }\n        throw error;\n    }\n}\n\n// =============================================\n// SIMPLIFIED SCHEMA ANALYSIS\n// =============================================\n\nexport interface ZodSchemaInfo {\n    baseType: string;\n    isOptional: boolean;\n    description?: string;\n}\n\nexport function analyzeZodSchema(schema: z.ZodType): ZodSchemaInfo {\n    let currentSchema = schema;\n    let isOptional = false;\n    let description: string | undefined = undefined;\n\n    // Traverse wrapper schemas only - stop at core types\n    while (currentSchema) {\n        // Extract description\n        if (!description) {\n            description = extractDescription(currentSchema);\n        }\n\n        // Check for optional/nullable markers\n        const type = getZodType(currentSchema);\n\n        if (type === \"optional\" || type === \"nullable\" || type === \"default\") {\n            isOptional = true;\n            // These are wrapper types - unwrap them\n            if (canUnwrap(currentSchema)) {\n                currentSchema = currentSchema.unwrap();\n            } else {\n                break;\n            }\n        } else {\n            // This is a core type (array, string, number, etc.) - stop here!\n            break;\n        }\n    }\n\n    // Get final base type\n    const baseType = getZodType(currentSchema);\n\n    return {\n        baseType,\n        isOptional,\n        description,\n    };\n}\n\nexport function getZodType(schema: z.ZodType): string {\n    return schema._zod?.def?.type || \"unknown\";\n}\n\nexport function extractDescription(schema: z.ZodType): string | undefined {\n    try {\n        const meta = schema.meta();\n        if (meta && typeof meta.description === \"string\") {\n            return meta.description;\n        }\n    } catch {\n        // Schema doesn't support meta\n    }\n    return undefined;\n}\n\nexport function canUnwrap(\n    schema: z.ZodType\n): schema is z.ZodType & {unwrap(): z.ZodType} {\n    return typeof (schema as any).unwrap === \"function\";\n}\n","import chalk from \"chalk\";\n\nexport interface TreeNode {\n    tag?: string;\n    text?: string;\n    children: TreeNode[];\n}\n\nexport type TagTransformer = (content: string) => string;\nexport type TagTransformers<T extends string = string> = Record<\n    T,\n    TagTransformer\n>;\n\nclass XMLParser {\n    private readonly input: string;\n    private position: number;\n\n    constructor(input: string) {\n        this.input = input;\n        this.position = 0;\n    }\n\n    parse(): TreeNode[] {\n        const root: TreeNode[] = [];\n        const stack: TreeNode[] = [{children: root}];\n\n        while (this.position < this.input.length) {\n            // Check for escaped tag delimiter\n            if (this.peek() === \"\\\\\" && this.peekNext() === \"<\") {\n                // This is an escaped tag, treat as text\n                const text = this.parseText();\n                if (text.length > 0) {\n                    const parent = stack[stack.length - 1];\n                    if (!parent) {\n                        throw new Error(\n                            \"No parent node found for text content\"\n                        );\n                    }\n                    parent.children.push({\n                        text: text,\n                        children: [],\n                    });\n                }\n            } else if (this.peek() === \"<\") {\n                const tag = this.parseTag();\n                if (tag) {\n                    if (tag.isClosing) {\n                        // Pop from stack when closing tag found\n                        if (stack.length > 1) {\n                            stack.pop();\n                        }\n                    } else {\n                        // Create new node and push to current parent\n                        const node: TreeNode = {\n                            tag: tag.name,\n                            children: [],\n                        };\n\n                        const parent = stack[stack.length - 1];\n                        if (!parent) {\n                            throw new Error(\"No parent node found for new tag\");\n                        }\n                        parent.children.push(node);\n\n                        if (!tag.isSelfClosing) {\n                            stack.push(node);\n                        }\n                    }\n                }\n            } else {\n                // Parse text content - preserve ALL text, including whitespace\n                const text = this.parseText();\n                if (text.length > 0) {\n                    // Changed from text.trim() to preserve whitespace\n                    const parent = stack[stack.length - 1];\n                    if (!parent) {\n                        throw new Error(\n                            \"No parent node found for text content\"\n                        );\n                    }\n                    parent.children.push({\n                        text: text,\n                        children: [],\n                    });\n                }\n            }\n        }\n\n        return root;\n    }\n\n    private peek(): string {\n        return this.input[this.position] || \"\";\n    }\n\n    private peekNext(): string {\n        return this.input[this.position + 1] || \"\";\n    }\n\n    private advance(): string {\n        const char = this.input[this.position] || \"\";\n        this.position++;\n        return char;\n    }\n\n    private parseTag(): {\n        name: string;\n        isClosing: boolean;\n        isSelfClosing: boolean;\n    } | null {\n        if (this.peek() !== \"<\") return null;\n\n        this.advance(); // consume '<'\n\n        let isClosing = false;\n        if (this.peek() === \"/\") {\n            isClosing = true;\n            this.advance(); // consume '/'\n        }\n\n        let tagName = \"\";\n        while (\n            this.position < this.input.length &&\n            this.peek() !== \">\" &&\n            this.peek() !== \"/\" &&\n            !this.isWhitespace(this.peek())\n        ) {\n            tagName += this.advance();\n        }\n\n        // Skip any whitespace and attributes (simple approach)\n        while (\n            this.position < this.input.length &&\n            this.peek() !== \">\" &&\n            this.peek() !== \"/\"\n        ) {\n            this.advance();\n        }\n\n        let isSelfClosing = false;\n        if (this.peek() === \"/\") {\n            isSelfClosing = true;\n            this.advance(); // consume '/'\n        }\n\n        if (this.peek() === \">\") {\n            this.advance(); // consume '>'\n        }\n\n        return {\n            name: tagName.trim(),\n            isClosing,\n            isSelfClosing,\n        };\n    }\n\n    private parseText(): string {\n        let text = \"\";\n        while (this.position < this.input.length) {\n            const current = this.peek();\n\n            if (current === \"\\\\\") {\n                const next = this.peekNext();\n                if (next === \"<\" || next === \">\") {\n                    // Escaped angle bracket: \\< becomes < and \\> becomes >\n                    text += next;\n                    this.advance(); // consume '\\'\n                    this.advance(); // consume '<' or '>'\n                } else if (next === \"\\\\\") {\n                    // Escaped backslash: \\\\ becomes \\\n                    text += \"\\\\\";\n                    this.advance(); // consume first '\\'\n                    this.advance(); // consume second '\\'\n                } else {\n                    // Not an escape sequence, just a regular backslash\n                    text += this.advance();\n                }\n            } else if (current === \"<\") {\n                // Unescaped tag start, stop parsing text\n                break;\n            } else {\n                // Regular character\n                text += this.advance();\n            }\n        }\n        return text;\n    }\n\n    private isWhitespace(char: string): boolean {\n        return /\\s/.test(char);\n    }\n}\n\nclass TreeTransformer {\n    private transformers: TagTransformers;\n\n    constructor(transformers: TagTransformers) {\n        this.transformers = transformers;\n    }\n\n    transform(nodes: TreeNode[]): string {\n        return nodes.map((node) => this.transformNode(node)).join(\"\");\n    }\n\n    private transformNode(node: TreeNode): string {\n        // First, process all children (bottom-up approach)\n        const childrenContent = node.children\n            .map((child) => this.transformNode(child))\n            .join(\"\");\n\n        // If this is a text node, return the text\n        if (node.text !== undefined) {\n            return node.text;\n        }\n\n        // If this is a tag node, apply transformation if available\n        if (node.tag && this.transformers[node.tag]) {\n            return this.transformers[node.tag]!(childrenContent);\n        }\n\n        console.warn(\n            chalk.redBright(\n                `No transformer found for tag: ${node.tag}. Returning content as-is.`\n            )\n        );\n\n        // If no transformer found, return content as-is\n        return childrenContent;\n    }\n}\n\n// Main function to parse and transform XML-like strings\nexport function parseAndTransform(\n    input: string,\n    transformers: TagTransformers\n): string {\n    const parser = new XMLParser(input);\n    const tree = parser.parse();\n    const transformer = new TreeTransformer(transformers);\n    return transformer.transform(tree);\n}\n\n// Utility function to test the parser\nexport function debugParse(input: string): TreeNode[] {\n    const parser = new XMLParser(input);\n    return parser.parse();\n}\n","import {exec} from \"child_process\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport * as fs from \"fs/promises\";\n\nfunction promisifyExec(command: string): Promise<void> {\n    return new Promise((resolve, reject) => {\n        exec(command, (error) => {\n            if (error) {\n                reject(error);\n            } else {\n                resolve();\n            }\n        });\n    });\n}\n\nexport async function setPersistentEnvVariable(\n    key: string,\n    value: string\n): Promise<void> {\n    const platform = os.platform();\n\n    switch (platform) {\n        case \"win32\":\n            await setWindowsPersistent(key, value);\n            break;\n        case \"darwin\":\n        case \"linux\":\n            await setUnixPersistent(key, value);\n            break;\n        default:\n            throw new Error(\n                `Cant set environment variable. Unsupported platform: ${platform}`\n            );\n    }\n\n    // Also set for current process\n    process.env[key] = value;\n}\n\nasync function setWindowsPersistent(key: string, value: string): Promise<void> {\n    try {\n        // Set for current user\n        await promisifyExec(`setx ${key} \"${value}\"`);\n    } catch (error) {\n        console.error(\n            `Failed to set ${key} persistently for Windows user:`,\n            error\n        );\n        throw new Error(`Failed to set environment variable ${key} on Windows`);\n    }\n}\n\nasync function setUnixPersistent(key: string, value: string): Promise<void> {\n    const homeDir = os.homedir();\n    const shell = process.env.SHELL || \"/bin/bash\";\n\n    // Determine which profile file to update based on shell\n    let profileFiles: string[];\n\n    if (shell.includes(\"zsh\")) {\n        profileFiles = [\".zshrc\", \".zprofile\"];\n    } else if (shell.includes(\"bash\")) {\n        profileFiles = [\".bashrc\", \".bash_profile\", \".profile\"];\n    } else if (shell.includes(\"fish\")) {\n        profileFiles = [\".config/fish/config.fish\"];\n    } else {\n        // Default fallback\n        profileFiles = [\".profile\"];\n    }\n\n    const exportLine = `export ${key}=\"${value}\"`;\n\n    for (const profileFile of profileFiles) {\n        const filePath = path.join(homeDir, profileFile);\n\n        try {\n            // Check if file exists\n            await fs.access(filePath);\n\n            // Read current content\n            const content = await fs.readFile(filePath, \"utf-8\");\n\n            // Check if variable already exists\n            const regex = new RegExp(`^export ${key}=.*$`, \"m\");\n\n            if (regex.test(content)) {\n                // Replace existing\n                const newContent = content.replace(regex, exportLine);\n                await fs.writeFile(filePath, newContent);\n            } else {\n                // Append new\n                await fs.appendFile(filePath, `\\n${exportLine}\\n`);\n            }\n\n            console.log(\n                `---> Run 'source ~/${profileFile}' to apply changes or restart your terminal.`\n            );\n            break; // Only update the first existing profile file\n        } catch (error) {\n            // File doesn't exist or can't be accessed, try next one\n        }\n    }\n}\n","import chalk, {type ChalkInstance} from \"chalk\";\nimport {parseAndTransform, type TagTransformers} from \"./formatter.ts\";\nimport {setPersistentEnvVariable} from \"../../env/helpers.ts\";\n\n/**\n * Simplified theme interface with auto-generated neutral scale\n */\nexport interface Theme {\n    name: string;\n    description: string;\n    colors: {\n        // Primary/Brand colors\n        primary: string; // Main brand color for primary actions\n        secondary: string; // Accent brand color\n\n        // Semantic colors (status/meaning)\n        success: string; // Green - positive states, successful actions\n        warning: string; // Yellow - warnings, caution\n        danger: string; // Red - errors, destructive actions\n\n        // Neutral endpoints (system generates 0-900 scale)\n        neutralLight: string; // Lightest neutral (usually white/near-white)\n        neutralDark: string; // Darkest neutral (usually black/near-black)\n    };\n}\n\n/**\n * Convert hex color to RGB\n */\nfunction hexToRgb(hex: string): [number, number, number] {\n    const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n    if (!result) throw new Error(`Invalid hex color: ${hex}`);\n    return [\n        parseInt(result[1], 16),\n        parseInt(result[2], 16),\n        parseInt(result[3], 16),\n    ];\n}\n\n/**\n * Convert RGB to hex\n */\nfunction rgbToHex(r: number, g: number, b: number): string {\n    return (\n        \"#\" +\n        [r, g, b]\n            .map((x) => {\n                const hex = Math.round(x).toString(16);\n                return hex.length === 1 ? \"0\" + hex : hex;\n            })\n            .join(\"\")\n    );\n}\n\n/**\n * Interpolate between two colors\n */\nfunction interpolateColor(\n    color1: string,\n    color2: string,\n    factor: number\n): string {\n    const [r1, g1, b1] = hexToRgb(color1);\n    const [r2, g2, b2] = hexToRgb(color2);\n\n    const r = r1 + factor * (r2 - r1);\n    const g = g1 + factor * (g2 - g1);\n    const b = b1 + factor * (b2 - b1);\n\n    return rgbToHex(r, g, b);\n}\n\n/**\n * Generate neutral color scale from light to dark\n */\nfunction generateNeutralScale(\n    lightColor: string,\n    darkColor: string\n): Record<string, string> {\n    // Define the scale points (0 = lightest, 900 = darkest)\n    const scalePoints = [0, 100, 200, 300, 400, 500, 600, 700, 800, 900];\n    const neutrals: Record<string, string> = {};\n\n    scalePoints.forEach((point) => {\n        const factor = point / 900; // Convert to 0-1 range\n        neutrals[point.toString()] = interpolateColor(\n            lightColor,\n            darkColor,\n            factor\n        );\n    });\n\n    return neutrals;\n}\n\n/**\n * VSCode Dark theme - Based on VS Code's default dark theme\n */\nexport const vscode: Theme = {\n    name: \"vscode\",\n    description: \"VS Code's default dark theme with balanced contrast\",\n    colors: {\n        primary: \"#007fd4\", // VS Code blue for primary actions\n        secondary: \"#ff6b35\", // Not actually used in VS Code, but good as accent\n        success: \"#0dbc79\", // VS Code green for success states\n        warning: \"#ffcc02\", // Warm yellow for warnings\n        danger: \"#f14c4c\", // VS Code red for errors\n\n        neutralLight: \"#ffffff\", // Pure white\n        neutralDark: \"#1e1e1e\", // VS Code background\n    },\n};\n\n/**\n * Astrodark theme - Sophisticated dark theme\n */\nexport const astrodark: Theme = {\n    name: \"astrodark\",\n    description: \"Sophisticated dark theme with balanced vibrant colors\",\n    colors: {\n        primary: \"#CC83E3\", // Purple-pink primary\n        secondary: \"#50A4E9\", // Bright blue accent\n        success: \"#75AD47\", // Muted green\n        warning: \"#D09214\", // Golden yellow\n        danger: \"#F8747E\", // Bright coral\n\n        neutralLight: \"#ffffff\", // Pure white\n        neutralDark: \"#111317\", // Dark background\n    },\n};\n\n/**\n * Aura theme - Vibrant neon-inspired\n */\nexport const aura: Theme = {\n    name: \"aura\",\n    description: \"Vibrant neon-inspired dark theme with electric colors\",\n    colors: {\n        primary: \"#A277FF\", // Vibrant purple\n        secondary: \"#4D8AFF\", // Bright blue\n        success: \"#61FFCA\", // Bright cyan-green\n        warning: \"#FFCA85\", // Orange-yellow\n        danger: \"#FF6767\", // Bright red\n\n        neutralLight: \"#ffffff\", // Pure white\n        neutralDark: \"#110F18\", // Deep dark background\n    },\n};\n\n/**\n * Doom One theme - Classic sophisticated\n */\nexport const doomOne: Theme = {\n    name: \"doom-one\",\n    description: \"Classic sophisticated dark theme with muted vibrancy\",\n    colors: {\n        primary: \"#c678dd\", // Bright purple\n        secondary: \"#51afef\", // Bright blue\n        success: \"#98be65\", // Olive green\n        warning: \"#ecbe7b\", // Warm yellow\n        danger: \"#ff6c6b\", // Coral red\n\n        neutralLight: \"#ffffff\", // Pure white\n        neutralDark: \"#1b2229\", // Dark background\n    },\n};\n\n/**\n * Catppuccin Mocha theme - Soothing pastels\n */\nexport const catppuccinMocha: Theme = {\n    name: \"catppuccin-mocha\",\n    description: \"Soothing pastel theme for comfortable long sessions\",\n    colors: {\n        primary: \"#cba6f7\", // Mauve\n        secondary: \"#89b4fa\", // Blue\n        success: \"#a6e3a1\", // Green\n        warning: \"#f9e2af\", // Yellow\n        danger: \"#f38ba8\", // Red\n\n        neutralLight: \"#ffffff\", // Pure white\n        neutralDark: \"#1e1e2e\", // Base background\n    },\n};\n\n/**\n * Available themes\n */\nexport const themes = {\n    vscode,\n    astrodark,\n    aura,\n    \"doom-one\": doomOne,\n    \"catppuccin-mocha\": catppuccinMocha,\n} as const;\n\nexport type ThemeName = keyof typeof themes;\n\n/**\n * All possible color names in the theme\n */\nexport const themeColorNames = [\n    \"primary\",\n    \"secondary\",\n    \"success\",\n    \"warning\",\n    \"danger\",\n    \"neutral_0\",\n    \"neutral_100\",\n    \"neutral_200\",\n    \"neutral_300\",\n    \"neutral_400\",\n    \"neutral_500\",\n    \"neutral_600\",\n    \"neutral_700\",\n    \"neutral_800\",\n    \"neutral_900\",\n] as const;\n\nexport type ThemeColorName = (typeof themeColorNames)[number];\n\nexport const colorizeColorNames = [\n    ...themeColorNames,\n    \"text\",\n    \"textSecondary\",\n    \"textMuted\",\n    \"background\",\n    \"backgroundLight\",\n    \"border\",\n] as const;\n\nexport type ColorizeColorName = (typeof colorizeColorNames)[number];\n\n/**\n * Tag mappings for inline color formatting (Bun-style)\n */\nexport const TAG_MAP = {\n    // Style modifiers\n    b: \"bold\",\n    d: \"dim\",\n    i: \"italic\",\n    u: \"underline\",\n    s: \"strikethrough\",\n\n    // Semantic colors\n    primary: \"primary\",\n    secondary: \"secondary\",\n    success: \"success\",\n    warning: \"warning\",\n    danger: \"danger\",\n    error: \"danger\", // alias\n\n    // Neutral shades\n    muted: \"neutral_400\",\n    subtle: \"neutral_300\",\n    text: \"neutral_700\",\n    \"dim-text\": \"neutral_500\",\n\n    // Reset\n    r: \"reset\",\n} as const;\n\nexport type TagName = keyof typeof TAG_MAP;\n\n/**\n * Default theme\n */\nexport const DEFAULT_THEME: ThemeName =\n    (process.env.AXOGEN_THEME as ThemeName) || \"vscode\";\n\nexport const DEFAULT_ENABLE_COLOR =\n    (process.env.AXOGEN_ENABLE_COLOR || \"true\").toLowerCase() === \"true\";\n\n/**\n * Get theme by name with fallback to default\n */\nexport function getTheme(name?: string): Theme {\n    if (!name || !(name in themes)) {\n        return themes[DEFAULT_THEME];\n    }\n    return themes[name as ThemeName];\n}\n\n/**\n * List all available themes\n */\nexport function listThemes(): Array<{name: string; description: string}> {\n    return Object.values(themes).map((theme) => ({\n        name: theme.name,\n        description: theme.description,\n    }));\n}\n\n/**\n * Validate theme name\n */\nexport function isValidTheme(name: string): name is ThemeName {\n    return name in themes;\n}\n\n/**\n * Theme manager for managing and switching themes\n */\nexport class ThemeManager {\n    private currentTheme: Theme;\n    private colorizer: Record<ColorizeColorName, ChalkInstance>;\n    private neutralColors: Record<string, string>;\n    private transformers: TagTransformers<TagName>;\n    private enableColor: boolean = DEFAULT_ENABLE_COLOR;\n\n    constructor() {\n        this.currentTheme = getTheme(DEFAULT_THEME);\n        this.neutralColors = generateNeutralScale(\n            this.currentTheme.colors.neutralLight,\n            this.currentTheme.colors.neutralDark\n        );\n        this.colorizer = this.createColorizer(this.currentTheme);\n        this.transformers = this.createTransformers();\n    }\n\n    private createColorizer(theme: Theme): Record<string, ChalkInstance> {\n        const colorizer: Record<string, ChalkInstance> = {};\n\n        if (!this.enableColor) {\n            // Use chalk.reset for everything if color is disabled\n            colorizeColorNames.forEach((name) => {\n                colorizer[name] = chalk.white.bgBlack;\n            });\n            return colorizer;\n        }\n\n        // Primary colors\n        colorizer.primary = chalk.hex(theme.colors.primary);\n        if (theme.colors.secondary) {\n            colorizer.secondary = chalk.hex(theme.colors.secondary);\n        }\n\n        // Semantic colors\n        colorizer.success = chalk.hex(theme.colors.success);\n        colorizer.warning = chalk.hex(theme.colors.warning);\n        colorizer.danger = chalk.hex(theme.colors.danger);\n\n        // Generated neutral colors with underscore naming\n        Object.entries(this.neutralColors).forEach(([level, color]) => {\n            colorizer[`neutral_${level}`] = chalk.hex(color);\n        });\n\n        // Convenience aliases for common use cases\n        colorizer.text = chalk.hex(this.neutralColors[\"200\"]); // Primary text\n        colorizer.textSecondary = chalk.hex(this.neutralColors[\"600\"]); // Secondary text\n        colorizer.textMuted = chalk.hex(this.neutralColors[\"400\"]); // Muted text\n        colorizer.background = chalk.hex(this.neutralColors[\"900\"]); // Background\n        colorizer.backgroundLight = chalk.hex(this.neutralColors[\"100\"]); // Light background\n        colorizer.border = chalk.hex(this.neutralColors[\"300\"]); // Borders\n\n        return colorizer;\n    }\n\n    private createTransformers(): TagTransformers<TagName> {\n        return {\n            b: (text) => this.colorizer.text.bold(text),\n            d: (text) => this.colorizer.text.dim(text),\n            i: (text) => this.colorizer.text.italic(text),\n            u: (text) => this.colorizer.text.underline(text),\n            s: (text) => this.colorizer.text.strikethrough(text),\n            primary: (text) => this.colorizer.primary(text),\n            secondary: (text) => this.colorizer.secondary(text),\n            success: (text) => this.colorizer.success(text),\n            warning: (text) => this.colorizer.warning(text),\n            danger: (text) => this.colorizer.danger(text),\n            error: (text) => this.colorizer.danger(text), // alias for danger\n            muted: (text) => this.colorizer.textMuted(text),\n            subtle: (text) => this.colorizer.textSecondary(text),\n            text: (text) => this.colorizer.text(text),\n            \"dim-text\": (text) => this.colorizer.textSecondary(text),\n            r: (text) => chalk.reset(text),\n        };\n    }\n\n    get colorize() {\n        return this.colorizer;\n    }\n\n    get theme(): Theme {\n        return this.currentTheme;\n    }\n\n    get neutrals(): Record<string, string> {\n        return this.neutralColors;\n    }\n\n    setTheme(name: string, persistent: boolean = false): void {\n        if (!isValidTheme(name)) {\n            throw new Error(`Invalid theme name: ${name}`);\n        }\n        this.currentTheme = getTheme(name);\n        this.updateAll();\n\n        // Save the current theme to the global environment\n        process.env.AXOGEN_THEME = this.currentTheme.name;\n        if (!persistent) {\n            return; // No need to save if not persistent\n        }\n        setPersistentEnvVariable(\"AXOGEN_THEME\", this.currentTheme.name).catch(\n            () => {\n                console.warn(\"Failed to save theme to persistent environment\");\n            }\n        );\n    }\n\n    colorOutput(enable: boolean, persistent: boolean = false): void {\n        this.enableColor = enable;\n        this.updateAll();\n\n        // Save the color output setting to the global environment\n        process.env.AXOGEN_ENABLE_COLOR = String(enable);\n        if (!persistent) {\n            return; // No need to save if not persistent\n        }\n        setPersistentEnvVariable(\"AXOGEN_ENABLE_COLOR\", String(enable)).catch(\n            () => {\n                console.warn(\n                    \"Failed to save color output setting to persistent environment\"\n                );\n            }\n        );\n    }\n\n    private updateAll(): void {\n        this.neutralColors = generateNeutralScale(\n            this.currentTheme.colors.neutralLight,\n            this.currentTheme.colors.neutralDark\n        );\n        this.colorizer = this.createColorizer(this.currentTheme);\n        this.transformers = this.createTransformers();\n    }\n\n    /**\n     * Get a specific color from the current theme\n     */\n    getColor(colorName: ThemeColorName): string {\n        const theme = this.currentTheme;\n\n        if (colorName.startsWith(\"neutral_\")) {\n            const level = colorName.split(\"_\")[1];\n            return this.neutralColors[level] || theme.colors.neutralLight;\n        }\n\n        return theme.colors[colorName as keyof typeof theme.colors] as string;\n    }\n\n    /**\n     * Get the full generated neutral scale\n     */\n    getNeutralScale(): Record<string, string> {\n        return {...this.neutralColors};\n    }\n\n    format(xml: string): string {\n        return parseAndTransform(xml, this.transformers);\n    }\n}\n\nexport const themeManager = new ThemeManager();\n","import {type TagName, themeManager} from \"./themes.ts\";\n\n/**\n * Error types for structured error reporting\n */\nexport interface ValidationError {\n    field?: string;\n    message: string;\n    type?: \"missing\" | \"type\" | \"invalid\";\n}\n\nexport interface SecurityIssue {\n    path?: string;\n    key?: string;\n    reason: string;\n    confidence: \"high\" | \"medium\" | \"low\";\n    category?: string;\n}\n\nexport interface SecurityResult {\n    totalCount: number;\n    highConfidenceCount: number;\n    mediumConfidenceCount: number;\n    lowConfidenceCount: number;\n    secretsFound: SecurityIssue[];\n}\n\nexport interface LogIssuesConfig {\n    title: string;\n    subtitle: string; // already formatted\n    levels: Record<\n        string,\n        {\n            color: TagName;\n        }\n    >;\n    items: {\n        level: string;\n        key: string; // accent color\n        description: string; // normal color\n        extra?: string; // the thing in the brackets, muted color\n    }[];\n    footer: string;\n    footerIcon: string;\n    footerIconColor: TagName;\n}\n\nfunction format(xml: string): string {\n    return themeManager.format(xml);\n}\n\nfunction logF(xml: string): void {\n    console.log(format(xml));\n}\n\n/**\n * Main logger API - Clean and simple\n */\nexport const logger = {\n    logF: (xml: string): void => logF(xml),\n    format: (xml: string): string => format(xml),\n\n    // Basic logging (maps to consola built-ins)\n    success: (message: string) => logF(`<success>${message}</success>`),\n    error: (message: string) => logF(`<error>${message}</error>`),\n    warn: (message: string) => logF(`<warning>${message}</warning>`),\n    info: (message: string) => logF(`  <primary>${message}</primary>`),\n    debug: (message: string) => console.debug(message),\n    trace: (message: string) => console.trace(message),\n\n    // Custom log types - use direct console with theming\n    file: (message: string, path?: string) => {\n        logF(\n            `  <primary>+</primary> ${message} <subtle>${path ? `[${path}]` : \"\"}</subtle>`\n        );\n    },\n\n    command: (message: string) => {\n        logF(`<secondary>></secondary> ${message}`);\n    },\n\n    start: (message: string) => {\n        logF(`<primary>➤</primary> ${message}`);\n    },\n\n    /**\n     * Unified logger for all types of issues\n     */\n    logIssues: (logConfig: LogIssuesConfig) => {\n        console.log(); // Breathing room\n\n        // Title line\n        logF(`<error>${logConfig.title}</error>`);\n\n        // Subtitle line\n        console.log(`  ${logConfig.subtitle}`);\n        console.log();\n\n        // Group items by level\n        const groupedItems = logConfig.items.reduce(\n            (groups, item) => {\n                if (!groups[item.level]) {\n                    groups[item.level] = [];\n                }\n                groups[item.level].push(item);\n                return groups;\n            },\n            {} as Record<string, typeof logConfig.items>\n        );\n\n        // Display groups\n        Object.entries(groupedItems).forEach(([levelName, items]) => {\n            const levelConfig = logConfig.levels[levelName];\n            if (!levelConfig) return;\n\n            // Level header\n            logF(\n                `  <${levelConfig.color}>${levelName.toUpperCase()}</${levelConfig.color}> <subtle>${items.length}</subtle>`\n            );\n\n            // Level items\n            items.forEach((item) => {\n                const itemIcon = `<${levelConfig.color}>•</${levelConfig.color}>`;\n                const key = `<primary>${item.key}</primary>`;\n                const description = item.description;\n                const extra = `<subtle>${item.extra ? ` [${item.extra}]` : \"\"}</subtle>`;\n                logF(`    ${itemIcon} ${key}: ${description}${extra}`);\n            });\n            console.log();\n        });\n\n        // Footer\n        logF(\n            `  <${logConfig.footerIconColor}>${logConfig.footerIcon}</${logConfig.footerIconColor}>${logConfig.footerIcon ? \" \" : \"\"}${logConfig.footer}`\n        );\n        console.log();\n    },\n\n    /**\n     * Log validation errors in a clean, grouped format similar to security scan\n     */\n    validation: (title: string, errors: ValidationError[]) => {\n        // Group errors by type\n        const missing = errors.filter((e) => e.type === \"missing\");\n        const typeErrors = errors.filter((e) => e.type === \"type\");\n        const invalid = errors.filter((e) => e.type === \"invalid\" || !e.type);\n\n        // Generate subtitle\n        const summaryParts = [\n            missing.length > 0 && `${missing.length} missing`,\n            typeErrors.length > 0 &&\n                `${typeErrors.length} type error${typeErrors.length !== 1 ? \"s\" : \"\"}`,\n            invalid.length > 0 &&\n                `${invalid.length} invalid value${invalid.length !== 1 ? \"s\" : \"\"}`,\n        ].filter(Boolean);\n\n        const subtitle = format(\n            `<subtle>Found:</subtle> ${errors.length} validation error${errors.length !== 1 ? \"s\" : \"\"} <subtle>${summaryParts.join(\" • \")}</subtle>`\n        );\n\n        // Map to items\n        const items = errors.map((error) => ({\n            level:\n                error.type === \"missing\"\n                    ? \"missing\"\n                    : error.type === \"type\"\n                      ? \"type-error\"\n                      : \"invalid\",\n            key: error.field || \"field\",\n            description: error.message,\n            extra: undefined,\n        }));\n\n        logger.logIssues({\n            title: `✗ ${title}`,\n            subtitle,\n            levels: {\n                missing: {color: \"error\"},\n                \"type-error\": {color: \"error\"},\n                invalid: {color: \"error\"},\n            },\n            items,\n            footer: \"Fix these issues before continuing\",\n            footerIcon: \"!\",\n            footerIconColor: \"warning\",\n        });\n    },\n\n    /**\n     * Log security issues with appropriate severity grouping\n     */\n    security: (title: string, result: SecurityResult) => {\n        // Generate subtitle\n        const summaryParts = [\n            result.highConfidenceCount > 0 &&\n                `${result.highConfidenceCount} high risk`,\n            result.mediumConfidenceCount > 0 &&\n                `${result.mediumConfidenceCount} medium risk`,\n            result.lowConfidenceCount > 0 &&\n                `${result.lowConfidenceCount} low risk`,\n        ].filter(Boolean);\n\n        const subtitle = format(\n            `<subtle>Found:</subtle> ${result.totalCount} potential secret${result.totalCount !== 1 ? \"s\" : \"\"} <subtle>${summaryParts.join(\" • \")}</subtle>`\n        );\n\n        // Map to items\n        const items = result.secretsFound.map((issue) => ({\n            level: issue.confidence,\n            key: issue.path || issue.key || \"unknown\",\n            description: issue.reason,\n            extra: issue.category,\n        }));\n\n        logger.logIssues({\n            title: `⚠ ${title}`,\n            subtitle,\n            levels: {\n                high: {color: \"error\"},\n                medium: {color: \"warning\"},\n                low: {color: \"muted\"},\n            },\n            items,\n            footer: \"Generation blocked for security\",\n            footerIcon: \"✗\",\n            footerIconColor: \"error\",\n        });\n    },\n\n    header: (title: string) => {\n        logF(\n            `<secondary>${\"═\".repeat(Math.max(title.length + 4, 40))}</secondary>`\n        );\n        logF(`<secondary>  ${title.toUpperCase()}  </secondary>`);\n        logF(\n            `<secondary>${\"═\".repeat(Math.max(title.length + 4, 40))}</secondary>`\n        );\n    },\n\n    divider: (text?: string) => {\n        const barLength = 40;\n\n        if (text) {\n            // Minus 2 for padding\n            const remaining = barLength - 2 - text.length;\n            const padding = Math.max(0, Math.floor(remaining / 2));\n            const line = \"─\".repeat(padding);\n            const equalizer = remaining % 2 === 0 ? \"\" : \"─\";\n            logF(`<subtle>${line} ${text} ${line}${equalizer}</subtle>`);\n        } else {\n            logF(`<subtle>${\"─\".repeat(barLength)}</subtle>`);\n        }\n    },\n\n    bullet: (text: string, level: number = 1) => {\n        const indent = \"  \".repeat(level);\n        logF(`<subtle>${indent}•</subtle> ${text}`);\n    },\n\n    list: (items: string[], level: number = 1) => {\n        const indent = \"  \".repeat(level);\n        items.forEach((item) => {\n            logF(`<subtle>${indent}•</subtle> ${item}`);\n        });\n    },\n\n    /**\n     * Command prefix for live output\n     */\n    prefix: {\n        command: (name: string, message: string) => {\n            logF(`<secondary>[${name}]</secondary> ${message}`);\n        },\n    },\n};\n","import {liveExec} from \"./\";\nimport type {\n    ZodAnyCommand,\n    ZodAxogenConfig,\n    ZodGroupCommand,\n    ZodGlobalCommandContext,\n    ZodSimpleCommandContext,\n    ZodAdvancedCommand,\n    AxogenConfig,\n} from \"../config/types\";\nimport {zodIssuesToErrors} from \"../utils/helpers.ts\";\nimport * as z from \"zod\";\nimport {\n    getCommandHelp,\n    isAdvancedCommand,\n    isGroupCommand,\n    isStringCommand,\n    validateArgsWithZod,\n    validateOptionsWithZod,\n} from \"./zod_helpers.ts\";\nimport {logger} from \"../utils/console/logger.ts\";\n\nexport interface RunCommandOptions {\n    config: ZodAxogenConfig;\n    global: ZodGlobalCommandContext;\n    args?: string[];\n    options?: Record<string, any>;\n}\n\nexport interface CommandResult {\n    success: boolean;\n    error?: string;\n    exitCode?: number;\n}\n\nexport class CommandRunner {\n    async executeCommand(\n        command: ZodAnyCommand,\n        options: RunCommandOptions\n    ): Promise<CommandResult> {\n        try {\n            if (typeof command === \"string\") {\n                return await this.executeStringCommand(command, options);\n            }\n\n            if (typeof command === \"function\") {\n                return await this.executeFunctionCommand(command, options);\n            }\n\n            if (isStringCommand(command)) {\n                return await this.executeStringCommand(\n                    command.command,\n                    options\n                );\n            }\n\n            if (isAdvancedCommand(command)) {\n                return await this.executeAdvancedCommand(command, options);\n            }\n\n            if (isGroupCommand(command)) {\n                return await this.executeCommandGroup(command, options);\n            }\n\n            return {success: false, error: \"Unknown command type\"};\n        } catch (error) {\n            return {\n                success: false,\n                error: error instanceof Error ? error.message : String(error),\n            };\n        }\n    }\n\n    private async executeStringCommand(\n        command: string,\n        options: RunCommandOptions\n    ): Promise<CommandResult> {\n        try {\n            const prefix = this.extractCommandPrefix(command);\n\n            const result = await liveExec(command, {\n                cwd: options.global.cwd,\n                env: options.global.process_env,\n                outputPrefix: prefix,\n            });\n\n            return {\n                success: result.exitCode === 0,\n                exitCode: result.exitCode,\n                error:\n                    result.exitCode !== 0\n                        ? `Command exited with code ${result.exitCode}`\n                        : undefined,\n            };\n        } catch (error) {\n            return {\n                success: false,\n                error: error instanceof Error ? error.message : String(error),\n            };\n        }\n    }\n\n    private extractCommandPrefix(command: string): string {\n        // Handle common patterns and extract meaningful command names\n\n        // Remove leading/trailing whitespace\n        const trimmed = command.trim();\n\n        // Handle cd && command patterns - extract the actual command after &&\n        const cdAndMatch = trimmed.match(/cd\\s+[^&]*&&\\s*(.+)/);\n        if (cdAndMatch) {\n            return this.extractCommandPrefix(cdAndMatch[1]);\n        }\n\n        // Handle pipe chains - use the first command\n        const pipeMatch = trimmed.match(/^([^|]+)/);\n        const baseCommand = pipeMatch ? pipeMatch[1].trim() : trimmed;\n\n        // Extract the first word (the actual command)\n        const words = baseCommand.split(/\\s+/);\n        const firstWord = words[0];\n\n        // Handle common command patterns\n        const commandMappings: Record<string, string> = {\n            npm: \"NPM\",\n            yarn: \"YARN\",\n            pnpm: \"PNPM\",\n            bun: \"BUN\",\n            cargo: \"CARGO\",\n            rustc: \"RUST\",\n            node: \"NODE\",\n            deno: \"DENO\",\n            python: \"PYTHON\",\n            python3: \"PYTHON\",\n            pip: \"PIP\",\n            git: \"GIT\",\n            docker: \"DOCKER\",\n            kubectl: \"K8S\",\n            helm: \"HELM\",\n            terraform: \"TF\",\n            aws: \"AWS\",\n            gcloud: \"GCP\",\n            az: \"AZURE\",\n            make: \"MAKE\",\n            cmake: \"CMAKE\",\n            gcc: \"GCC\",\n            clang: \"CLANG\",\n            go: \"GO\",\n            javac: \"JAVA\",\n            java: \"JAVA\",\n            mvn: \"MAVEN\",\n            gradle: \"GRADLE\",\n            dotnet: \"DOTNET\",\n            nuget: \"NUGET\",\n            composer: \"PHP\",\n            php: \"PHP\",\n            ruby: \"RUBY\",\n            gem: \"GEM\",\n            bundle: \"BUNDLE\",\n            rails: \"RAILS\",\n            mix: \"ELIXIR\",\n            iex: \"ELIXIR\",\n            stack: \"HASKELL\",\n            cabal: \"HASKELL\",\n            swift: \"SWIFT\",\n            xcodebuild: \"XCODE\",\n            flutter: \"FLUTTER\",\n            dart: \"DART\",\n        };\n\n        // Check if we have a mapping for this command\n        const mapped = commandMappings[firstWord.toLowerCase()];\n        if (mapped) {\n            return mapped;\n        }\n\n        // Handle executable paths (./something, ../something, /something)\n        if (firstWord.includes(\"/\")) {\n            const basename = firstWord.split(\"/\").pop() || firstWord;\n            return basename.toUpperCase();\n        }\n\n        // Handle commands with extensions (.exe, .sh, etc.)\n        const withoutExt = firstWord.replace(/\\.(exe|sh|bat|cmd|ps1)$/i, \"\");\n\n        // Return uppercased first word, max 8 chars for readability\n        return withoutExt.toUpperCase().slice(0, 8);\n    }\n\n    private async executeFunctionCommand(\n        fn: Function,\n        options: RunCommandOptions\n    ): Promise<CommandResult> {\n        try {\n            const context: ZodSimpleCommandContext = {\n                global: options.global,\n                config: options.config,\n            };\n\n            await fn(context);\n            return {success: true};\n        } catch (error) {\n            return {\n                success: false,\n                error: error instanceof Error ? error.message : String(error),\n            };\n        }\n    }\n\n    private async executeAdvancedCommand(\n        command: ZodAdvancedCommand,\n        options: RunCommandOptions\n    ): Promise<CommandResult> {\n        try {\n            const validatedOptions = command.options\n                ? validateOptionsWithZod(options.options || {}, command.options)\n                : {};\n\n            const validatedArgs = command.args\n                ? validateArgsWithZod(options.args || [], command.args)\n                : {};\n\n            await command.exec({\n                global: options.global,\n                config: options.config as AxogenConfig,\n                options: validatedOptions,\n                args: validatedArgs,\n            });\n            return {success: true};\n        } catch (error) {\n            if (error instanceof z.ZodError) {\n                const validationErrors = zodIssuesToErrors(error.issues);\n\n                logger.validation(\n                    `Command validation failed: ${command.help || \"No description\"}`,\n                    validationErrors\n                );\n\n                return {success: false, error: \"Validation failed\"};\n            }\n            return {\n                success: false,\n                error: error instanceof Error ? error.message : String(error),\n            };\n        }\n    }\n\n    private async executeCommandGroup(\n        group: ZodGroupCommand,\n        options: RunCommandOptions\n    ): Promise<CommandResult> {\n        const [subcommandName, ...remainingArgs] = options.args || [];\n\n        if (!subcommandName) {\n            if (group.help) {\n                logger.info(group.help);\n                console.log(); // Add spacing\n            }\n\n            logger.info(\"Available subcommands:\");\n            console.log(); // Add spacing\n\n            // Create a table-like display for commands\n            const commandRows: Array<{key: string; value: string}> = [];\n\n            for (const [name, command] of Object.entries(group.commands)) {\n                const help = getCommandHelp(command);\n                commandRows.push({\n                    key: name,\n                    value: help || \"No description available\",\n                });\n            }\n\n            if (commandRows.length > 0) {\n                const maxKeyLength = Math.max(\n                    ...commandRows.map((row) => row.key.length)\n                );\n\n                commandRows.forEach((row) => {\n                    const paddedKey = row.key.padEnd(maxKeyLength, \" \");\n                    logger.bullet(`${paddedKey} - ${row.value}`);\n                });\n            } else {\n                logger.bullet(\"No subcommands available\");\n            }\n\n            return {success: true};\n        }\n\n        const subcommand = group.commands[subcommandName];\n        if (!subcommand) {\n            return {\n                success: false,\n                error: `Subcommand \"${subcommandName}\" not found`,\n            };\n        }\n\n        return this.executeCommand(subcommand, {\n            ...options,\n            args: remainingArgs,\n        });\n    }\n}\n\nexport const commandRunner = new CommandRunner();\n","/**\n * Version utilities for Axogen.\n * Provides version information that works in both development and production builds.\n */\n\ndeclare const __VERSION__: string;\n\n/**\n * Get the current version of Axogen.\n * In production builds, uses the injected version string.\n * In development, falls back to reading package.json or returns \"dev\".\n * @returns The version string\n */\nexport function getVersion(): string {\n    // In build: replaced by actual version\n    // In development: fallback to reading package.json\n    if (typeof __VERSION__ !== \"undefined\") {\n        return __VERSION__;\n    }\n\n    // Fallback for development (when not built)\n    try {\n        const packageJson = require(\"../package.json\");\n        return packageJson.version;\n    } catch {\n        return \"dev\";\n    }\n}\n","/**\n * This file is solely for the UX of defining targets in Axogen.\n * It provides a set of types and factory functions to create target definitions\n * for various data formats and configurations.\n * It is not used to verify the structure of the config file.\n * This is where zod_targets.ts comes in.\n * It only exports some types and the factory functions.\n * Target Types for usage in this package should be used from\n * the zod_targets.ts file.\n */\n\nimport * as z from \"zod\";\nimport Hjson from \"hjson\";\nimport * as js_ini from \"ini\";\nimport * as js_yaml from \"js-yaml\";\nimport type {UnparseConfig} from \"papaparse\";\nimport type {XmlBuilderOptions} from \"fast-xml-parser\";\nimport type {ZodBackupTarget} from \"./zod_targets.ts\";\n\n// ---- Target Options ----\n\n/**\n * Options for JSON target generation.\n * Uses standard JSON.stringify options for formatting control.\n */\nexport type JsonTargetOptions = {\n    replacer?: (number | string)[] | null;\n    space?: string | number;\n};\n\n/**\n * Options for JSON5 target generation.\n * JSON5 allows comments, trailing commas, and other relaxed JSON syntax.\n */\nexport type Json5TargetOptions = {\n    space?: string | number | null;\n};\n\n/**\n * Options for JSONC target generation.\n * JSONC is JSON with comments, commonly used in VS Code configuration files.\n */\nexport interface JsoncTargetOptions {\n    replacer?: (number | string)[] | null;\n    space?: string | number;\n}\n\n/**\n * Options for HJSON target generation.\n * HJSON is a human-friendly JSON format with comments and relaxed syntax.\n * References Hjson.SerializeOptions from the hjson library.\n */\nexport type HjsonTargetOptions = Hjson.SerializeOptions;\n\n/**\n * Options for YAML target generation.\n * References js-yaml DumpOptions for YAML serialization control.\n */\nexport type YamlTargetOptions = js_yaml.DumpOptions;\n\n/**\n * Options for INI target generation.\n * References ini library EncodeOptions for INI file formatting.\n */\nexport type IniTargetOptions = js_ini.EncodeOptions;\n\n/**\n * Options for Properties target generation.\n * Java-style properties file formatting options.\n */\nexport type PropertiesTargetOptions = {\n    align?: boolean;\n    sort?: boolean;\n    whitespace?: boolean;\n    platform?: string;\n};\n\n/**\n * Options for XML target generation.\n * References fast-xml-parser XmlBuilderOptions for XML formatting control.\n */\nexport type XmlTargetOptions = XmlBuilderOptions;\n\n/**\n * Options for CSV target generation.\n * References papaparse UnparseConfig for CSV formatting and output control.\n */\nexport type CsvTargetOptions = UnparseConfig;\n\n/**\n * Supported template engines for template target generation.\n */\nexport const templateTargetEngines = [\n    \"nunjucks\",\n    \"handlebars\",\n    \"mustache\",\n] as const;\n\n/**\n * Union type of supported template engine names.\n */\nexport type TemplateTargetEngine = (typeof templateTargetEngines)[number];\n\n// ---- Target Definitions ----\n\n/**\n * Utility type to infer the TypeScript type from a Zod schema.\n */\ntype InferVariablesType<TSchema> =\n    TSchema extends z.ZodType<infer T> ? T : TSchema;\n\n/**\n * Utility type to validate that variables match the expected schema type.\n */\ntype ValidateSchemaVariables<TSchema, TVariables> =\n    TSchema extends z.ZodType<infer Expected>\n        ? TVariables extends Expected\n            ? TVariables\n            : never\n        : TVariables;\n\n/**\n * Base interface for all target definitions.\n * Provides common properties shared across all target types.\n */\ninterface BaseTargetDefinition<TType extends string, TSchema, TVariables> {\n    /** The type of target format to generate */\n    type: TType;\n    /** Output file path where the target will be written */\n    path: string;\n    /** Optional Zod schema for validating variables */\n    schema?: TSchema;\n    /** Variables to use in target generation */\n    variables: TVariables;\n    /** Whether to generate metadata alongside the target */\n    generate_meta?: boolean;\n    /** Condition to determine if target should be generated */\n    condition?: boolean;\n    /** Backup Options. Defaults to false */\n    backup?: ZodBackupTarget;\n}\n\n/**\n * Target definition for JSON file generation.\n * Generates standard JSON files with optional formatting options.\n */\nexport interface JsonTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"json\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {\n    options?: JsonTargetOptions;\n}\n\n/**\n * Target definition for JSON5 file generation.\n * Generates JSON5 files with extended syntax support.\n */\nexport interface Json5TargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"json5\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {\n    options?: Json5TargetOptions;\n}\n\n/**\n * Target definition for JSONC file generation.\n * Generates JSON with comments for configuration files.\n */\nexport interface JsoncTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"jsonc\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {\n    options?: JsoncTargetOptions;\n}\n\n/**\n * Target definition for HJSON file generation.\n * Generates human-friendly JSON with comments and relaxed syntax.\n */\nexport interface HjsonTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"hjson\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {\n    options?: HjsonTargetOptions;\n}\n\n/**\n * Target definition for YAML file generation.\n * Generates YAML files with configurable formatting options.\n */\nexport interface YamlTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"yaml\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {\n    options?: YamlTargetOptions;\n}\n\n/**\n * Target definition for TOML file generation.\n * Generates TOML configuration files.\n */\nexport interface TomlTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"toml\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {}\n\n/**\n * Target definition for INI file generation.\n * Generates INI configuration files with formatting options.\n */\nexport interface IniTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"ini\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {\n    options?: IniTargetOptions;\n}\n\n/**\n * Target definition for Properties file generation.\n * Generates Java-style properties files.\n */\nexport interface PropertiesTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"properties\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {\n    options?: PropertiesTargetOptions;\n}\n\n/**\n * Target definition for environment variable file generation.\n * Generates .env files for environment variable configuration.\n */\nexport interface EnvTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"env\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {}\n\n/**\n * Target definition for XML file generation.\n * Generates XML files with configurable formatting options.\n */\nexport interface XmlTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"xml\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {\n    options?: XmlTargetOptions;\n}\n\n/**\n * Target definition for CSV file generation.\n * Generates CSV files with configurable formatting and output options.\n */\nexport interface CsvTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"csv\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {\n    options?: CsvTargetOptions;\n}\n\n/**\n * Target definition for CSON file generation.\n * Generates CoffeeScript Object Notation files.\n */\nexport interface CsonTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"cson\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {}\n\n/**\n * Target definition for template-based file generation.\n * Generates files using template engines like Nunjucks, Handlebars, or Mustache.\n */\nexport interface TemplateTargetDefinition<\n    TSchema = any,\n    TVariables = InferVariablesType<TSchema>,\n> extends BaseTargetDefinition<\n        \"template\",\n        TSchema,\n        ValidateSchemaVariables<TSchema, TVariables>\n    > {\n    /** Template engine to use for rendering */\n    engine: TemplateTargetEngine;\n    /** Template path to render with variables */\n    template: string;\n}\n\n/**\n * Mapping of target type strings to their corresponding target definition interfaces.\n */\nexport interface TargetTypeMap {\n    json: JsonTargetDefinition;\n    json5: Json5TargetDefinition;\n    jsonc: JsoncTargetDefinition;\n    hjson: HjsonTargetDefinition;\n    yaml: YamlTargetDefinition;\n    toml: TomlTargetDefinition;\n    ini: IniTargetDefinition;\n    properties: PropertiesTargetDefinition;\n    env: EnvTargetDefinition;\n    xml: XmlTargetDefinition;\n    csv: CsvTargetDefinition;\n    cson: CsonTargetDefinition;\n    template: TemplateTargetDefinition;\n}\n\n/**\n * Union type of all possible target definitions.\n */\nexport type AnyTarget = TargetTypeMap[keyof TargetTypeMap];\n\n// Factory functions for better DX\n\n/**\n * Creates a JSON target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the JSON target\n * @param config.path - The output file path where the JSON will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as JSON, validated against schema\n * @param config.options - JSON formatting options (replacer, space)\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns JSON target definition with schema validation\n */\nexport function json<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    options?: JsonTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): JsonTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates a JSON target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the JSON target\n * @param config.path - The output file path where the JSON will be written\n * @param config.variables - Variables to serialize as JSON\n * @param config.options - JSON formatting options (replacer, space)\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns JSON target definition without schema validation\n */\nexport function json<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    options?: JsonTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): JsonTargetDefinition<TVariables, TVariables>;\n\nexport function json(config: any): any {\n    return {type: \"json\", ...config};\n}\n\n/**\n * Creates a JSON5 target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the JSON5 target\n * @param config.path - The output file path where the JSON5 will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as JSON5, validated against schema\n * @param config.options - JSON5 formatting options\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns JSON5 target definition with schema validation\n */\nexport function json5<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    options?: Json5TargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): Json5TargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates a JSON5 target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the JSON5 target\n * @param config.path - The output file path where the JSON5 will be written\n * @param config.variables - Variables to serialize as JSON5\n * @param config.options - JSON5 formatting options\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns JSON5 target definition without schema validation\n */\nexport function json5<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    options?: Json5TargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): Json5TargetDefinition<TVariables, TVariables>;\n\nexport function json5(config: any): any {\n    return {type: \"json5\", ...config};\n}\n\n/**\n * Creates a JSONC target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the JSONC target\n * @param config.path - The output file path where the JSONC will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as JSONC, validated against schema\n * @param config.options - JSONC formatting options (replacer, space)\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns JSONC target definition with schema validation\n */\nexport function jsonc<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    options?: JsoncTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): JsoncTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates a JSONC target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the JSONC target\n * @param config.path - The output file path where the JSONC will be written\n * @param config.variables - Variables to serialize as JSONC\n * @param config.options - JSONC formatting options (replacer, space)\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns JSONC target definition without schema validation\n */\nexport function jsonc<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    options?: JsoncTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): JsoncTargetDefinition<TVariables, TVariables>;\n\nexport function jsonc(config: any): any {\n    return {type: \"jsonc\", ...config};\n}\n\n/**\n * Creates an HJSON target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the HJSON target\n * @param config.path - The output file path where the HJSON will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as HJSON, validated against schema\n * @param config.options - HJSON serialization options\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns HJSON target definition with schema validation\n */\nexport function hjson<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    options?: HjsonTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): HjsonTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates an HJSON target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the HJSON target\n * @param config.path - The output file path where the HJSON will be written\n * @param config.variables - Variables to serialize as HJSON\n * @param config.options - HJSON serialization options\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns HJSON target definition without schema validation\n */\nexport function hjson<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    options?: HjsonTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): HjsonTargetDefinition<TVariables, TVariables>;\n\nexport function hjson(config: any): any {\n    return {type: \"hjson\", ...config};\n}\n\n/**\n * Creates a YAML target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the YAML target\n * @param config.path - The output file path where the YAML will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as YAML, validated against schema\n * @param config.options - YAML dump options for formatting control\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns YAML target definition with schema validation\n */\nexport function yaml<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    options?: YamlTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): YamlTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates a YAML target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the YAML target\n * @param config.path - The output file path where the YAML will be written\n * @param config.variables - Variables to serialize as YAML\n * @param config.options - YAML dump options for formatting control\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns YAML target definition without schema validation\n */\nexport function yaml<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    options?: YamlTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): YamlTargetDefinition<TVariables, TVariables>;\n\nexport function yaml(config: any): any {\n    return {type: \"yaml\", ...config};\n}\n\n/**\n * Creates a TOML target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the TOML target\n * @param config.path - The output file path where the TOML will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as TOML, validated against schema\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns TOML target definition with schema validation\n */\nexport function toml<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): TomlTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates a TOML target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the TOML target\n * @param config.path - The output file path where the TOML will be written\n * @param config.variables - Variables to serialize as TOML\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns TOML target definition without schema validation\n */\nexport function toml<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): TomlTargetDefinition<TVariables, TVariables>;\n\nexport function toml(config: any): any {\n    return {type: \"toml\", ...config};\n}\n\n/**\n * Creates an INI target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the INI target\n * @param config.path - The output file path where the INI will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as INI, validated against schema\n * @param config.options - INI encoding options for formatting control\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns INI target definition with schema validation\n */\nexport function ini<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    options?: IniTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): IniTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates an INI target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the INI target\n * @param config.path - The output file path where the INI will be written\n * @param config.variables - Variables to serialize as INI\n * @param config.options - INI encoding options for formatting control\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns INI target definition without schema validation\n */\nexport function ini<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    options?: IniTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): IniTargetDefinition<TVariables, TVariables>;\n\nexport function ini(config: any): any {\n    return {type: \"ini\", ...config};\n}\n\n/**\n * Creates a Properties target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the Properties target\n * @param config.path - The output file path where the Properties will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as Properties, validated against schema\n * @param config.options - Properties formatting options (align, sort, whitespace, platform)\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns Properties target definition with schema validation\n */\nexport function properties<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    options?: PropertiesTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): PropertiesTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates a Properties target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the Properties target\n * @param config.path - The output file path where the Properties will be written\n * @param config.variables - Variables to serialize as Properties\n * @param config.options - Properties formatting options (align, sort, whitespace, platform)\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns Properties target definition without schema validation\n */\nexport function properties<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    options?: PropertiesTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): PropertiesTargetDefinition<TVariables, TVariables>;\n\nexport function properties(config: any): any {\n    return {type: \"properties\", ...config};\n}\n\n/**\n * Creates an environment variable target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the environment variable target\n * @param config.path - The output file path where the .env file will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as environment variables, validated against schema\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns Environment variable target definition with schema validation\n */\nexport function env<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): EnvTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates an environment variable target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the environment variable target\n * @param config.path - The output file path where the .env file will be written\n * @param config.variables - Variables to serialize as environment variables\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns Environment variable target definition without schema validation\n */\nexport function env<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): EnvTargetDefinition<TVariables, TVariables>;\n\nexport function env(config: any): any {\n    return {type: \"env\", ...config};\n}\n\n/**\n * Creates an XML target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the XML target\n * @param config.path - The output file path where the XML will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as XML, validated against schema\n * @param config.options - XML builder options for formatting control\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns XML target definition with schema validation\n */\nexport function xml<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    options?: XmlTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): XmlTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates an XML target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the XML target\n * @param config.path - The output file path where the XML will be written\n * @param config.variables - Variables to serialize as XML\n * @param config.options - XML builder options for formatting control\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns XML target definition without schema validation\n */\nexport function xml<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    options?: XmlTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): XmlTargetDefinition<TVariables, TVariables>;\n\nexport function xml(config: any): any {\n    return {type: \"xml\", ...config};\n}\n\n/**\n * Creates a CSV target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the CSV target\n * @param config.path - The output file path where the CSV will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Array of variables to serialize as CSV, validated against schema\n * @param config.options - CSV unparse options for formatting control\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns CSV target definition with schema validation\n */\nexport function csv<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    options?: CsvTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): CsvTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates a CSV target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the CSV target\n * @param config.path - The output file path where the CSV will be written\n * @param config.variables - Array of variables to serialize as CSV\n * @param config.options - CSV unparse options for formatting control\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns CSV target definition without schema validation\n */\nexport function csv<TVariables extends Record<string, any>[]>(config: {\n    path: string;\n    variables: TVariables;\n    options?: CsvTargetOptions;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): CsvTargetDefinition<TVariables, TVariables>;\n\nexport function csv(config: any): any {\n    return {type: \"csv\", ...config};\n}\n\n/**\n * Creates a CSON target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the CSON target\n * @param config.path - The output file path where the CSON will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to serialize as CSON, validated against schema\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns CSON target definition with schema validation\n */\nexport function cson<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): CsonTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates a CSON target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the CSON target\n * @param config.path - The output file path where the CSON will be written\n * @param config.variables - Variables to serialize as CSON\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns CSON target definition without schema validation\n */\nexport function cson<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): CsonTargetDefinition<TVariables, TVariables>;\n\nexport function cson(config: any): any {\n    return {type: \"cson\", ...config};\n}\n\n/**\n * Creates a template target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the template target\n * @param config.path - The output file path where the rendered template will be written\n * @param config.schema - Zod schema for validating variables\n * @param config.variables - Variables to use in template rendering, validated against schema\n * @param config.engine - Template engine to use (nunjucks, handlebars, or mustache)\n * @param config.template - Template path to render with variables\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns Template target definition with schema validation\n */\nexport function template<TSchema extends z.ZodType>(config: {\n    path: string;\n    schema: TSchema;\n    variables: z.infer<TSchema>;\n    engine: TemplateTargetEngine;\n    template: string;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): TemplateTargetDefinition<TSchema, z.infer<TSchema>>;\n\n/**\n * Creates a template target definition.\n * Supports both schema-validated and plain object configurations.\n * @param config - Configuration object for the template target\n * @param config.path - The output file path where the rendered template will be written\n * @param config.variables - Variables to use in template rendering\n * @param config.engine - Template engine to use (nunjucks, handlebars, or mustache)\n * @param config.template - Template path to render with variables\n * @param config.generate_meta - Whether to generate metadata alongside the target\n * @param config.condition - Condition to determine if target should be generated\n * @param config.backup - Backup Options. Defaults to false\n * @returns Template target definition without schema validation\n */\nexport function template<TVariables extends Record<string, any>>(config: {\n    path: string;\n    variables: TVariables;\n    engine: TemplateTargetEngine;\n    template: string;\n    generate_meta?: boolean;\n    condition?: boolean;\n    backup?: ZodBackupTarget;\n}): TemplateTargetDefinition<TVariables, TVariables>;\n\nexport function template(config: any): any {\n    return {type: \"template\", ...config};\n}\n","/**\n * Where targets.ts is for DX, this file is for Zod validation.\n * It defines the actual Zod schemas for the targets and validates them.\n * It is used to ensure that the targets are correctly defined and can be\n * used in the Axogen config.\n */\n\nimport * as z from \"zod\";\nimport {\n    type Json5TargetOptions,\n    type JsonTargetOptions,\n    type JsoncTargetOptions,\n    type HjsonTargetOptions,\n    type YamlTargetOptions,\n    type IniTargetOptions,\n    type PropertiesTargetOptions,\n    type XmlTargetOptions,\n    type CsvTargetOptions,\n    templateTargetEngines,\n} from \"./targets.ts\";\n\nexport const backupTargetOptionsSchema = z.object({\n    enabled: z\n        .boolean()\n        .describe(\"Whether to create a backup of the target file\")\n        .default(true)\n        .optional(),\n    folder: z\n        .string()\n        .describe(\n            \"The path to the backup folder. Defaults to '.axogen/backup/{{path}}'\"\n        )\n        .default(\"\")\n        .optional(),\n    maxBackups: z\n        .number()\n        .describe(\"The maximum number of backups to keep. Defaults to 5\")\n        .default(5)\n        .optional(),\n    onConflict: z\n        .enum([\"overwrite\", \"increment\", \"skip\", \"fail\"])\n        .describe(\n            \"What to do when a backup file already exists. Defaults to 'increment'. Mostly not used since filenames are ISO timestamped (so pretty unique).\"\n        )\n        .default(\"increment\")\n        .optional(),\n});\nexport const backupTargetSchema = z\n    .union([\n        z.boolean().describe(\"Whether to create a backup of the target file\"),\n        backupTargetOptionsSchema,\n    ])\n    .default(false);\n\nconst baseTargetSchema = z.object({\n    path: z.string().describe(\"The output path for the target\"),\n    schema: z\n        .custom<z.ZodType>((val) => {\n            return (\n                val &&\n                typeof val === \"object\" &&\n                (\"_def\" in val || \"_zod\" in val)\n            );\n        })\n        .describe(\"The Schema to validate the variables against\")\n        .optional(),\n    generate_meta: z\n        .boolean()\n        .describe(\"Whether to generate metadata for the target\")\n        .default(false),\n    condition: z\n        .boolean()\n        .describe(\"Condition to determine if the target should be generated\")\n        .default(true)\n        .optional(),\n    backup: backupTargetSchema.optional(),\n});\n\nexport const jsonTargetSchema = baseTargetSchema.extend({\n    type: z\n        .literal(\"json\")\n        .describe(\"The type of the target, in this case JSON\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n    options: z.custom<JsonTargetOptions>().optional(),\n});\n\nexport const json5TargetSchema = baseTargetSchema.extend({\n    type: z\n        .literal(\"json5\")\n        .describe(\"The type of the target, in this case JSON5\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n    options: z.custom<Json5TargetOptions>().optional(),\n});\n\nexport const jsoncTargetSchema = baseTargetSchema.extend({\n    type: z\n        .literal(\"jsonc\")\n        .describe(\"The type of the target, in this case JSONC\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n    options: z.custom<JsoncTargetOptions>().optional(),\n});\n\nexport const hjsonTargetSchema = baseTargetSchema.extend({\n    type: z\n        .literal(\"hjson\")\n        .describe(\"The type of the target, in this case HJSON\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n    options: z.custom<HjsonTargetOptions>().optional(),\n});\n\nexport const yamlTargetSchema = baseTargetSchema.extend({\n    type: z\n        .literal(\"yaml\")\n        .describe(\"The type of the target, in this case YAML\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n    options: z.custom<YamlTargetOptions>().optional(),\n});\n\nexport const tomlTargetSchema = baseTargetSchema.extend({\n    type: z\n        .literal(\"toml\")\n        .describe(\"The type of the target, in this case TOML\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n});\n\nexport const iniTargetSchema = baseTargetSchema.extend({\n    type: z.literal(\"ini\").describe(\"The type of the target, in this case INI\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n    options: z.custom<IniTargetOptions>().optional(),\n});\n\nexport const propertiesTargetSchema = baseTargetSchema.extend({\n    type: z\n        .literal(\"properties\")\n        .describe(\"The type of the target, in this case Properties\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n    options: z.custom<PropertiesTargetOptions>().optional(),\n});\n\nexport const envTargetSchema = baseTargetSchema.extend({\n    type: z\n        .literal(\"env\")\n        .describe(\"The type of the target, in this case Environment Variables\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n});\n\nexport const xmlTargetSchema = baseTargetSchema.extend({\n    type: z.literal(\"xml\").describe(\"The type of the target, in this case XML\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n    options: z.custom<XmlTargetOptions>().optional(),\n});\n\nexport const csvTargetSchema = baseTargetSchema.extend({\n    type: z.literal(\"csv\").describe(\"The type of the target, in this case CSV\"),\n    variables: z\n        .array(z.record(z.string(), z.any()))\n        .describe(\"Variables to be used in the target\"),\n    options: z.custom<CsvTargetOptions>().optional(),\n});\n\nexport const csonTargetSchema = baseTargetSchema.extend({\n    type: z\n        .literal(\"cson\")\n        .describe(\"The type of the target, in this case CSON\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n});\n\nexport const templateTargetSchema = baseTargetSchema.extend({\n    type: z\n        .literal(\"template\")\n        .describe(\"The type of the target, in this case Template\"),\n    engine: z\n        .enum(templateTargetEngines)\n        .describe(\"The template engine to use\")\n        .default(\"nunjucks\"),\n    template: z.string().describe(\"The template string or file path\"),\n    variables: z\n        .record(z.string(), z.any())\n        .describe(\"Variables to be used in the target\"),\n});\n\nexport const anyTargetSchema = z\n    .discriminatedUnion(\"type\", [\n        jsonTargetSchema,\n        json5TargetSchema,\n        jsoncTargetSchema,\n        hjsonTargetSchema,\n        yamlTargetSchema,\n        tomlTargetSchema,\n        iniTargetSchema,\n        propertiesTargetSchema,\n        envTargetSchema,\n        xmlTargetSchema,\n        csvTargetSchema,\n        csonTargetSchema,\n        templateTargetSchema,\n    ])\n    .check((ctx) => {\n        if (ctx.value.schema && ctx.value.variables) {\n            const result = ctx.value.schema.safeParse(ctx.value.variables);\n            if (!result.success) {\n                result.error.issues.forEach((issue) => {\n                    ctx.issues.push({\n                        code: \"custom\",\n                        message: issue.message,\n                        path: [\"variables\", ...issue.path],\n                        input: ctx.value,\n                    });\n                });\n            }\n        }\n    });\n\nexport const allTargetsSchema = z\n    .record(z.string(), anyTargetSchema)\n    .describe(\n        \"A record of targets where the key is the target name and the value is the target definition\"\n    );\n\n// ---- Exported Types ----\n\nexport type ZodBackupTargetOptions = z.infer<typeof backupTargetOptionsSchema>;\nexport type ZodBackupTarget = z.infer<typeof backupTargetSchema>;\n\nexport type ZodAnyTarget = z.infer<typeof anyTargetSchema>;\nexport type ZodAllTargets = z.infer<typeof allTargetsSchema>;\n\nexport type ZodJsonTarget = z.infer<typeof jsonTargetSchema>;\nexport type ZodJson5Target = z.infer<typeof json5TargetSchema>;\nexport type ZodJsoncTarget = z.infer<typeof jsoncTargetSchema>;\nexport type ZodHjsonTarget = z.infer<typeof hjsonTargetSchema>;\nexport type ZodYamlTarget = z.infer<typeof yamlTargetSchema>;\nexport type ZodTomlTarget = z.infer<typeof tomlTargetSchema>;\nexport type ZodIniTarget = z.infer<typeof iniTargetSchema>;\nexport type ZodPropertiesTarget = z.infer<typeof propertiesTargetSchema>;\nexport type ZodEnvTarget = z.infer<typeof envTargetSchema>;\nexport type ZodXmlTarget = z.infer<typeof xmlTargetSchema>;\nexport type ZodCsvTarget = z.infer<typeof csvTargetSchema>;\nexport type ZodCsonTarget = z.infer<typeof csonTargetSchema>;\nexport type ZodTemplateTarget = z.infer<typeof templateTargetSchema>;\n","/**\n * Where commands.ts is for DX, this file is for Zod validation.\n * It defines the actual Zod schemas for the commands and validates them.\n * It is used to ensure that the commands are correctly defined and can be\n * used in the Axogen config.\n */\n\nimport * as z from \"zod\";\nimport type {\n    AnyCommand,\n    CommandFunction,\n    SimpleCommandFunction,\n} from \"./commands.ts\";\nimport {axogenConfigSchema} from \"./zod_config.ts\";\n\nconst helpSchema = z\n    .string()\n    .describe(\"A description of the command, used for help output\")\n    .optional();\n\nexport const globalCommandContextSchema = z.object({\n    cwd: z.string().describe(\"The current working directory\"),\n    process_env: z\n        .record(z.string(), z.any())\n        .describe(\"The process environment variables\"),\n    verbose: z\n        .boolean()\n        .describe(\"Whether the command is running in verbose mode\"),\n});\n\nexport const zodTypeSchema = z.custom<z.ZodType>((val) => {\n    return val && typeof val === \"object\" && (\"_zod\" in val || \"_def\" in val);\n});\n\nexport const commandContextSchema = z.object({\n    options: z\n        .record(z.string(), zodTypeSchema)\n        .describe(\"The options for the command, as a record of Zod types\")\n        .default({}),\n    args: z\n        .record(z.string(), zodTypeSchema)\n        .describe(\"The arguments for the command, as a record of Zod types\")\n        .default({}),\n    global: globalCommandContextSchema.describe(\n        \"The global context for the command, including cwd and env\"\n    ),\n    config: axogenConfigSchema,\n});\n\nexport const simpleCommandContextSchema = z.object({\n    global: globalCommandContextSchema.describe(\n        \"The global context for the command, including cwd and env\"\n    ),\n    config: axogenConfigSchema,\n});\n\nexport const stringCommandSchema = z.object({\n    type: z\n        .literal(\"string\")\n        .describe(\"The type of the command, in this case a string command\"),\n    help: helpSchema,\n    command: z.string().describe(\"The command to be executed, as a string\"),\n});\n\nexport const groupCommandSchema = z.object({\n    type: z\n        .literal(\"group\")\n        .describe(\"The type of the command, in this case a group command\"),\n    help: helpSchema,\n    commands: z\n        .record(\n            z.string(),\n            z.lazy(() => anyCommandSchema)\n        )\n        .describe(\"The commands in the group\"),\n});\n\nexport const advancedCommandSchema = z.object({\n    type: z\n        .literal(\"advanced\")\n        .describe(\"The type of the command, in this case an advanced command\"),\n    help: helpSchema,\n    options: z\n        .record(z.string(), zodTypeSchema)\n        .describe(\"The options for the command, as a record of Zod types\")\n        .default({}),\n    args: z\n        .record(z.string(), zodTypeSchema)\n        .describe(\"The arguments for the command, as a record of Zod types\")\n        .default({}),\n    exec: z\n        .custom<CommandFunction>((val) => {\n            return typeof val === \"function\";\n        })\n        .describe(\"The function to execute for the command\"),\n});\n\nexport const simpleStringCommandSchema = z\n    .string()\n    .describe(\"A simple command string, which is executed directly\");\nexport const simpleCommandFunctionSchema = z\n    .custom<SimpleCommandFunction>((val) => {\n        return typeof val === \"function\";\n    })\n    .describe(\"A simple command function that takes a context object\");\n\nexport const anyCommandSchema: z.ZodType<AnyCommand> = z.union([\n    simpleStringCommandSchema,\n    simpleCommandFunctionSchema,\n    stringCommandSchema,\n    groupCommandSchema,\n    advancedCommandSchema,\n]);\n\n// --- Exported Types ---\n\nexport type ZodAnyCommand = z.infer<typeof anyCommandSchema>;\n\nexport type ZodStringCommand = z.infer<typeof stringCommandSchema>;\nexport type ZodGroupCommand = z.infer<typeof groupCommandSchema>;\nexport type ZodAdvancedCommand = z.infer<typeof advancedCommandSchema>;\nexport type ZodSimpleStringCommand = z.infer<typeof simpleStringCommandSchema>;\nexport type ZodSimpleCommandFunction = z.infer<\n    typeof simpleCommandFunctionSchema\n>;\n\nexport type ZodCommandContext = z.infer<typeof commandContextSchema>;\nexport type ZodSimpleCommandContext = z.infer<\n    typeof simpleCommandContextSchema\n>;\nexport type ZodGlobalCommandContext = z.infer<\n    typeof globalCommandContextSchema\n>;\n","import * as z from \"zod\";\nimport {allTargetsSchema} from \"./zod_targets.ts\";\nimport {anyCommandSchema} from \"./zod_commands.ts\";\n\nexport const axogenConfigSchema = z.object({\n    type: z.literal(\"AxogenConfig\").optional(),\n    watch: z.array(z.string()).optional(),\n    targets: allTargetsSchema.optional(),\n    commands: z.record(z.string(), anyCommandSchema).optional(),\n});\n\nexport type ZodAxogenConfig = z.infer<typeof axogenConfigSchema>;\n","/**\n * This file is solely for the UX of defining commands in Axogen.\n * It is not used for Zod validation. (similar to targets.ts)\n */\n\nimport * as z from \"zod\";\nimport type {AnyTarget} from \"./targets.ts\";\nimport type {AxogenConfig} from \"./config.ts\";\n\nexport type TypeOptions = Record<string, z.ZodType>;\nexport type TypeArgs = Record<string, z.ZodType>;\nexport type TypeTargets = Record<string, AnyTarget>;\n\n// ---- Command Contexts ----\n\nexport interface GlobalCommandContext {\n    cwd: string;\n    process_env: Record<string, any>;\n    verbose: boolean;\n}\n\nexport interface CommandContext<\n    TOptions extends TypeOptions = TypeOptions,\n    TArgs extends TypeArgs = TypeArgs,\n    TTargets extends TypeTargets = TypeTargets,\n> {\n    options: {\n        [K in keyof TOptions]: z.infer<TOptions[K]>;\n    };\n    args: {\n        [K in keyof TArgs]: z.infer<TArgs[K]>;\n    };\n    global: GlobalCommandContext;\n    config: AxogenConfig<TTargets>;\n}\n\nexport interface SimpleCommandContext<\n    TTargets extends TypeTargets = TypeTargets,\n> {\n    global: GlobalCommandContext;\n    config: AxogenConfig<TTargets>;\n}\n\n// ---- Command Functions ----\n\n/**\n * THIS IS ONLY FOR ZOD VALIDATION.\n * Dont use this export in your code.\n */\nexport type CommandFunction<\n    TOptions extends TypeOptions = TypeOptions,\n    TArgs extends TypeArgs = TypeArgs,\n    TTargets extends TypeTargets = TypeTargets,\n> = (\n    context: CommandContext<TOptions, TArgs, TTargets>\n) => void | Promise<void>;\n\n/**\n * THIS IS ONLY FOR ZOD VALIDATION.\n * Dont use this export in your code.\n */\nexport type SimpleCommandFunction<TTargets extends TypeTargets = TypeTargets> =\n    (context: SimpleCommandContext<TTargets>) => void | Promise<void>;\n\n// ---- Command Definitions ----\n\ninterface CommandDefinition<TType extends string> {\n    type: TType;\n    help?: string;\n}\n\nexport interface StringCommandDefinition extends CommandDefinition<\"string\"> {\n    command: string;\n}\n\nexport interface GroupCommandDefinition<\n    TOptions extends TypeOptions = TypeOptions,\n    TArgs extends TypeArgs = TypeArgs,\n    TTargets extends TypeTargets = TypeTargets,\n> extends CommandDefinition<\"group\"> {\n    commands: Record<string, AnyCommand<TOptions, TArgs, TTargets>>;\n}\n\nexport interface AdvancedCommandDefinition<\n    TOptions extends TypeOptions = TypeOptions,\n    TArgs extends TypeArgs = TypeArgs,\n    TTargets extends TypeTargets = TypeTargets,\n> extends CommandDefinition<\"advanced\"> {\n    options?: TOptions;\n    args?: TArgs;\n    exec: CommandFunction<TOptions, TArgs, TTargets>;\n}\n\nexport type AnyCommand<\n    TOptions extends TypeOptions = TypeOptions,\n    TArgs extends TypeArgs = TypeArgs,\n    TTargets extends TypeTargets = TypeTargets,\n> =\n    | string\n    | SimpleCommandFunction<TTargets>\n    | StringCommandDefinition\n    | GroupCommandDefinition<TOptions, TArgs, TTargets>\n    | AdvancedCommandDefinition<TOptions, TArgs, TTargets>\n    | AdvancedCommandDefinition<any, any, TTargets>;\n\n// ---- Factory Functions ----\n\n/**\n * Create a string command definition that executes a shell command.\n * @param config - Configuration object for the command\n * @param config.command - Shell command string to execute\n * @param config.help - Optional help text describing what the command does\n * @returns String command definition\n */\nexport function cmd(config: {\n    command: string;\n    help?: string;\n}): StringCommandDefinition;\n\n/**\n * Create an advanced command definition with TypeScript execution function.\n * Supports typed options, arguments, and full access to configuration and context.\n * @param config - Configuration object for the advanced command\n * @param config.exec - TypeScript function to execute when command is run. Receives full context including args, options, and config\n * @param config.options - Optional Zod schema definitions for command-line options (flags like --verbose)\n * @param config.args - Optional Zod schema definitions for command arguments (positional parameters)\n * @param config.help - Optional help text describing what the command does\n * @returns Advanced command definition with full type safety\n */\nexport function cmd<\n    TOptions extends TypeOptions = TypeOptions,\n    TArgs extends TypeArgs = TypeArgs,\n    TTargets extends TypeTargets = TypeTargets,\n>(config: {\n    exec: CommandFunction<TOptions, TArgs, TTargets>;\n    options?: TOptions;\n    args?: TArgs;\n    help?: string;\n}): AdvancedCommandDefinition<TOptions, TArgs, TTargets>;\n\nexport function cmd<\n    TOptions extends TypeOptions = TypeOptions,\n    TArgs extends TypeArgs = TypeArgs,\n    TTargets extends TypeTargets = TypeTargets,\n>(\n    config:\n        | {command: string; help?: string}\n        | {\n              exec: CommandFunction<TOptions, TArgs, TTargets>;\n              options?: TOptions;\n              args?: TArgs;\n              help?: string;\n          }\n): AnyCommand<TOptions, TArgs, TTargets> {\n    // Case 1: String command\n    if (\"command\" in config) {\n        return {\n            type: \"string\",\n            command: config.command,\n            help: config.help,\n        };\n    }\n\n    // Case 2 Function commands\n    if (\"exec\" in config) {\n        return {\n            type: \"advanced\",\n            exec: config.exec as CommandFunction<TOptions, TArgs, TTargets>,\n            options: config.options,\n            args: config.args,\n            help: config.help,\n        };\n    }\n\n    // Should never reach here given the type constraints\n    throw new Error(\"Invalid configuration object passed to cmd function\");\n}\n\n/**\n * Create a group command definition that contains sub-commands.\n * Allows organizing related commands under a common namespace.\n * @param config - Configuration object for the command group\n * @param config.commands - Record of sub-commands that belong to this group\n * @param config.help - Optional help text describing what the command group does\n * @returns Group command definition containing the specified sub-commands\n */\nexport function group<\n    TOptions extends TypeOptions,\n    TArgs extends TypeArgs,\n    TTargets extends TypeTargets,\n>(config: {\n    commands: Record<string, AnyCommand<TOptions, TArgs, TTargets>>;\n    help?: string;\n}): GroupCommandDefinition<TOptions, TArgs, TTargets> {\n    return {\n        type: \"group\",\n        commands: config.commands,\n        help: config.help,\n    };\n}\n","/**\n * Main configuration API for Axogen.\n * This module provides the primary `defineConfig` function and re-exports all configuration types.\n */\n\nimport {type AnyTarget, json} from \"./targets.ts\";\nimport * as z from \"zod\";\nimport {axogenConfigSchema, type ZodAxogenConfig} from \"./zod_config.ts\";\nimport {deepMerge, zodIssuesToErrors} from \"../../utils/helpers.ts\";\nimport type {AxogenConfig} from \"./config.ts\";\nimport {cmd} from \"./commands.ts\";\nimport {logger} from \"../../utils/console/logger.ts\";\n\n/**\n * Define and validate an Axogen configuration.\n * This is the primary function users call to create their configuration.\n * Provides full type safety and validation using Zod schemas.\n * @param config - The Axogen configuration object with targets and commands\n * @returns Validated configuration object\n * @throws Error if configuration validation fails\n */\nexport function defineConfig<TTargets extends Record<string, AnyTarget>>(\n    config: AxogenConfig<TTargets>\n): ZodAxogenConfig {\n    try {\n        return axogenConfigSchema.parse({\n            ...config,\n            type: \"AxogenConfig\",\n        });\n    } catch (error) {\n        if (error instanceof z.ZodError) {\n            const validationErrors = zodIssuesToErrors(error.issues);\n\n            logger.validation(\n                `Configuration validation failed`,\n                validationErrors\n            );\n\n            logger.logF(\n                `<primary>💡</primary> <d>Check your config file structure.</d>`\n            );\n\n            throw new Error(\"Configuration validation failed\");\n        }\n\n        throw new Error(\n            `Failed to load config: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n\n/**\n * Extend an existing Axogen configuration with additional targets or commands.\n * NOTE: This function merges the source configuration with the extension,\n * in case of conflicts, the extension will ***OVERRIDE*** the source.\n * @param source - The source Axogen configuration to extend\n * @param extension - The Axogen configuration extension to merge with the source\n */\nexport function extendConfig<TTargets extends Record<string, AnyTarget>>(\n    source: ZodAxogenConfig,\n    extension: AxogenConfig<TTargets>\n) {\n    let validatedSource: ZodAxogenConfig;\n    try {\n        validatedSource = axogenConfigSchema.parse(source);\n    } catch (error) {\n        if (error instanceof z.ZodError) {\n            const validationErrors = zodIssuesToErrors(error.issues);\n\n            logger.validation(\n                `Configuration validation of source failed`,\n                validationErrors\n            );\n\n            logger.logF(\n                `<primary>💡</primary> <d>Check your config file structure.</d>`\n            );\n\n            throw new Error(\"Configuration validation of source failed\");\n        }\n\n        throw new Error(\n            `Failed to load source config: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n\n    const validatedExtension = defineConfig(extension);\n    const mergedConfig = deepMerge(validatedSource, validatedExtension);\n\n    try {\n        // Check one last time if the merged config is valid\n        return axogenConfigSchema.parse(mergedConfig);\n    } catch (error) {\n        if (error instanceof z.ZodError) {\n            const validationErrors = zodIssuesToErrors(error.issues);\n\n            logger.validation(\n                `Merged configuration validation failed`,\n                validationErrors\n            );\n\n            logger.logF(\n                `<primary>💡</primary> <d>Check your config file structure.</d>`\n            );\n\n            throw new Error(\"Merged configuration validation failed\");\n        }\n\n        throw new Error(\n            `Failed to validate merged config: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n\n// re-export the types for convenience\nexport type * from \"./config.ts\";\nexport * from \"./config.ts\";\nexport type * from \"./zod_config.ts\";\nexport * from \"./zod_config.ts\";\nexport type * from \"./targets.ts\";\nexport * from \"./targets.ts\";\nexport type * from \"./zod_targets.ts\";\nexport * from \"./zod_targets.ts\";\nexport type * from \"./commands.ts\";\nexport * from \"./commands.ts\";\nexport type * from \"./zod_commands.ts\";\nexport * from \"./zod_commands.ts\";\n\n// Testing defineConfig (build will fail if tsc errors this)\n\nconst conf = defineConfig({\n    targets: {\n        someService: json({\n            path: \"output/someService.json\",\n            schema: z.object({\n                someVar: z.string().describe(\"A variable for the service\"),\n            }),\n            variables: {\n                someVar: \"value\",\n            },\n        }),\n    },\n    commands: {\n        someCommand: cmd({\n            command: \"echo 'Hello, World!'\",\n            help: \"A simple command that echoes 'Hello, World!'\",\n        }),\n        simple: \"test\",\n        simpleFunction: (context) => {\n            context.config.targets!.someService.variables.someVar;\n        },\n        complex: cmd({\n            help: \"A complex command with options and arguments\",\n            args: {\n                someArg: z.number().describe(\"An argument for the command\"),\n            },\n            exec: (context) => {\n                const arg = context.args.someArg;\n                const someVar =\n                    context.config.targets!.someService.variables.someVar;\n            },\n        }),\n    },\n});\n","/**\n * Configuration loading utilities for Axogen.\n * This module provides functionality to load, validate, and process configuration files\n * from TypeScript or JavaScript sources using Jiti for TypeScript compilation.\n */\n\nimport {resolve, join} from \"node:path\";\nimport {access, constants} from \"node:fs/promises\";\nimport {z} from \"zod\";\nimport {createJiti} from \"jiti\";\nimport {zodIssuesToErrors} from \"../utils/helpers.ts\";\nimport {\n    type AxogenConfig,\n    axogenConfigSchema,\n    type ConfigInput,\n    type ZodAxogenConfig,\n} from \"./types\";\nimport {logger} from \"../utils/console/logger.ts\";\n\n/**\n * Configuration loader class that handles loading and validation of Axogen configuration files.\n * Supports both TypeScript and JavaScript configuration files with automatic compilation.\n */\nexport class ConfigLoader {\n    /**\n     * Load configuration from a file with validation and type checking.\n     * Automatically detects file type and uses appropriate loader (Jiti for TypeScript).\n     * @param configPath - Optional path to configuration file. If not provided, searches for default config files\n     * @returns Promise that resolves to validated Axogen configuration\n     * @throws Error if configuration file cannot be found, loaded, or fails validation\n     */\n    async load(configPath?: string): Promise<ZodAxogenConfig> {\n        const resolvedPath = await this.resolveConfigPath(configPath);\n\n        try {\n            let configInput: ConfigInput;\n\n            if (resolvedPath.endsWith(\".ts\")) {\n                // Use jiti for TypeScript files\n                const jiti = await this.createJitiLoader();\n                configInput = await jiti.import(resolvedPath, {default: true});\n            } else {\n                // Use dynamic import for JS files\n                const module = await import(resolvedPath);\n                configInput = module.default;\n            }\n\n            if (!configInput || typeof configInput !== \"object\") {\n                throw new Error(\n                    `Config file at ${resolvedPath} must export a default object`\n                );\n            }\n\n            if (\n                \"_type\" in configInput &&\n                configInput._type === \"AxogenConfig\"\n            ) {\n                // If the config is already in AxogenConfig format, return it directly\n                return configInput as ZodAxogenConfig;\n            }\n\n            const axogenKeys = [\"watch\", \"targets\", \"commands\"];\n            const inputKeys = Object.keys(configInput);\n\n            if (!axogenKeys.some((key) => inputKeys.includes(key))) {\n                // If the input is just variables, convert it to AxogenConfig format\n                configInput = {\n                    targets: {\n                        env: {\n                            path: \".env\",\n                            type: \"env\",\n                            variables: configInput as Record<string, unknown>,\n                        },\n                    },\n                } as AxogenConfig;\n            }\n\n            // Validate the config using Zod - let Zod handle all validation and errors\n            return {\n                ...axogenConfigSchema.parse(configInput),\n                _type: \"AxogenConfig\",\n            } as ZodAxogenConfig;\n        } catch (error) {\n            if (error instanceof z.ZodError) {\n                const validationErrors = zodIssuesToErrors(error.issues);\n\n                logger.validation(\n                    `Configuration validation failed for file: <subtle>${resolvedPath}</subtle>`,\n                    validationErrors\n                );\n\n                logger.logF(\n                    `<primary>💡</primary> <d>Check your config file structure.</d>`\n                );\n\n                throw new Error(\"Configuration validation failed\");\n            }\n\n            throw new Error(\n                `Failed to load config from ${resolvedPath}: ${\n                    error instanceof Error ? error.message : String(error)\n                }`\n            );\n        }\n    }\n\n    /**\n     * Create Jiti loader for TypeScript files with appropriate configuration.\n     * Configures Jiti with optimal settings for TypeScript compilation and caching.\n     * @returns Promise that resolves to configured Jiti instance\n     * @throws Error if Jiti is not available\n     */\n    private async createJitiLoader() {\n        try {\n            return createJiti(import.meta.url, {\n                interopDefault: true,\n                tryNative: false,\n                sourceMaps: true,\n                fsCache: true,\n                moduleCache: true,\n                transformModules: [\"@axonotes/axogen\"],\n                extensions: [\".ts\", \".js\"],\n            });\n        } catch (error) {\n            throw new Error(\n                `jiti is required to load TypeScript config files. Install it with: bun add jiti`\n            );\n        }\n    }\n\n    /**\n     * Find and resolve the configuration file path.\n     * If no path is provided, searches for default configuration files in the current working directory.\n     * @param configPath - Optional explicit path to configuration file\n     * @returns Promise that resolves to the absolute path of the configuration file\n     * @throws Error if no configuration file can be found\n     */\n    private async resolveConfigPath(configPath?: string): Promise<string> {\n        if (configPath) {\n            return resolve(configPath);\n        }\n\n        // Default config file names to look for\n        const defaultNames = [\n            \"axogen.config.ts\",\n            \"axogen.config.js\",\n            \"axogen.ts\",\n            \"axogen.js\",\n            \"config.ts\",\n            \"config.js\",\n        ];\n\n        const cwd = process.cwd();\n\n        for (const name of defaultNames) {\n            const fullPath = join(cwd, name);\n            try {\n                await access(fullPath, constants.F_OK);\n                return fullPath;\n            } catch {\n                // File doesn't exist, continue\n            }\n        }\n\n        const formattedNames = defaultNames.join(\", \");\n        throw new Error(`No config file found. Looking for: ${formattedNames}`);\n    }\n}\n\n/** Singleton instance of ConfigLoader for convenient access */\nexport const configLoader = new ConfigLoader();\n\n/**\n * Load configuration - convenience function that uses the singleton ConfigLoader instance.\n * This is the primary function users should call to load their Axogen configuration.\n * @param configPath - Optional path to configuration file\n * @returns Promise that resolves to validated Axogen configuration\n */\nexport async function loadConfig(\n    configPath?: string\n): Promise<ZodAxogenConfig> {\n    return configLoader.load(configPath);\n}\n","/**\n * Variable preprocessing utilities for target generation.\n * Provides format-specific processors that handle complex JavaScript values\n * like BigInt, Symbol, Date, RegExp, Map, Set, and circular references,\n * converting them to serializable representations for various output formats.\n */\n\n/**\n * Base variable processor that handles complex JavaScript values and converts them\n * to serializable formats. Provides circular reference detection and format-agnostic\n * processing of primitives, objects, arrays, and special types.\n */\nexport class VariableProcessor {\n    /** WeakSet for tracking visited objects to detect circular references */\n    protected seen = new WeakSet();\n\n    /**\n     * Main entry point for processing variables.\n     * Resets the circular reference tracker and processes the input value.\n     *\n     * @param variables - Variables object to process and make serializable\n     * @returns Processed variables with complex types converted to serializable forms\n     */\n    process(variables: Record<string, any>): any {\n        this.seen = new WeakSet(); // Reset for each processing\n        return this.processValue(variables);\n    }\n\n    /**\n     * Recursively processes a value of any type, handling primitives, objects, and special cases.\n     * Converts non-serializable types to appropriate representations based on their type.\n     *\n     * @param value - Value of any type to process\n     * @returns Processed value suitable for serialization\n     */\n    protected processValue(value: any): any {\n        // Handle null and undefined\n        if (value === null || value === undefined) {\n            return value;\n        }\n\n        // Handle primitives\n        if (\n            typeof value === \"string\" ||\n            typeof value === \"number\" ||\n            typeof value === \"boolean\"\n        ) {\n            return value;\n        }\n\n        // Handle BigInt\n        if (typeof value === \"bigint\") {\n            return this.handleBigInt(value);\n        }\n\n        // Handle Symbol\n        if (typeof value === \"symbol\") {\n            return `Symbol(${value.description || \"\"})`;\n        }\n\n        // Handle functions\n        if (typeof value === \"function\") {\n            return `[Function: ${value.name || \"anonymous\"}]`;\n        }\n\n        // Handle objects and arrays\n        if (typeof value === \"object\") {\n            return this.handleObject(value);\n        }\n\n        // Fallback\n        return String(value);\n    }\n\n    protected handleBigInt(value: bigint): any {\n        return value.toString();\n    }\n\n    protected handleObject(value: object): any {\n        // Check for circular references\n        if (this.seen.has(value)) {\n            return \"[Circular Reference]\";\n        }\n        this.seen.add(value);\n\n        try {\n            // Handle arrays\n            if (Array.isArray(value)) {\n                return value.map((item) => this.processValue(item));\n            }\n\n            // Handle Date objects\n            if (value instanceof Date) {\n                return this.handleDate(value);\n            }\n\n            // Handle other special types\n            if (value instanceof RegExp) return this.handleRegExp(value);\n            if (value instanceof Error) return this.handleError(value);\n            if (value instanceof Map) return this.handleMap(value);\n            if (value instanceof Set) return this.handleSet(value);\n            if (value instanceof URL) return this.handleURL(value);\n            if (typeof Buffer !== \"undefined\" && value instanceof Buffer)\n                return this.handleBuffer(value);\n\n            // Handle plain objects\n            const processed: Record<string, any> = {};\n            for (const [key, val] of Object.entries(value)) {\n                try {\n                    const processedVal = this.processValue(val);\n                    if (processedVal !== undefined) {\n                        processed[key] = processedVal;\n                    }\n                } catch (error) {\n                    processed[key] = `[Error: ${error}]`;\n                }\n            }\n            return processed;\n        } finally {\n            this.seen.delete(value);\n        }\n    }\n\n    protected handleDate(value: Date): any {\n        return value.toISOString();\n    }\n\n    protected handleRegExp(value: RegExp): any {\n        return {_type: \"RegExp\", source: value.source, flags: value.flags};\n    }\n\n    protected handleError(value: Error): any {\n        return {_type: \"Error\", name: value.name, message: value.message};\n    }\n\n    protected handleMap(value: Map<any, any>): any {\n        const obj: Record<string, any> = {};\n        for (const [k, v] of value.entries()) {\n            const key = typeof k === \"string\" ? k : String(k);\n            obj[key] = this.processValue(v);\n        }\n        return obj;\n    }\n\n    protected handleSet(value: Set<any>): any {\n        return Array.from(value).map((v) => this.processValue(v));\n    }\n\n    protected handleURL(value: URL): any {\n        return value.toString();\n    }\n\n    protected handleBuffer(value: Buffer): any {\n        return {_type: \"Buffer\", data: value.toString(\"base64\")};\n    }\n}\n\n// Specialized processors for different formats\n\nexport class JsonVariableProcessor extends VariableProcessor {\n    protected handleBigInt(value: bigint): any {\n        return value.toString() + \"n\";\n    }\n\n    protected handleDate(value: Date): any {\n        return value.toISOString();\n    }\n\n    protected handleRegExp(value: RegExp): any {\n        return {_type: \"RegExp\", source: value.source, flags: value.flags};\n    }\n}\n\nexport class Json5VariableProcessor extends VariableProcessor {\n    protected handleBigInt(value: bigint): any {\n        return value.toString() + \"n\";\n    }\n\n    protected handleDate(value: Date): any {\n        return value.toISOString();\n    }\n\n    protected handleRegExp(value: RegExp): any {\n        return {_type: \"RegExp\", source: value.source, flags: value.flags};\n    }\n\n    protected handleURL(value: URL): any {\n        return {\n            href: value.href,\n            origin: value.origin,\n            pathname: value.pathname,\n            search: value.search,\n            hash: value.hash,\n        };\n    }\n}\n\nexport class HjsonVariableProcessor extends VariableProcessor {\n    protected handleBigInt(value: bigint): any {\n        return value.toString();\n    }\n\n    protected handleDate(value: Date): any {\n        return value.toISOString();\n    }\n\n    protected handleRegExp(value: RegExp): any {\n        return value.toString();\n    }\n}\n\nexport class TomlVariableProcessor extends VariableProcessor {\n    protected handleBigInt(value: bigint): any {\n        try {\n            return Number(value);\n        } catch {\n            return value.toString() + \"n\";\n        }\n    }\n\n    protected handleDate(value: Date): any {\n        return value; // TOML supports dates natively\n    }\n}\n\nexport class IniVariableProcessor extends VariableProcessor {\n    protected handleBigInt(value: bigint): any {\n        return value.toString();\n    }\n\n    protected handleDate(value: Date): any {\n        return value.toISOString();\n    }\n\n    protected handleRegExp(value: RegExp): any {\n        return value.toString();\n    }\n\n    protected handleMap(value: Map<any, any>): any {\n        // Flatten map for ini format\n        const obj: Record<string, any> = {};\n        for (const [k, v] of value.entries()) {\n            const key = typeof k === \"string\" ? k : String(k);\n            obj[key] = this.processValue(v);\n        }\n        return this.flattenObject(obj);\n    }\n\n    private flattenObject(\n        obj: Record<string, any>,\n        prefix = \"\"\n    ): Record<string, any> {\n        const flattened: Record<string, any> = {};\n\n        for (const [key, value] of Object.entries(obj)) {\n            const newKey = prefix ? `${prefix}.${key}` : key;\n\n            if (value && typeof value === \"object\" && !Array.isArray(value)) {\n                Object.assign(flattened, this.flattenObject(value, newKey));\n            } else {\n                flattened[newKey] = value;\n            }\n        }\n\n        return flattened;\n    }\n}\n\nexport class PropertiesVariableProcessor extends VariableProcessor {\n    protected handleBigInt(value: bigint): any {\n        return value.toString();\n    }\n\n    protected handleDate(value: Date): any {\n        return value.toISOString();\n    }\n\n    protected handleRegExp(value: RegExp): any {\n        return value.toString(); // Convert to string representation\n    }\n\n    protected handleError(value: Error): any {\n        return `${value.name}: ${value.message}`;\n    }\n\n    protected handleBuffer(value: Buffer): any {\n        return value.toString(\"base64\");\n    }\n\n    protected handleURL(value: URL): any {\n        return value.toString();\n    }\n}\n\nexport class EnvVariableProcessor extends VariableProcessor {\n    protected handleBigInt(value: bigint): any {\n        return value.toString();\n    }\n\n    protected handleDate(value: Date): any {\n        return value.toISOString();\n    }\n}\n\nexport class XmlVariableProcessor extends VariableProcessor {\n    protected handleBigInt(value: bigint): any {\n        return value.toString();\n    }\n\n    protected handleDate(value: Date): any {\n        return value.toISOString();\n    }\n\n    protected handleRegExp(value: RegExp): any {\n        return {\n            \"@_type\": \"RegExp\",\n            source: value.source,\n            flags: value.flags,\n        };\n    }\n\n    protected handleMap(value: Map<any, any>): any {\n        const obj: Record<string, any> = {};\n        for (const [k, v] of value.entries()) {\n            const key = typeof k === \"string\" ? k : String(k);\n            obj[key] = this.processValue(v);\n        }\n        return obj;\n    }\n\n    protected handleURL(value: URL): any {\n        return {\n            \"@_type\": \"URL\",\n            href: value.href,\n            origin: value.origin,\n            pathname: value.pathname,\n        };\n    }\n}\n\nexport class CsvVariableProcessor extends VariableProcessor {\n    protected handleBigInt(value: bigint): any {\n        return value.toString();\n    }\n\n    protected handleDate(value: Date): any {\n        return value.toISOString();\n    }\n\n    protected handleRegExp(value: RegExp): any {\n        return value.toString();\n    }\n\n    protected handleMap(value: Map<any, any>): any {\n        // Convert map to flat object for CSV\n        const obj: Record<string, any> = {};\n        for (const [k, v] of value.entries()) {\n            const key = typeof k === \"string\" ? k : String(k);\n            const processedValue = this.processValue(v);\n            obj[key] =\n                typeof processedValue === \"object\"\n                    ? JSON.stringify(processedValue)\n                    : processedValue;\n        }\n        return obj;\n    }\n\n    protected handleURL(value: URL): any {\n        return value.toString();\n    }\n\n    // Override to flatten complex objects for CSV compatibility\n    protected handleObject(value: object): any {\n        // Check for circular references\n        if (this.seen.has(value)) {\n            return \"[Circular Reference]\";\n        }\n        this.seen.add(value);\n\n        try {\n            // Handle arrays - keep as arrays for CSV\n            if (Array.isArray(value)) {\n                return value.map((item) => this.processValue(item));\n            }\n\n            // Handle Date objects\n            if (value instanceof Date) {\n                return this.handleDate(value);\n            }\n\n            // Handle other special types\n            if (value instanceof RegExp) return this.handleRegExp(value);\n            if (value instanceof Error)\n                return `${value.name}: ${value.message}`;\n            if (value instanceof Map) return this.handleMap(value);\n            if (value instanceof Set)\n                return Array.from(value)\n                    .map((v) => this.processValue(v))\n                    .join(\";\");\n            if (value instanceof URL) return this.handleURL(value);\n            if (typeof Buffer !== \"undefined\" && value instanceof Buffer)\n                return value.toString(\"base64\");\n\n            // Handle plain objects - flatten or stringify\n            const processed: Record<string, any> = {};\n            for (const [key, val] of Object.entries(value)) {\n                try {\n                    const processedVal = this.processValue(val);\n                    if (processedVal !== undefined) {\n                        processed[key] =\n                            typeof processedVal === \"object\"\n                                ? JSON.stringify(processedVal)\n                                : processedVal;\n                    }\n                } catch (error) {\n                    processed[key] = `[Error: ${error}]`;\n                }\n            }\n            return processed;\n        } finally {\n            this.seen.delete(value);\n        }\n    }\n}\n\nexport class CsonVariableProcessor extends VariableProcessor {\n    protected handleBigInt(value: bigint): any {\n        return value.toString();\n    }\n\n    protected handleDate(value: Date): any {\n        return value; // CSON can handle Date objects\n    }\n\n    protected handleRegExp(value: RegExp): any {\n        return value; // CSON can handle RegExp objects\n    }\n\n    protected handleURL(value: URL): any {\n        return {\n            href: value.href,\n            origin: value.origin,\n            pathname: value.pathname,\n            search: value.search,\n            hash: value.hash,\n        };\n    }\n}\n","import {EnvVariableProcessor} from \"../pre-processor.ts\";\n\nexport class EnvGenerator {\n    private processor = new EnvVariableProcessor();\n\n    /** Generate .env file content from target configuration */\n    generate(variables: Record<string, any>): string {\n        const processedVariables = this.processor.process(variables);\n        const flattened = this.flattenVariables(processedVariables);\n        const sortedKeys = Object.keys(flattened).sort();\n\n        const lines: string[] = [];\n        for (const key of sortedKeys) {\n            const value = flattened[key];\n            const envLine = this.formatEnvVariable(key, value);\n            if (envLine) {\n                lines.push(envLine);\n            }\n        }\n\n        return lines.join(\"\\n\");\n    }\n\n    /** Flatten nested objects and arrays into underscore-separated uppercase keys */\n    private flattenVariables(\n        obj: Record<string, any>,\n        prefix: string = \"\",\n        separator: string = \"_\"\n    ): Record<string, any> {\n        const flattened: Record<string, any> = {};\n\n        for (const [key, value] of Object.entries(obj)) {\n            // Convert key to uppercase and sanitize\n            const sanitizedKey = this.sanitizeKey(key);\n            const newKey = prefix\n                ? `${prefix}${separator}${sanitizedKey}`\n                : sanitizedKey;\n\n            if (value === null || value === undefined) {\n                flattened[newKey] = value;\n            } else if (Array.isArray(value)) {\n                // Flatten arrays with indexed keys\n                value.forEach((item, index) => {\n                    if (typeof item === \"object\" && item !== null) {\n                        // Recursively flatten object items\n                        const nested = this.flattenVariables(\n                            {[index]: item},\n                            newKey,\n                            separator\n                        );\n                        Object.assign(flattened, nested);\n                    } else {\n                        flattened[`${newKey}${separator}${index}`] = item;\n                    }\n                });\n                // Also add array length for convenience\n                flattened[`${newKey}${separator}LENGTH`] = value.length;\n            } else if (typeof value === \"object\") {\n                // Recursively flatten nested objects\n                const nested = this.flattenVariables(value, newKey, separator);\n                Object.assign(flattened, nested);\n            } else {\n                flattened[newKey] = value;\n            }\n        }\n\n        return flattened;\n    }\n\n    /** Sanitize and format key for environment variable naming */\n    private sanitizeKey(key: string): string {\n        return (\n            key\n                // Convert to uppercase\n                .toUpperCase()\n                // Replace non-alphanumeric characters with underscores\n                .replace(/[^A-Z0-9]/g, \"_\")\n                // Remove consecutive underscores\n                .replace(/_+/g, \"_\")\n                // Remove leading/trailing underscores\n                .replace(/^_+|_+$/g, \"\")\n        );\n    }\n\n    /** Format a single environment variable */\n    private formatEnvVariable(key: string, value: any): string | null {\n        // Skip undefined values\n        if (value === undefined) {\n            return null;\n        }\n\n        // Convert value to string (primitives only now since we've processed)\n        let stringValue: string;\n\n        if (value === null) {\n            stringValue = \"\";\n        } else if (typeof value === \"boolean\") {\n            stringValue = value ? \"true\" : \"false\";\n        } else if (typeof value === \"number\") {\n            stringValue = value.toString();\n        } else if (typeof value === \"string\") {\n            stringValue = value;\n        } else {\n            // Fallback for any remaining complex types\n            stringValue = String(value);\n        }\n\n        // Escape quotes in values\n        const escapedValue = this.escapeEnvValue(stringValue);\n\n        return `${key}=${escapedValue}`;\n    }\n\n    /** Escape environment variable values that contain special characters */\n    private escapeEnvValue(value: string): string {\n        // If value contains spaces, quotes, or special chars, wrap in quotes\n        if (this.needsQuoting(value)) {\n            // Escape existing double quotes and backslashes\n            const escaped = value\n                .replace(/\\\\/g, \"\\\\\\\\\") // Escape backslashes first\n                .replace(/\"/g, '\\\\\"') // Then escape quotes\n                .replace(/\\n/g, \"\\\\n\") // Escape newlines\n                .replace(/\\r/g, \"\\\\r\") // Escape carriage returns\n                .replace(/\\t/g, \"\\\\t\"); // Escape tabs\n            return `\"${escaped}\"`;\n        }\n\n        return value;\n    }\n\n    /** Check if a value needs to be quoted */\n    private needsQuoting(value: string): boolean {\n        // Empty string needs quotes\n        if (value === \"\") {\n            return true;\n        }\n\n        // Check for characters that require quoting\n        return /[\\s\"'`${}\\\\#\\n\\r\\t]/.test(value);\n    }\n}\n","import {JsonVariableProcessor} from \"../pre-processor.ts\";\nimport type {JsonTargetOptions} from \"../../config/types\";\n\nexport class JsonGenerator {\n    private processor = new JsonVariableProcessor();\n\n    generate(\n        variables: Record<string, any>,\n        options?: JsonTargetOptions\n    ): string {\n        const processedVariables = this.processor.process(variables);\n        return JSON.stringify(\n            processedVariables,\n            options?.replacer,\n            options?.space || 2\n        );\n    }\n}\n","import * as yaml from \"js-yaml\";\nimport {VariableProcessor} from \"../pre-processor.ts\";\nimport type {YamlTargetOptions} from \"../../config/types\";\n\nexport class YamlGenerator {\n    private processor = new VariableProcessor();\n\n    generate(\n        variables: Record<string, any>,\n        options: YamlTargetOptions = {}\n    ): string {\n        const processedVariables = this.processor.process(variables);\n        return yaml.dump(processedVariables, {\n            indent: 2,\n            lineWidth: 80,\n            noRefs: false,\n            sortKeys: false,\n            quotingType: '\"',\n            forceQuotes: false,\n            ...options,\n        });\n    }\n}\n","import * as TOML from \"@iarna/toml\";\nimport {TomlVariableProcessor} from \"../pre-processor.ts\";\n\nexport class TomlGenerator {\n    private processor = new TomlVariableProcessor();\n\n    generate(variables: Record<string, any>): string {\n        const processedVariables = this.processor.process(variables);\n        return TOML.stringify(processedVariables);\n    }\n}\n","import {readFile} from \"node:fs/promises\";\nimport * as nunjucks from \"nunjucks\";\nimport Handlebars from \"handlebars\";\nimport * as Mustache from \"mustache\";\nimport type {ZodTemplateTarget} from \"../../config/types\";\nimport {resolve} from \"node:path\";\n\nexport class TemplateGenerator {\n    private nunjucksEnv: nunjucks.Environment;\n\n    constructor() {\n        // Configure Nunjucks environment\n        this.nunjucksEnv = new nunjucks.Environment(\n            new nunjucks.FileSystemLoader([process.cwd(), \"templates\", \".\"]),\n            {\n                autoescape: false, // Let users control escaping\n                throwOnUndefined: false, // Don't throw on undefined variables\n                trimBlocks: true,\n                lstripBlocks: true,\n            }\n        );\n\n        // Add custom filters/helpers\n        this.setupNunjucksHelpers();\n        this.setupHandlebarsHelpers();\n    }\n\n    /** Generate file content from template */\n    async generate(\n        target: ZodTemplateTarget,\n        baseDir: string\n    ): Promise<string> {\n        try {\n            target.template = resolve(baseDir, target.template);\n\n            // Read template file\n            const templateContent = await readFile(target.template, \"utf-8\");\n\n            // Process variables to handle complex types\n            const processedVariables = this.processVariables(target.variables);\n\n            let templateContext: Record<string, any>;\n            if (target.generate_meta) {\n                // Add metadata to template context\n                templateContext = this.addTemplateContext(\n                    processedVariables,\n                    target\n                );\n            } else {\n                // Use variables directly without metadata\n                templateContext = processedVariables;\n            }\n\n            // Process template based on engine\n            const engine = target.engine ?? \"nunjucks\";\n\n            let result: string;\n            switch (engine) {\n                case \"nunjucks\":\n                    result = await this.processNunjucks(\n                        templateContent,\n                        templateContext,\n                        target.template\n                    );\n                    break;\n                case \"handlebars\":\n                    result = this.processHandlebars(\n                        templateContent,\n                        templateContext\n                    );\n                    break;\n                case \"mustache\":\n                    result = this.processMustache(\n                        templateContent,\n                        templateContext\n                    );\n                    break;\n                default:\n                    throw new Error(`Unsupported template engine: ${engine}`);\n            }\n\n            return result;\n        } catch (error) {\n            throw new Error(\n                `Failed to generate template for target: ${\n                    error instanceof Error ? error.message : String(error)\n                }`\n            );\n        }\n    }\n\n    /** Add template context with metadata */\n    private addTemplateContext(variables: any, target: ZodTemplateTarget): any {\n        return {\n            // Metadata available in templates\n            _meta: {\n                generator: \"axogen\",\n                generated_at: new Date().toISOString(),\n                target_path: target.path,\n                template_path: target.template,\n                template_engine: target.engine ?? \"nunjucks\",\n            },\n            // User variables\n            ...variables,\n        };\n    }\n\n    /** Process Nunjucks template using the actual library */\n    private async processNunjucks(\n        template: string,\n        variables: Record<string, any>,\n        templatePath: string\n    ): Promise<string> {\n        try {\n            // Try to render from file first (for includes/extends)\n            return this.nunjucksEnv.render(templatePath, variables);\n        } catch {\n            // Fall back to rendering from string\n            return this.nunjucksEnv.renderString(template, variables);\n        }\n    }\n\n    /** Process Handlebars template using the actual library */\n    private processHandlebars(\n        template: string,\n        variables: Record<string, any>\n    ): string {\n        const compiledTemplate = Handlebars.compile(template, {\n            noEscape: false, // Enable HTML escaping by default\n            strict: false, // Don't throw on missing properties\n        });\n\n        return compiledTemplate(variables);\n    }\n\n    /** Process Mustache template using the actual library */\n    private processMustache(\n        template: string,\n        variables: Record<string, any>\n    ): string {\n        return Mustache.default.render(template, variables);\n    }\n\n    /** Setup Nunjucks custom filters and functions */\n    private setupNunjucksHelpers(): void {\n        // Date formatting\n        this.nunjucksEnv.addFilter(\n            \"dateformat\",\n            (date: any, format: string = \"ISO\") => {\n                const d = new Date(date);\n                if (format === \"ISO\") return d.toISOString();\n                if (format === \"date\") return d.toDateString();\n                if (format === \"time\") return d.toTimeString();\n                return d.toString();\n            }\n        );\n\n        // JSON formatting\n        this.nunjucksEnv.addFilter(\"json\", (obj: any, indent: number = 2) => {\n            return JSON.stringify(obj, null, indent);\n        });\n\n        // Case transformations\n        this.nunjucksEnv.addFilter(\"snake_case\", (str: string) => {\n            return str.replace(\n                /[A-Z]/g,\n                (letter) => `_${letter.toLowerCase()}`\n            );\n        });\n\n        this.nunjucksEnv.addFilter(\"kebab_case\", (str: string) => {\n            return str.replace(\n                /[A-Z]/g,\n                (letter) => `-${letter.toLowerCase()}`\n            );\n        });\n\n        this.nunjucksEnv.addFilter(\"camel_case\", (str: string) => {\n            return str.replace(/[-_](.)/g, (_, letter) => letter.toUpperCase());\n        });\n\n        // Environment variable name formatting\n        this.nunjucksEnv.addFilter(\"env_name\", (str: string) => {\n            return str\n                .toUpperCase()\n                .replace(/[^A-Z0-9]/g, \"_\")\n                .replace(/_+/g, \"_\");\n        });\n    }\n\n    /** Setup Handlebars helpers */\n    private setupHandlebarsHelpers(): void {\n        // Date formatting helper\n        Handlebars.registerHelper(\n            \"dateformat\",\n            (date: any, format: string = \"ISO\") => {\n                const d = new Date(date);\n                if (format === \"ISO\") return d.toISOString();\n                if (format === \"date\") return d.toDateString();\n                if (format === \"time\") return d.toTimeString();\n                return d.toString();\n            }\n        );\n\n        // JSON helper\n        Handlebars.registerHelper(\"json\", (obj: any, indent: number = 2) => {\n            return new Handlebars.SafeString(JSON.stringify(obj, null, indent));\n        });\n\n        // Case transformation helpers\n        Handlebars.registerHelper(\"snake_case\", (str: string) => {\n            return str.replace(\n                /[A-Z]/g,\n                (letter) => `_${letter.toLowerCase()}`\n            );\n        });\n\n        Handlebars.registerHelper(\"kebab_case\", (str: string) => {\n            return str.replace(\n                /[A-Z]/g,\n                (letter) => `-${letter.toLowerCase()}`\n            );\n        });\n\n        Handlebars.registerHelper(\"camel_case\", (str: string) => {\n            return str.replace(/[-_](.)/g, (_, letter) => letter.toUpperCase());\n        });\n\n        Handlebars.registerHelper(\"env_name\", (str: string) => {\n            return str\n                .toUpperCase()\n                .replace(/[^A-Z0-9]/g, \"_\")\n                .replace(/_+/g, \"_\");\n        });\n\n        // Equality helper\n        Handlebars.registerHelper(\"eq\", (a: any, b: any) => a === b);\n\n        // Comparison helpers\n        Handlebars.registerHelper(\"gt\", (a: any, b: any) => a > b);\n        Handlebars.registerHelper(\"lt\", (a: any, b: any) => a < b);\n        Handlebars.registerHelper(\"gte\", (a: any, b: any) => a >= b);\n        Handlebars.registerHelper(\"lte\", (a: any, b: any) => a <= b);\n    }\n\n    /** Process variables to handle complex types */\n    private processVariables(variables: Record<string, any>): any {\n        const seen = new WeakSet();\n        return this.processValue(variables, seen);\n    }\n\n    /** Recursively process values for template compatibility */\n    private processValue(value: any, seen: WeakSet<object>): any {\n        // Handle null and undefined\n        if (value === null || value === undefined) {\n            return value;\n        }\n\n        // Handle primitives\n        if (\n            typeof value === \"string\" ||\n            typeof value === \"number\" ||\n            typeof value === \"boolean\"\n        ) {\n            return value;\n        }\n\n        // Handle BigInt\n        if (typeof value === \"bigint\") {\n            return Number(value);\n        }\n\n        // Handle Symbol\n        if (typeof value === \"symbol\") {\n            return value.description || \"Symbol\";\n        }\n\n        // Handle functions - convert to string representation\n        if (typeof value === \"function\") {\n            return `[Function: ${value.name || \"anonymous\"}]`;\n        }\n\n        // Handle objects and arrays\n        if (typeof value === \"object\") {\n            // Check for circular references\n            if (seen.has(value)) {\n                return \"[Circular Reference]\";\n            }\n            seen.add(value);\n\n            try {\n                // Handle arrays\n                if (Array.isArray(value)) {\n                    return value.map((item) => this.processValue(item, seen));\n                }\n\n                // Handle Date objects\n                if (value instanceof Date) {\n                    return value; // Keep as Date object for template engines\n                }\n\n                // Handle RegExp\n                if (value instanceof RegExp) {\n                    return {\n                        source: value.source,\n                        flags: value.flags,\n                        toString: () => value.toString(),\n                    };\n                }\n\n                // Handle Error objects\n                if (value instanceof Error) {\n                    return {\n                        name: value.name,\n                        message: value.message,\n                        stack: value.stack,\n                    };\n                }\n\n                // Handle Map\n                if (value instanceof Map) {\n                    const obj: Record<string, any> = {};\n                    for (const [k, v] of value.entries()) {\n                        const key = typeof k === \"string\" ? k : String(k);\n                        obj[key] = this.processValue(v, seen);\n                    }\n                    return obj;\n                }\n\n                // Handle Set\n                if (value instanceof Set) {\n                    return Array.from(value).map((v) =>\n                        this.processValue(v, seen)\n                    );\n                }\n\n                // Handle URL\n                if (value instanceof URL) {\n                    return {\n                        href: value.href,\n                        origin: value.origin,\n                        pathname: value.pathname,\n                        search: value.search,\n                        hash: value.hash,\n                        toString: () => value.toString(),\n                    };\n                }\n\n                // Handle Buffer (Node.js)\n                if (typeof Buffer !== \"undefined\" && value instanceof Buffer) {\n                    return {\n                        data: value.toString(\"base64\"),\n                        length: value.length,\n                        encoding: \"base64\",\n                    };\n                }\n\n                // Handle plain objects\n                const processed: Record<string, any> = {};\n                for (const [key, val] of Object.entries(value)) {\n                    try {\n                        processed[key] = this.processValue(val, seen);\n                    } catch (error) {\n                        processed[key] = `[Error: ${error}]`;\n                    }\n                }\n                return processed;\n            } finally {\n                seen.delete(value);\n            }\n        }\n\n        // Fallback\n        return String(value);\n    }\n}\n","import JSON5 from \"json5\";\nimport {Json5VariableProcessor} from \"../pre-processor.ts\";\nimport type {Json5TargetOptions} from \"../../config/types\";\n\nexport class Json5Generator {\n    private processor = new Json5VariableProcessor();\n\n    generate(\n        variables: Record<string, any>,\n        options?: Json5TargetOptions\n    ): string {\n        const processedVariables = this.processor.process(variables);\n        return JSON5.stringify(\n            processedVariables,\n            undefined,\n            options?.space || 2\n        );\n    }\n}\n","import * as Hjson from \"hjson\";\nimport {HjsonVariableProcessor} from \"../pre-processor.ts\";\nimport type {HjsonTargetOptions} from \"../../config/types\";\n\nexport class HjsonGenerator {\n    private processor = new HjsonVariableProcessor();\n\n    generate(\n        variables: Record<string, any>,\n        options: HjsonTargetOptions = {}\n    ): string {\n        const processedVariables = this.processor.process(variables);\n        return Hjson.stringify(processedVariables, {\n            keepWsc: true,\n            bracesSameLine: false,\n            quotes: \"strings\",\n            separator: false,\n            space: 2,\n            ...options,\n        });\n    }\n}\n","import * as ini from \"ini\";\nimport {PropertiesVariableProcessor} from \"../pre-processor.ts\";\nimport type {PropertiesTargetOptions} from \"../../config/types\";\n\nexport class PropertiesGenerator {\n    private processor = new PropertiesVariableProcessor();\n\n    generate(\n        variables: Record<string, any>,\n        options: PropertiesTargetOptions = {}\n    ): string {\n        const processedVariables = this.processor.process(variables);\n\n        // Flatten the object for properties format\n        const flattenedVariables = this.flattenObject(processedVariables);\n\n        // Convert arrays to comma-separated strings\n        const propertiesReady = this.prepareArrays(flattenedVariables);\n\n        return ini.stringify(propertiesReady, {\n            // Default options for properties format\n            align: false,\n            sort: true,\n            whitespace: false,\n            platform: \"unix\",\n\n            // Fixed options for properties format\n            section: undefined, // No sections\n            bracketedArray: false, // No array[] syntax\n            newline: false, // No extra newlines\n\n            // User options override defaults\n            ...options,\n        });\n    }\n\n    private flattenObject(\n        obj: any,\n        prefix = \"\",\n        separator = \".\"\n    ): Record<string, any> {\n        const flattened: Record<string, any> = {};\n\n        for (const key in obj) {\n            if (!obj.hasOwnProperty(key)) continue;\n\n            const newKey = prefix ? `${prefix}${separator}${key}` : key;\n            const value = obj[key];\n\n            if (\n                value !== null &&\n                typeof value === \"object\" &&\n                !Array.isArray(value)\n            ) {\n                // Recursively flatten nested objects\n                Object.assign(\n                    flattened,\n                    this.flattenObject(value, newKey, separator)\n                );\n            } else {\n                // Keep primitive values and arrays as-is for now\n                flattened[newKey] = value;\n            }\n        }\n\n        return flattened;\n    }\n\n    private prepareArrays(obj: Record<string, any>): Record<string, any> {\n        const result: Record<string, any> = {};\n\n        for (const key in obj) {\n            const value = obj[key];\n\n            if (Array.isArray(value)) {\n                // Convert arrays to comma-separated strings\n                result[key] = value.join(\",\");\n            } else {\n                result[key] = value;\n            }\n        }\n\n        return result;\n    }\n}\n","import {XMLBuilder} from \"fast-xml-parser\";\nimport {XmlVariableProcessor} from \"../pre-processor.ts\";\nimport type {XmlTargetOptions} from \"../../config/types\";\n\nexport class XmlGenerator {\n    private processor = new XmlVariableProcessor();\n\n    generate(\n        variables: Record<string, any>,\n        options: XmlTargetOptions = {}\n    ): string {\n        const processedVariables = this.processor.process(variables);\n\n        const builder = new XMLBuilder({\n            ignoreAttributes: false,\n            format: true,\n            indentBy: \"  \",\n            suppressEmptyNode: false,\n            suppressBooleanAttributes: false,\n            suppressUnpairedNode: false,\n            textNodeName: \"#text\",\n            attributeNamePrefix: \"@_\",\n            ...options,\n        });\n\n        // Wrap the data in a root element if not already wrapped\n        const dataToConvert = this.ensureRootElement(processedVariables);\n\n        return builder.build(dataToConvert);\n    }\n\n    private ensureRootElement(data: any, rootElement?: string): any {\n        // If data is already wrapped in a single root object, use it\n        if (typeof data === \"object\" && !Array.isArray(data)) {\n            const keys = Object.keys(data);\n            if (keys.length === 1 && !rootElement) {\n                return data;\n            }\n        }\n\n        // Otherwise, wrap in specified root element or default\n        const root = rootElement || \"root\";\n        return {[root]: data};\n    }\n}\n","import Papa from \"papaparse\";\nimport {CsvVariableProcessor} from \"../pre-processor.ts\";\nimport type {CsvTargetOptions} from \"../../config/types\";\n\nexport class CsvGenerator {\n    private processor = new CsvVariableProcessor();\n\n    generate(\n        variables: Record<string, any>,\n        options: CsvTargetOptions = {}\n    ): string {\n        const processedVariables = this.processor.process(variables);\n\n        // Convert variables to CSV-compatible format\n        const csvData = this.prepareDataForCsv(processedVariables);\n\n        return Papa.unparse(csvData, {\n            quotes: false,\n            quoteChar: '\"',\n            escapeChar: '\"',\n            delimiter: \",\",\n            header: true,\n            newline: \"\\n\",\n            skipEmptyLines: false,\n            columns: undefined,\n            ...options,\n        });\n    }\n\n    private prepareDataForCsv(data: any): any[] {\n        // If data is already an array, use it directly\n        if (Array.isArray(data)) {\n            return data;\n        }\n\n        // If data is an object, check if it has array properties\n        if (typeof data === \"object\" && data !== null) {\n            // Look for array properties that could be CSV rows\n            for (const [key, value] of Object.entries(data)) {\n                if (Array.isArray(value) && value.length > 0) {\n                    // If the array contains objects, use it as CSV data\n                    if (typeof value[0] === \"object\") {\n                        return value;\n                    }\n                }\n            }\n\n            // If no suitable array found, convert object keys/values to CSV\n            return [data];\n        }\n\n        // Fallback: wrap single value in array\n        return [{value: data}];\n    }\n}\n","import * as CSON from \"cson\";\nimport {CsonVariableProcessor} from \"../pre-processor.ts\";\n\nexport class CsonGenerator {\n    private processor = new CsonVariableProcessor();\n\n    generate(variables: Record<string, any>): string {\n        const processedVariables = this.processor.process(variables);\n\n        return CSON.stringify(processedVariables, {\n            indent: \"  \",\n        });\n    }\n}\n","import * as ini from \"ini\";\nimport {IniVariableProcessor} from \"../pre-processor.ts\";\nimport type {IniTargetOptions} from \"../../config/types\";\n\nexport class IniGenerator {\n    private processor = new IniVariableProcessor();\n\n    generate(\n        variables: Record<string, any>,\n        options: IniTargetOptions = {}\n    ): string {\n        const processedVariables = this.processor.process(variables);\n        return ini.stringify(processedVariables, {\n            section: \"section\",\n            whitespace: false,\n            align: false,\n            sort: false,\n            ...options,\n        });\n    }\n}\n","/**\n * Research-based secret detection\n */\nimport * as z from \"zod\";\nimport {logger} from \"./console/logger.ts\";\n\nexport interface SecretDetectionResult {\n    isSecret: boolean;\n    reason: string;\n    confidence: \"low\" | \"medium\" | \"high\";\n    category?: string;\n}\n\nexport interface SecretsAnalysisResult {\n    hasSecrets: boolean;\n    secretsFound: Array<{\n        key: string;\n        path: string;\n        reason: string;\n        confidence: \"low\" | \"medium\" | \"high\";\n        category?: string;\n    }>;\n    totalCount: number;\n    highConfidenceCount: number;\n    mediumConfidenceCount: number;\n    lowConfidenceCount: number;\n}\n\n// Pre-compiled regex patterns for performance\nclass CompiledPatterns {\n    // Exclusion patterns\n    static readonly obviouslyNotSecrets = [\n        /^(true|false|null|undefined)$/i,\n        /^(yes|no|on|off|enabled?|disabled?)$/i,\n        /^\\d{1,5}$/, // Simple numbers\n\n        // Network/URLs - major source of false positives\n        /^localhost$/i,\n        /^(127\\.0\\.0\\.1|0\\.0\\.0\\.0|::1)$/i,\n        /^https?:\\/\\//,\n        /^ftp:\\/\\//,\n        /\\.(com|org|net|edu|gov|io|co\\.uk)$/i,\n\n        // File paths and system patterns\n        /^\\/[a-zA-Z0-9\\/_.-]*$/,\n        /^[a-zA-Z]:[\\\\\\/]/, // Windows paths\n        /^~\\/[a-zA-Z0-9\\/_.-]*$/, // Unix home paths\n\n        // HTTP and common values\n        /^(GET|POST|PUT|DELETE|HEAD|OPTIONS|PATCH)$/i,\n        /^(development|production|staging|test|dev|prod|local)$/i,\n        /^(debug|info|warn|error|fatal|trace)$/i,\n\n        // Common patterns that aren't secrets\n        /^[a-zA-Z0-9]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/, // Email addresses\n        /^\\d{4}-\\d{2}-\\d{2}$/, // Dates\n        /^v?\\d+\\.\\d+\\.\\d+/, // Version numbers\n\n        // Database/SQL - major false positive source\n        /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,\n\n        // CSS/HTML/JS patterns\n        /^#[0-9a-fA-F]{3,6}$/, // Hex colors\n        /^rgb\\(/,\n        /^[a-zA-Z-]+:\\s*[^;]+;?$/, // CSS properties\n\n        // Common placeholder values\n        /^(test|demo|sample|example|placeholder)/i,\n        /^(foo|bar|baz|qux)/i,\n        /^(lorem|ipsum)/i,\n    ];\n\n    // Known secret patterns with metadata\n    static readonly knownSecrets = [\n        // AWS\n        {\n            pattern: /^AKIA[0-9A-Z]{16}$/,\n            type: \"AWS Access Key ID\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern: /^[A-Za-z0-9/+=]{40}$/,\n            type: \"AWS Secret Access Key\",\n            confidence: \"medium\" as const,\n        },\n        {\n            pattern: /^aws_[a-zA-Z0-9+/=]{40,}$/,\n            type: \"AWS Token\",\n            confidence: \"high\" as const,\n        },\n\n        // GitHub\n        {\n            pattern: /^ghp_[A-Za-z0-9]{36}$/,\n            type: \"GitHub Personal Access Token\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern: /^gho_[A-Za-z0-9]{36}$/,\n            type: \"GitHub OAuth Token\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern: /^ghu_[A-Za-z0-9]{36}$/,\n            type: \"GitHub User Token\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern: /^ghs_[A-Za-z0-9]{36}$/,\n            type: \"GitHub Server Token\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern: /^ghr_[A-Za-z0-9]{36}$/,\n            type: \"GitHub Refresh Token\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern: /^github_pat_[A-Za-z0-9_]{82}$/,\n            type: \"GitHub Fine-grained PAT\",\n            confidence: \"high\" as const,\n        },\n\n        // Stripe\n        {\n            pattern: /^sk_(test_|live_)[0-9a-zA-Z]{24,}$/,\n            type: \"Stripe Secret Key\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern: /^pk_(test_|live_)[0-9a-zA-Z]{24,}$/,\n            type: \"Stripe Publishable Key\",\n            confidence: \"medium\" as const,\n        },\n        {\n            pattern: /^rk_(test_|live_)[0-9a-zA-Z]{24,}$/,\n            type: \"Stripe Restricted Key\",\n            confidence: \"high\" as const,\n        },\n\n        // JWT\n        {\n            pattern: /^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$/,\n            type: \"JWT Token\",\n            confidence: \"medium\" as const,\n        },\n\n        // Slack\n        {\n            pattern: /^xoxb-[0-9]{10,13}-[0-9]{10,13}-[A-Za-z0-9]{24}$/,\n            type: \"Slack Bot Token\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern:\n                /^xoxp-[0-9]{10,13}-[0-9]{10,13}-[0-9]{10,13}-[A-Za-z0-9]{32}$/,\n            type: \"Slack User Token\",\n            confidence: \"high\" as const,\n        },\n\n        // Discord\n        {\n            pattern:\n                /^[MNO][A-Za-z0-9]{23}\\.[A-Za-z0-9]{6}\\.[A-Za-z0-9_-]{27}$/,\n            type: \"Discord Bot Token\",\n            confidence: \"high\" as const,\n        },\n\n        // Google\n        {\n            pattern: /^AIza[0-9A-Za-z_-]{35}$/,\n            type: \"Google API Key\",\n            confidence: \"high\" as const,\n        },\n\n        // Generic patterns\n        {\n            pattern: /^[0-9a-fA-F]{32,128}$/,\n            type: \"Long Hexadecimal String\",\n            confidence: \"medium\" as const,\n        },\n    ];\n\n    // Certificate patterns\n    static readonly certificatePatterns = [\n        {\n            pattern:\n                /-----BEGIN[\\s\\S]*?PRIVATE KEY[\\s\\S]*?-----END[\\s\\S]*?PRIVATE KEY-----/,\n            type: \"RSA/EC Private Key\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern:\n                /-----BEGIN[\\s\\S]*?CERTIFICATE[\\s\\S]*?-----END[\\s\\S]*?CERTIFICATE-----/,\n            type: \"X.509 Certificate\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern:\n                /-----BEGIN[\\s\\S]*?OPENSSH PRIVATE KEY[\\s\\S]*?-----END[\\s\\S]*?OPENSSH PRIVATE KEY-----/,\n            type: \"OpenSSH Private Key\",\n            confidence: \"high\" as const,\n        },\n        {\n            pattern: /ssh-(rsa|dss|ed25519|ecdsa)[A-Za-z0-9+/=\\s]+/,\n            type: \"SSH Public Key\",\n            confidence: \"medium\" as const,\n        },\n    ];\n\n    // Base64 pattern\n    static readonly base64Pattern = /^[A-Za-z0-9+/]*={0,2}$/;\n\n    // Alphanumeric pattern\n    static readonly alphanumericPattern = /^[A-Za-z0-9_+=/-]+$/;\n\n    // Hex pattern\n    static readonly hexPattern = /^[0-9a-fA-F]+$/;\n\n    // URL parameter pattern\n    static readonly urlParameterPattern =\n        /[?&](token|key|secret|password|auth|pass|pwd|credential|cred|bearer|authorization|access|refresh|session|signature|cert|certificate|private|api)[=:]([^&\\s#]+)/gi;\n\n    // Character type patterns\n    static readonly hasNumbers = /\\d/;\n    static readonly hasLowerCase = /[a-z]/;\n    static readonly hasUpperCase = /[A-Z]/;\n    static readonly hasSpecialChars = /[^a-zA-Z0-9]/;\n}\n\n// Secret keywords\nconst SECRET_KEYWORDS = new Set([\n    // High confidence keywords\n    \"password\",\n    \"passwd\",\n    \"pwd\",\n    \"passphrase\",\n    \"secret\",\n    \"private_key\",\n    \"privatekey\",\n    \"api_key\",\n    \"apikey\",\n    \"api_secret\",\n    \"apisecret\",\n    \"access_token\",\n    \"accesstoken\",\n    \"auth_token\",\n    \"authtoken\",\n    \"bearer_token\",\n    \"client_secret\",\n    \"clientsecret\",\n\n    // Medium confidence keywords\n    \"key\",\n    \"token\",\n    \"auth\",\n    \"credential\",\n    \"cred\",\n    \"authorization\",\n    \"refresh_token\",\n    \"session_key\",\n    \"encryption_key\",\n    \"signature\",\n\n    // Database specific\n    \"db_password\",\n    \"database_password\",\n    \"mysql_password\",\n    \"postgres_password\",\n    \"connection_string\",\n    \"dsn\",\n\n    // Certificate specific\n    \"cert\",\n    \"certificate\",\n    \"pem\",\n    \"p12\",\n    \"pfx\",\n    \"keystore\",\n]);\n\n// Entropy calculation cache for performance\nconst entropyCache = new Map<string, number>();\n\nfunction calculateEntropy(str: string): number {\n    if (entropyCache.has(str)) {\n        return entropyCache.get(str)!;\n    }\n\n    if (!str || str.length < 2) return 0;\n\n    // Clean string for better entropy calculation\n    const cleanStr = str\n        .replace(/([a-zA-Z])\\1{4,}/g, \"$1$1$1\") // Remove excessive repetition\n        .replace(/12345678/g, \"\") // Remove sequential numbers\n        .replace(/abcdefgh/gi, \"\") // Remove keyboard patterns\n        .replace(/qwerty/gi, \"\");\n\n    if (cleanStr.length < 2) return 0;\n\n    const freq: {[char: string]: number} = {};\n    for (const char of cleanStr) {\n        freq[char] = (freq[char] || 0) + 1;\n    }\n\n    let entropy = 0;\n    const length = cleanStr.length;\n\n    for (const count of Object.values(freq)) {\n        const probability = count / length;\n        entropy -= probability * Math.log2(probability);\n    }\n\n    // Cache the result\n    if (entropyCache.size > 1000) {\n        entropyCache.clear(); // Prevent memory leak\n    }\n    entropyCache.set(str, entropy);\n\n    return entropy;\n}\n\nfunction hasVeryLowEntropy(str: string): boolean {\n    // Check for excessive repetition\n    const uniqueChars = new Set(str).size;\n    if (uniqueChars <= 2 && str.length > 10) {\n        return true;\n    }\n\n    // Check entropy\n    const entropy = calculateEntropy(str);\n    if (entropy < 1.5) {\n        return true;\n    }\n\n    return false;\n}\n\nfunction isValidBase64(str: string): boolean {\n    try {\n        // Check if it matches base64 pattern\n        if (!CompiledPatterns.base64Pattern.test(str)) {\n            return false;\n        }\n\n        // Try to decode it\n        const decoded = atob(str);\n\n        // Check if re-encoding gives us the same result\n        const reencoded = btoa(decoded);\n        return reencoded === str;\n    } catch {\n        return false;\n    }\n}\n\nfunction checkUrlParameters(value: string): SecretDetectionResult | null {\n    const matches = [...value.matchAll(CompiledPatterns.urlParameterPattern)];\n\n    for (const match of matches) {\n        const paramName = match[1].toLowerCase();\n        const paramValue = match[2];\n\n        if (\n            paramValue &&\n            paramValue.length >= 8 &&\n            !hasVeryLowEntropy(paramValue)\n        ) {\n            // Check for obvious fake/test patterns in URL parameters\n            const testPatterns = [\n                /^(test|demo|sample|example|fake|placeholder)/i,\n                /^(abc123|123abc|password123|secret123)/i,\n                /^(foo|bar|baz).*key/i,\n                /(test|demo|sample|example|fake)$/i,\n            ];\n\n            const isFakePattern = testPatterns.some((pattern) =>\n                pattern.test(paramValue)\n            );\n            if (isFakePattern) {\n                return null; // Don't flag as secret\n            }\n\n            const entropy = calculateEntropy(paramValue);\n            if (entropy >= 3.0) {\n                // Ensure high entropy for URL parameters\n                return {\n                    isSecret: true,\n                    reason: `Secret detected in URL parameter '${paramName}'`,\n                    confidence: \"high\",\n                    category: \"URL Parameter Detection\",\n                };\n            }\n        }\n    }\n\n    return null;\n}\n\nfunction checkConnectionStrings(value: string): SecretDetectionResult | null {\n    // General connection string patterns that contain credentials\n    const connectionPatterns = [\n        // protocol://user:password@host:port/database\n        /^[a-zA-Z][a-zA-Z0-9+.-]*:\\/\\/[^:\\/\\s]+:([^@\\s]+)@[^\\/\\s]+/,\n        // protocol://user:password@host/database\n        /^[a-zA-Z][a-zA-Z0-9+.-]*:\\/\\/[^:\\/\\s]+:([^@\\s]+)@[^\\/\\s]+/,\n        // protocol://:password@host (no username)\n        /^[a-zA-Z][a-zA-Z0-9+.-]*:\\/\\/:([^@\\s]+)@[^\\/\\s]+/,\n        // user:password@host:port (no protocol)\n        /^[^:\\/\\s]+:([^@\\s]+)@[^\\/\\s]+:\\d+/,\n        // user:password@host (no protocol, no port)\n        /^[^:\\/\\s]+:([^@\\s]+)@[^\\/\\s]+$/,\n    ];\n\n    for (const pattern of connectionPatterns) {\n        const match = value.match(pattern);\n        if (match && match[1]) {\n            const credential = match[1];\n\n            // Skip obvious placeholders or common weak passwords\n            const placeholderPatterns = [\n                /^(password|secret|pass|pwd|test|demo|example|placeholder|changeme|admin|root|user|guest)$/i,\n                /^(123456|password123|admin123|test123)$/i,\n                /^(abc|xyz|foo|bar|baz)$/i,\n                /^(abc123|test123|demo123|example123)/i,\n                /secretkey$/i, // ends with \"secretkey\"\n                /^fake/i, // starts with \"fake\"\n                /^sample/i, // starts with \"sample\"\n            ];\n\n            if (placeholderPatterns.some((p) => p.test(credential))) {\n                return null;\n            }\n\n            // Check credential length and entropy\n            if (credential.length >= 8) {\n                const entropy = calculateEntropy(credential);\n                if (entropy >= 3.0) {\n                    return {\n                        isSecret: true,\n                        reason: `Connection string with high-entropy credential (${entropy.toFixed(2)} entropy)`,\n                        confidence: \"high\",\n                        category: \"Connection String\",\n                    };\n                }\n            }\n        }\n    }\n\n    // Also check for credentials in query parameters of connection strings\n    const queryParamMatch = value.match(\n        /[?&](password|pwd|pass|token|key|secret|auth|credential)=([^&\\s#]+)/i\n    );\n    if (queryParamMatch && queryParamMatch[2]) {\n        const paramValue = queryParamMatch[2];\n\n        // Enhanced placeholder detection for query parameters\n        const queryPlaceholderPatterns = [\n            /^(abc123|test123|demo123|example123|fake123)/i,\n            /secretkey$/i,\n            /^(password|secret|test|demo|example|fake|sample)/i,\n            /123$/i, // ends with 123\n        ];\n\n        const isPlaceholder = queryPlaceholderPatterns.some((p) =>\n            p.test(paramValue)\n        );\n        if (isPlaceholder) {\n            return null;\n        }\n\n        if (paramValue.length >= 8 && !hasVeryLowEntropy(paramValue)) {\n            const entropy = calculateEntropy(paramValue);\n            if (entropy >= 3.5) {\n                // Higher threshold for query params\n                return {\n                    isSecret: true,\n                    reason: `Connection string with high-entropy credential in query parameter`,\n                    confidence: \"high\",\n                    category: \"Connection String\",\n                };\n            }\n        }\n    }\n\n    return null;\n}\n\nfunction checkCertificatesAndKeys(value: string): SecretDetectionResult | null {\n    for (const {\n        pattern,\n        type,\n        confidence,\n    } of CompiledPatterns.certificatePatterns) {\n        if (pattern.test(value)) {\n            return {\n                isSecret: true,\n                reason: `Detected ${type}`,\n                confidence,\n                category: \"Certificate/Key Detection\",\n            };\n        }\n    }\n    return null;\n}\n\nfunction checkKnownPatterns(value: string): SecretDetectionResult | null {\n    for (const {pattern, type, confidence} of CompiledPatterns.knownSecrets) {\n        if (pattern.test(value)) {\n            return {\n                isSecret: true,\n                reason: `Matches ${type} pattern`,\n                confidence,\n                category: type,\n            };\n        }\n    }\n    return null;\n}\n\nfunction checkObviousNonSecrets(value: string): boolean {\n    for (const pattern of CompiledPatterns.obviouslyNotSecrets) {\n        if (pattern.test(value)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction hasSecretKeyword(key: string): boolean {\n    const lowerKey = key.toLowerCase();\n    for (const keyword of SECRET_KEYWORDS) {\n        if (lowerKey.includes(keyword)) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction analyzeComplexity(value: string): number {\n    return [\n        CompiledPatterns.hasNumbers.test(value),\n        CompiledPatterns.hasLowerCase.test(value),\n        CompiledPatterns.hasUpperCase.test(value),\n        CompiledPatterns.hasSpecialChars.test(value),\n    ].filter(Boolean).length;\n}\n\nexport function isPotentiallyASecret(\n    key: string,\n    value: any\n): SecretDetectionResult {\n    // Early validation\n    if (typeof value !== \"string\" || !value.trim()) {\n        return {\n            isSecret: false,\n            reason: \"Empty or non-string value\",\n            confidence: \"high\",\n        };\n    }\n\n    const trimmedValue = value.trim();\n    const length = trimmedValue.length;\n\n    // Quick length check for performance\n    if (length < 4) {\n        return {\n            isSecret: false,\n            reason: \"Value too short\",\n            confidence: \"high\",\n        };\n    }\n\n    // Early exit for very low entropy strings\n    if (length >= 20 && hasVeryLowEntropy(trimmedValue)) {\n        return {\n            isSecret: false,\n            reason: \"Very low entropy (repetitive content)\",\n            confidence: \"high\",\n        };\n    }\n\n    // 1. Check for URL parameters\n    const urlResult = checkUrlParameters(trimmedValue);\n    if (urlResult) return urlResult;\n\n    // 2. Check connection strings with credentials\n    const connectionResult = checkConnectionStrings(trimmedValue);\n    if (connectionResult) return connectionResult;\n\n    // 3. Check for obvious non-secrets first (fastest check)\n    if (checkObviousNonSecrets(trimmedValue)) {\n        return {\n            isSecret: false,\n            reason: \"Matches common non-secret pattern\",\n            confidence: \"high\",\n        };\n    }\n\n    // 4. Check certificates and private keys\n    const certResult = checkCertificatesAndKeys(trimmedValue);\n    if (certResult) return certResult;\n\n    // 5. Check known secret patterns\n    const knownResult = checkKnownPatterns(trimmedValue);\n    if (knownResult) return knownResult;\n\n    // 6. Check for secret context keywords\n    const hasKeyword = hasSecretKeyword(key);\n\n    // 7. High-confidence keyword check\n    if (hasKeyword && length >= 8) {\n        // Additional validation for test values\n        const testKeywords = [\n            \"test\",\n            \"example\",\n            \"demo\",\n            \"placeholder\",\n            \"sample\",\n        ];\n        if (\n            testKeywords.some((keyword) =>\n                trimmedValue.toLowerCase().includes(keyword)\n            )\n        ) {\n            return {\n                isSecret: false,\n                reason: \"Contains test/demo/example keywords\",\n                confidence: \"medium\",\n            };\n        }\n\n        return {\n            isSecret: true,\n            reason: `Secret keyword '${key}' with ${length}-char value`,\n            confidence: \"high\",\n            category: \"Keyword-based detection\",\n        };\n    }\n\n    // 8. Entropy analysis (only for longer strings to save computation)\n    if (length >= 12) {\n        const entropy = calculateEntropy(trimmedValue);\n\n        // Dynamic entropy thresholds\n        let entropyThreshold = 3.8;\n        if (length >= 32) entropyThreshold = 4.2;\n        if (length >= 64) entropyThreshold = 4.7;\n\n        if (entropy >= entropyThreshold) {\n            const complexityScore = analyzeComplexity(trimmedValue);\n\n            if (complexityScore >= 2) {\n                return {\n                    isSecret: true,\n                    reason: `High entropy (${entropy.toFixed(2)}) with character complexity in ${length}-char string`,\n                    confidence: \"medium\",\n                    category: \"Entropy-based detection\",\n                };\n            }\n        }\n    }\n\n    // 9. Long alphanumeric strings\n    if (\n        length >= 24 &&\n        CompiledPatterns.alphanumericPattern.test(trimmedValue) &&\n        !/\\s/.test(trimmedValue)\n    ) {\n        // Check entropy before flagging as secret\n        const entropy = calculateEntropy(trimmedValue);\n        if (entropy < 2.5) {\n            return {\n                isSecret: false,\n                reason: \"Low entropy alphanumeric string\",\n                confidence: \"medium\",\n            };\n        }\n\n        // Exclude obvious hashes without secret context\n        if (\n            CompiledPatterns.hexPattern.test(trimmedValue) &&\n            length === 32 &&\n            !hasKeyword\n        ) {\n            return {\n                isSecret: false,\n                reason: \"Likely MD5 hash without secret context\",\n                confidence: \"medium\",\n            };\n        }\n\n        return {\n            isSecret: true,\n            reason: `Long (${length} chars) alphanumeric string`,\n            confidence: \"low\",\n            category: \"Pattern-based detection\",\n        };\n    }\n\n    // 10. Hex strings\n    if (length >= 32 && CompiledPatterns.hexPattern.test(trimmedValue)) {\n        const entropy = calculateEntropy(trimmedValue);\n        if (entropy < 2.0) {\n            return {\n                isSecret: false,\n                reason: \"Low entropy hexadecimal string\",\n                confidence: \"medium\",\n            };\n        }\n\n        const commonHashLengths = [32, 40, 56, 64, 96, 128];\n        if (commonHashLengths.includes(length)) {\n            return {\n                isSecret: true,\n                reason: `${length}-character hexadecimal string (likely hash or key)`,\n                confidence: \"medium\",\n                category: \"Hash detection\",\n            };\n        }\n    }\n\n    // 11. Improved Base64 detection\n    if (length >= 20 && length % 4 === 0) {\n        if (isValidBase64(trimmedValue)) {\n            const entropy = calculateEntropy(trimmedValue);\n            if (entropy >= 3.5) {\n                return {\n                    isSecret: true,\n                    reason: `${length}-character valid base64 string with high entropy`,\n                    confidence: \"medium\",\n                    category: \"Base64 detection\",\n                };\n            } else {\n                return {\n                    isSecret: false,\n                    reason: \"Valid base64 but low entropy\",\n                    confidence: \"medium\",\n                };\n            }\n        }\n    }\n\n    // 12. UUID-like but extended (custom tokens)\n    if (\n        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}[0-9a-fA-F]+$/.test(\n            trimmedValue\n        )\n    ) {\n        return {\n            isSecret: true,\n            reason: \"UUID-like format with extra characters (custom token)\",\n            confidence: \"medium\",\n            category: \"Token detection\",\n        };\n    }\n\n    // 13. Mixed complexity with keyword context\n    if (length >= 20 && hasKeyword) {\n        const entropy = calculateEntropy(trimmedValue);\n        if (entropy >= 3.0) {\n            const complexityScore = analyzeComplexity(trimmedValue);\n            if (complexityScore >= 3) {\n                return {\n                    isSecret: true,\n                    reason: `Secret keyword with mixed complexity (${entropy.toFixed(2)} entropy)`,\n                    confidence: \"medium\",\n                    category: \"Complex pattern detection\",\n                };\n            }\n        }\n    }\n\n    // 14. Known secret prefixes\n    const secretPrefixes = [\n        {prefix: \"sk_\", minLength: 16, confidence: \"high\" as const},\n        {prefix: \"pk_\", minLength: 16, confidence: \"medium\" as const},\n        {prefix: \"rk_\", minLength: 16, confidence: \"high\" as const},\n        {prefix: \"xoxb-\", minLength: 20, confidence: \"high\" as const},\n        {prefix: \"xoxp-\", minLength: 20, confidence: \"high\" as const},\n        {prefix: \"ghp_\", minLength: 20, confidence: \"high\" as const},\n        {prefix: \"gho_\", minLength: 20, confidence: \"high\" as const},\n        {prefix: \"AIza\", minLength: 20, confidence: \"high\" as const},\n    ];\n\n    for (const {prefix, minLength, confidence} of secretPrefixes) {\n        if (trimmedValue.startsWith(prefix) && length >= minLength) {\n            return {\n                isSecret: true,\n                reason: `Starts with known secret prefix '${prefix}'`,\n                confidence,\n                category: \"Prefix detection\",\n            };\n        }\n    }\n\n    // Default: not a secret\n    return {\n        isSecret: false,\n        reason: \"No secret patterns detected\",\n        confidence: \"high\",\n    };\n}\n\nconst unsafeSchema = z\n    .object({\n        _marker: z.literal(\"unsafe\"),\n        value: z.string(),\n        reason: z.string(),\n    })\n    .strict();\n\n/**\n * Mark a string value as safe to bypass Axogen's secret detection system.\n * This allows you to explicitly indicate that a value that looks like a secret\n * is actually safe to write to files that are not git-ignored.\n * @param value - The string value that looks like a secret but is actually safe\n * @param reason - Description of why this value is safe despite appearing to be a secret\n * @returns Wrapped value that bypasses Axogen's secret detection checks\n */\nexport function unsafe(\n    value: string,\n    reason: string\n): z.infer<typeof unsafeSchema> {\n    return {\n        _marker: \"unsafe\",\n        value,\n        reason,\n    };\n}\n\n// Helper function for integration with nested data support\nexport function hasSecrets(\n    data: Record<string, any>,\n    template: string,\n    maxDepth: number = 100\n): SecretsAnalysisResult {\n    const secretsFound: Array<{\n        key: string;\n        path: string;\n        reason: string;\n        confidence: \"low\" | \"medium\" | \"high\";\n        category?: string;\n    }> = [];\n\n    // Set to track visited objects (prevents infinite loops with circular references)\n    const visited = new WeakSet();\n\n    function traverseObject(\n        obj: any,\n        currentPath: string = \"\",\n        depth: number = 0\n    ): void {\n        // Prevent infinite recursion\n        if (depth > maxDepth) {\n            logger.warn(\n                `${template}: Maximum depth of ${maxDepth} exceeded while traversing object. Skipping further traversal.`\n            );\n            return;\n        }\n\n        // Skip unsafe objects\n        if (obj && typeof obj === \"object\" && \"_marker\" in obj) {\n            if (unsafeSchema.safeParse(obj).success) {\n                logger.warn(\n                    `${template}: Skipping unsafe object at path '${currentPath}': ${obj.reason}`\n                );\n                return;\n            }\n        }\n\n        // Handle circular references\n        if (obj !== null && typeof obj === \"object\") {\n            if (visited.has(obj)) {\n                return;\n            }\n            visited.add(obj);\n        }\n\n        // Handle arrays\n        if (Array.isArray(obj)) {\n            obj.forEach((item, index) => {\n                const itemPath = currentPath\n                    ? `${currentPath}[${index}]`\n                    : `[${index}]`;\n                traverseObject(item, itemPath, depth + 1);\n            });\n            return;\n        }\n\n        // Handle objects\n        if (obj !== null && typeof obj === \"object\") {\n            for (const [key, value] of Object.entries(obj)) {\n                const newPath = currentPath ? `${currentPath}.${key}` : key;\n\n                if (typeof value === \"string\") {\n                    const result = isPotentiallyASecret(key, value);\n                    if (result.isSecret) {\n                        secretsFound.push({\n                            key,\n                            path: newPath,\n                            reason: result.reason,\n                            confidence: result.confidence,\n                            category: result.category,\n                        });\n                    }\n                } else if (\n                    value !== null &&\n                    (typeof value === \"object\" || Array.isArray(value))\n                ) {\n                    traverseObject(value, newPath, depth + 1);\n                }\n            }\n        }\n    }\n\n    traverseObject(data);\n\n    const highConfidenceCount = secretsFound.filter(\n        (s) => s.confidence === \"high\"\n    ).length;\n    const mediumConfidenceCount = secretsFound.filter(\n        (s) => s.confidence === \"medium\"\n    ).length;\n    const lowConfidenceCount = secretsFound.filter(\n        (s) => s.confidence === \"low\"\n    ).length;\n\n    return {\n        hasSecrets: secretsFound.length > 0,\n        secretsFound,\n        totalCount: secretsFound.length,\n        highConfidenceCount,\n        mediumConfidenceCount,\n        lowConfidenceCount,\n    };\n}\n\nexport function unwrapUnsafe(data: any): any {\n    const visited = new WeakSet();\n\n    function traverse(obj: any): any {\n        // Handle null and primitive types\n        if (obj === null || typeof obj !== \"object\") {\n            return obj;\n        }\n\n        // Handle circular references\n        if (visited.has(obj)) {\n            return obj; // Return original to avoid infinite loops\n        }\n        visited.add(obj);\n\n        // Check if this is an unsafe object\n        if (obj && typeof obj === \"object\" && \"_marker\" in obj) {\n            if (unsafeSchema.safeParse(obj).success) {\n                return obj.value; // Unwrap the unsafe object\n            }\n        }\n\n        // Handle arrays\n        if (Array.isArray(obj)) {\n            return obj.map((item) => traverse(item));\n        }\n\n        // Handle regular objects\n        const result: any = {};\n        for (const [key, value] of Object.entries(obj)) {\n            result[key] = traverse(value);\n        }\n\n        return result;\n    }\n\n    return traverse(data);\n}\n\n// Utility function to clear entropy cache (for memory management)\nexport function clearEntropyCache(): void {\n    entropyCache.clear();\n}\n","import {execSync} from \"child_process\";\n\nclass GitIgnoreChecker {\n    private static instance: GitIgnoreChecker | null = null;\n    isInGitRepo: boolean;\n\n    private constructor() {\n        // Check once if we're in a git repository\n        try {\n            execSync(\"git rev-parse --git-dir\", {stdio: \"ignore\"});\n            this.isInGitRepo = true;\n        } catch {\n            throw new Error(\n                \"Not in a git repository. Please run this command from within a git repository.\"\n            );\n        }\n    }\n\n    static getInstance(): GitIgnoreChecker {\n        if (!GitIgnoreChecker.instance) {\n            GitIgnoreChecker.instance = new GitIgnoreChecker();\n        }\n        return GitIgnoreChecker.instance;\n    }\n\n    /**\n     * Check if a file is ignored by git\n     * @param filePath - Path to the file to check\n     * @returns true if ignored, false if not ignored\n     */\n    isIgnored(filePath: string): boolean {\n        if (!this.isInGitRepo) {\n            throw new Error(\n                \"Not in a git repository. Please run this command from within a git repository.\"\n            );\n        }\n\n        try {\n            execSync(`git check-ignore \"${filePath}\"`, {stdio: \"ignore\"});\n            return true; // Exit code 0 = ignored\n        } catch {\n            return false; // Exit code 1 = not ignored\n        }\n    }\n}\n\n/**\n * Check if a file is ignored by git\n * @param filePath - Path to the file to check\n * @returns true if ignored, false if not ignored\n * @throws Error if not in a git repository\n */\nexport function isGitIgnored(filePath: string): boolean {\n    const checker = GitIgnoreChecker.getInstance();\n    return checker.isIgnored(filePath);\n}\n\n// Usage:\n// console.log(isGitIgnored('dist/index.js'))     // true\n// console.log(isGitIgnored('src/cli.ts'))        // false\n// console.log(isGitIgnored('node_modules'))      // true\n//\n// If not in git repo, throws on first call:\n// Error: Not in a git repository. Please run this command from within a git repository.\n","/**\n * Metadata utilities for generated files.\n * Provides functionality to create metadata objects and header comments\n * that get embedded in generated configuration files to track generation\n * details and warn against manual editing.\n */\n\n/**\n * Metadata structure that gets embedded in generated files.\n * Contains information about the generation process including timestamp,\n * generator identification, and target file details.\n */\nexport interface GeneratorMetadata {\n    /** Name of the generator tool that created the file */\n    generator: string;\n    /** ISO timestamp of when the file was generated */\n    generated_at: string;\n    /** Warning message to prevent manual editing */\n    warning: string;\n    /** Path where the target file is written */\n    target_path: string;\n    /** Format type of the generated file */\n    format: string;\n    /** Additional metadata fields that can be added */\n    [key: string]: any;\n}\n\n/**\n * Creates metadata object for embedding in generated files.\n * Includes standard fields like generator name, timestamp, and warnings,\n * along with target-specific information.\n *\n * @param targetPath - File path where the target will be written\n * @param format - Format type of the target file (json, yaml, etc.)\n * @param extra - Additional metadata fields to include\n * @returns Complete metadata object ready for embedding\n */\nexport function createMetadata(\n    targetPath: string,\n    format: string,\n    extra?: Record<string, any>\n): GeneratorMetadata {\n    return {\n        generator: \"axogen\",\n        generated_at: new Date().toISOString(),\n        warning: \"This file was generated automatically - do not edit manually\",\n        target_path: targetPath,\n        format,\n        ...extra,\n    };\n}\n\n/**\n * Creates header comment lines for generated files in various formats.\n * Adapts comment syntax based on the target file format and includes\n * generation metadata and warnings against manual editing.\n *\n * @param targetPath - File path where the target will be written\n * @param format - Optional format type to include in comments\n * @param prefix - Comment prefix character(s) for the target format\n * @param suffix - Comment suffix character(s) for the target format (e.g., XML closing)\n * @returns Array of formatted comment lines ready for insertion\n */\nexport function createHeaderComments(\n    targetPath: string,\n    format?: string,\n    prefix: string = \"#\",\n    suffix: string = \"\"\n): string[] {\n    const comments = [\n        `${prefix} Generated by axogen - do not edit manually ${suffix}`,\n        `${prefix} Generated at ${new Date().toISOString()} ${suffix}`,\n        `${prefix} Target: ${targetPath} ${suffix}`,\n    ];\n\n    if (format) {\n        comments.push(`${prefix} Format: ${format} ${suffix}`);\n    }\n\n    return comments;\n}\n","/**\n * Main target generator module for Axogen.\n * Provides the core functionality for generating configuration files in various formats\n * including JSON, YAML, TOML, XML, CSV, and template-based generation.\n * Handles security checks for secrets detection and Git ignore validation.\n */\n\nimport {\n    writeFile,\n    mkdir,\n    copyFile,\n    access,\n    constants,\n    readdir,\n    unlink,\n} from \"node:fs/promises\";\nimport {dirname, resolve} from \"node:path\";\nimport {\n    EnvGenerator,\n    JsonGenerator,\n    YamlGenerator,\n    TomlGenerator,\n    TemplateGenerator,\n    Json5Generator,\n    HjsonGenerator,\n    IniGenerator,\n    PropertiesGenerator,\n    XmlGenerator,\n    CsvGenerator,\n    CsonGenerator,\n} from \"./generatorTypes\";\nimport {hasSecrets, unwrapUnsafe} from \"../utils/secrets.ts\";\nimport {isGitIgnored} from \"../git/ignore-checker.ts\";\nimport {\n    type ZodAnyTarget,\n    type ZodBackupTarget,\n    type ZodBackupTargetOptions,\n} from \"../config/types\";\nimport {createHeaderComments, createMetadata} from \"./metadata.ts\";\nimport {logger} from \"../utils/console/logger.ts\";\n\nexport {\n    EnvGenerator,\n    JsonGenerator,\n    YamlGenerator,\n    TomlGenerator,\n    TemplateGenerator,\n};\n\n/**\n * Configuration options for target generation.\n * Controls the behavior of generation processes including dry-run mode\n * and base directory resolution.\n */\nexport interface GenerateOptions {\n    /** Show what would be generated without writing files */\n    dryRun?: boolean;\n    /** Base directory for resolving relative paths */\n    baseDir?: string;\n}\n\n/**\n * Main target generator class that orchestrates the generation of configuration files\n * in various formats. Handles secrets detection, Git ignore validation, metadata\n * injection, and format-specific header comments.\n *\n * Supports multiple output formats including JSON, YAML, TOML, XML, CSV, INI, Properties,\n * environment variables, and template-based generation.\n */\nexport class TargetGenerator {\n    /** Generator for environment variable files */\n    private envGenerator = new EnvGenerator();\n    /** Generator for JSON files */\n    private jsonGenerator = new JsonGenerator();\n    /** Generator for JSON5 files */\n    private json5Generator = new Json5Generator();\n    /** Generator for HJSON files */\n    private hjsonGenerator = new HjsonGenerator();\n    /** Generator for YAML files */\n    private yamlGenerator = new YamlGenerator();\n    /** Generator for TOML files */\n    private tomlGenerator = new TomlGenerator();\n    /** Generator for INI files */\n    private iniGenerator = new IniGenerator();\n    /** Generator for Properties files */\n    private propertiesGenerator = new PropertiesGenerator();\n    /** Generator for XML files */\n    private xmlGenerator = new XmlGenerator();\n    /** Generator for CSV files */\n    private csvGenerator = new CsvGenerator();\n    /** Generator for CSON files */\n    private csonGenerator = new CsonGenerator();\n    /** Generator for template-based files */\n    private templateGenerator = new TemplateGenerator();\n\n    /**\n     * Validates that a target is safe to generate by checking for secrets and Git ignore status.\n     * Unwraps unsafe variables if the target passes security checks.\n     *\n     * @param target - The target configuration to validate\n     * @param targetName - Name of the target for error reporting\n     * @param fullPath - Full file system path where the target will be written\n     * @returns The validated target with unwrapped variables\n     * @throws Error if target contains secrets and is not Git ignored\n     */\n    private isSafe(\n        target: ZodAnyTarget,\n        targetName: string,\n        fullPath: string\n    ): ZodAnyTarget {\n        const secretsAnalysis = hasSecrets(target.variables, targetName);\n\n        // Early return if no secrets detected\n        if (!secretsAnalysis.hasSecrets) {\n            target.variables = unwrapUnsafe(target.variables);\n            return target;\n        }\n\n        // Check git ignore status\n        const isIgnored = this.checkGitIgnoreStatus(fullPath, targetName);\n\n        if (!isIgnored) {\n            logger.security(\n                `Target \"${targetName}\" contains secrets and cannot be generated!`,\n                secretsAnalysis\n            );\n\n            logger.info(\n                `To resolve this, add the target <secondary>${target.path}</secondary> to your .gitignore file or remove the secrets from the target configuration.`\n            );\n\n            throw new Error(`Target \"${targetName}\" contains secrets`);\n        }\n\n        target.variables = unwrapUnsafe(target.variables);\n        return target;\n    }\n\n    /**\n     * Checks if a file path is covered by Git ignore rules.\n     * Gracefully handles errors by assuming files are not ignored if the check fails.\n     *\n     * @param fullPath - Full file system path to check\n     * @param targetName - Name of the target for error reporting\n     * @returns True if the path is Git ignored, false otherwise\n     */\n    private checkGitIgnoreStatus(\n        fullPath: string,\n        targetName: string\n    ): boolean {\n        try {\n            return isGitIgnored(fullPath);\n        } catch (error) {\n            const message =\n                error instanceof Error ? error.message : String(error);\n            logger.warn(\n                `Failed to check git ignore status for \"${targetName}\": ${message}`\n            );\n            return false; // Assume not ignored if check fails\n        }\n    }\n\n    /**\n     * Generates content for a target configuration without writing to file.\n     * Performs security validation, processes metadata, and adds format-specific headers.\n     *\n     * @param targetName - Name of the target for identification and error reporting\n     * @param target - Target configuration specifying format, variables, and options\n     * @param options - Generation options including dry-run mode and base directory\n     * @returns Promise resolving to an object containing the resolved file path and generated content\n     * @throws Error if target validation fails or generation encounters an error\n     */\n    async generate(\n        targetName: string,\n        target: ZodAnyTarget,\n        options: GenerateOptions = {}\n    ): Promise<{path: string; content: string}> {\n        const {baseDir = process.cwd()} = options;\n\n        // Resolve full path\n        const fullPath = resolve(baseDir, target.path);\n\n        // Check if the target has secrets\n        target = this.isSafe(target, targetName, fullPath);\n\n        try {\n            if (target.type === \"csv\") {\n                target.generate_meta = false; // CSV does not support metadata\n            }\n\n            // Process variables and add metadata if needed\n            const processedVariables = target.generate_meta\n                ? {\n                      _meta: createMetadata(target.path, target.type),\n                      ...target.variables,\n                  }\n                : target.variables;\n\n            // Generate content based on target type\n            let content = await this.generateContent(\n                processedVariables,\n                target,\n                baseDir\n            );\n\n            // Add header comments for formats that support them\n            const headerComment = this.getCommentHeader(target);\n            if (headerComment) {\n                content = headerComment + \"\\n\\n\" + content;\n            }\n\n            return {path: fullPath, content};\n        } catch (error) {\n            throw new Error(\n                `Failed to generate target \"${targetName}\": ${error instanceof Error ? error.message : String(error)}`\n            );\n        }\n    }\n\n    /**\n     * Generates content using the appropriate format-specific generator.\n     * Routes to the correct generator based on target type and handles unsupported types.\n     *\n     * @param variables - Processed variables to serialize into the target format\n     * @param target - Target configuration including type and format options\n     * @param baseDir - Base directory for resolving relative paths in template generation\n     * @returns Promise resolving to the generated content string\n     * @throws Error if the target type is unsupported\n     */\n    private async generateContent(\n        variables: Record<string, any>,\n        target: ZodAnyTarget,\n        baseDir: string\n    ): Promise<string> {\n        switch (target.type) {\n            case \"json\":\n                return this.jsonGenerator.generate(variables, target.options);\n            case \"json5\":\n                return this.json5Generator.generate(variables, target.options);\n            case \"jsonc\":\n                return this.jsonGenerator.generate(variables, target.options);\n            case \"hjson\":\n                return this.hjsonGenerator.generate(variables, target.options);\n            case \"yaml\":\n                return this.yamlGenerator.generate(variables, target.options);\n            case \"toml\":\n                return this.tomlGenerator.generate(variables);\n            case \"ini\":\n                return this.iniGenerator.generate(variables, target.options);\n            case \"properties\":\n                return this.propertiesGenerator.generate(\n                    variables,\n                    target.options\n                );\n            case \"env\":\n                return this.envGenerator.generate(variables);\n            case \"xml\":\n                return this.xmlGenerator.generate(variables, target.options);\n            case \"csv\":\n                return this.csvGenerator.generate(variables, target.options);\n            case \"cson\":\n                return this.csonGenerator.generate(variables);\n            case \"template\":\n                return await this.templateGenerator.generate(target, baseDir);\n            default:\n                throw new Error(\n                    `Unsupported target type: ${(target as any).type}`\n                );\n        }\n    }\n\n    /**\n     * Generates format-appropriate header comments for supported file types.\n     * Different formats use different comment syntaxes and some formats don't support comments.\n     *\n     * @param target - Target configuration to determine format and generate appropriate headers\n     * @returns Header comment string for the target format, or empty string if not supported\n     */\n    private getCommentHeader(target: ZodAnyTarget): string {\n        switch (target.type) {\n            case \"json\":\n                return \"\";\n            case \"json5\":\n                return createHeaderComments(target.path, \"json5\", \"//\").join(\n                    \"\\n\"\n                );\n            case \"jsonc\":\n                return createHeaderComments(target.path, \"jsonc\", \"//\").join(\n                    \"\\n\"\n                );\n            case \"hjson\":\n                return createHeaderComments(target.path, \"hjson\").join(\"\\n\");\n            case \"yaml\":\n                return createHeaderComments(target.path, \"yaml\").join(\"\\n\");\n            case \"toml\":\n                return createHeaderComments(target.path, \"toml\").join(\"\\n\");\n            case \"ini\":\n                return createHeaderComments(target.path, \"ini\", \";\").join(\"\\n\");\n            case \"properties\":\n                return createHeaderComments(\n                    target.path,\n                    \"properties\",\n                    \"#\"\n                ).join(\"\\n\");\n            case \"env\":\n                return createHeaderComments(target.path, \"env\").join(\"\\n\");\n            case \"xml\":\n                return createHeaderComments(\n                    target.path,\n                    \"xml\",\n                    \"<!--\",\n                    \"-->\"\n                ).join(\"\\n\");\n            case \"csv\":\n                return \"\";\n            case \"cson\":\n                return createHeaderComments(target.path, \"cson\", \"#\").join(\n                    \"\\n\"\n                );\n            case \"template\":\n                return \"\";\n            default:\n                return \"\";\n        }\n    }\n\n    private getBackupOptions(target: ZodAnyTarget): ZodBackupTargetOptions {\n        if (!target.backup) {\n            return {\n                enabled: false,\n                folder: `.axogen/backup/${target.path}`,\n                maxBackups: 5,\n                onConflict: \"increment\",\n            };\n        }\n\n        if (typeof target.backup === \"boolean\") {\n            return {\n                enabled: target.backup,\n                folder: `.axogen/backup/${target.path}`,\n                maxBackups: 5,\n                onConflict: \"increment\",\n            };\n        }\n\n        return {\n            enabled: target.backup.enabled ?? false,\n            folder: target.backup.folder || `.axogen/backup/${target.path}`,\n            maxBackups: target.backup.maxBackups ?? 5,\n            onConflict: target.backup.onConflict || \"increment\",\n        };\n    }\n\n    private async createBackup(\n        targetName: string,\n        target: ZodAnyTarget,\n        options: GenerateOptions = {}\n    ) {\n        const backupOptions = this.getBackupOptions(target);\n\n        if (\n            typeof backupOptions.enabled === \"undefined\" ||\n            typeof backupOptions.folder === \"undefined\" ||\n            typeof backupOptions.maxBackups === \"undefined\" ||\n            typeof backupOptions.onConflict === \"undefined\"\n        ) {\n            throw new Error(\n                `Something went wrong with the backup options for target \"${targetName}\". This is likely a bug in Axogen. Please report it!`\n            );\n        }\n\n        if (backupOptions.enabled) {\n            if (!isGitIgnored(backupOptions.folder)) {\n                logger.warn(\n                    `The ${backupOptions.folder} directory is not ignored by git. Backups may be committed. Make sure you dont commit sensitive data!`\n                );\n            }\n\n            const fileExtension =\n                target.path.split(\".\").pop() || target.type || \"bak\";\n            let backupFilePath: string;\n            let index = 0;\n            let shouldCreateBackup = true;\n            let throwError = \"\";\n            const MAX_ATTEMPTS = Math.max(1000, backupOptions.maxBackups);\n\n            // Find available backup path\n            do {\n                if (index >= MAX_ATTEMPTS) {\n                    throwError = `Failed to find a unique backup path for target \"${targetName}\" after ${MAX_ATTEMPTS} attempts.`;\n                    backupFilePath = \"\";\n                    shouldCreateBackup = false;\n                    break;\n                }\n\n                const indexString = index > 0 ? `_${index}` : \"\";\n                backupFilePath = resolve(\n                    options.baseDir || process.cwd(),\n                    `${backupOptions.folder}/${targetName}_${new Date().toISOString()}${indexString}.${fileExtension}`\n                );\n\n                try {\n                    // If this succeeds, file exists - handle conflict\n                    await access(backupFilePath, constants.F_OK);\n\n                    switch (backupOptions.onConflict) {\n                        case \"increment\":\n                            index++;\n                            continue; // Try next index\n                        case \"overwrite\":\n                            break; // Use this path\n                        case \"skip\":\n                            logger.info(\n                                `Skipping backup for target \"${targetName}\" as backup already exists.`\n                            );\n                            shouldCreateBackup = false;\n                            break;\n                        case \"fail\":\n                            throwError = `Backup file already exists at \"${backupFilePath}\" for target \"${targetName}\".`;\n                            backupFilePath = \"\";\n                            shouldCreateBackup = false;\n                            break;\n                    }\n                    break; // Exit loop (for overwrite, skip, fail cases)\n                } catch (_) {\n                    // File doesn't exist - perfect, use this path\n                    break;\n                }\n            } while (true);\n\n            if (throwError) {\n                throw new Error(throwError);\n            }\n\n            // Create backup if needed\n            if (shouldCreateBackup && backupFilePath) {\n                const fullSourcePath = resolve(\n                    options.baseDir || process.cwd(),\n                    target.path\n                );\n\n                // Check if source file exists before trying to backup\n                try {\n                    await access(fullSourcePath, constants.F_OK);\n                } catch {\n                    // Source file doesn't exist, no backup needed\n                    logger.info(\n                        `No backup created for target \"${targetName}\" - source file does not exist.`\n                    );\n                    return;\n                }\n\n                try {\n                    await mkdir(backupOptions.folder, {recursive: true});\n                    await copyFile(fullSourcePath, backupFilePath);\n                    logger.info(`Backup created at:  ${backupFilePath}`);\n\n                    // Clean up old backups if we exceed maxBackups\n                    try {\n                        const backupDir = dirname(backupFilePath);\n                        const files = await readdir(backupDir);\n\n                        // Filter files that match our target pattern\n                        const targetBackupFiles = files\n                            .filter((file) => {\n                                // Must start with \"targetName_\" and end with \".extension\"\n                                if (\n                                    !file.startsWith(`${targetName}_`) ||\n                                    !file.endsWith(`.${fileExtension}`)\n                                ) {\n                                    return false;\n                                }\n\n                                // Extract the middle part (should be ISO date + optional _index)\n                                const middle = file.slice(\n                                    `${targetName}_`.length,\n                                    -`.${fileExtension}`.length\n                                );\n\n                                // Should match ISO date pattern (with optional _index suffix)\n                                const isoPattern =\n                                    /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z(_\\d+)?$/;\n                                return isoPattern.test(middle);\n                            })\n                            .map((file) => resolve(backupDir, file))\n                            .sort(); // ISO dates in filenames sort correctly alphabetically (oldest first)\n\n                        // Delete excess backups (keep newest, delete oldest)\n                        if (\n                            targetBackupFiles.length > backupOptions.maxBackups\n                        ) {\n                            const filesToDelete = targetBackupFiles.slice(\n                                0,\n                                targetBackupFiles.length -\n                                    backupOptions.maxBackups\n                            );\n\n                            for (const filePath of filesToDelete) {\n                                try {\n                                    await unlink(filePath);\n                                    logger.info(\n                                        `Deleted old backup: ${filePath}`\n                                    );\n                                } catch (error) {\n                                    logger.warn(\n                                        `Failed to delete old backup ${filePath}: ${error instanceof Error ? error.message : String(error)}`\n                                    );\n                                }\n                            }\n                        }\n                    } catch (error) {\n                        logger.warn(\n                            `Failed to clean up old backups: ${error instanceof Error ? error.message : String(error)}`\n                        );\n                    }\n                } catch (error) {\n                    logger.error(\n                        `Failed to create backup for target \"${targetName}\": ${error instanceof Error ? error.message : String(error)}`\n                    );\n                }\n            }\n        }\n    }\n\n    /**\n     * Generates content for a target and writes it to the file system.\n     * Creates necessary parent directories and handles dry-run mode.\n     *\n     * @param targetName - Name of the target for identification and error reporting\n     * @param target - Target configuration specifying format, variables, and output path\n     * @param options - Generation options including dry-run mode and base directory\n     * @returns Promise resolving to the absolute path where the file was written\n     */\n    async generateAndWrite(\n        targetName: string,\n        target: ZodAnyTarget,\n        options: GenerateOptions = {}\n    ): Promise<string> {\n        const {dryRun = false} = options;\n\n        const {path, content} = await this.generate(\n            targetName,\n            target,\n            options\n        );\n\n        if (!dryRun) {\n            await this.createBackup(targetName, target, options);\n\n            await mkdir(dirname(path), {recursive: true});\n            await writeFile(path, content, \"utf-8\");\n        }\n\n        return path;\n    }\n\n    /**\n     * Generates multiple targets in a single operation with individual error handling.\n     * Evaluates target conditions and skips targets that don't meet their criteria.\n     * Continues processing other targets even if individual targets fail.\n     *\n     * @param targets - Record of target names to target configurations\n     * @param options - Generation options applied to all targets\n     * @returns Promise resolving to an array of results indicating success/failure for each target\n     */\n    async generateMultiple(\n        targets: Record<string, ZodAnyTarget>,\n        options: GenerateOptions = {}\n    ): Promise<\n        Array<{name: string; path: string; success: boolean; error?: string}>\n    > {\n        const results: Array<{\n            name: string;\n            path: string;\n            success: boolean;\n            error?: string;\n        }> = [];\n\n        for (const [name, target] of Object.entries(targets)) {\n            // Check if the target should be generated\n            if (!target.condition && target.condition !== undefined) {\n                logger.info(\n                    `Skipping target \"${name}\" as it does not meet the condition.`\n                );\n                continue;\n            }\n\n            try {\n                const path = await this.generateAndWrite(name, target, options);\n                results.push({name, path, success: true});\n            } catch (error) {\n                if (target.backup) {\n                    logger.info(\n                        `No backup created for target \"${name}\" as it was not written due to an error.`\n                    );\n                }\n                const errorMessage =\n                    error instanceof Error ? error.message : String(error);\n                results.push({\n                    name,\n                    path: target.path,\n                    success: false,\n                    error: errorMessage,\n                });\n            }\n        }\n\n        return results;\n    }\n}\n\n/**\n * Default instance of TargetGenerator for convenient access.\n * Pre-instantiated and ready to use for standard target generation operations.\n */\nexport const targetGenerator = new TargetGenerator();\n","import {Command} from \"commander\";\nimport type {ZodAxogenConfig} from \"../../config/types\";\nimport {targetGenerator} from \"../../generators\";\nimport {logger} from \"../../utils/console/logger.ts\";\n\nexport function createGenerateCommand(config: ZodAxogenConfig): Command {\n    return new Command(\"generate\")\n        .alias(\"gen\")\n        .description(\"Generate configuration files from targets\")\n        .option(\"--target <name>\", \"Generate specific target only\")\n        .option(\n            \"--dry-run\",\n            \"Show what would be generated without writing files\"\n        )\n        .action(async (options) => {\n            console.log();\n            logger.start(\"Generating configuration files...\");\n\n            if (!config.targets || Object.keys(config.targets).length === 0) {\n                logger.info(\"No targets defined in config\");\n                return;\n            }\n\n            const startTime = Date.now();\n\n            // Determine which targets to generate\n            const targetsToGenerate = options.target\n                ? {[options.target]: config.targets[options.target]}\n                : config.targets;\n\n            if (options.target && !config.targets[options.target]) {\n                logger.error(`✗ Target \"${options.target}\" not found`);\n                console.log();\n                logger.info(\"Available targets:\");\n                Object.keys(config.targets).forEach((name) =>\n                    logger.bullet(name, 1)\n                );\n                process.exit(1);\n            }\n\n            try {\n                // Generate targets\n                const results = await targetGenerator.generateMultiple(\n                    targetsToGenerate,\n                    {\n                        dryRun: options.dryRun,\n                        baseDir: process.cwd(),\n                    }\n                );\n\n                console.log();\n                logger.success(\"Results:\");\n\n                results.forEach((result) => {\n                    if (result.success) {\n                        if (options.dryRun) {\n                            logger.file(\n                                `Would generate <b>${result.name}</b>`,\n                                result.path\n                            );\n                        } else {\n                            logger.file(\n                                `Generated <b>${result.name}</b>`,\n                                result.path\n                            );\n                        }\n                    } else {\n                        logger.logF(\n                            `<error>✗</error> Failed to generate <b>${result.name}</b>: <error>${result.error || \"Unknown error\"}</error>`\n                        );\n                    }\n                });\n\n                const successCount = results.filter((r) => r.success).length;\n                const errorCount = results.length - successCount;\n                const duration = (Date.now() - startTime).toFixed(2);\n\n                console.log(); // Add spacing before summary\n                if (errorCount === 0) {\n                    logger.logF(\n                        `<success>Generation complete!</success> <muted>${successCount} file${successCount !== 1 ? \"s\" : \"\"}</muted> <subtle>[${duration}ms]</subtle>`\n                    );\n                } else {\n                    logger.logF(\n                        `<warning>Generation complete with errors!</warning> <muted>${successCount} success, ${errorCount} failed</muted> <subtle>[${duration}ms]</subtle>`\n                    );\n                }\n\n                // Exit with error code if any targets failed\n                const hasErrors = results.some((result) => !result.success);\n                if (hasErrors) {\n                    process.exit(1);\n                }\n            } catch (error) {\n                logger.error(\n                    `Failed to generate files: ${error instanceof Error ? error.message : error}`\n                );\n                process.exit(1);\n            }\n        });\n}\n","import {Command} from \"commander\";\nimport {\n    themes,\n    type ThemeName,\n    getTheme,\n    themeManager,\n} from \"../../utils/console/themes.ts\";\nimport {logger} from \"../../utils/console/logger.ts\";\n\nexport function createThemeCommand(): Command {\n    const themeCmd = new Command(\"theme\").description(\n        \"Manage color themes for the CLI\"\n    );\n\n    // Enhanced list command with previews\n    themeCmd\n        .command(\"list\")\n        .alias(\"ls\")\n        .description(\"List all available themes with previews\")\n        .action(themeList);\n\n    // Show current theme\n    themeCmd\n        .command(\"current\")\n        .description(\"Show current theme information\")\n        .action(() => {\n            const current = themeManager.theme;\n            logger.logF(\n                `<muted>Current theme:</muted> <primary>${current.name}</primary>`\n            );\n            console.log();\n            themeSnippet(current.name as ThemeName);\n        });\n\n    // Set theme for current session\n    themeCmd\n        .command(\"set <theme>\")\n        .description(\"Set theme for current session\")\n        .action((themeName: string) => {\n            themeSet(themeName);\n        });\n\n    // Demo command - show what CLI looks like during actual usage\n    themeCmd\n        .command(\"demo [theme]\")\n        .description(\"Show how the Theme looks like\")\n        .action((themeName?: string) => {\n            const theme = themeManager.theme;\n            themeDemo(themeName || theme.name);\n        });\n\n    // Show help when no subcommand is provided\n    themeCmd.action(() => {\n        logger.info(\"Theme management commands:\");\n        console.log();\n        logger.bullet(\"list|ls\", 1);\n        logger.bullet(\"current\", 1);\n        logger.bullet(\"set <subtle>\\\\<theme></subtle>\", 1);\n        logger.bullet(\"demo <subtle>[theme]</subtle>\", 1);\n    });\n\n    return themeCmd;\n}\n\nfunction themeSnippet(themeName: ThemeName) {\n    const originalTheme = themeManager.theme;\n    themeManager.setTheme(themeName);\n\n    logger.logF(`<primary>● ${themeManager.theme.name}</primary>`);\n    logger.logF(`  <subtle>${themeManager.theme.description}</subtle>`);\n    logger.logF(\n        `  <success>Success</success> <error>Error</error> <warning>Warning</warning> <primary>Primary</primary> <secondary>Secondary</secondary>`\n    );\n    console.log();\n\n    themeManager.setTheme(originalTheme.name);\n}\n\nfunction themeSet(themeName: string) {\n    const themeNames = Object.keys(themes) as ThemeName[];\n\n    if (!themeNames.includes(themeName as ThemeName)) {\n        logger.error(`Theme \"${themeName}\" not found`);\n        logger.info(`Available themes: ${themeNames.join(\", \")}`);\n        return;\n    }\n\n    themeManager.setTheme(themeName, true);\n    logger.success(`Theme set to <primary>${themeName}</primary>`);\n\n    // Show a quick preview\n    logger.logF(`<subtle>${themeManager.theme.description}</subtle>`);\n    logger.logF(\n        `<success>Success</success> <error>Error</error> <warning>Warning</warning> <primary>Primary</primary> <secondary>Secondary</secondary>`\n    );\n}\n\nfunction themeList() {\n    const originalTheme = themeManager.theme;\n\n    logger.header(\"AVAILABLE THEMES\");\n    console.log();\n\n    const themeNames = Object.keys(themes) as ThemeName[];\n\n    for (const themeName of themeNames) {\n        themeSnippet(themeName);\n    }\n\n    logger.logF(\n        `Set a theme: <secondary>axogen theme set \\\\<name></secondary>`\n    );\n    logger.logF(\n        `Demo a theme: <secondary>axogen theme demo \\\\<name></secondary>`\n    );\n\n    themeManager.setTheme(originalTheme.name);\n}\n\nfunction themeDemo(themeName: string) {\n    const originalTheme = themeManager.theme;\n\n    const themeNames = Object.keys(themes) as ThemeName[];\n\n    if (!themeNames.includes(themeName as ThemeName)) {\n        logger.error(`Theme \"${themeName}\" not found`);\n        logger.info(`Available themes: ${themeNames.join(\", \")}`);\n        return;\n    }\n\n    themeManager.setTheme(themeName);\n\n    logger.header(`${themeName.toUpperCase()} THEME DEMO`);\n    logger.info(themeManager.theme.description);\n    console.log();\n\n    // Show comprehensive demo\n    logger.divider(\"Project Status\");\n    logger.start(\"Initializing project...\");\n    logger.info(\"Loading configuration files\");\n    logger.success(\"Configuration loaded successfully\");\n    logger.warn(\"Some dependencies need updates\");\n    logger.error(\"Build failed on TypeScript compilation\");\n    console.log();\n\n    logger.divider(\"File Operations\");\n    logger.file(\"Created\", \"src/components/Header.tsx\");\n    logger.file(\"Updated\", \"package.json\");\n    logger.file(\"Generated\", \"dist/bundle.js\");\n    console.log();\n\n    logger.divider(\"Command Execution\");\n    logger.command(\"npm run build\");\n    logger.prefix.command(\"BUILD\", \"Compiling TypeScript...\");\n    logger.prefix.command(\"BUILD\", \"Bundling assets...\");\n    logger.prefix.command(\"BUILD\", \"Optimizing for production...\");\n    console.log();\n\n    logger.divider(\"Text Styling\");\n    logger.logF(\n        `Colors: <success>Success</success> <error>Error</error> <warning>Warning</warning> <primary>Primary</primary> <secondary>Secondary</secondary>`\n    );\n    logger.logF(\n        `Utilities: <d>Dimmed</d> <subtle>Subtle</subtle> <muted>Muted</muted>`\n    );\n    console.log();\n\n    logger.logF(\n        `Like this theme? Set it with: <secondary>axogen theme set ${themeName}</secondary>`\n    );\n\n    themeManager.setTheme(originalTheme.name);\n}\n","import {Command} from \"commander\";\nimport {z} from \"zod\";\nimport {commandRunner} from \"./runner\";\nimport type {\n    ZodAnyCommand,\n    ZodAxogenConfig,\n    ZodGlobalCommandContext,\n} from \"../config/types\";\nimport {\n    analyzeZodSchema,\n    getCommandHelp,\n    isAdvancedCommand,\n    isGroupCommand,\n} from \"./zod_helpers.ts\";\nimport {logger} from \"../utils/console/logger.ts\";\n\nexport function buildDynamicCommands(\n    cli: Command,\n    config: ZodAxogenConfig\n): void {\n    if (!config.commands) return;\n\n    for (const [name, command] of Object.entries(config.commands)) {\n        const cmd = createCommandFromConfig(name, command, config);\n        cli.addCommand(cmd);\n    }\n}\n\nfunction createCommandFromConfig(\n    name: string,\n    command: ZodAnyCommand,\n    config: ZodAxogenConfig\n): Command {\n    const cmd = new Command(name);\n\n    const help = getCommandHelp(command);\n    if (help) {\n        cmd.description(help);\n    }\n\n    if (isAdvancedCommand(command)) {\n        // Add options - Commander.js just handles basic parsing\n        if (command.options) {\n            for (const [optionName, zodSchema] of Object.entries(\n                command.options\n            )) {\n                addBasicOption(cmd, optionName, zodSchema);\n            }\n        }\n\n        // Add arguments - Commander.js just handles basic parsing\n        if (command.args) {\n            for (const [argName, zodSchema] of Object.entries(command.args)) {\n                addBasicArgument(cmd, argName, zodSchema);\n            }\n        }\n    } else {\n        cmd.allowUnknownOption(true);\n        cmd.allowExcessArguments(true);\n    }\n\n    if (isGroupCommand(command)) {\n        for (const [n, c] of Object.entries(command.commands)) {\n            cmd.addCommand(createCommandFromConfig(n, c, config));\n        }\n    } else {\n        cmd.action(async (...args) => {\n            const commandObj = args[args.length - 1];\n            const options = commandObj.opts();\n            const positionalArgs = args.slice(0, -1);\n\n            try {\n                const global = createGlobalContext(\n                    commandObj.parent?.opts?.()?.verbose\n                );\n\n                const result = await commandRunner.executeCommand(command, {\n                    config,\n                    global,\n                    args: positionalArgs,\n                    options,\n                });\n\n                if (!result.success) {\n                    logger.error(`Command failed: ${result.error}`);\n                    process.exit(result.exitCode || 1);\n                }\n            } catch (error) {\n                logger.error(\n                    `Command failed: ${error instanceof Error ? error.message : error}`\n                );\n                process.exit(1);\n            }\n        });\n    }\n\n    return cmd;\n}\n\n// =============================================\n// BASIC COMMANDER.JS SETUP\n// =============================================\n\nfunction addBasicOption(\n    cmd: Command,\n    optionName: string,\n    zodSchema: z.ZodType\n): void {\n    const info = analyzeZodSchema(zodSchema);\n    const description = info.description || `${optionName} option`;\n\n    // Handle boolean flags - Commander.js handles these natively\n    if (info.baseType === \"boolean\") {\n        cmd.option(`--${optionName}`, description);\n        return;\n    }\n\n    // Handle arrays - Accept comma-separated strings, let Zod split them\n    if (info.baseType === \"array\") {\n        const flag = info.isOptional\n            ? `--${optionName} [${optionName}]`\n            : `--${optionName} <${optionName}>`;\n\n        cmd.option(flag, `${description} (comma-separated)`);\n        return;\n    }\n\n    // Handle regular options - Commander.js just captures strings\n    const flag = info.isOptional\n        ? `--${optionName} [${optionName}]`\n        : `--${optionName} <${optionName}>`;\n\n    cmd.option(flag, description);\n}\n\nfunction addBasicArgument(\n    cmd: Command,\n    argName: string,\n    zodSchema: z.ZodType\n): void {\n    const info = analyzeZodSchema(zodSchema);\n    const description = info.description || `${argName} argument`;\n\n    // Handle array arguments - Commander.js collects remaining args\n    // NOTE: Only the LAST argument can be variadic in Commander.js\n    if (info.baseType === \"array\") {\n        const syntax = info.isOptional ? `[${argName}...]` : `<${argName}...>`;\n        cmd.argument(syntax, description);\n    } else {\n        // Handle single arguments\n        const syntax = info.isOptional ? `[${argName}]` : `<${argName}>`;\n        cmd.argument(syntax, description);\n    }\n}\n\nfunction createGlobalContext(\n    verbose: boolean = false\n): ZodGlobalCommandContext {\n    return {\n        cwd: process.cwd(),\n        process_env: process.env,\n        verbose,\n    };\n}\n","import {Command} from \"commander\";\n\nexport * from \"./runner\";\n\nimport {spawn} from \"node:child_process\";\nimport {resolve, isAbsolute} from \"node:path\";\nimport {getVersion} from \"../version.ts\";\nimport {themeManager, type ThemeName, themes} from \"../utils/console/themes.ts\";\nimport type {ZodAxogenConfig} from \"../config/types\";\nimport {loadConfig} from \"../config/loader.ts\";\nimport {createGenerateCommand} from \"./commands/generate.ts\";\nimport {createThemeCommand} from \"./commands/theme.ts\";\nimport {buildDynamicCommands} from \"./builder.ts\";\nimport {logger} from \"../utils/console/logger.ts\";\n\n/**\n * Creates and configures the main CLI application with all commands and options.\n * Sets up global options, pre-action hooks for configuration, and dynamic commands.\n * @returns Promise that resolves to the configured Command instance\n */\nexport async function createCLI(): Promise<Command> {\n    const cli = new Command();\n\n    cli.name(\"axogen\")\n        .description(\"TypeScript-native configuration and task management\")\n        .version(getVersion());\n\n    // Global options\n    cli.option(\"--verbose\", \"Enable verbose logging\");\n    cli.option(\"--quiet\", \"Suppress non-essential output\");\n    cli.option(\"--no-color\", \"Disable colored output\");\n    cli.option(\n        \"--theme <name>\",\n        `Color theme to use (${Object.keys(themes).join(\", \")})`,\n        process.env.AXOGEN_THEME || \"doom-one\" // Default theme\n    );\n\n    // Configure pretty printing based on global options early\n    cli.hook(\"preAction\", (thisCommand) => {\n        const opts = thisCommand.optsWithGlobals();\n\n        // Validate and set theme\n        if (opts.theme && !(opts.theme in themes)) {\n            console.error(\n                `❌ Invalid theme \"${opts.theme}\". Available themes: ${Object.keys(themes).join(\", \")}`\n            );\n            process.exit(1);\n        }\n\n        themeManager.setTheme(opts.theme);\n        themeManager.colorOutput(\n            !opts.noColor && !process.env.NO_COLOR && process.stdout.isTTY\n        );\n    });\n\n    // Load config once\n    let config: ZodAxogenConfig;\n    try {\n        config = await loadConfig();\n    } catch (error) {\n        // If config fails to load, still allow basic commands\n        logger.warn(\n            `Could not load config: ${error instanceof Error ? error.message : error}`\n        );\n        config = {};\n    }\n\n    // Add built-in commands (pass config to them)\n    cli.addCommand(createGenerateCommand(config));\n    cli.addCommand(createThemeCommand());\n\n    // Add dynamic commands from config to the \"run\" command\n    const runCommand = new Command(\"run\").description(\n        \"Run custom commands defined in configuration\"\n    );\n\n    if (config.commands && Object.keys(config.commands).length > 0) {\n        buildDynamicCommands(runCommand, config);\n    } else {\n        // Add a default action to show available commands or a helpful message\n        runCommand.action(() => {\n            logger.info(\"No commands defined in config\");\n        });\n    }\n\n    cli.addCommand(runCommand);\n\n    return cli;\n}\n\n/**\n * Execute a shell command and capture output.\n * Runs the command in a child process and returns stdout, stderr, and exit code.\n * @param command - Shell command to execute\n * @param options - Execution options including working directory and environment variables\n * @returns Promise resolving to command output and exit code\n */\nexport function executeCommand(\n    command: string,\n    options: {\n        cwd?: string;\n        env?: NodeJS.ProcessEnv;\n    } = {}\n): Promise<{stdout: string; stderr: string; exitCode: number}> {\n    return new Promise((resolve, reject) => {\n        const child = spawn(command, {\n            shell: true,\n            cwd: options.cwd || process.cwd(),\n            env: {...process.env, ...options.env},\n            stdio: [\"pipe\", \"pipe\", \"pipe\"],\n        });\n\n        let stdout = \"\";\n        let stderr = \"\";\n\n        child.stdout.on(\"data\", (data) => {\n            stdout += data.toString();\n        });\n\n        child.stderr.on(\"data\", (data) => {\n            stderr += data.toString();\n        });\n\n        child.on(\"close\", (exitCode) => {\n            resolve({stdout, stderr, exitCode: exitCode || 0});\n        });\n\n        child.on(\"error\", (error) => {\n            reject(error);\n        });\n    });\n}\n\nexport interface LiveExecOptions {\n    cwd?: string;\n    env?: NodeJS.ProcessEnv;\n    /** Prefix for live output lines */\n    outputPrefix?: string;\n    /** Whether this command needs interactive input (default: auto-detect) */\n    interactive?: boolean;\n}\n\nexport interface LiveExecResult {\n    exitCode: number;\n    /** Whether the command was terminated by user action */\n    wasTerminated: boolean;\n}\n\n/**\n * Auto-detect if a command is likely to be interactive\n */\nfunction isInteractiveCommand(command: string): boolean {\n    const interactiveKeywords = [\n        \"dev\",\n        \"serve\",\n        \"start\",\n        \"watch\",\n        \"server\",\n        \"daemon\",\n        \"tail\",\n        \"logs\",\n        \"monitor\",\n        \"repl\",\n        \"shell\",\n        \"bash\",\n        \"zsh\",\n    ];\n\n    return interactiveKeywords.some((keyword) =>\n        command.toLowerCase().includes(keyword)\n    );\n}\n\n/**\n * Execute a shell command with live input/output streaming.\n * Supports interactive commands and provides real-time output with proper signal handling.\n * Automatically detects interactive commands and enables stdin forwarding when appropriate.\n * @param command - Shell command to execute\n * @param options - Execution options including working directory, environment, and interactivity settings\n * @returns Promise resolving to exit code and termination status\n */\nexport function liveExec(\n    command: string,\n    options: LiveExecOptions = {}\n): Promise<LiveExecResult> {\n    const resolvedCwd =\n        options.cwd && !isAbsolute(options.cwd)\n            ? resolve(process.cwd(), options.cwd)\n            : options.cwd;\n\n    const {\n        cwd = process.cwd(),\n        env = {},\n        outputPrefix = \"OUTPUT\",\n        interactive = isInteractiveCommand(command),\n    } = {...options, cwd: resolvedCwd};\n\n    return new Promise((resolve, reject) => {\n        let wasTerminated = false;\n        let isCleaningUp = false;\n        let originalSigintListeners: NodeJS.SignalsListener[] = [];\n\n        logger.command(command);\n\n        // Spawn child process in its own process group for proper termination\n        const child = spawn(command, {\n            shell: true,\n            cwd,\n            env: {...process.env, ...env},\n            stdio: [\"pipe\", \"pipe\", \"pipe\"],\n            detached: true, // Create new process group\n        });\n\n        // Setup signal handling - always intercept SIGINT in live mode\n        originalSigintListeners = process.listeners(\n            \"SIGINT\"\n        ) as NodeJS.SignalsListener[];\n        process.removeAllListeners(\"SIGINT\");\n\n        const sigintHandler = () => {\n            if (isCleaningUp) return;\n            wasTerminated = true;\n            cleanup();\n        };\n        process.on(\"SIGINT\", sigintHandler);\n\n        // Pipe child stdout to parent stdout with optional prefix\n        child.stdout.on(\"data\", (data) => {\n            const output = data.toString();\n            if (outputPrefix) {\n                const lines = output.split(\"\\n\");\n                const prefixedOutput = lines\n                    .map((line: any) =>\n                        line\n                            ? logger.format(\n                                  `<secondary>[${outputPrefix}]</secondary> ${line}`\n                              )\n                            : line\n                    )\n                    .join(\"\\n\");\n                process.stdout.write(prefixedOutput);\n            } else {\n                process.stdout.write(output);\n            }\n        });\n\n        // Pipe child stderr to parent stderr with optional prefix\n        child.stderr.on(\"data\", (data) => {\n            const output = data.toString();\n            if (outputPrefix) {\n                const lines = output.split(\"\\n\");\n                const prefixedOutput = lines\n                    .map((line: any) =>\n                        line\n                            ? logger.format(\n                                  `<secondary>[${outputPrefix}]</secondary> ${line}`\n                              )\n                            : line\n                    )\n                    .join(\"\\n\");\n                process.stderr.write(prefixedOutput);\n            } else {\n                process.stderr.write(output);\n            }\n        });\n\n        // Setup stdin forwarding only for interactive commands\n        let inputHandler: ((data: Buffer) => void) | null = null;\n        if (interactive && process.stdin.isTTY) {\n            inputHandler = (data: Buffer) => {\n                if (child.stdin && !child.stdin.destroyed) {\n                    child.stdin.write(data);\n                }\n            };\n            process.stdin.on(\"data\", inputHandler);\n        }\n\n        // Cleanup function\n        const cleanup = () => {\n            if (isCleaningUp) return;\n            isCleaningUp = true;\n\n            // Kill child process and its entire process group\n            if (child.pid && !child.killed) {\n                try {\n                    // Kill the entire process group\n                    process.kill(-child.pid, \"SIGTERM\");\n\n                    // If it doesn't die quickly, force kill it\n                    setTimeout(() => {\n                        if (!child.killed) {\n                            try {\n                                process.kill(-child.pid!, \"SIGKILL\");\n                            } catch (e) {\n                                // Process already dead, ignore\n                            }\n                        }\n                    }, 1000);\n                } catch (e) {\n                    // Process already dead or not accessible, ignore\n                }\n            }\n\n            // Clean up stdin listener\n            if (inputHandler) {\n                process.stdin.removeListener(\"data\", inputHandler);\n            }\n\n            // Close child stdin if still open\n            if (child.stdin && !child.stdin.destroyed) {\n                child.stdin.end();\n            }\n\n            // Restore original SIGINT listeners\n            process.removeAllListeners(\"SIGINT\");\n            originalSigintListeners.forEach((listener) => {\n                process.on(\"SIGINT\", listener);\n            });\n        };\n\n        child.on(\"close\", (exitCode) => {\n            if (isCleaningUp) return;\n\n            cleanup();\n\n            if (wasTerminated) {\n                logger.logF(`Stopped <subtle>${command}</subtle>`);\n            } else {\n                if (exitCode === 0) {\n                    logger.success(`Completed: ${command}`);\n                } else {\n                    logger.error(\n                        `Failed: ${command} <subtle>(${exitCode})</subtle>`\n                    );\n                }\n            }\n\n            resolve({\n                exitCode: exitCode || 0,\n                wasTerminated,\n            });\n        });\n\n        child.on(\"error\", (error) => {\n            cleanup();\n            logger.error(`Error: ${command}`);\n            reject(error);\n        });\n\n        // Handle child process being killed\n        child.on(\"exit\", (_code, signal) => {\n            if (signal && signal !== \"SIGTERM\" && signal !== \"SIGKILL\") {\n                wasTerminated = true;\n            }\n        });\n\n        // Handle uncaught exceptions and process exits\n        const processExitHandler = () => {\n            cleanup();\n        };\n\n        process.once(\"exit\", processExitHandler);\n        process.once(\"SIGTERM\", processExitHandler);\n        process.once(\"uncaughtException\", processExitHandler);\n    });\n}\n\nexport const exec = executeCommand;\n","import {z} from \"zod\";\nimport {config, type DotenvConfigOptions} from \"@dotenvx/dotenvx\";\nimport {isGitIgnored} from \"../git/ignore-checker.ts\";\nimport {zodIssuesToErrors} from \"../utils/helpers.ts\";\nimport {logger} from \"../utils/console/logger.ts\";\n\ninterface LoadEnvConfig extends DotenvConfigOptions {\n    /**\n     * Whether to exit the process on validation error\n     * @default true\n     */\n    exitOnError?: boolean;\n\n    /**\n     * Whether to suppress success messages\n     * @default false\n     */\n    silent?: boolean;\n\n    /**\n     * Path to the .env file\n     * @default \".env.axogen\"\n     */\n    path?: string;\n\n    /**\n     * Whether to suppress dotenv messages\n     * @default true\n     */\n    quiet?: boolean;\n\n    /**\n     * Encoding of the .env file\n     * @default \"utf8\"\n     */\n    encoding?: BufferEncoding;\n}\n\n/**\n * Default configuration for environment parsing\n */\nconst DEFAULT_CONFIG: LoadEnvConfig = {\n    path: \".env.axogen\",\n    quiet: true,\n    encoding: \"utf8\",\n    exitOnError: true,\n    silent: false,\n};\n\n/**\n * Load and validate environment variables using dotenvx and a Zod schema.\n * IMPORTANT: Environment variables are injected into process.env BEFORE validation.\n * If validation fails, the program will exit (if configured to do so), but the variables\n * will already be available in process.env.\n * @param schema - Zod schema to validate environment variables against\n * @param envConfig - Configuration options for loading environment variables\n * @returns Validated environment variables matching the schema\n * @throws Error if validation fails or configuration is invalid\n */\nexport function loadEnv<TSchema extends z.ZodType>(\n    schema: TSchema,\n    envConfig: LoadEnvConfig = {}\n): z.infer<TSchema> {\n    const finalConfig: LoadEnvConfig = {\n        ...DEFAULT_CONFIG,\n        ...envConfig,\n    };\n\n    if (typeof finalConfig.path !== \"string\") {\n        throw new Error(\"The 'path' option must be a string.\");\n    }\n\n    if (!isGitIgnored(finalConfig.path) && !finalConfig.quiet) {\n        logger.warn(\"The .env.axogen file is not ignored by git.\");\n    }\n\n    config(finalConfig);\n\n    try {\n        const result = schema.parse(process.env);\n\n        if (!finalConfig.silent) {\n            logger.success(\"Environment variables validated successfully\");\n        }\n\n        return result;\n    } catch (error) {\n        if (error instanceof z.ZodError) {\n            const validationErrors = zodIssuesToErrors(error.issues);\n\n            if (!finalConfig.silent) {\n                logger.validation(\n                    `Environment variable validation failed for file: <subtle>${finalConfig.path}</subtle>`,\n                    validationErrors\n                );\n            }\n\n            if (finalConfig.exitOnError) {\n                process.exit(1);\n            }\n\n            throw new Error(\"Environment variable validation failed\");\n        } else {\n            if (!finalConfig.silent) {\n                logger.error(`Failed to parse environment variables: ${error}`);\n            }\n            if (finalConfig.exitOnError) {\n                process.exit(1);\n            }\n            throw error;\n        }\n    }\n}\n","import * as TOML from \"@iarna/toml\";\nimport * as fs from \"node:fs\";\n\nexport function parseTomlFile(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n        return TOML.parse(fileContent);\n    } catch (error) {\n        throw new Error(\n            `Failed to parse TOML file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import JSON5 from \"json5\";\nimport * as fs from \"node:fs\";\n\nexport function parseJson5File(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n        return JSON5.parse(fileContent);\n    } catch (error) {\n        throw new Error(\n            `Failed to parse JSON5 file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import {parse} from \"jsonc-parser\";\nimport * as fs from \"node:fs\";\n\nexport function parseJsoncFile(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n        return parse(fileContent);\n    } catch (error) {\n        throw new Error(\n            `Failed to parse JSONC file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import Hjson from \"hjson\";\nimport * as fs from \"node:fs\";\n\nexport function parseHjsonFile(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n        return Hjson.parse(fileContent);\n    } catch (error) {\n        throw new Error(\n            `Failed to parse HJSON file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import * as yaml from \"js-yaml\";\nimport * as fs from \"node:fs\";\n\nexport function parseYamlFile(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n        return yaml.load(fileContent);\n    } catch (error) {\n        throw new Error(\n            `Failed to parse YAML file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import ini from \"ini\";\nimport * as fs from \"node:fs\";\n\nexport function parseIniFile(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n        return ini.parse(fileContent);\n    } catch (error) {\n        throw new Error(\n            `Failed to parse INI file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import {Properties} from \"properties-file\";\nimport * as fs from \"node:fs\";\n\nexport function parsePropertiesFile(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n        const properties = new Properties(fileContent);\n        return properties.collection.reduce(\n            (acc, prop) => {\n                acc[prop.key] = prop.value;\n                return acc;\n            },\n            {} as Record<string, string>\n        );\n    } catch (error) {\n        throw new Error(\n            `Failed to parse Properties file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import * as fs from \"node:fs\";\nimport {parse} from \"@dotenvx/dotenvx\";\n\nexport function parseEnvFile(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n        return parse(fileContent);\n    } catch (error) {\n        throw new Error(\n            `Failed to parse ENV file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import {XMLParser, XMLValidator} from \"fast-xml-parser\";\nimport * as fs from \"node:fs\";\n\nexport function parseXmlFile(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n\n        const validationResult = XMLValidator.validate(fileContent, {\n            allowBooleanAttributes: true,\n        });\n\n        if (validationResult !== true) {\n            throw new Error(\n                `Invalid XML: ${validationResult.err.msg} at line ${validationResult.err.line}`\n            );\n        }\n\n        const parser = new XMLParser({\n            ignoreAttributes: false,\n            attributeNamePrefix: \"@_\",\n            parseAttributeValue: true,\n            parseTagValue: true,\n            trimValues: true,\n            processEntities: true,\n            htmlEntities: true,\n            stopNodes: [],\n            unpairedTags: [],\n        });\n        return parser.parse(fileContent);\n    } catch (error) {\n        throw new Error(\n            `Failed to parse XML file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import Papa from \"papaparse\";\nimport * as fs from \"node:fs\";\n\nexport function parseCsvFile(filePath: string): any[] {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf8\");\n\n        // Remove BOM if present\n        const cleanContent = fileContent.replace(/^\\uFEFF/, \"\");\n\n        const parseConfig: Papa.ParseConfig = {\n            header: true,\n            skipEmptyLines: true,\n            fastMode: false, // Use slower but more accurate parsing\n            comments: false, // Don't treat any lines as comments\n        };\n\n        const result = Papa.parse(cleanContent, parseConfig);\n\n        if (result.errors && result.errors.length > 0) {\n            // Filter out empty row errors which are common and acceptable\n            const significantErrors = result.errors.filter(\n                (error: any) =>\n                    !error.message.includes(\"Too few fields\") &&\n                    !error.message.includes(\"Empty row\") &&\n                    error.type !== \"Quotes\"\n            );\n            if (significantErrors.length > 0) {\n                throw new Error(\n                    `CSV parsing errors: ${significantErrors.map((e: any) => e.message).join(\", \")}`\n                );\n            }\n        }\n\n        return result.data as any[];\n    } catch (error) {\n        throw new Error(\n            `Failed to parse CSV file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import * as fs from \"node:fs\";\nimport * as z from \"zod\";\n\nexport const txtSchema = z.object({\n    content: z.string(),\n});\n\nexport function parseTxtFile(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n        return {content: fileContent};\n    } catch (error) {\n        throw new Error(\n            `Failed to parse TXT file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import CSON from \"cson\";\nimport * as fs from \"node:fs\";\n\nexport function parseCsonFile(filePath: string) {\n    try {\n        const fileContent = fs.readFileSync(filePath, \"utf-8\");\n        return CSON.parse(fileContent);\n    } catch (error) {\n        throw new Error(\n            `Failed to parse CSON file at ${filePath}: ${\n                error instanceof Error ? error.message : String(error)\n            }`\n        );\n    }\n}\n","import * as z from \"zod\";\nimport {zodIssuesToErrors} from \"../utils/helpers.ts\";\nimport {\n    parseTomlFile,\n    parseJson5File,\n    parseJsoncFile,\n    parseHjsonFile,\n    parseYamlFile,\n    parseIniFile,\n    parsePropertiesFile,\n    parseEnvFile,\n    parseXmlFile,\n    parseCsvFile,\n    parseTxtFile,\n    parseCsonFile,\n    txtSchema,\n} from \"./loaderTypes\";\nimport {resolve} from \"node:path\";\nimport * as fs from \"node:fs\";\nimport {logger} from \"../utils/console/logger.ts\";\n\n// Re-export parsers for easier imports\nexport {\n    parseTomlFile,\n    parseJson5File,\n    parseJsoncFile,\n    parseHjsonFile,\n    parseYamlFile,\n    parseIniFile,\n    parsePropertiesFile,\n    parseEnvFile,\n    parseXmlFile,\n    parseCsvFile,\n    parseTxtFile,\n    parseCsonFile,\n    txtSchema,\n};\n\nexport const SupportedLoadFileTypes = [\n    // Core formats\n    \"json\",\n    \"json5\",\n    \"jsonc\",\n    \"hjson\",\n\n    // Configuration formats\n    \"yaml\",\n    \"toml\",\n    \"ini\",\n    \"properties\",\n    \"env\",\n\n    // Structured data\n    \"xml\",\n    \"csv\",\n    \"txt\",\n\n    // Alternative formats\n    \"cson\",\n];\n\nexport type SupportedLoadFileTypesType =\n    (typeof SupportedLoadFileTypes)[number];\n\n/**\n * Load a configuration file and validate it against an optional schema.\n *\n * @param filePath - The path to the configuration file.\n * @param type - The type of the file to load, which determines the parsing method.\n * @param schema - Optional Zod schema to validate the loaded data.\n * @returns A promise that resolves to the parsed and validated data.\n */\nexport function loadFile<TSchema extends z.ZodType>(\n    filePath: string,\n    type: SupportedLoadFileTypesType,\n    schema: TSchema\n): z.infer<TSchema>;\n\nexport function loadFile(\n    filePath: string,\n    type: SupportedLoadFileTypesType\n): Record<string, unknown>;\n\nexport function loadFile<TSchema extends z.ZodType>(\n    filePath: string,\n    type: SupportedLoadFileTypesType,\n    schema?: TSchema\n): z.infer<TSchema> | Record<string, unknown> {\n    const resolvedPath = resolve(filePath);\n\n    if (!fs.existsSync(resolvedPath)) {\n        throw new Error(`File not found: ${resolvedPath}`);\n    }\n\n    if (!SupportedLoadFileTypes.includes(type)) {\n        throw new Error(\n            `Unsupported file type: ${type}. Supported types are: ${SupportedLoadFileTypes.join(\", \")}`\n        );\n    }\n\n    let data: any = {};\n\n    switch (type) {\n        case \"json\":\n            const jsonContent = fs.readFileSync(resolvedPath, \"utf8\");\n            data = JSON.parse(jsonContent);\n            break;\n\n        case \"json5\":\n            data = parseJson5File(resolvedPath);\n            break;\n\n        case \"jsonc\":\n            data = parseJsoncFile(resolvedPath);\n            break;\n\n        case \"hjson\":\n            data = parseHjsonFile(resolvedPath);\n            break;\n\n        case \"yaml\":\n            data = parseYamlFile(resolvedPath);\n            break;\n\n        case \"toml\":\n            data = parseTomlFile(resolvedPath);\n            break;\n\n        case \"ini\":\n            data = parseIniFile(resolvedPath);\n            break;\n\n        case \"properties\":\n            data = parsePropertiesFile(resolvedPath);\n            break;\n\n        case \"env\":\n            data = parseEnvFile(resolvedPath);\n            break;\n\n        case \"xml\":\n            data = parseXmlFile(resolvedPath);\n            break;\n\n        case \"csv\":\n            data = parseCsvFile(resolvedPath);\n            break;\n\n        case \"txt\":\n            data = parseTxtFile(resolvedPath);\n            break;\n\n        case \"cson\":\n            data = parseCsonFile(resolvedPath);\n            break;\n\n        default:\n            throw new Error(`Unimplemented file format: ${type}`);\n    }\n\n    if (schema) {\n        try {\n            return schema.parse(data);\n        } catch (error) {\n            if (error instanceof z.ZodError) {\n                const validationErrors = zodIssuesToErrors(error.issues);\n\n                logger.validation(\n                    `Loading validation failed for fiel: <subtle>${resolvedPath}</subtle>`,\n                    validationErrors\n                );\n                console.log();\n\n                throw new Error(\"Loading validation failed\");\n            }\n\n            throw new Error(\n                `Failed to load file ${filePath}: ${\n                    error instanceof Error ? error.message : String(error)\n                }`\n            );\n        }\n    }\n\n    return data;\n}\n","/**\n * Main entry point for Axogen - a TypeScript-native configuration and task management library.\n * This module provides all public APIs and utilities for working with Axogen configurations,\n * commands, and target generation.\n */\n\nimport {createCLI} from \"./cli-helpers\";\nimport {logger} from \"./utils/console/logger.ts\";\n\n/**\n * Runs the CLI with the provided arguments (or process.argv if not provided).\n * This function can be imported and called from other packages.\n * @param argv Optional array of command line arguments\n */\nexport async function runCLI(argv?: string[]): Promise<void> {\n    try {\n        const cli = await createCLI();\n        await cli.parseAsync(argv || process.argv);\n    } catch (error) {\n        logger.error(`Failed to initialize CLI: ${error}`);\n        process.exit(1);\n    }\n}\n\n/** Core CLI helper functions for command execution */\nexport {exec, executeCommand, liveExec} from \"./cli-helpers\";\n\n/** Configuration loading utilities */\nexport {loadConfig} from \"./config/loader.ts\";\n\n/** Environment variable loading utilities */\nexport {loadEnv} from \"./env/load.ts\";\n\n/** Secret handling utilities for secure configuration management */\nexport {unsafe} from \"./utils/secrets\";\n\n/** Re-export all types for user convenience */\nexport type * from \"./config/types\";\nexport * from \"./config/types\";\n\n/** Re-export loaders for convenience */\nexport * from \"./loaders\";\n\n/** Re-export Zod for convenience */\nexport * as z from \"zod\";\n"]}