diff options
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 || ''; +} |
