feat(coding-agent): add Google Cloud Code Assist OAuth flow
- Add OAuth handler with PKCE flow and local callback server - Automatic project discovery via loadCodeAssist/onboardUser endpoints - Store credentials with projectId for API calls - Encode token+projectId as JSON for provider to decode - Register as 'google-cloud-code-assist' OAuth provider
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { loginAnthropic, refreshAnthropicToken } from "./anthropic.js";
|
||||
import { loginGitHubCopilot, refreshGitHubCopilotToken } from "./github-copilot.js";
|
||||
import { loginGoogleCloud, refreshGoogleCloudToken } from "./google-cloud.js";
|
||||
import {
|
||||
listOAuthProviders as listOAuthProvidersFromStorage,
|
||||
loadOAuthCredentials,
|
||||
@@ -11,7 +12,7 @@ import {
|
||||
// Re-export for convenience
|
||||
export { listOAuthProvidersFromStorage as listOAuthProviders };
|
||||
|
||||
export type SupportedOAuthProvider = "anthropic" | "github-copilot";
|
||||
export type SupportedOAuthProvider = "anthropic" | "github-copilot" | "google-cloud-code-assist";
|
||||
|
||||
export interface OAuthProviderInfo {
|
||||
id: SupportedOAuthProvider;
|
||||
@@ -45,6 +46,11 @@ export function getOAuthProviders(): OAuthProviderInfo[] {
|
||||
name: "GitHub Copilot",
|
||||
available: true,
|
||||
},
|
||||
{
|
||||
id: "google-cloud-code-assist",
|
||||
name: "Google Cloud Code Assist (Gemini CLI)",
|
||||
available: true,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
@@ -73,6 +79,10 @@ export async function login(
|
||||
saveOAuthCredentials("github-copilot", creds);
|
||||
break;
|
||||
}
|
||||
case "google-cloud-code-assist": {
|
||||
await loginGoogleCloud(onAuth, onProgress);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new Error(`Unknown OAuth provider: ${provider}`);
|
||||
}
|
||||
@@ -103,6 +113,9 @@ export async function refreshToken(provider: SupportedOAuthProvider): Promise<st
|
||||
case "github-copilot":
|
||||
newCredentials = await refreshGitHubCopilotToken(credentials.refresh, credentials.enterpriseUrl);
|
||||
break;
|
||||
case "google-cloud-code-assist":
|
||||
newCredentials = await refreshGoogleCloudToken(credentials.refresh, credentials.projectId);
|
||||
break;
|
||||
default:
|
||||
throw new Error(`Unknown OAuth provider: ${provider}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user