summaryrefslogtreecommitdiff
path: root/packages/core/src/code_assist/setup.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core/src/code_assist/setup.ts')
-rw-r--r--packages/core/src/code_assist/setup.ts56
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 || '';
+}