diff options
| author | Tommaso Sciortino <[email protected]> | 2025-06-09 15:14:06 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-09 15:14:06 -0700 |
| commit | 5c9e526f0e967afe75c4948e4b077db286f626f2 (patch) | |
| tree | acd94d90266f9d63d034242cd0fad4670692ee98 /packages/core/src/code_assist/setup.ts | |
| parent | f11414a424fb6a440e74d0faabfa254ea75d82c7 (diff) | |
Code to support Oauth login (#881)
Diffstat (limited to 'packages/core/src/code_assist/setup.ts')
| -rw-r--r-- | packages/core/src/code_assist/setup.ts | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/packages/core/src/code_assist/setup.ts b/packages/core/src/code_assist/setup.ts new file mode 100644 index 00000000..d8a6dd45 --- /dev/null +++ b/packages/core/src/code_assist/setup.ts @@ -0,0 +1,56 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import { OAuth2Client } from 'google-auth-library'; + +import { ClientMetadata } from './metadata.js'; +import { doLoadCodeAssist, LoadCodeAssistResponse } from './load.js'; +import { doGCALogin } from './login.js'; +import { + doOnboardUser, + LongrunningOperationResponse, + OnboardUserRequest, +} from './onboard.js'; + +export async function doSetup(): Promise<string> { + const oauth2Client: OAuth2Client = await doGCALogin(); + const clientMetadata: ClientMetadata = { + ideType: 'IDE_UNSPECIFIED', + ideVersion: null, + pluginVersion: null, + platform: 'PLATFORM_UNSPECIFIED', + updateChannel: null, + duetProject: 'aipp-internal-testing', + pluginType: 'GEMINI', + ideName: null, + }; + + // Call LoadCodeAssist. + const loadCodeAssistRes: LoadCodeAssistResponse = await doLoadCodeAssist( + { + cloudaicompanionProject: 'aipp-internal-testing', + metadata: clientMetadata, + }, + oauth2Client, + ); + + // Call OnboardUser until long running operation is complete. + const onboardUserReq: OnboardUserRequest = { + tierId: 'legacy-tier', + cloudaicompanionProject: loadCodeAssistRes.cloudaicompanionProject || '', + metadata: clientMetadata, + }; + let lroRes: LongrunningOperationResponse = await doOnboardUser( + onboardUserReq, + oauth2Client, + ); + while (!lroRes.done) { + await new Promise((f) => setTimeout(f, 5000)); + lroRes = await doOnboardUser(onboardUserReq, oauth2Client); + } + + return lroRes.response?.cloudaicompanionProject?.id || ''; +} |
