repoburg 1.3.136 → 1.3.138
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CODEMAP.md +3 -11
- package/README.md +4 -4
- package/backend/.env +2 -2
- package/backend/CODEMAP.md +2 -3
- package/backend/dist/src/core-entities/llm-call-log.entity.d.ts +1 -1
- package/backend/dist/src/core-entities/llm-call-log.entity.js +3 -3
- package/backend/dist/src/core-entities/llm-call-log.entity.js.map +1 -1
- package/backend/dist/src/core-entities/session.entity.js +2 -2
- package/backend/dist/src/core-entities/session.entity.js.map +1 -1
- package/backend/dist/src/core-entities/system-prompt.entity.js +1 -1
- package/backend/dist/src/core-entities/system-prompt.entity.js.map +1 -1
- package/backend/dist/src/llm-call-logs/dto/llm-call-log.dto.d.ts +1 -1
- package/backend/dist/src/llm-call-logs/dto/llm-call-log.dto.js +1 -1
- package/backend/dist/src/llm-call-logs/dto/llm-call-log.dto.js.map +1 -1
- package/backend/dist/src/llm-call-logs/llm-call-logs.controller.js +1 -1
- package/backend/dist/src/llm-orchestration/action-handlers/manage-sub-agents.handler.js +1 -1
- package/backend/dist/src/llm-orchestration/action-handlers/overwrite-file.handler.js +1 -0
- package/backend/dist/src/llm-orchestration/action-handlers/overwrite-file.handler.js.map +1 -1
- package/backend/dist/src/llm-orchestration/action-handlers/quick-edit.handler.js +3 -0
- package/backend/dist/src/llm-orchestration/action-handlers/quick-edit.handler.js.map +1 -1
- package/backend/dist/src/llm-provider/llm-provider.interface.d.ts +3 -9
- package/backend/dist/src/llm-provider/llm-provider.interface.js +2 -9
- package/backend/dist/src/llm-provider/llm-provider.interface.js.map +1 -1
- package/backend/dist/src/llm-provider/llm-provider.module.js +1 -2
- package/backend/dist/src/llm-provider/llm-provider.module.js.map +1 -1
- package/backend/dist/src/llm-provider/proxy-llm.provider.d.ts +1 -3
- package/backend/dist/src/llm-provider/proxy-llm.provider.js +4 -12
- package/backend/dist/src/llm-provider/proxy-llm.provider.js.map +1 -1
- package/backend/dist/src/llm-responses/dto/sync-conversation.dto.js +2 -2
- package/backend/dist/src/llm-responses/dto/sync-conversation.dto.js.map +1 -1
- package/backend/dist/src/sessions/dto/session.dto.d.ts +1 -1
- package/backend/dist/src/sessions/dto/session.dto.js +7 -7
- package/backend/dist/src/sessions/dto/session.dto.js.map +1 -1
- package/backend/dist/src/sessions/sessions.service.js +14 -5
- package/backend/dist/src/sessions/sessions.service.js.map +1 -1
- package/backend/dist/src/sub-agents/dto/create-sub-agent.dto.js +1 -1
- package/backend/dist/src/sub-agents/dto/create-sub-agent.dto.js.map +1 -1
- package/backend/dist/src/sub-agents/dto/update-sub-agent.dto.js +1 -1
- package/backend/dist/src/sub-agents/dto/update-sub-agent.dto.js.map +1 -1
- package/backend/dist/src/sub-agents/sub-agent.entity.js +1 -1
- package/backend/dist/src/sub-agents/sub-agent.entity.js.map +1 -1
- package/backend/dist/src/system-prompts/dto/system-prompt.dto.js +2 -2
- package/backend/dist/src/system-prompts/dto/system-prompt.dto.js.map +1 -1
- package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -2
- package/backend/dist/packages/gemini-core/examples/simple.d.ts +0 -1
- package/backend/dist/packages/gemini-core/examples/simple.js +0 -73
- package/backend/dist/packages/gemini-core/examples/simple.js.map +0 -1
- package/backend/dist/packages/gemini-core/index.d.ts +0 -3
- package/backend/dist/packages/gemini-core/index.js +0 -27
- package/backend/dist/packages/gemini-core/index.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/code_assist/codeAssist.d.ts +0 -5
- package/backend/dist/packages/gemini-core/src/code_assist/codeAssist.js +0 -17
- package/backend/dist/packages/gemini-core/src/code_assist/codeAssist.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/code_assist/converter.d.ts +0 -69
- package/backend/dist/packages/gemini-core/src/code_assist/converter.js +0 -129
- package/backend/dist/packages/gemini-core/src/code_assist/converter.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/code_assist/oauth-credential-storage.d.ts +0 -8
- package/backend/dist/packages/gemini-core/src/code_assist/oauth-credential-storage.js +0 -84
- package/backend/dist/packages/gemini-core/src/code_assist/oauth-credential-storage.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/code_assist/oauth2.d.ts +0 -12
- package/backend/dist/packages/gemini-core/src/code_assist/oauth2.js +0 -371
- package/backend/dist/packages/gemini-core/src/code_assist/oauth2.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/code_assist/server.d.ts +0 -28
- package/backend/dist/packages/gemini-core/src/code_assist/server.js +0 -135
- package/backend/dist/packages/gemini-core/src/code_assist/server.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/code_assist/setup.d.ts +0 -10
- package/backend/dist/packages/gemini-core/src/code_assist/setup.js +0 -94
- package/backend/dist/packages/gemini-core/src/code_assist/setup.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/code_assist/types.d.ts +0 -106
- package/backend/dist/packages/gemini-core/src/code_assist/types.js +0 -28
- package/backend/dist/packages/gemini-core/src/code_assist/types.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/config/config.d.ts +0 -22
- package/backend/dist/packages/gemini-core/src/config/config.js +0 -38
- package/backend/dist/packages/gemini-core/src/config/config.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/config/models.d.ts +0 -6
- package/backend/dist/packages/gemini-core/src/config/models.js +0 -13
- package/backend/dist/packages/gemini-core/src/config/models.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/config/storage.d.ts +0 -8
- package/backend/dist/packages/gemini-core/src/config/storage.js +0 -25
- package/backend/dist/packages/gemini-core/src/config/storage.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/core/contentGenerator.d.ts +0 -23
- package/backend/dist/packages/gemini-core/src/core/contentGenerator.js +0 -63
- package/backend/dist/packages/gemini-core/src/core/contentGenerator.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/core/geminiChat.d.ts +0 -34
- package/backend/dist/packages/gemini-core/src/core/geminiChat.js +0 -247
- package/backend/dist/packages/gemini-core/src/core/geminiChat.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/core/geminiRequest.d.ts +0 -3
- package/backend/dist/packages/gemini-core/src/core/geminiRequest.js +0 -8
- package/backend/dist/packages/gemini-core/src/core/geminiRequest.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/core/prompts.d.ts +0 -7
- package/backend/dist/packages/gemini-core/src/core/prompts.js +0 -69
- package/backend/dist/packages/gemini-core/src/core/prompts.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/core/tokenLimits.d.ts +0 -5
- package/backend/dist/packages/gemini-core/src/core/tokenLimits.js +0 -25
- package/backend/dist/packages/gemini-core/src/core/tokenLimits.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/index.d.ts +0 -18
- package/backend/dist/packages/gemini-core/src/index.js +0 -37
- package/backend/dist/packages/gemini-core/src/index.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/base-token-storage.d.ts +0 -14
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/base-token-storage.js +0 -34
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/base-token-storage.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/file-token-storage.d.ts +0 -19
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/file-token-storage.js +0 -141
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/file-token-storage.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.d.ts +0 -18
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.js +0 -74
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/index.d.ts +0 -6
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/index.js +0 -24
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/index.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.d.ts +0 -26
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.js +0 -188
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/types.d.ts +0 -27
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/types.js +0 -9
- package/backend/dist/packages/gemini-core/src/mcp/token-storage/types.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/utils/errors.d.ts +0 -34
- package/backend/dist/packages/gemini-core/src/utils/errors.js +0 -103
- package/backend/dist/packages/gemini-core/src/utils/errors.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/utils/partUtils.d.ts +0 -7
- package/backend/dist/packages/gemini-core/src/utils/partUtils.js +0 -108
- package/backend/dist/packages/gemini-core/src/utils/partUtils.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/utils/quotaErrorDetection.d.ts +0 -16
- package/backend/dist/packages/gemini-core/src/utils/quotaErrorDetection.js +0 -60
- package/backend/dist/packages/gemini-core/src/utils/quotaErrorDetection.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/utils/retry.d.ts +0 -14
- package/backend/dist/packages/gemini-core/src/utils/retry.js +0 -154
- package/backend/dist/packages/gemini-core/src/utils/retry.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/utils/session.d.ts +0 -1
- package/backend/dist/packages/gemini-core/src/utils/session.js +0 -6
- package/backend/dist/packages/gemini-core/src/utils/session.js.map +0 -1
- package/backend/dist/packages/gemini-core/src/utils/userAccountManager.d.ts +0 -10
- package/backend/dist/packages/gemini-core/src/utils/userAccountManager.js +0 -106
- package/backend/dist/packages/gemini-core/src/utils/userAccountManager.js.map +0 -1
- package/backend/dist/src/gemini/gemini-llm.provider.d.ts +0 -12
- package/backend/dist/src/gemini/gemini-llm.provider.js +0 -126
- package/backend/dist/src/gemini/gemini-llm.provider.js.map +0 -1
- package/backend/dist/src/gemini/gemini.module.d.ts +0 -2
- package/backend/dist/src/gemini/gemini.module.js +0 -21
- package/backend/dist/src/gemini/gemini.module.js.map +0 -1
- package/backend/packages/gemini-core/CODEMAP.md +0 -30
- package/backend/packages/gemini-core/examples/simple.ts +0 -120
- package/backend/packages/gemini-core/index.ts +0 -15
- package/backend/packages/gemini-core/src/code_assist/codeAssist.ts +0 -37
- package/backend/packages/gemini-core/src/code_assist/converter.ts +0 -250
- package/backend/packages/gemini-core/src/code_assist/oauth-credential-storage.ts +0 -129
- package/backend/packages/gemini-core/src/code_assist/oauth2.ts +0 -541
- package/backend/packages/gemini-core/src/code_assist/server.ts +0 -236
- package/backend/packages/gemini-core/src/code_assist/setup.ts +0 -124
- package/backend/packages/gemini-core/src/code_assist/types.ts +0 -201
- package/backend/packages/gemini-core/src/config/config.ts +0 -75
- package/backend/packages/gemini-core/src/config/models.ts +0 -23
- package/backend/packages/gemini-core/src/config/storage.ts +0 -30
- package/backend/packages/gemini-core/src/core/contentGenerator.ts +0 -136
- package/backend/packages/gemini-core/src/core/geminiChat.ts +0 -385
- package/backend/packages/gemini-core/src/core/geminiRequest.ts +0 -19
- package/backend/packages/gemini-core/src/core/prompts.ts +0 -109
- package/backend/packages/gemini-core/src/core/tokenLimits.ts +0 -32
- package/backend/packages/gemini-core/src/index.ts +0 -35
- package/backend/packages/gemini-core/src/mcp/token-storage/base-token-storage.ts +0 -49
- package/backend/packages/gemini-core/src/mcp/token-storage/file-token-storage.ts +0 -184
- package/backend/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.ts +0 -97
- package/backend/packages/gemini-core/src/mcp/token-storage/index.ts +0 -14
- package/backend/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.ts +0 -251
- package/backend/packages/gemini-core/src/mcp/token-storage/types.ts +0 -42
- package/backend/packages/gemini-core/src/utils/errors.ts +0 -112
- package/backend/packages/gemini-core/src/utils/partUtils.ts +0 -169
- package/backend/packages/gemini-core/src/utils/quotaErrorDetection.ts +0 -102
- package/backend/packages/gemini-core/src/utils/retry.ts +0 -265
- package/backend/packages/gemini-core/src/utils/session.ts +0 -9
- package/backend/packages/gemini-core/src/utils/userAccountManager.ts +0 -140
|
@@ -1,371 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getOauthClient = getOauthClient;
|
|
4
|
-
exports.getAvailablePort = getAvailablePort;
|
|
5
|
-
exports.clearOauthClientCache = clearOauthClientCache;
|
|
6
|
-
exports.clearCachedCredentialFile = clearCachedCredentialFile;
|
|
7
|
-
exports.resetOauthClientForTesting = resetOauthClientForTesting;
|
|
8
|
-
const google_auth_library_1 = require("google-auth-library");
|
|
9
|
-
const http = require("node:http");
|
|
10
|
-
const node_url_1 = require("node:url");
|
|
11
|
-
const crypto = require("node:crypto");
|
|
12
|
-
const net = require("node:net");
|
|
13
|
-
const path = require("node:path");
|
|
14
|
-
const node_fs_1 = require("node:fs");
|
|
15
|
-
const errors_1 = require("../utils/errors");
|
|
16
|
-
const userAccountManager_1 = require("../utils/userAccountManager");
|
|
17
|
-
const contentGenerator_1 = require("../core/contentGenerator");
|
|
18
|
-
const node_readline_1 = require("node:readline");
|
|
19
|
-
const storage_1 = require("../config/storage");
|
|
20
|
-
const oauth_credential_storage_1 = require("./oauth-credential-storage");
|
|
21
|
-
const index_1 = require("../mcp/token-storage/index");
|
|
22
|
-
const userAccountManager = new userAccountManager_1.UserAccountManager();
|
|
23
|
-
const OAUTH_CLIENT_ID = '681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com';
|
|
24
|
-
const OAUTH_CLIENT_SECRET = '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';
|
|
25
|
-
const OAUTH_SCOPE = [
|
|
26
|
-
'https://www.googleapis.com/auth/cloud-platform',
|
|
27
|
-
'https://www.googleapis.com/auth/userinfo.email',
|
|
28
|
-
'https://www.googleapis.com/auth/userinfo.profile',
|
|
29
|
-
];
|
|
30
|
-
const HTTP_REDIRECT = 301;
|
|
31
|
-
const SIGN_IN_SUCCESS_URL = 'https://developers.google.com/gemini-code-assist/auth_success_gemini';
|
|
32
|
-
const SIGN_IN_FAILURE_URL = 'https://developers.google.com/gemini-code-assist/auth_failure_gemini';
|
|
33
|
-
const oauthClientPromises = new Map();
|
|
34
|
-
function getUseEncryptedStorageFlag() {
|
|
35
|
-
return process.env[index_1.FORCE_ENCRYPTED_FILE_ENV_VAR] === 'true';
|
|
36
|
-
}
|
|
37
|
-
async function initOauthClient(authType, config) {
|
|
38
|
-
const client = new google_auth_library_1.OAuth2Client({
|
|
39
|
-
clientId: OAUTH_CLIENT_ID,
|
|
40
|
-
clientSecret: OAUTH_CLIENT_SECRET,
|
|
41
|
-
});
|
|
42
|
-
const useEncryptedStorage = getUseEncryptedStorageFlag();
|
|
43
|
-
if (process.env['GOOGLE_GENAI_USE_GCA'] &&
|
|
44
|
-
process.env['GOOGLE_CLOUD_ACCESS_TOKEN']) {
|
|
45
|
-
client.setCredentials({
|
|
46
|
-
access_token: process.env['GOOGLE_CLOUD_ACCESS_TOKEN'],
|
|
47
|
-
});
|
|
48
|
-
await fetchAndCacheUserInfo(client);
|
|
49
|
-
return client;
|
|
50
|
-
}
|
|
51
|
-
client.on('tokens', async (tokens) => {
|
|
52
|
-
if (useEncryptedStorage) {
|
|
53
|
-
await oauth_credential_storage_1.OAuthCredentialStorage.saveCredentials(tokens);
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
await cacheCredentials(tokens);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
if (await loadCachedCredentials(client)) {
|
|
60
|
-
if (!userAccountManager.getCachedGoogleAccount()) {
|
|
61
|
-
try {
|
|
62
|
-
await fetchAndCacheUserInfo(client);
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
console.warn('Failed to fetch user info:', (0, errors_1.getErrorMessage)(error));
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
console.log('Loaded cached credentials.');
|
|
69
|
-
return client;
|
|
70
|
-
}
|
|
71
|
-
if (authType === contentGenerator_1.AuthType.CLOUD_SHELL) {
|
|
72
|
-
try {
|
|
73
|
-
console.log("Attempting to authenticate via Cloud Shell VM's ADC.");
|
|
74
|
-
const computeClient = new google_auth_library_1.Compute({});
|
|
75
|
-
await computeClient.getAccessToken();
|
|
76
|
-
console.log('Authentication successful.');
|
|
77
|
-
return computeClient;
|
|
78
|
-
}
|
|
79
|
-
catch (e) {
|
|
80
|
-
throw new Error(`Could not authenticate using Cloud Shell credentials. Please select a different authentication method or ensure you are in a properly configured environment. Error: ${(0, errors_1.getErrorMessage)(e)}`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (config.isBrowserLaunchSuppressed()) {
|
|
84
|
-
let success = false;
|
|
85
|
-
const maxRetries = 2;
|
|
86
|
-
for (let i = 0; !success && i < maxRetries; i++) {
|
|
87
|
-
success = await authWithUserCode(client);
|
|
88
|
-
if (!success) {
|
|
89
|
-
console.error('\nFailed to authenticate with user code.', i === maxRetries - 1 ? '' : 'Retrying...\n');
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if (!success) {
|
|
93
|
-
throw new errors_1.FatalAuthenticationError('Failed to authenticate with user code.');
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
const webLogin = await authWithWeb(client);
|
|
98
|
-
console.log(`\n\nCode Assist login required.\n` +
|
|
99
|
-
`Attempting to open authentication page in your browser.\n` +
|
|
100
|
-
`Otherwise navigate to:\n\n${webLogin.authUrl}\n\n`);
|
|
101
|
-
try {
|
|
102
|
-
const { default: open } = await Promise.resolve().then(() => require('open'));
|
|
103
|
-
const childProcess = await open(webLogin.authUrl);
|
|
104
|
-
childProcess.on('error', (error) => {
|
|
105
|
-
console.error('Failed to open browser automatically. Please try running again with NO_BROWSER=true set.');
|
|
106
|
-
console.error('Browser error details:', (0, errors_1.getErrorMessage)(error));
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
console.error('An unexpected error occurred while trying to open the browser:', (0, errors_1.getErrorMessage)(err), '\nThis might be due to browser compatibility issues or system configuration.', '\nPlease try running again with NO_BROWSER=true set for manual authentication.');
|
|
111
|
-
throw new errors_1.FatalAuthenticationError(`Failed to open browser: ${(0, errors_1.getErrorMessage)(err)}`);
|
|
112
|
-
}
|
|
113
|
-
console.log('Waiting for authentication...');
|
|
114
|
-
const authTimeout = 5 * 60 * 1000;
|
|
115
|
-
const timeoutPromise = new Promise((_, reject) => {
|
|
116
|
-
setTimeout(() => {
|
|
117
|
-
reject(new errors_1.FatalAuthenticationError('Authentication timed out after 5 minutes. The browser tab may have gotten stuck in a loading state. ' +
|
|
118
|
-
'Please try again or use NO_BROWSER=true for manual authentication.'));
|
|
119
|
-
}, authTimeout);
|
|
120
|
-
});
|
|
121
|
-
await Promise.race([webLogin.loginCompletePromise, timeoutPromise]);
|
|
122
|
-
}
|
|
123
|
-
return client;
|
|
124
|
-
}
|
|
125
|
-
async function getOauthClient(authType, config) {
|
|
126
|
-
if (!oauthClientPromises.has(authType)) {
|
|
127
|
-
oauthClientPromises.set(authType, initOauthClient(authType, config));
|
|
128
|
-
}
|
|
129
|
-
return oauthClientPromises.get(authType);
|
|
130
|
-
}
|
|
131
|
-
async function authWithUserCode(client) {
|
|
132
|
-
const redirectUri = 'https://codeassist.google.com/authcode';
|
|
133
|
-
const codeVerifier = await client.generateCodeVerifierAsync();
|
|
134
|
-
const state = crypto.randomBytes(32).toString('hex');
|
|
135
|
-
const authUrl = client.generateAuthUrl({
|
|
136
|
-
redirect_uri: redirectUri,
|
|
137
|
-
access_type: 'offline',
|
|
138
|
-
scope: OAUTH_SCOPE,
|
|
139
|
-
code_challenge_method: google_auth_library_1.CodeChallengeMethod.S256,
|
|
140
|
-
code_challenge: codeVerifier.codeChallenge,
|
|
141
|
-
state,
|
|
142
|
-
});
|
|
143
|
-
console.log('Please visit the following URL to authorize the application:');
|
|
144
|
-
console.log('');
|
|
145
|
-
console.log(authUrl);
|
|
146
|
-
console.log('');
|
|
147
|
-
const code = await new Promise((resolve) => {
|
|
148
|
-
const rl = node_readline_1.default.createInterface({
|
|
149
|
-
input: process.stdin,
|
|
150
|
-
output: process.stdout,
|
|
151
|
-
});
|
|
152
|
-
rl.question('Enter the authorization code: ', (code) => {
|
|
153
|
-
rl.close();
|
|
154
|
-
resolve(code.trim());
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
if (!code) {
|
|
158
|
-
console.error('Authorization code is required.');
|
|
159
|
-
return false;
|
|
160
|
-
}
|
|
161
|
-
try {
|
|
162
|
-
const { tokens } = await client.getToken({
|
|
163
|
-
code,
|
|
164
|
-
codeVerifier: codeVerifier.codeVerifier,
|
|
165
|
-
redirect_uri: redirectUri,
|
|
166
|
-
});
|
|
167
|
-
client.setCredentials(tokens);
|
|
168
|
-
}
|
|
169
|
-
catch (error) {
|
|
170
|
-
console.error('Failed to authenticate with authorization code:', (0, errors_1.getErrorMessage)(error));
|
|
171
|
-
return false;
|
|
172
|
-
}
|
|
173
|
-
return true;
|
|
174
|
-
}
|
|
175
|
-
async function authWithWeb(client) {
|
|
176
|
-
const port = await getAvailablePort();
|
|
177
|
-
const host = process.env['OAUTH_CALLBACK_HOST'] || 'localhost';
|
|
178
|
-
const redirectUri = `http://localhost:${port}/oauth2callback`;
|
|
179
|
-
const state = crypto.randomBytes(32).toString('hex');
|
|
180
|
-
const authUrl = client.generateAuthUrl({
|
|
181
|
-
redirect_uri: redirectUri,
|
|
182
|
-
access_type: 'offline',
|
|
183
|
-
scope: OAUTH_SCOPE,
|
|
184
|
-
state,
|
|
185
|
-
});
|
|
186
|
-
const loginCompletePromise = new Promise((resolve, reject) => {
|
|
187
|
-
const server = http.createServer(async (req, res) => {
|
|
188
|
-
try {
|
|
189
|
-
if (req.url.indexOf('/oauth2callback') === -1) {
|
|
190
|
-
res.writeHead(HTTP_REDIRECT, { Location: SIGN_IN_FAILURE_URL });
|
|
191
|
-
res.end();
|
|
192
|
-
reject(new errors_1.FatalAuthenticationError('OAuth callback not received. Unexpected request: ' + req.url));
|
|
193
|
-
}
|
|
194
|
-
const qs = new node_url_1.default.URL(req.url, 'http://localhost:3000').searchParams;
|
|
195
|
-
if (qs.get('error')) {
|
|
196
|
-
res.writeHead(HTTP_REDIRECT, { Location: SIGN_IN_FAILURE_URL });
|
|
197
|
-
res.end();
|
|
198
|
-
const errorCode = qs.get('error');
|
|
199
|
-
const errorDescription = qs.get('error_description') || 'No additional details provided';
|
|
200
|
-
reject(new errors_1.FatalAuthenticationError(`Google OAuth error: ${errorCode}. ${errorDescription}`));
|
|
201
|
-
}
|
|
202
|
-
else if (qs.get('state') !== state) {
|
|
203
|
-
res.end('State mismatch. Possible CSRF attack');
|
|
204
|
-
reject(new errors_1.FatalAuthenticationError('OAuth state mismatch. Possible CSRF attack or browser session issue.'));
|
|
205
|
-
}
|
|
206
|
-
else if (qs.get('code')) {
|
|
207
|
-
try {
|
|
208
|
-
const { tokens } = await client.getToken({
|
|
209
|
-
code: qs.get('code'),
|
|
210
|
-
redirect_uri: redirectUri,
|
|
211
|
-
});
|
|
212
|
-
client.setCredentials(tokens);
|
|
213
|
-
try {
|
|
214
|
-
await fetchAndCacheUserInfo(client);
|
|
215
|
-
}
|
|
216
|
-
catch (error) {
|
|
217
|
-
console.warn('Failed to retrieve Google Account ID during authentication:', (0, errors_1.getErrorMessage)(error));
|
|
218
|
-
}
|
|
219
|
-
res.writeHead(HTTP_REDIRECT, { Location: SIGN_IN_SUCCESS_URL });
|
|
220
|
-
res.end();
|
|
221
|
-
resolve();
|
|
222
|
-
}
|
|
223
|
-
catch (error) {
|
|
224
|
-
res.writeHead(HTTP_REDIRECT, { Location: SIGN_IN_FAILURE_URL });
|
|
225
|
-
res.end();
|
|
226
|
-
reject(new errors_1.FatalAuthenticationError(`Failed to exchange authorization code for tokens: ${(0, errors_1.getErrorMessage)(error)}`));
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
reject(new errors_1.FatalAuthenticationError('No authorization code received from Google OAuth. Please try authenticating again.'));
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
catch (e) {
|
|
234
|
-
if (e instanceof errors_1.FatalAuthenticationError) {
|
|
235
|
-
reject(e);
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
reject(new errors_1.FatalAuthenticationError(`Unexpected error during OAuth authentication: ${(0, errors_1.getErrorMessage)(e)}`));
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
finally {
|
|
242
|
-
server.close();
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
server.listen(port, host, () => {
|
|
246
|
-
});
|
|
247
|
-
server.on('error', (err) => {
|
|
248
|
-
reject(new errors_1.FatalAuthenticationError(`OAuth callback server error: ${(0, errors_1.getErrorMessage)(err)}`));
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
return {
|
|
252
|
-
authUrl,
|
|
253
|
-
loginCompletePromise,
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
function getAvailablePort() {
|
|
257
|
-
return new Promise((resolve, reject) => {
|
|
258
|
-
let port = 0;
|
|
259
|
-
try {
|
|
260
|
-
const portStr = process.env['OAUTH_CALLBACK_PORT'];
|
|
261
|
-
if (portStr) {
|
|
262
|
-
port = parseInt(portStr, 10);
|
|
263
|
-
if (isNaN(port) || port <= 0 || port > 65535) {
|
|
264
|
-
return reject(new Error(`Invalid value for OAUTH_CALLBACK_PORT: "${portStr}"`));
|
|
265
|
-
}
|
|
266
|
-
return resolve(port);
|
|
267
|
-
}
|
|
268
|
-
const server = net.createServer();
|
|
269
|
-
server.listen(0, () => {
|
|
270
|
-
const address = server.address();
|
|
271
|
-
port = address.port;
|
|
272
|
-
});
|
|
273
|
-
server.on('listening', () => {
|
|
274
|
-
server.close();
|
|
275
|
-
server.unref();
|
|
276
|
-
});
|
|
277
|
-
server.on('error', (e) => reject(e));
|
|
278
|
-
server.on('close', () => resolve(port));
|
|
279
|
-
}
|
|
280
|
-
catch (e) {
|
|
281
|
-
reject(e);
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
async function loadCachedCredentials(client) {
|
|
286
|
-
const useEncryptedStorage = getUseEncryptedStorageFlag();
|
|
287
|
-
if (useEncryptedStorage) {
|
|
288
|
-
const credentials = await oauth_credential_storage_1.OAuthCredentialStorage.loadCredentials();
|
|
289
|
-
if (credentials) {
|
|
290
|
-
client.setCredentials(credentials);
|
|
291
|
-
return true;
|
|
292
|
-
}
|
|
293
|
-
return false;
|
|
294
|
-
}
|
|
295
|
-
const pathsToTry = [
|
|
296
|
-
storage_1.Storage.getOAuthCredsPath(),
|
|
297
|
-
process.env['GOOGLE_APPLICATION_CREDENTIALS'],
|
|
298
|
-
].filter((p) => !!p);
|
|
299
|
-
for (const keyFile of pathsToTry) {
|
|
300
|
-
try {
|
|
301
|
-
const creds = await node_fs_1.promises.readFile(keyFile, 'utf-8');
|
|
302
|
-
client.setCredentials(JSON.parse(creds));
|
|
303
|
-
const { token } = await client.getAccessToken();
|
|
304
|
-
if (!token) {
|
|
305
|
-
continue;
|
|
306
|
-
}
|
|
307
|
-
await client.getTokenInfo(token);
|
|
308
|
-
return true;
|
|
309
|
-
}
|
|
310
|
-
catch (error) {
|
|
311
|
-
console.debug(`Failed to load credentials from ${keyFile}:`, (0, errors_1.getErrorMessage)(error));
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
return false;
|
|
315
|
-
}
|
|
316
|
-
async function cacheCredentials(credentials) {
|
|
317
|
-
const filePath = storage_1.Storage.getOAuthCredsPath();
|
|
318
|
-
await node_fs_1.promises.mkdir(path.dirname(filePath), { recursive: true });
|
|
319
|
-
const credString = JSON.stringify(credentials, null, 2);
|
|
320
|
-
await node_fs_1.promises.writeFile(filePath, credString, { mode: 0o600 });
|
|
321
|
-
try {
|
|
322
|
-
await node_fs_1.promises.chmod(filePath, 0o600);
|
|
323
|
-
}
|
|
324
|
-
catch {
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
function clearOauthClientCache() {
|
|
328
|
-
oauthClientPromises.clear();
|
|
329
|
-
}
|
|
330
|
-
async function clearCachedCredentialFile() {
|
|
331
|
-
try {
|
|
332
|
-
const useEncryptedStorage = getUseEncryptedStorageFlag();
|
|
333
|
-
if (useEncryptedStorage) {
|
|
334
|
-
await oauth_credential_storage_1.OAuthCredentialStorage.clearCredentials();
|
|
335
|
-
}
|
|
336
|
-
else {
|
|
337
|
-
await node_fs_1.promises.rm(storage_1.Storage.getOAuthCredsPath(), { force: true });
|
|
338
|
-
}
|
|
339
|
-
await userAccountManager.clearCachedGoogleAccount();
|
|
340
|
-
clearOauthClientCache();
|
|
341
|
-
}
|
|
342
|
-
catch (e) {
|
|
343
|
-
console.error('Failed to clear cached credentials:', e);
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
async function fetchAndCacheUserInfo(client) {
|
|
347
|
-
try {
|
|
348
|
-
const { token } = await client.getAccessToken();
|
|
349
|
-
if (!token) {
|
|
350
|
-
return;
|
|
351
|
-
}
|
|
352
|
-
const response = await fetch('https://www.googleapis.com/oauth2/v2/userinfo', {
|
|
353
|
-
headers: {
|
|
354
|
-
Authorization: `Bearer ${token}`,
|
|
355
|
-
},
|
|
356
|
-
});
|
|
357
|
-
if (!response.ok) {
|
|
358
|
-
console.error('Failed to fetch user info:', response.status, response.statusText);
|
|
359
|
-
return;
|
|
360
|
-
}
|
|
361
|
-
const userInfo = await response.json();
|
|
362
|
-
await userAccountManager.cacheGoogleAccount(userInfo.email);
|
|
363
|
-
}
|
|
364
|
-
catch (error) {
|
|
365
|
-
console.error('Error retrieving user info:', error);
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
function resetOauthClientForTesting() {
|
|
369
|
-
oauthClientPromises.clear();
|
|
370
|
-
}
|
|
371
|
-
//# sourceMappingURL=oauth2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../../../../../packages/gemini-core/src/code_assist/oauth2.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { OAuth2Client } from 'google-auth-library';
|
|
2
|
-
import type { LoadCodeAssistRequest, LoadCodeAssistResponse, LongRunningOperationResponse, OnboardUserRequest } from './types';
|
|
3
|
-
import type { CountTokensParameters, CountTokensResponse, EmbedContentParameters, EmbedContentResponse, GenerateContentParameters, GenerateContentResponse } from '@google/genai';
|
|
4
|
-
import type { ContentGenerator } from '../core/contentGenerator';
|
|
5
|
-
import { UserTierId } from './types';
|
|
6
|
-
export interface HttpOptions {
|
|
7
|
-
headers?: Record<string, string>;
|
|
8
|
-
}
|
|
9
|
-
export declare const CODE_ASSIST_ENDPOINT = "https://cloudcode-pa.googleapis.com";
|
|
10
|
-
export declare const CODE_ASSIST_API_VERSION = "v1internal";
|
|
11
|
-
export declare class CodeAssistServer implements ContentGenerator {
|
|
12
|
-
readonly client: OAuth2Client;
|
|
13
|
-
readonly projectId?: string;
|
|
14
|
-
readonly httpOptions: HttpOptions;
|
|
15
|
-
readonly sessionId?: string;
|
|
16
|
-
readonly userTier?: UserTierId;
|
|
17
|
-
constructor(client: OAuth2Client, projectId?: string, httpOptions?: HttpOptions, sessionId?: string, userTier?: UserTierId);
|
|
18
|
-
generateContentStream(req: GenerateContentParameters, userPromptId: string): Promise<AsyncGenerator<GenerateContentResponse>>;
|
|
19
|
-
generateContent(req: GenerateContentParameters, userPromptId: string): Promise<GenerateContentResponse>;
|
|
20
|
-
onboardUser(req: OnboardUserRequest): Promise<LongRunningOperationResponse>;
|
|
21
|
-
loadCodeAssist(req: LoadCodeAssistRequest): Promise<LoadCodeAssistResponse>;
|
|
22
|
-
countTokens(req: CountTokensParameters): Promise<CountTokensResponse>;
|
|
23
|
-
embedContent(_req: EmbedContentParameters): Promise<EmbedContentResponse>;
|
|
24
|
-
requestPost<T>(method: string, req: object, signal?: AbortSignal): Promise<T>;
|
|
25
|
-
requestGet<T>(method: string, signal?: AbortSignal): Promise<T>;
|
|
26
|
-
requestStreamingPost<T>(method: string, req: object, signal?: AbortSignal): Promise<AsyncGenerator<T>>;
|
|
27
|
-
getMethodUrl(method: string): string;
|
|
28
|
-
}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CodeAssistServer = exports.CODE_ASSIST_API_VERSION = exports.CODE_ASSIST_ENDPOINT = void 0;
|
|
4
|
-
const readline = require("node:readline");
|
|
5
|
-
const types_1 = require("./types");
|
|
6
|
-
const converter_1 = require("./converter");
|
|
7
|
-
exports.CODE_ASSIST_ENDPOINT = 'https://cloudcode-pa.googleapis.com';
|
|
8
|
-
exports.CODE_ASSIST_API_VERSION = 'v1internal';
|
|
9
|
-
class CodeAssistServer {
|
|
10
|
-
constructor(client, projectId, httpOptions = {}, sessionId, userTier) {
|
|
11
|
-
this.client = client;
|
|
12
|
-
this.projectId = projectId;
|
|
13
|
-
this.httpOptions = httpOptions;
|
|
14
|
-
this.sessionId = sessionId;
|
|
15
|
-
this.userTier = userTier;
|
|
16
|
-
}
|
|
17
|
-
async generateContentStream(req, userPromptId) {
|
|
18
|
-
const resps = await this.requestStreamingPost('streamGenerateContent', (0, converter_1.toGenerateContentRequest)(req, userPromptId, this.projectId, this.sessionId), req.config?.abortSignal);
|
|
19
|
-
return (async function* () {
|
|
20
|
-
for await (const resp of resps) {
|
|
21
|
-
yield (0, converter_1.fromGenerateContentResponse)(resp);
|
|
22
|
-
}
|
|
23
|
-
})();
|
|
24
|
-
}
|
|
25
|
-
async generateContent(req, userPromptId) {
|
|
26
|
-
const resp = await this.requestPost('generateContent', (0, converter_1.toGenerateContentRequest)(req, userPromptId, this.projectId, this.sessionId), req.config?.abortSignal);
|
|
27
|
-
return (0, converter_1.fromGenerateContentResponse)(resp);
|
|
28
|
-
}
|
|
29
|
-
async onboardUser(req) {
|
|
30
|
-
return await this.requestPost('onboardUser', req);
|
|
31
|
-
}
|
|
32
|
-
async loadCodeAssist(req) {
|
|
33
|
-
try {
|
|
34
|
-
return await this.requestPost('loadCodeAssist', req);
|
|
35
|
-
}
|
|
36
|
-
catch (e) {
|
|
37
|
-
if (isVpcScAffectedUser(e)) {
|
|
38
|
-
return {
|
|
39
|
-
currentTier: { id: types_1.UserTierId.STANDARD },
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
throw e;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
async countTokens(req) {
|
|
48
|
-
const resp = await this.requestPost('countTokens', (0, converter_1.toCountTokenRequest)(req));
|
|
49
|
-
return (0, converter_1.fromCountTokenResponse)(resp);
|
|
50
|
-
}
|
|
51
|
-
async embedContent(_req) {
|
|
52
|
-
throw Error();
|
|
53
|
-
}
|
|
54
|
-
async requestPost(method, req, signal) {
|
|
55
|
-
const res = await this.client.request({
|
|
56
|
-
url: this.getMethodUrl(method),
|
|
57
|
-
method: 'POST',
|
|
58
|
-
headers: {
|
|
59
|
-
'Content-Type': 'application/json',
|
|
60
|
-
...this.httpOptions.headers,
|
|
61
|
-
},
|
|
62
|
-
responseType: 'json',
|
|
63
|
-
body: JSON.stringify(req),
|
|
64
|
-
signal,
|
|
65
|
-
});
|
|
66
|
-
return res.data;
|
|
67
|
-
}
|
|
68
|
-
async requestGet(method, signal) {
|
|
69
|
-
const res = await this.client.request({
|
|
70
|
-
url: this.getMethodUrl(method),
|
|
71
|
-
method: 'GET',
|
|
72
|
-
headers: {
|
|
73
|
-
'Content-Type': 'application/json',
|
|
74
|
-
...this.httpOptions.headers,
|
|
75
|
-
},
|
|
76
|
-
responseType: 'json',
|
|
77
|
-
signal,
|
|
78
|
-
});
|
|
79
|
-
return res.data;
|
|
80
|
-
}
|
|
81
|
-
async requestStreamingPost(method, req, signal) {
|
|
82
|
-
const res = await this.client.request({
|
|
83
|
-
url: this.getMethodUrl(method),
|
|
84
|
-
method: 'POST',
|
|
85
|
-
params: {
|
|
86
|
-
alt: 'sse',
|
|
87
|
-
},
|
|
88
|
-
headers: {
|
|
89
|
-
'Content-Type': 'application/json',
|
|
90
|
-
...this.httpOptions.headers,
|
|
91
|
-
},
|
|
92
|
-
responseType: 'stream',
|
|
93
|
-
body: JSON.stringify(req),
|
|
94
|
-
signal,
|
|
95
|
-
});
|
|
96
|
-
return (async function* () {
|
|
97
|
-
const rl = readline.createInterface({
|
|
98
|
-
input: res.data,
|
|
99
|
-
crlfDelay: Infinity,
|
|
100
|
-
});
|
|
101
|
-
let bufferedLines = [];
|
|
102
|
-
for await (const line of rl) {
|
|
103
|
-
if (line === '') {
|
|
104
|
-
if (bufferedLines.length === 0) {
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
yield JSON.parse(bufferedLines.join('\n'));
|
|
108
|
-
bufferedLines = [];
|
|
109
|
-
}
|
|
110
|
-
else if (line.startsWith('data: ')) {
|
|
111
|
-
bufferedLines.push(line.slice(6).trim());
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
throw new Error(`Unexpected line format in response: ${line}`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
})();
|
|
118
|
-
}
|
|
119
|
-
getMethodUrl(method) {
|
|
120
|
-
const endpoint = process.env['CODE_ASSIST_ENDPOINT'] ?? exports.CODE_ASSIST_ENDPOINT;
|
|
121
|
-
return `${endpoint}/${exports.CODE_ASSIST_API_VERSION}:${method}`;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
exports.CodeAssistServer = CodeAssistServer;
|
|
125
|
-
function isVpcScAffectedUser(error) {
|
|
126
|
-
if (error && typeof error === 'object' && 'response' in error) {
|
|
127
|
-
const gaxiosError = error;
|
|
128
|
-
const response = gaxiosError.response?.data;
|
|
129
|
-
if (Array.isArray(response?.error?.details)) {
|
|
130
|
-
return response.error.details.some((detail) => detail.reason === 'SECURITY_POLICY_VIOLATED');
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../../packages/gemini-core/src/code_assist/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { UserTierId } from './types';
|
|
2
|
-
import type { OAuth2Client } from 'google-auth-library';
|
|
3
|
-
export declare class ProjectIdRequiredError extends Error {
|
|
4
|
-
constructor();
|
|
5
|
-
}
|
|
6
|
-
export interface UserData {
|
|
7
|
-
projectId: string;
|
|
8
|
-
userTier: UserTierId;
|
|
9
|
-
}
|
|
10
|
-
export declare function setupUser(client: OAuth2Client): Promise<UserData>;
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProjectIdRequiredError = void 0;
|
|
4
|
-
exports.setupUser = setupUser;
|
|
5
|
-
const types_1 = require("./types");
|
|
6
|
-
const server_1 = require("./server");
|
|
7
|
-
class ProjectIdRequiredError extends Error {
|
|
8
|
-
constructor() {
|
|
9
|
-
super('This account requires setting the GOOGLE_CLOUD_PROJECT env var. See https://goo.gle/gemini-cli-auth-docs#workspace-gca');
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
exports.ProjectIdRequiredError = ProjectIdRequiredError;
|
|
13
|
-
async function setupUser(client) {
|
|
14
|
-
const projectId = process.env['GOOGLE_CLOUD_PROJECT'] || undefined;
|
|
15
|
-
const caServer = new server_1.CodeAssistServer(client, projectId, {}, '', undefined);
|
|
16
|
-
const coreClientMetadata = {
|
|
17
|
-
ideType: 'IDE_UNSPECIFIED',
|
|
18
|
-
platform: 'PLATFORM_UNSPECIFIED',
|
|
19
|
-
pluginType: 'GEMINI',
|
|
20
|
-
};
|
|
21
|
-
const loadRes = await caServer.loadCodeAssist({
|
|
22
|
-
cloudaicompanionProject: projectId,
|
|
23
|
-
metadata: {
|
|
24
|
-
...coreClientMetadata,
|
|
25
|
-
duetProject: projectId,
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
if (loadRes.currentTier) {
|
|
29
|
-
if (!loadRes.cloudaicompanionProject) {
|
|
30
|
-
if (projectId) {
|
|
31
|
-
return {
|
|
32
|
-
projectId,
|
|
33
|
-
userTier: loadRes.currentTier.id,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
throw new ProjectIdRequiredError();
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
projectId: loadRes.cloudaicompanionProject,
|
|
40
|
-
userTier: loadRes.currentTier.id,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
const tier = getOnboardTier(loadRes);
|
|
44
|
-
let onboardReq;
|
|
45
|
-
if (tier.id === types_1.UserTierId.FREE) {
|
|
46
|
-
onboardReq = {
|
|
47
|
-
tierId: tier.id,
|
|
48
|
-
cloudaicompanionProject: undefined,
|
|
49
|
-
metadata: coreClientMetadata,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
onboardReq = {
|
|
54
|
-
tierId: tier.id,
|
|
55
|
-
cloudaicompanionProject: projectId,
|
|
56
|
-
metadata: {
|
|
57
|
-
...coreClientMetadata,
|
|
58
|
-
duetProject: projectId,
|
|
59
|
-
},
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
let lroRes = await caServer.onboardUser(onboardReq);
|
|
63
|
-
while (!lroRes.done) {
|
|
64
|
-
await new Promise((f) => setTimeout(f, 5000));
|
|
65
|
-
lroRes = await caServer.onboardUser(onboardReq);
|
|
66
|
-
}
|
|
67
|
-
if (!lroRes.response?.cloudaicompanionProject?.id) {
|
|
68
|
-
if (projectId) {
|
|
69
|
-
return {
|
|
70
|
-
projectId,
|
|
71
|
-
userTier: tier.id,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
throw new ProjectIdRequiredError();
|
|
75
|
-
}
|
|
76
|
-
return {
|
|
77
|
-
projectId: lroRes.response.cloudaicompanionProject.id,
|
|
78
|
-
userTier: tier.id,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
function getOnboardTier(res) {
|
|
82
|
-
for (const tier of res.allowedTiers || []) {
|
|
83
|
-
if (tier.isDefault) {
|
|
84
|
-
return tier;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return {
|
|
88
|
-
name: '',
|
|
89
|
-
description: '',
|
|
90
|
-
id: types_1.UserTierId.LEGACY,
|
|
91
|
-
userDefinedCloudaicompanionProject: true,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=setup.js.map
|