/** GitTool 运行时注入：工作区路径与 git 命令 env */
export type GitToolConfigure = {
  getGitWorkDir: () => string | null
  getGitCommandEnv?: () => Record<string, string>
}

let gitToolHooks: GitToolConfigure | null = null

/** 注入 git 工作区与凭据 env */
export function configure(next: GitToolConfigure | null): void {
  gitToolHooks = next
}

/** 清除 configure 状态（GitTool 未启用时） */
export function resetConfigure(): void {
  gitToolHooks = null
}

/** 读取已配置的 git 工作区；未 configure 返回 null */
export function getGitWorkDir(): string | null {
  return gitToolHooks?.getGitWorkDir() ?? null
}

/** 合并宿主注入的 git 凭据 env */
export function getGitCommandEnv(): Record<string, string> {
  return gitToolHooks?.getGitCommandEnv?.() ?? {}
}

/** 供 runtime 重载模块时恢复 hooks */
export function getCachedConfigure(): GitToolConfigure | null {
  return gitToolHooks
}
