summaryrefslogtreecommitdiff
path: root/packages/core/src/code_assist/server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core/src/code_assist/server.ts')
-rw-r--r--packages/core/src/code_assist/server.ts93
1 files changed, 2 insertions, 91 deletions
diff --git a/packages/core/src/code_assist/server.ts b/packages/core/src/code_assist/server.ts
index fe8661f1..a6cf6af7 100644
--- a/packages/core/src/code_assist/server.ts
+++ b/packages/core/src/code_assist/server.ts
@@ -32,23 +32,6 @@ import {
toCountTokenRequest,
toGenerateContentRequest,
} from './converter.js';
-import { Readable } from 'node:stream';
-
-interface ErrorData {
- error?: {
- message?: string;
- };
-}
-
-interface GaxiosResponse {
- status: number;
- data: unknown;
-}
-
-interface StreamError extends Error {
- status?: number;
- response?: GaxiosResponse;
-}
/** HTTP options to be used in each of the requests. */
export interface HttpOptions {
@@ -60,13 +43,12 @@ export const CODE_ASSIST_ENDPOINT = 'https://cloudcode-pa.googleapis.com';
export const CODE_ASSIST_API_VERSION = 'v1internal';
export class CodeAssistServer implements ContentGenerator {
- private userTier: UserTierId | undefined = undefined;
-
constructor(
readonly client: OAuth2Client,
readonly projectId?: string,
readonly httpOptions: HttpOptions = {},
readonly sessionId?: string,
+ readonly userTier?: UserTierId,
) {}
async generateContentStream(
@@ -196,45 +178,8 @@ export class CodeAssistServer implements ContentGenerator {
});
return (async function* (): AsyncGenerator<T> {
- // Convert ReadableStream to Node.js stream if needed
- let nodeStream: NodeJS.ReadableStream;
-
- if (res.data instanceof ReadableStream) {
- // Convert Web ReadableStream to Node.js Readable stream
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- nodeStream = Readable.fromWeb(res.data as any);
- } else if (
- res.data &&
- typeof (res.data as NodeJS.ReadableStream).on === 'function'
- ) {
- // Already a Node.js stream
- nodeStream = res.data as NodeJS.ReadableStream;
- } else {
- // If res.data is not a stream, it might be an error response
- // Try to extract error information from the response
- let errorMessage =
- 'Response data is not a readable stream. This may indicate a server error or quota issue.';
-
- if (res.data && typeof res.data === 'object') {
- // Check if this is an error response with error details
- const errorData = res.data as ErrorData;
- if (errorData.error?.message) {
- errorMessage = errorData.error.message;
- } else if (typeof errorData === 'string') {
- errorMessage = errorData;
- }
- }
-
- // Create an error that looks like a quota error if it contains quota information
- const error: StreamError = new Error(errorMessage);
- // Add status and response properties so it can be properly handled by retry logic
- error.status = res.status;
- error.response = res;
- throw error;
- }
-
const rl = readline.createInterface({
- input: nodeStream,
+ input: res.data as NodeJS.ReadableStream,
crlfDelay: Infinity, // Recognizes '\r\n' and '\n' as line breaks
});
@@ -256,40 +201,6 @@ export class CodeAssistServer implements ContentGenerator {
})();
}
- async getTier(): Promise<UserTierId | undefined> {
- if (this.userTier === undefined) {
- await this.detectUserTier();
- }
- return this.userTier;
- }
-
- private async detectUserTier(): Promise<void> {
- try {
- // Reset user tier when detection runs
- this.userTier = undefined;
-
- // Only attempt tier detection if we have a project ID
- if (this.projectId) {
- const loadRes = await this.loadCodeAssist({
- cloudaicompanionProject: this.projectId,
- metadata: {
- ideType: 'IDE_UNSPECIFIED',
- platform: 'PLATFORM_UNSPECIFIED',
- pluginType: 'GEMINI',
- duetProject: this.projectId,
- },
- });
- if (loadRes.currentTier) {
- this.userTier = loadRes.currentTier.id;
- }
- }
- } catch (error) {
- // Silently fail - this is not critical functionality
- // We'll default to FREE tier behavior if tier detection fails
- console.debug('User tier detection failed:', error);
- }
- }
-
getMethodUrl(method: string): string {
const endpoint = process.env.CODE_ASSIST_ENDPOINT ?? CODE_ASSIST_ENDPOINT;
return `${endpoint}/${CODE_ASSIST_API_VERSION}:${method}`;