/** * Tool Metadata for VS Code Extension Integration * * Provides comprehensive metadata for each tool including: * - LLM-facing descriptions (modelDescription) * - User-facing descriptions (userDescription) * - Display names and icons * - Confirmation message templates * - Workflow hints (suggested next tools) * * @example * ```typescript * import { toolMetadata } from 'containerization-assist-mcp/sdk'; * * // Use in VS Code package.json * const config = toolMetadata.analyzeRepo; * console.log(config.modelDescription); * ``` */ /** * External dependency identifiers. * * Use these constants instead of magic strings when specifying * tool dependencies. This ensures consistency and type safety. */ export declare const ExternalDeps: { /** Docker daemon */ readonly DOCKER: "docker"; /** Trivy security scanner */ readonly TRIVY: "trivy"; /** Kubernetes CLI */ readonly KUBECTL: "kubectl"; /** Kubernetes cluster access */ readonly CLUSTER_ACCESS: "cluster-access"; /** Container registry authentication */ readonly REGISTRY_AUTH: "registry-auth"; }; /** * Type for external dependency identifiers. */ export type ExternalDepId = (typeof ExternalDeps)[keyof typeof ExternalDeps]; /** * External dependency requirement. * * Structured representation of a tool's external dependency, * replacing the previous string-based format. */ export interface ExternalDependency { /** Dependency identifier */ readonly id: ExternalDepId; /** Whether this dependency is optional */ readonly optional?: boolean; /** Human-readable description (optional) */ readonly description?: string; } /** * Get human-readable list of required dependencies. * * @param deps - Array of external dependencies * @returns Comma-separated string of dependency names */ export declare function getRequiredDepsString(deps: readonly ExternalDependency[]): string; /** * Check if a tool has a specific required dependency. * * @param metadata - Tool metadata to check * @param depId - Dependency ID to look for * @param includeOptional - Whether to include optional dependencies * @returns True if the dependency is required */ export declare function requiresDependency(metadata: ToolMetadata, depId: ExternalDepId, includeOptional?: boolean): boolean; /** * Confirmation message configuration for prepareInvocation(). */ export interface ConfirmationConfig { /** Title for the confirmation dialog */ title: string; /** Template for confirmation message (use {{param}} for substitution) */ messageTemplate: string; /** Whether this operation is read-only (affects messaging) */ isReadOnly: boolean; /** Warning message for destructive operations (optional) */ warning?: string; } /** * Complete metadata for a single tool. */ export interface ToolMetadata { /** Tool name for VS Code registration (snake_case) */ readonly name: string; /** User-friendly display name */ readonly displayName: string; /** Short name for #tool references in chat */ readonly toolReferenceName: string; /** Detailed description for LLM consumption - explains when/how to use */ readonly modelDescription: string; /** Brief description for users */ readonly userDescription: string; /** VS Code icon identifier */ readonly icon: string; /** Whether tool can be referenced with # in prompts */ readonly canBeReferencedInPrompt: boolean; /** Confirmation dialog configuration */ readonly confirmation: Readonly; /** Suggested next tools in typical workflow */ readonly suggestedNextTools: readonly string[]; /** Tool category for grouping */ readonly category: 'analysis' | 'dockerfile' | 'image' | 'kubernetes' | 'operations'; /** External dependencies required by this tool */ readonly requiresExternalDeps: readonly ExternalDependency[]; } /** * Metadata for analyze-repo tool. */ export declare const analyzeRepoMetadata: ToolMetadata; /** * Metadata for generate-dockerfile tool. */ export declare const generateDockerfileMetadata: ToolMetadata; /** * Metadata for fix-dockerfile tool. */ export declare const fixDockerfileMetadata: ToolMetadata; /** * Metadata for build-image-context tool. */ export declare const buildImageContextMetadata: ToolMetadata; /** * Metadata for scan-image tool. */ export declare const scanImageMetadata: ToolMetadata; /** * Metadata for tag-image tool. */ export declare const tagImageMetadata: ToolMetadata; /** * Metadata for push-image tool. */ export declare const pushImageMetadata: ToolMetadata; /** * Metadata for generate-k8s-manifests tool. */ export declare const generateK8sManifestsMetadata: ToolMetadata; /** * Metadata for prepare-cluster tool. */ export declare const prepareClusterMetadata: ToolMetadata; /** * Metadata for verify-deploy tool. */ export declare const verifyDeployMetadata: ToolMetadata; /** * Metadata for ops tool. */ export declare const opsMetadata: ToolMetadata; /** * Type-safe registry ensuring all tools have metadata. * TypeScript will error if a tool is missing or has wrong type. */ interface ToolMetadataRegistry { analyzeRepo: ToolMetadata; generateDockerfile: ToolMetadata; fixDockerfile: ToolMetadata; buildImageContext: ToolMetadata; scanImage: ToolMetadata; tagImage: ToolMetadata; pushImage: ToolMetadata; generateK8sManifests: ToolMetadata; prepareCluster: ToolMetadata; verifyDeploy: ToolMetadata; ops: ToolMetadata; } /** * All tool metadata for VS Code extension configuration. * * Uses `satisfies` to ensure type safety: * - TypeScript will error if a tool is missing * - TypeScript will error if a tool has the wrong type * - TypeScript will error if a key is misspelled * * @example * ```typescript * import { toolMetadata } from 'containerization-assist-mcp/sdk'; * * // Generate package.json languageModelTools entry * const entry = { * name: toolMetadata.analyzeRepo.name, * displayName: toolMetadata.analyzeRepo.displayName, * modelDescription: toolMetadata.analyzeRepo.modelDescription, * // ... * }; * ``` */ export declare const toolMetadata: { readonly analyzeRepo: ToolMetadata; readonly generateDockerfile: ToolMetadata; readonly fixDockerfile: ToolMetadata; readonly buildImageContext: ToolMetadata; readonly scanImage: ToolMetadata; readonly tagImage: ToolMetadata; readonly pushImage: ToolMetadata; readonly generateK8sManifests: ToolMetadata; readonly prepareCluster: ToolMetadata; readonly verifyDeploy: ToolMetadata; readonly ops: ToolMetadata; }; export type { ToolMetadataRegistry }; /** * Type for toolMetadata object keys. */ export type ToolMetadataName = keyof typeof toolMetadata; /** * Standard containerization workflow order. * * Useful for understanding the typical tool sequence: * analyze → generate dockerfile → build → scan → tag → push → generate k8s → prepare → verify */ export declare const standardWorkflow: readonly ToolMetadataName[]; /** * Get tools by category. */ export declare function getToolsByCategory(category: ToolMetadata['category']): ToolMetadata[]; //# sourceMappingURL=metadata.d.ts.map