export const CHANGE_SOURCES = ["staged", "all", "auto"] as const; export type ChangeSource = (typeof CHANGE_SOURCES)[number]; export const COMMIT_LANGUAGES = ["en", "zh", "ja", "ko", "de", "fr"] as const; export type CommitLanguage = (typeof COMMIT_LANGUAGES)[number]; export type ResolvedChangeSource = Exclude; export interface CommitConfig { /** 生效的系统提示词模板名,内容从模板文件加载。 */ template: string; instructions: string | null; changeSource: ChangeSource; language: CommitLanguage; provider: string | null; model: string | null; maxDiffChars: number; maxOutputTokens: number; commitHistoryCount: number; signoff: boolean; timeoutMs: number | null; } export interface GitChangeContext { root: string; branch: string; requestedSource: ChangeSource; resolvedSource: ResolvedChangeSource; stagedFiles: string[]; worktreeFiles: string[]; untrackedFiles: string[]; promptSummary: string; promptDiff: string; diffTruncated: boolean; fingerprint: string; } export interface GeneratedCommitMessage { message: string; modelLabel: string; } export type CommitReviewAction = "commit" | "regenerate" | "cancel"; export interface CommitReviewResult { action: CommitReviewAction; /** 最终确认的提交消息,可能已在审阅对话框中被手动编辑。 */ message: string; } export interface GitCommitResult { hash: string; output: string; }