Skip to content

Commit f4f70f6

Browse files
committed
logging changes for nes
1 parent 0691655 commit f4f70f6

File tree

5 files changed

+47
-2
lines changed

5 files changed

+47
-2
lines changed

Diff for: lib/shared/src/experimentation/FeatureFlagProvider.ts

+3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ export enum FeatureFlag {
3232
// Enable the deepseek-v2 as the default model via Fireworks
3333
CodyAutocompleteDeepseekV2LiteBase = 'cody-autocomplete-deepseek-v2-lite-base',
3434

35+
// Data collection variants used for completions and next edit completions
36+
CodyAutocompleteDataCollectionFlag = 'cody-autocomplete-data-collection-flag',
37+
3538
// Enable various feature flags to experiment with FIM trained fine-tuned models via Fireworks
3639
CodyAutocompleteFIMModelExperimentBaseFeatureFlag = 'cody-autocomplete-fim-model-experiment-flag-v2',
3740
CodyAutocompleteFIMModelExperimentControl = 'cody-autocomplete-fim-model-experiment-control-v2',

Diff for: vscode/src/completions/completion-provider-config.ts

+7
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class CompletionProviderConfig {
2727
FeatureFlag.CodyAutocompletePreloadingExperimentVariant2,
2828
FeatureFlag.CodyAutocompletePreloadingExperimentVariant3,
2929
FeatureFlag.CodyAutocompleteDisableLowPerfLangDelay,
30+
FeatureFlag.CodyAutocompleteDataCollectionFlag,
3031
]
3132
await Promise.all(featureFlagsUsed.map(flag => featureFlagProvider.evaluateFeatureFlag(flag)))
3233
}
@@ -193,6 +194,12 @@ class CompletionProviderConfig {
193194
.evaluatedFeatureFlag(FeatureFlag.CodyAutocompleteDisableLowPerfLangDelay)
194195
.pipe(distinctUntilChanged())
195196
}
197+
198+
public get completionDataCollectionFlag(): Observable<boolean> {
199+
return featureFlagProvider
200+
.evaluatedFeatureFlag(FeatureFlag.CodyAutocompleteDataCollectionFlag)
201+
.pipe(distinctUntilChanged())
202+
}
196203
}
197204

198205
/**

Diff for: vscode/src/completions/context/context-mixer.ts

+34-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ import {
44
type AutocompleteContextSnippet,
55
type DocumentContext,
66
contextFiltersProvider,
7+
subscriptionDisposable,
78
wrapInActiveSpan,
89
} from '@sourcegraph/cody-shared'
910

11+
import {GitHubDotComRepoMetadata} from '../../repository/repo-metadata-from-git-api';
12+
import { completionProviderConfig } from '../completion-provider-config'
1013
import type { LastInlineCompletionCandidate } from '../get-inline-completions'
1114
import {
1215
DefaultCompletionsContextRanker,
@@ -21,6 +24,8 @@ interface GetContextOptions {
2124
abortSignal?: AbortSignal
2225
maxChars: number
2326
lastCandidate?: LastInlineCompletionCandidate
27+
gitUrl?: string
28+
isDotComUser?: boolean
2429
}
2530

2631
export interface ContextSummary {
@@ -72,8 +77,19 @@ export interface GetContextResult {
7277
* ranged for the top ranked document from all retrieval sources before we move on to the second
7378
* document).
7479
*/
75-
export class ContextMixer {
76-
constructor(private strategyFactory: ContextStrategyFactory) {}
80+
export class ContextMixer implements vscode.Disposable {
81+
private disposables: vscode.Disposable[] = []
82+
private dataCollectionFlag = false
83+
84+
constructor(private strategyFactory: ContextStrategyFactory) {
85+
this.disposables.push(
86+
subscriptionDisposable(
87+
completionProviderConfig.completionDataCollectionFlag.subscribe(dataCollectionFlag => {
88+
this.dataCollectionFlag = dataCollectionFlag
89+
})
90+
)
91+
)
92+
}
7793

7894
public async getContext(options: GetContextOptions): Promise<GetContextResult> {
7995
const start = performance.now()
@@ -176,6 +192,22 @@ export class ContextMixer {
176192
rankedContextCandidates: Array.from(fusedResults),
177193
}
178194
}
195+
196+
private shouldLogContext(gitUrl: string, isDotComUser: boolean): boolean {
197+
if (!isDotComUser || !this.dataCollectionFlag) {
198+
return false
199+
}
200+
const instance = GitHubDotComRepoMetadata.getInstance()
201+
const gitRepoMetadata = instance.getRepoMetadataIfCached(gitUrl)
202+
return gitRepoMetadata?.isPublic ?? false
203+
}
204+
205+
public dispose(): void {
206+
for (const disposable of this.disposables) {
207+
disposable.dispose()
208+
}
209+
this.disposables = []
210+
}
179211
}
180212

181213
async function filter(snippets: AutocompleteContextSnippet[]): Promise<AutocompleteContextSnippet[]> {

Diff for: vscode/src/completions/get-inline-completions.ts

+2
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,8 @@ async function doGetInlineCompletions(
447447
abortSignal,
448448
maxChars: provider.contextSizeHints.totalChars,
449449
lastCandidate,
450+
gitUrl: gitIdentifiersForFile?.gitUrl,
451+
isDotComUser: isDotComUser,
450452
})
451453
),
452454
remainingInterval > 0

Diff for: vscode/src/completions/inline-completion-item-provider.ts

+1
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ export class InlineCompletionItemProvider
211211
this.disposables.push(strategyFactory)
212212

213213
this.contextMixer = new ContextMixer(strategyFactory)
214+
this.disposables.push(this.contextMixer)
214215

215216
this.smartThrottleService = new SmartThrottleService()
216217
this.disposables.push(this.smartThrottleService)

0 commit comments

Comments
 (0)