import type { GitCallbacks } from '@yaakapp-internal/git'; import { showPromptForm } from '../../lib/prompt-form'; import { Banner } from '../core/Banner'; import { InlineCode } from '../core/InlineCode'; import { addGitRemote } from './showAddRemoteDialog'; export function gitCallbacks(dir: string): GitCallbacks { return { addRemote: async () => { return addGitRemote(dir); }, promptCredentials: async ({ url: remoteUrl, error }) => { const isGitHub = /github\.com/i.test(remoteUrl); const userLabel = isGitHub ? 'GitHub Username' : 'Username'; const passLabel = isGitHub ? 'GitHub Personal Access Token' : 'Password / Token'; const userDescription = isGitHub ? 'Use your GitHub username (not your email).' : undefined; const passDescription = isGitHub ? 'GitHub requires a Personal Access Token (PAT) for write operations over HTTPS. Passwords are not supported.' : 'Enter your password or access token for this Git server.'; const r = await showPromptForm({ id: 'git-credentials', title: 'Credentials Required', description: error ? ( {error} ) : ( <> Enter credentials for {remoteUrl} ), inputs: [ { type: 'text', name: 'username', label: userLabel, description: userDescription }, { type: 'text', name: 'password', label: passLabel, description: passDescription, password: true, }, ], }); if (r == null) throw new Error('Cancelled credentials prompt'); const username = String(r.username || ''); const password = String(r.password || ''); return { username, password }; }, }; }