import { z } from 'zod'; /** * Supported target types for different build outputs: * - executable: CLI tools, binaries, standalone applications * - app-bundle: macOS/iOS/tvOS/watchOS apps with bundle structure * - library: Static or dynamic libraries * - framework: Apple frameworks for macOS/iOS platforms * - test: Test suites and testing targets * - docker: Container images and Docker builds * - custom: User-defined targets with custom build logic */ export type TargetType = 'executable' | 'app-bundle' | 'library' | 'framework' | 'test' | 'docker' | 'custom' | 'npm' | 'cmake-executable' | 'cmake-library' | 'cmake-custom'; export type PostBuildRunCondition = 'success' | 'failure' | 'always'; export interface PostBuildCommandConfig { name: string; command: string; runOn?: PostBuildRunCondition | PostBuildRunCondition[]; formatter?: string; timeoutSeconds?: number; env?: Record; cwd?: string; maxLines?: number; } export interface BaseTarget { name: string; type: TargetType; enabled?: boolean; buildCommand?: string; watchPaths: string[]; settlingDelay?: number; environment?: Record; maxRetries?: number; backoffMultiplier?: number; debounceInterval?: number; icon?: string; postBuild?: PostBuildCommandConfig[]; logChannels?: string[]; /** Optional logical group used for panel tree rendering. */ group?: string; } export interface ExecutableTarget extends BaseTarget { type: 'executable'; buildCommand: string; outputPath: string; autoRun?: ExecutableAutoRunConfig; } export interface ExecutableAutoRunConfig { enabled?: boolean; command?: string; args?: string[]; restartSignal?: string; restartDelayMs?: number; env?: Record; } export interface AppBundleTarget extends BaseTarget { type: 'app-bundle'; buildCommand: string; platform?: 'macos' | 'ios' | 'tvos' | 'watchos' | 'visionos'; bundleId: string; autoRelaunch?: boolean; launchCommand?: string; } export interface LibraryTarget extends BaseTarget { type: 'library'; buildCommand: string; outputPath: string; libraryType: 'static' | 'dynamic'; } export interface FrameworkTarget extends BaseTarget { type: 'framework'; buildCommand: string; outputPath: string; platform?: 'macos' | 'ios' | 'tvos' | 'watchos' | 'visionos'; } export interface TestTarget extends BaseTarget { type: 'test'; testCommand: string; coverageFile?: string; } export interface DockerTarget extends BaseTarget { type: 'docker'; buildCommand: string; imageName: string; dockerfile?: string; context?: string; tags?: string[]; } export interface CustomTarget extends BaseTarget { type: 'custom'; buildCommand: string; config?: Record; } export interface NPMTarget extends BaseTarget { type: 'npm'; buildScript?: string; packageManager?: 'npm' | 'yarn' | 'pnpm' | 'bun' | 'auto'; outputPaths?: string[]; installOnChange?: boolean; } export interface CMakeExecutableTarget extends BaseTarget { type: 'cmake-executable'; generator?: string; buildType?: 'Debug' | 'Release' | 'RelWithDebInfo' | 'MinSizeRel'; cmakeArgs?: string[]; targetName: string; outputPath?: string; parallel?: boolean; } export interface CMakeLibraryTarget extends BaseTarget { type: 'cmake-library'; generator?: string; buildType?: 'Debug' | 'Release' | 'RelWithDebInfo' | 'MinSizeRel'; cmakeArgs?: string[]; targetName: string; libraryType: 'static' | 'shared'; outputPath?: string; parallel?: boolean; } export interface CMakeCustomTarget extends BaseTarget { type: 'cmake-custom'; generator?: string; buildType?: 'Debug' | 'Release' | 'RelWithDebInfo' | 'MinSizeRel'; cmakeArgs?: string[]; targetName: string; parallel?: boolean; } /** * Union type encompassing all supported target types. * Each target type has specific properties for its build requirements. * Used throughout the system for type-safe target handling. */ export type Target = ExecutableTarget | AppBundleTarget | LibraryTarget | FrameworkTarget | TestTarget | DockerTarget | CustomTarget | NPMTarget | CMakeExecutableTarget | CMakeLibraryTarget | CMakeCustomTarget; export type ProjectType = 'swift' | 'node' | 'rust' | 'python' | 'cmake' | 'mixed'; export type PerformanceProfile = 'conservative' | 'balanced' | 'aggressive'; export interface ExclusionRule { pattern: string; action: 'ignore'; reason: string; enabled?: boolean; } export interface PerformanceConfig { profile: PerformanceProfile; autoOptimize: boolean; metrics: { enabled: boolean; reportInterval: number; }; } export interface WatchmanConfig { useDefaultExclusions: boolean; excludeDirs: string[]; projectType?: ProjectType; maxFileEvents: number; recrawlThreshold: number; settlingDelay: number; rules?: ExclusionRule[]; } export type ChangeType = 'direct' | 'shared' | 'generated'; export interface ChangeEvent { file: string; timestamp: number; affectedTargets: string[]; changeType: ChangeType; impactWeight: number; } export interface TargetPriority { target: string; score: number; lastDirectChange: number; directChangeFrequency: number; focusMultiplier: number; avgBuildTime: number; successRate: number; recentChanges: ChangeEvent[]; } export interface BuildRequest { target: Target; priority: number; timestamp: number; triggeringFiles: string[]; id: string; } /** * Configuration for intelligent build scheduling and prioritization. * Controls how builds are queued, prioritized, and executed concurrently. */ export interface BuildSchedulingConfig { /** Number of concurrent builds (1-10, default: 2) */ parallelization: number; prioritization: { /** Enable intelligent priority scoring */ enabled: boolean; /** Time window for focus detection in ms (default: 300000 = 5min) */ focusDetectionWindow: number; /** Priority score decay period in ms (default: 1800000 = 30min) */ priorityDecayTime: number; /** Timeout scaling factor for build timeouts (default: 2.0) */ buildTimeoutMultiplier: number; }; } /** * Main Poltergeist configuration interface for v1.0 schema. * Defines all aspects of file watching, build scheduling, and notifications. * Validates against strict schema to prevent configuration errors. */ export interface PoltergeistConfig { /** Configuration schema version (must be '1.0') */ version: '1.0'; /** Project type for intelligent defaults and optimizations */ projectType: ProjectType; /** Array of build targets to watch and build */ targets: Target[]; /** Optional status scripts to surface in the panel */ statusScripts?: StatusScriptConfig[]; /** Optional custom summaries to surface alongside AI/Git */ summaryScripts?: SummaryScriptConfig[]; /** Watchman file watching configuration */ watchman?: WatchmanConfig; /** Performance optimization settings */ performance?: PerformanceConfig; /** Build queue and prioritization settings */ buildScheduling?: BuildSchedulingConfig; /** macOS notification preferences */ notifications?: { enabled?: boolean; successSound?: string; failureSound?: string; }; /** Logging configuration */ logging?: { file?: string; level: 'debug' | 'info' | 'warn' | 'error'; }; } export interface StatusScriptConfig { label: string; command: string; targets?: string[]; cooldownSeconds?: number; timeoutSeconds?: number; maxLines?: number; formatter?: 'auto' | 'none' | 'swift' | 'ts'; } export type SummaryPlacement = 'summary' | 'row'; export interface SummaryScriptConfig { /** * Display label for the summary tab/row. */ label: string; /** * Optional badge override for the summary tab. * - number: show that number in the tab badge * - string: show the string in the badge (e.g. "v3.0.0 ยท 12") * - null: suppress the badge entirely */ countLabel?: string | number | null; /** * Command to run. Should print one summary item per line. */ command: string; /** * Where to surface this summary: * - 'summary' (default) adds a tab next to AI/Git in the Summary row * - 'row' adds a dedicated row immediately below the Summary row */ placement?: SummaryPlacement; /** * Minimum seconds between reruns (default: 1800 = 30 minutes). */ refreshSeconds?: number; timeoutSeconds?: number; maxLines?: number; formatter?: 'auto' | 'none' | 'swift' | 'ts'; } export declare const BaseTargetSchema: z.ZodObject<{ name: z.ZodString; type: z.ZodEnum<{ test: "test"; executable: "executable"; "app-bundle": "app-bundle"; library: "library"; framework: "framework"; docker: "docker"; custom: "custom"; npm: "npm"; "cmake-executable": "cmake-executable"; "cmake-library": "cmake-library"; "cmake-custom": "cmake-custom"; }>; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; }, z.core.$strip>; export declare const ExecutableTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"executable">; buildCommand: z.ZodString; outputPath: z.ZodString; autoRun: z.ZodOptional; command: z.ZodOptional; args: z.ZodOptional>; restartSignal: z.ZodOptional; restartDelayMs: z.ZodOptional; env: z.ZodOptional>; }, z.core.$strip>>; }, z.core.$strip>; export declare const AppBundleTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"app-bundle">; buildCommand: z.ZodString; platform: z.ZodOptional>; bundleId: z.ZodString; autoRelaunch: z.ZodOptional; launchCommand: z.ZodOptional; }, z.core.$strip>; export declare const LibraryTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"library">; buildCommand: z.ZodString; outputPath: z.ZodString; libraryType: z.ZodEnum<{ static: "static"; dynamic: "dynamic"; }>; }, z.core.$strip>; export declare const FrameworkTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"framework">; buildCommand: z.ZodString; outputPath: z.ZodString; platform: z.ZodOptional>; }, z.core.$strip>; export declare const TestTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"test">; testCommand: z.ZodString; coverageFile: z.ZodOptional; }, z.core.$strip>; export declare const DockerTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"docker">; buildCommand: z.ZodString; imageName: z.ZodString; dockerfile: z.ZodOptional; context: z.ZodOptional; tags: z.ZodOptional>; }, z.core.$strip>; export declare const CustomTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"custom">; buildCommand: z.ZodString; config: z.ZodOptional>; }, z.core.$strip>; export declare const NPMTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"npm">; buildScript: z.ZodOptional; packageManager: z.ZodOptional>; outputPaths: z.ZodOptional>; installOnChange: z.ZodOptional; }, z.core.$strip>; export declare const CMakeExecutableTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"cmake-executable">; generator: z.ZodOptional; buildType: z.ZodOptional>; cmakeArgs: z.ZodOptional>; targetName: z.ZodString; outputPath: z.ZodOptional; parallel: z.ZodOptional; }, z.core.$strip>; export declare const CMakeLibraryTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"cmake-library">; generator: z.ZodOptional; buildType: z.ZodOptional>; cmakeArgs: z.ZodOptional>; targetName: z.ZodString; libraryType: z.ZodEnum<{ static: "static"; shared: "shared"; }>; outputPath: z.ZodOptional; parallel: z.ZodOptional; }, z.core.$strip>; export declare const CMakeCustomTargetSchema: z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"cmake-custom">; generator: z.ZodOptional; buildType: z.ZodOptional>; cmakeArgs: z.ZodOptional>; targetName: z.ZodString; parallel: z.ZodOptional; }, z.core.$strip>; export declare const TargetSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"executable">; buildCommand: z.ZodString; outputPath: z.ZodString; autoRun: z.ZodOptional; command: z.ZodOptional; args: z.ZodOptional>; restartSignal: z.ZodOptional; restartDelayMs: z.ZodOptional; env: z.ZodOptional>; }, z.core.$strip>>; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"app-bundle">; buildCommand: z.ZodString; platform: z.ZodOptional>; bundleId: z.ZodString; autoRelaunch: z.ZodOptional; launchCommand: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"library">; buildCommand: z.ZodString; outputPath: z.ZodString; libraryType: z.ZodEnum<{ static: "static"; dynamic: "dynamic"; }>; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"framework">; buildCommand: z.ZodString; outputPath: z.ZodString; platform: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"test">; testCommand: z.ZodString; coverageFile: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"docker">; buildCommand: z.ZodString; imageName: z.ZodString; dockerfile: z.ZodOptional; context: z.ZodOptional; tags: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"custom">; buildCommand: z.ZodString; config: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"npm">; buildScript: z.ZodOptional; packageManager: z.ZodOptional>; outputPaths: z.ZodOptional>; installOnChange: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"cmake-executable">; generator: z.ZodOptional; buildType: z.ZodOptional>; cmakeArgs: z.ZodOptional>; targetName: z.ZodString; outputPath: z.ZodOptional; parallel: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"cmake-library">; generator: z.ZodOptional; buildType: z.ZodOptional>; cmakeArgs: z.ZodOptional>; targetName: z.ZodString; libraryType: z.ZodEnum<{ static: "static"; shared: "shared"; }>; outputPath: z.ZodOptional; parallel: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"cmake-custom">; generator: z.ZodOptional; buildType: z.ZodOptional>; cmakeArgs: z.ZodOptional>; targetName: z.ZodString; parallel: z.ZodOptional; }, z.core.$strip>], "type">; export declare const ExclusionRuleSchema: z.ZodObject<{ pattern: z.ZodString; action: z.ZodLiteral<"ignore">; reason: z.ZodString; enabled: z.ZodDefault; }, z.core.$strip>; export declare const PerformanceConfigSchema: z.ZodObject<{ profile: z.ZodDefault>; autoOptimize: z.ZodDefault; metrics: z.ZodObject<{ enabled: z.ZodDefault; reportInterval: z.ZodDefault; }, z.core.$strip>; }, z.core.$strip>; export declare const WatchmanConfigSchema: z.ZodObject<{ useDefaultExclusions: z.ZodDefault; excludeDirs: z.ZodDefault>; projectType: z.ZodOptional>; maxFileEvents: z.ZodDefault; recrawlThreshold: z.ZodDefault; settlingDelay: z.ZodDefault; rules: z.ZodOptional; reason: z.ZodString; enabled: z.ZodDefault; }, z.core.$strip>>>; }, z.core.$strip>; export declare const BuildSchedulingConfigSchema: z.ZodObject<{ parallelization: z.ZodDefault; prioritization: z.ZodObject<{ enabled: z.ZodDefault; focusDetectionWindow: z.ZodDefault; priorityDecayTime: z.ZodDefault; buildTimeoutMultiplier: z.ZodDefault; }, z.core.$strip>; }, z.core.$strip>; export declare const StatusScriptConfigSchema: z.ZodObject<{ label: z.ZodString; command: z.ZodString; targets: z.ZodOptional>; cooldownSeconds: z.ZodDefault; timeoutSeconds: z.ZodDefault; maxLines: z.ZodDefault; formatter: z.ZodDefault>>; }, z.core.$strip>; export declare const SummaryScriptConfigSchema: z.ZodObject<{ label: z.ZodString; countLabel: z.ZodOptional>; command: z.ZodString; placement: z.ZodDefault>>; refreshSeconds: z.ZodDefault; timeoutSeconds: z.ZodDefault; maxLines: z.ZodDefault; formatter: z.ZodDefault>>; }, z.core.$strip>; export declare const PoltergeistConfigSchema: z.ZodObject<{ version: z.ZodLiteral<"1.0">; projectType: z.ZodEnum<{ swift: "swift"; node: "node"; rust: "rust"; python: "python"; cmake: "cmake"; mixed: "mixed"; }>; targets: z.ZodArray; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"executable">; buildCommand: z.ZodString; outputPath: z.ZodString; autoRun: z.ZodOptional; command: z.ZodOptional; args: z.ZodOptional>; restartSignal: z.ZodOptional; restartDelayMs: z.ZodOptional; env: z.ZodOptional>; }, z.core.$strip>>; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"app-bundle">; buildCommand: z.ZodString; platform: z.ZodOptional>; bundleId: z.ZodString; autoRelaunch: z.ZodOptional; launchCommand: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"library">; buildCommand: z.ZodString; outputPath: z.ZodString; libraryType: z.ZodEnum<{ static: "static"; dynamic: "dynamic"; }>; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"framework">; buildCommand: z.ZodString; outputPath: z.ZodString; platform: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"test">; testCommand: z.ZodString; coverageFile: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"docker">; buildCommand: z.ZodString; imageName: z.ZodString; dockerfile: z.ZodOptional; context: z.ZodOptional; tags: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"custom">; buildCommand: z.ZodString; config: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"npm">; buildScript: z.ZodOptional; packageManager: z.ZodOptional>; outputPaths: z.ZodOptional>; installOnChange: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"cmake-executable">; generator: z.ZodOptional; buildType: z.ZodOptional>; cmakeArgs: z.ZodOptional>; targetName: z.ZodString; outputPath: z.ZodOptional; parallel: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"cmake-library">; generator: z.ZodOptional; buildType: z.ZodOptional>; cmakeArgs: z.ZodOptional>; targetName: z.ZodString; libraryType: z.ZodEnum<{ static: "static"; shared: "shared"; }>; outputPath: z.ZodOptional; parallel: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ name: z.ZodString; enabled: z.ZodDefault; buildCommand: z.ZodOptional; watchPaths: z.ZodArray; settlingDelay: z.ZodOptional; environment: z.ZodOptional>; maxRetries: z.ZodOptional; backoffMultiplier: z.ZodOptional; debounceInterval: z.ZodOptional; icon: z.ZodOptional; group: z.ZodOptional; logChannels: z.ZodOptional>; postBuild: z.ZodOptional, z.ZodArray>]>>; formatter: z.ZodOptional; timeoutSeconds: z.ZodOptional; env: z.ZodOptional>; cwd: z.ZodOptional; maxLines: z.ZodOptional; }, z.core.$strip>>>; type: z.ZodLiteral<"cmake-custom">; generator: z.ZodOptional; buildType: z.ZodOptional>; cmakeArgs: z.ZodOptional>; targetName: z.ZodString; parallel: z.ZodOptional; }, z.core.$strip>], "type">>; statusScripts: z.ZodOptional>; cooldownSeconds: z.ZodDefault; timeoutSeconds: z.ZodDefault; maxLines: z.ZodDefault; formatter: z.ZodDefault>>; }, z.core.$strip>>>; summaryScripts: z.ZodOptional>; command: z.ZodString; placement: z.ZodDefault>>; refreshSeconds: z.ZodDefault; timeoutSeconds: z.ZodDefault; maxLines: z.ZodDefault; formatter: z.ZodDefault>>; }, z.core.$strip>>>; watchman: z.ZodOptional; excludeDirs: z.ZodDefault>; projectType: z.ZodOptional>; maxFileEvents: z.ZodDefault; recrawlThreshold: z.ZodDefault; settlingDelay: z.ZodDefault; rules: z.ZodOptional; reason: z.ZodString; enabled: z.ZodDefault; }, z.core.$strip>>>; }, z.core.$strip>>; performance: z.ZodOptional>; autoOptimize: z.ZodDefault; metrics: z.ZodObject<{ enabled: z.ZodDefault; reportInterval: z.ZodDefault; }, z.core.$strip>; }, z.core.$strip>>; buildScheduling: z.ZodOptional; prioritization: z.ZodObject<{ enabled: z.ZodDefault; focusDetectionWindow: z.ZodDefault; priorityDecayTime: z.ZodDefault; buildTimeoutMultiplier: z.ZodDefault; }, z.core.$strip>; }, z.core.$strip>>; notifications: z.ZodOptional>; successSound: z.ZodOptional; failureSound: z.ZodOptional; }, z.core.$strip>>; logging: z.ZodOptional; level: z.ZodEnum<{ info: "info"; error: "error"; debug: "debug"; warn: "warn"; }>; }, z.core.$strip>>; }, z.core.$strip>; export interface BuildStatus { targetName?: string; status: 'success' | 'failure' | 'building' | 'idle' | 'failed'; timestamp: string; error?: string; errorSummary?: string; duration?: number; buildTime?: number; git?: string; gitHash?: string; builder?: string; progress?: BuildProgress; } export interface CLIOptions { target?: string; all?: boolean; verbose?: boolean; config?: string; } export interface BuildResult { success: boolean; output: string; error?: string; duration: number; exitCode?: number; } export interface BuildProgress { current: number; total: number; percent: number; label?: string; updatedAt: string; } export interface FileChange { path: string; exists: boolean; new?: boolean; size?: number; mode?: number; } //# sourceMappingURL=types.d.ts.map