From 1a091b95808497b1f19212cc9a4846e88dad73f5 Mon Sep 17 00:00:00 2001 From: julialeex Date: Wed, 22 Jan 2025 22:19:46 +0900 Subject: [PATCH 1/2] add requestId --- vscode/src/autoedits/adapters/base.ts | 1 + vscode/src/autoedits/adapters/cody-gateway.test.ts | 1 + vscode/src/autoedits/adapters/cody-gateway.ts | 1 + vscode/src/autoedits/adapters/fireworks.test.ts | 1 + vscode/src/autoedits/adapters/fireworks.ts | 5 ++++- vscode/src/autoedits/adapters/sourcegraph-chat.test.ts | 1 + .../src/autoedits/adapters/sourcegraph-completions.test.ts | 1 + .../src/autoedits/analytics-logger/analytics-logger.test.ts | 1 + vscode/src/autoedits/autoedits-provider.ts | 4 ++++ vscode/src/completions/fast-path-client.ts | 1 + 10 files changed, 16 insertions(+), 1 deletion(-) diff --git a/vscode/src/autoedits/adapters/base.ts b/vscode/src/autoedits/adapters/base.ts index efc9332df907..5543d2a1e611 100644 --- a/vscode/src/autoedits/adapters/base.ts +++ b/vscode/src/autoedits/adapters/base.ts @@ -27,4 +27,5 @@ export interface AutoeditModelOptions { codeToRewrite: string userId: string | null isChatModel: boolean + requestId: string } diff --git a/vscode/src/autoedits/adapters/cody-gateway.test.ts b/vscode/src/autoedits/adapters/cody-gateway.test.ts index d776761602a3..a0acb80be4fe 100644 --- a/vscode/src/autoedits/adapters/cody-gateway.test.ts +++ b/vscode/src/autoedits/adapters/cody-gateway.test.ts @@ -24,6 +24,7 @@ describe('CodyGatewayAdapter', () => { codeToRewrite: 'const x = 1', userId: 'test-user', isChatModel: true, + requestId: 'test-request-id', } const mockFetch = vi.fn() diff --git a/vscode/src/autoedits/adapters/cody-gateway.ts b/vscode/src/autoedits/adapters/cody-gateway.ts index eab2caec7575..e0b913c4b2ac 100644 --- a/vscode/src/autoedits/adapters/cody-gateway.ts +++ b/vscode/src/autoedits/adapters/cody-gateway.ts @@ -14,6 +14,7 @@ export class CodyGatewayAdapter implements AutoeditsModelAdapter { public async getModelResponse(options: AutoeditModelOptions): Promise { const headers = { 'X-Sourcegraph-Feature': 'code_completions', + 'X-Sourcegraph-Interaction-ID': options.requestId, } const body = this.getMessageBody(options) try { diff --git a/vscode/src/autoedits/adapters/fireworks.test.ts b/vscode/src/autoedits/adapters/fireworks.test.ts index f23b0302ba8b..c2a4f22cbdb7 100644 --- a/vscode/src/autoedits/adapters/fireworks.test.ts +++ b/vscode/src/autoedits/adapters/fireworks.test.ts @@ -20,6 +20,7 @@ describe('FireworksAdapter', () => { codeToRewrite: 'const x = 1', userId: 'test-user', isChatModel: true, + requestId: 'test-request-id', } const apiKey = 'test-api-key' diff --git a/vscode/src/autoedits/adapters/fireworks.ts b/vscode/src/autoedits/adapters/fireworks.ts index 6ddd46c52605..252e55e3dca6 100644 --- a/vscode/src/autoedits/adapters/fireworks.ts +++ b/vscode/src/autoedits/adapters/fireworks.ts @@ -22,7 +22,10 @@ export class FireworksAdapter implements AutoeditsModelAdapter { ) throw new Error('No api key provided in the config override') } - const response = await getModelResponse(option.url, body, apiKey) + const headers = { + 'X-Sourcegraph-Interaction-ID': option.requestId, + } + const response = await getModelResponse(option.url, body, apiKey, headers) if (option.isChatModel) { return response.choices[0].message.content } diff --git a/vscode/src/autoedits/adapters/sourcegraph-chat.test.ts b/vscode/src/autoedits/adapters/sourcegraph-chat.test.ts index 93ce34e49110..86783582a825 100644 --- a/vscode/src/autoedits/adapters/sourcegraph-chat.test.ts +++ b/vscode/src/autoedits/adapters/sourcegraph-chat.test.ts @@ -19,6 +19,7 @@ describe('SourcegraphChatAdapter', () => { codeToRewrite: 'const x = 1', userId: 'test-user', isChatModel: true, + requestId: 'test-request-id', } beforeEach(() => { diff --git a/vscode/src/autoedits/adapters/sourcegraph-completions.test.ts b/vscode/src/autoedits/adapters/sourcegraph-completions.test.ts index 2c0d1057906e..977105c40492 100644 --- a/vscode/src/autoedits/adapters/sourcegraph-completions.test.ts +++ b/vscode/src/autoedits/adapters/sourcegraph-completions.test.ts @@ -18,6 +18,7 @@ describe('SourcegraphCompletionsAdapter', () => { codeToRewrite: 'const x = 1', userId: 'test-user', isChatModel: false, + requestId: 'test-request-id', } beforeEach(() => { diff --git a/vscode/src/autoedits/analytics-logger/analytics-logger.test.ts b/vscode/src/autoedits/analytics-logger/analytics-logger.test.ts index b45441a12cc6..432fa9704e33 100644 --- a/vscode/src/autoedits/analytics-logger/analytics-logger.test.ts +++ b/vscode/src/autoedits/analytics-logger/analytics-logger.test.ts @@ -65,6 +65,7 @@ describe('AutoeditAnalyticsLogger', () => { codeToRewrite: 'This is test code to rewrite', userId: 'test-user-id', isChatModel: false, + requestId: 'test-request-id', } function getRequestStartMetadata(): Parameters[0] { diff --git a/vscode/src/autoedits/autoedits-provider.ts b/vscode/src/autoedits/autoedits-provider.ts index 3d0112114895..e06f7e48949e 100644 --- a/vscode/src/autoedits/autoedits-provider.ts +++ b/vscode/src/autoedits/autoedits-provider.ts @@ -253,6 +253,7 @@ export class AutoeditsProvider implements vscode.InlineCompletionItemProvider, v position, prompt, codeToReplaceData, + requestId, }) if (abortSignal?.aborted) { @@ -449,11 +450,13 @@ export class AutoeditsProvider implements vscode.InlineCompletionItemProvider, v position, codeToReplaceData, prompt, + requestId, }: { document: vscode.TextDocument position: vscode.Position codeToReplaceData: CodeToReplaceData prompt: AutoeditsPrompt + requestId: AutoeditRequestID }): Promise { if (autoeditsProviderConfig.isMockResponseFromCurrentDocumentTemplateEnabled) { const responseMetadata = extractAutoEditResponseFromCurrentDocumentCommentTemplate( @@ -480,6 +483,7 @@ export class AutoeditsProvider implements vscode.InlineCompletionItemProvider, v codeToRewrite: codeToReplaceData.codeToRewrite, userId: (await currentResolvedConfig()).clientState.anonymousUserID, isChatModel: autoeditsProviderConfig.isChatModel, + requestId: requestId, }) } diff --git a/vscode/src/completions/fast-path-client.ts b/vscode/src/completions/fast-path-client.ts index 4a89f7032d53..00640f5e82fa 100644 --- a/vscode/src/completions/fast-path-client.ts +++ b/vscode/src/completions/fast-path-client.ts @@ -98,6 +98,7 @@ export function createFastPathClient( headers.set('Content-Type', `application/json${fireworksConfig ? '' : '; charset=utf-8'}`) headers.set('Authorization', `Bearer ${fastPathAccessToken}`) headers.set('X-Sourcegraph-Feature', 'code_completions') + headers.set('X-Sourcegraph-Interaction-ID', providerOptions.completionLogId) headers.set('X-Timeout-Ms', requestParams.timeoutMs.toString()) addTraceparent(headers) From d2c3079779f7924818df5b0c3b2d3f5a88ded10a Mon Sep 17 00:00:00 2001 From: julialeex Date: Wed, 22 Jan 2025 23:26:34 +0900 Subject: [PATCH 2/2] add header to defaultClient --- vscode/src/completions/providers/fireworks.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vscode/src/completions/providers/fireworks.ts b/vscode/src/completions/providers/fireworks.ts index 50bc43ec82e8..817a44e35e12 100644 --- a/vscode/src/completions/providers/fireworks.ts +++ b/vscode/src/completions/providers/fireworks.ts @@ -158,9 +158,10 @@ class FireworksProvider extends Provider { }) } } - + const headers = this.getCustomHeaders(authStatus.isFireworksTracingEnabled) + headers['X-Sourcegraph-Interaction-ID'] = options.completionLogId return this.client.complete(requestParams, abortController, { - customHeaders: this.getCustomHeaders(authStatus.isFireworksTracingEnabled), + customHeaders: headers, }) }