/** * Common helper utilities for MCP tools to reduce code duplication */ import { type Logger, type Timer } from './logger.js'; import type { ToolContext } from '../mcp/context.js'; export type { Timer }; /** * Gets or creates a logger for a tool. * Consolidates the pattern: context.logger || createLogger({ name: 'tool-name' }) * Invariant: Always returns a valid logger instance * * @param context - The tool context that may contain a logger * @param toolName - Name of the tool for logger creation * @returns Logger instance from context or newly created */ export declare function getToolLogger(context: ToolContext, toolName: string): Logger; /** * Creates a timer for measuring tool execution time with safeguards. * Consolidates timer creation pattern for consistent usage across tools. * Wraps the timer to prevent double end/error calls which can skew metrics. * * @param logger - Logger instance for timer output * @param toolName - Name of the tool for timer identification * @returns Timer instance with double-call protection */ export declare function createToolTimer(logger: Logger, toolName: string): Timer; /** * Create a standardized tool execution tracker with automatic start/complete logging. * Uses consistent "Starting X" / "Completed X" format for Copilot transcripts. * * @param toolName - Name of the tool (e.g., 'build-image', 'generate-k8s-manifests') * @param params - Key parameters to log at start * @param logger - Logger instance * @returns Object with complete() and fail() methods for structured logging * * @example * ```typescript * const tracker = createStandardizedToolTracker('build-image', { path: './app', tags }, logger); * try { * const result = await performBuild(); * tracker.complete({ imageId: result.imageId }); * return Success(result); * } catch (error) { * tracker.fail(error); * return Failure(error.message); * } * ``` */ export declare function createStandardizedToolTracker(toolName: string, params: Record, logger: Logger): { complete: (result: Record) => void; fail: (error: string | Error, context?: Record) => void; }; //# sourceMappingURL=tool-helpers.d.ts.map