MCPcopy Create free account
hub / github.com/anus-dev/ANUS / setupUser

Function setupUser

packages/core/src/code_assist/setup.ts:36–111  ·  view source on GitHub ↗
(client: OAuth2Client)

Source from the content-addressed store, hash-verified

34 * @returns the user's actual project id
35 */
36export async function setupUser(client: OAuth2Client): Promise<UserData> {
37 const projectId = process.env['GOOGLE_CLOUD_PROJECT'] || undefined;
38 const caServer = new CodeAssistServer(client, projectId, {}, '', undefined);
39 const coreClientMetadata: ClientMetadata = {
40 ideType: 'IDE_UNSPECIFIED',
41 platform: 'PLATFORM_UNSPECIFIED',
42 pluginType: 'ANUS',
43 };
44
45 const loadRes = await caServer.loadCodeAssist({
46 cloudaicompanionProject: projectId,
47 metadata: {
48 ...coreClientMetadata,
49 duetProject: projectId,
50 },
51 });
52
53 if (loadRes.currentTier) {
54 if (!loadRes.cloudaicompanionProject) {
55 if (projectId) {
56 return {
57 projectId,
58 userTier: loadRes.currentTier.id,
59 };
60 }
61 throw new ProjectIdRequiredError();
62 }
63 return {
64 projectId: loadRes.cloudaicompanionProject,
65 userTier: loadRes.currentTier.id,
66 };
67 }
68
69 const tier = getOnboardTier(loadRes);
70
71 let onboardReq: OnboardUserRequest;
72 if (tier.id === UserTierId.FREE) {
73 // The free tier uses a managed google cloud project. Setting a project in the `onboardUser` request causes a `Precondition Failed` error.
74 onboardReq = {
75 tierId: tier.id,
76 cloudaicompanionProject: undefined,
77 metadata: coreClientMetadata,
78 };
79 } else {
80 onboardReq = {
81 tierId: tier.id,
82 cloudaicompanionProject: projectId,
83 metadata: {
84 ...coreClientMetadata,
85 duetProject: projectId,
86 },
87 };
88 }
89
90 // Poll onboardUser until long running operation is complete.
91 let lroRes = await caServer.onboardUser(onboardReq);
92 while (!lroRes.done) {
93 await new Promise((f) => setTimeout(f, 5000));

Callers 2

setup.test.tsFile · 0.85

Calls 3

loadCodeAssistMethod · 0.95
onboardUserMethod · 0.95
getOnboardTierFunction · 0.85

Tested by

no test coverage detected