import { AiLegacyCore } from '../ai-legacy/ai-legacy-core.js'; import { logger } from '../../../shared/common/logger.js'; type CommitGenInit = { mode?: string; oneline?: boolean; targetBranch?: string; task?: string | number; timeout?: number; [key: string]: unknown; }; /** * @purpose Generate commit message from staged diff via LLM. * @invariant Uses AiLegacyCore and getGitDiffInfo; returns undefined if diff is empty. * @consumer CLI (cmd/commit) */ export declare class CommitGen { /** @purpose Configuration with defaults for mode, prompts, timeout. */ protected init: CommitGenInit & { mode: string; oneline: boolean; targetBranch?: string; task?: string | number; logger: typeof logger; promptCommitMessage: string; promptCommitChangeset: string; timeout: number; }; /** @purpose AI core instance for LLM requests. */ protected ai: AiLegacyCore; /** * @purpose Initialize CommitGen with configuration and AI core. * @param [init] Configuration overrides (mode, oneline, targetBranch, task, timeout). */ constructor(init?: CommitGenInit); /** * @purpose Get the logger instance used during generation. * @returns Logger instance. */ get logger(): typeof logger; /** * @purpose Commit output mode: auto | oneline | detailed. * @returns Mode string. */ get mode(): string; /** * @purpose Active AI model name (from the first available rc). * @returns Model name string or undefined. */ get model(): string | undefined; /** * @purpose Active model API URL. * @returns API URL string or undefined. */ get apiUrl(): string | undefined; /** * @purpose Branch against which the diff is built (if specified). * @returns Target branch name or undefined. */ get targetBranch(): string | undefined; /** * @purpose Task identifier for substitution in subject (optional). * @returns Task ID string or number, or undefined. */ get task(): string | number | undefined; /** * @purpose Call LLM with a single prompt without think blocks (for tests or custom input). * @param input Prompt text. * @returns Model response as string. * @sideEffect Network: request to AI API. */ fetchPrompt(input: string): Promise; /** * @purpose Generate commit message from staged diff (batches → changeset → message). * @returns Message string (oneline or with description) or undefined on empty diff/error. * @sideEffect Network: requests to AI; Logs: info/warn/debug. */ generate(): Promise; } export {};