/**
 * Type definitions for Toolsmith feature
 *
 * @architecture @.aiwg/architecture/decisions/ADR-014-toolsmith-feature-architecture.md
 * @architecture @.aiwg/architecture/toolsmith-implementation-spec.md
 */
/**
 * Tool category classification
 */
export type ToolCategory = 'core' | 'languages' | 'utilities' | 'custom';
/**
 * Operating system platform
 */
export type Platform = 'linux' | 'macos' | 'windows' | 'wsl';
/**
 * Tool verification status
 */
export type ToolStatus = 'verified' | 'unverified';
/**
 * Runtime environment information
 */
export interface EnvironmentInfo {
    os: 'linux' | 'darwin' | 'win32';
    osVersion: string;
    arch: 'x64' | 'arm64' | 'x86';
    shell: string;
    homeDir: string;
    workingDir: string;
}
/**
 * System resource information
 */
export interface ResourceInfo {
    diskFreeGb: number;
    memoryTotalGb: number;
    memoryAvailableGb: number;
    cpuCores: number;
}
/**
 * Cataloged tool entry
 */
export interface CatalogedTool {
    id: string;
    name: string;
    category: ToolCategory;
    version: string;
    path: string;
    status: ToolStatus;
    lastVerified: string;
    capabilities: string[];
    manPage?: string;
    documentation?: string;
    aliases: string[];
    relatedTools: string[];
}
/**
 * Unavailable tool entry
 */
export interface UnavailableTool {
    id: string;
    reason: 'not-installed' | 'version-mismatch' | 'broken';
    installHint?: string;
}
/**
 * Complete runtime catalog
 */
export interface RuntimeCatalog {
    $schema: string;
    version: '1.0';
    generated: string;
    environment: EnvironmentInfo;
    resources: ResourceInfo;
    tools: CatalogedTool[];
    unavailable: UnavailableTool[];
}
/**
 * Tool verification result
 */
export interface VerificationResult {
    valid: number;
    total: number;
    failed: CatalogedTool[];
    timestamp: string;
}
/**
 * Runtime summary for display
 */
export interface RuntimeSummary {
    environment: EnvironmentInfo;
    resources: ResourceInfo;
    toolCounts: Record<ToolCategory, number>;
    totalTools: number;
    lastDiscovery: string;
    catalogPath: string;
}
/**
 * Individual tool check result
 */
export interface ToolCheckResult {
    id: string;
    available: boolean;
    version?: string;
    path?: string;
    status?: ToolStatus;
    lastVerified?: string;
    installHint?: string;
}
/**
 * Custom tool configuration
 */
export interface CustomToolConfig {
    id: string;
    name: string;
    path: string;
    category: ToolCategory;
    capabilities: string[];
    documentation?: string;
    aliases?: string[];
}
/**
 * Tool specification frontmatter
 */
export interface ToolSpecFrontmatter {
    id: string;
    name: string;
    version: string;
    category: ToolCategory;
    platform: Platform;
    platformNotes?: string;
    status: 'verified' | 'unverified' | 'unavailable';
    verifiedDate: string;
    capabilities: string[];
    synopsis: string;
}
/**
 * Complete tool specification
 */
export interface ToolSpecification {
    id: string;
    name: string;
    version: string;
    category: ToolCategory;
    platform: Platform;
    platformNotes: string;
    status: 'verified' | 'unverified' | 'unavailable';
    synopsis: string;
    rawContent: string;
}
/**
 * Toolsmith configuration
 */
export interface ToolsmithConfig {
    $schema: string;
    version: '1.0';
    discovery: {
        autoDiscoverOnInit: boolean;
        refreshIntervalHours: number;
        categories: ToolCategory[];
        excludePatterns: string[];
        includeSystemPath: boolean;
        additionalPaths: string[];
    };
    generation: {
        preferLocalManPages: boolean;
        fetchRemoteDocs: boolean;
        includeExamples: boolean;
        exampleCount: number;
        platformAdaptation: boolean;
    };
    caching: {
        enabled: boolean;
        ttlDays: number;
        maxCacheSizeMb: number;
        autoUpdateOnVersionChange: boolean;
    };
    output: {
        format: 'markdown';
        includeFrontmatter: boolean;
        compactMode: boolean;
    };
}
/**
 * Known tool database entry
 */
export interface KnownToolEntry {
    category: ToolCategory;
    capabilities: string[];
    documentation?: string;
    aliases: string[];
    relatedTools: string[];
    versionPattern: string;
    examples: Array<{
        cmd: string;
        desc: string;
    }>;
}
//# sourceMappingURL=types.d.ts.map