diff --git a/packages/cloud/src/CloudService.ts b/packages/cloud/src/CloudService.ts index 1ca13430a59..b321545ea2d 100644 --- a/packages/cloud/src/CloudService.ts +++ b/packages/cloud/src/CloudService.ts @@ -83,6 +83,12 @@ export class CloudService extends EventEmitter implements Di return this._retryQueue } + private _isCloudAgent = false + + public get isCloudAgent() { + return this._isCloudAgent + } + private constructor(context: ExtensionContext, log?: (...args: unknown[]) => void) { super() @@ -117,6 +123,7 @@ export class CloudService extends EventEmitter implements Di if (cloudToken && cloudToken.length > 0) { this._authService = new StaticTokenAuthService(this.context, cloudToken, this.log) + this._isCloudAgent = true } else { this._authService = new WebAuthService(this.context, this.log) } @@ -141,19 +148,19 @@ export class CloudService extends EventEmitter implements Di this._cloudAPI = new CloudAPI(this._authService, this.log) - // Initialize retry queue with auth header provider + // Initialize retry queue with auth header provider. this._retryQueue = new RetryQueue( this.context, - undefined, // Use default config + undefined, // Use default config. this.log, () => { - // Provide fresh auth headers for retries + // Provide fresh auth headers for retries. const sessionToken = this._authService?.getSessionToken() + if (sessionToken) { - return { - Authorization: `Bearer ${sessionToken}`, - } + return { Authorization: `Bearer ${sessionToken}` } } + return undefined }, ) diff --git a/packages/cloud/src/bridge/BaseChannel.ts b/packages/cloud/src/bridge/BaseChannel.ts index 90d3ebbe7a1..1b2615b24c3 100644 --- a/packages/cloud/src/bridge/BaseChannel.ts +++ b/packages/cloud/src/bridge/BaseChannel.ts @@ -7,6 +7,7 @@ export interface BaseChannelOptions { instanceId: string appProperties: StaticAppProperties gitProperties?: GitProperties + isCloudAgent: boolean } /** @@ -22,11 +23,13 @@ export abstract class BaseChannel { appProperties, userId, provider: mockProvider, + isCloudAgent: false, }) }) @@ -176,6 +177,7 @@ describe("ExtensionChannel", () => { appProperties, userId, provider: mockProvider, + isCloudAgent: false, }) // Each event should have exactly 2 listeners (one from each channel) diff --git a/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts b/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts index 1f13da96612..f4f15266077 100644 --- a/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts +++ b/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts @@ -88,6 +88,7 @@ describe("TaskChannel", () => { taskChannel = new TaskChannel({ instanceId, appProperties, + isCloudAgent: false, }) }) diff --git a/packages/types/npm/package.metadata.json b/packages/types/npm/package.metadata.json index 2e4830c7ea5..f0ef12db3bf 100644 --- a/packages/types/npm/package.metadata.json +++ b/packages/types/npm/package.metadata.json @@ -1,6 +1,6 @@ { "name": "@roo-code/types", - "version": "1.82.0", + "version": "1.83.0", "description": "TypeScript type definitions for Roo Code.", "publishConfig": { "access": "public", diff --git a/packages/types/src/cloud.ts b/packages/types/src/cloud.ts index f6acb28c363..b412eb18891 100644 --- a/packages/types/src/cloud.ts +++ b/packages/types/src/cloud.ts @@ -411,6 +411,7 @@ export const extensionInstanceSchema = z.object({ modes: z.array(z.object({ slug: z.string(), name: z.string() })).optional(), providerProfile: z.string().optional(), providerProfiles: z.array(z.object({ name: z.string(), provider: z.string().optional() })).optional(), + isCloudAgent: z.boolean().optional(), }) export type ExtensionInstance = z.infer diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 6a7a84b74b9..91b86879668 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -2343,6 +2343,7 @@ export class ClineProvider ...config, provider: this, sessionId: vscode.env.sessionId, + isCloudAgent: CloudService.instance.isCloudAgent, }) const bridge = BridgeOrchestrator.getInstance()