This commit is contained in:
alcpereira 2025-07-07 13:17:14 +09:00 committed by GitHub
commit 63d1c63c6c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 12 deletions

View file

@ -46,11 +46,11 @@ export namespace AuthGithubCopilot {
})
const deviceData: DeviceCodeResponse = await deviceResponse.json()
return {
device: deviceData.device_code,
user: deviceData.user_code,
verification: deviceData.verification_uri,
deviceCode: deviceData.device_code,
userCode: deviceData.user_code,
verificationUri: deviceData.verification_uri,
interval: deviceData.interval || 5,
expiry: deviceData.expires_in,
expiryIn: deviceData.expires_in,
}
}

View file

@ -184,20 +184,26 @@ export const AuthLoginCommand = cmd({
const copilot = await AuthCopilot()
if (provider === "github-copilot" && copilot) {
await new Promise((resolve) => setTimeout(resolve, 10))
const deviceInfo = await copilot.authorize()
const { userCode, deviceCode, verificationUri, interval } =
await copilot.authorize()
prompts.note(
`Please visit: ${deviceInfo.verification}\nEnter code: ${deviceInfo.user}`,
)
prompts.note(`Enter the following code: ${userCode} when prompted`)
prompts.note("Trying to open browser...")
try {
await open(verificationUri)
} catch (e) {
prompts.log.error(
"Failed to open browser perhaps you are running without a display or X server, please open the following URL in your browser:",
)
}
prompts.log.info(verificationUri)
const spinner = prompts.spinner()
spinner.start("Waiting for authorization...")
while (true) {
await new Promise((resolve) =>
setTimeout(resolve, deviceInfo.interval * 1000),
)
const response = await copilot.poll(deviceInfo.device)
await new Promise((resolve) => setTimeout(resolve, interval * 1000))
const response = await copilot.poll(deviceCode)
if (response.status === "pending") continue
if (response.status === "success") {
await Auth.set("github-copilot", {