in src/common/code_suggestions/code_suggestions_provider.ts [417:449]
async fetchCompletions(
platform: GitLabPlatformBase,
token: CompletionToken,
prompt: CodeSuggestionPrompt,
traceID: string,
): Promise<CodeSuggestionsResponse> {
log.debug(`AI Assist: fetching completions...`);
const requestOptions = {
method: 'POST',
headers: {
...platform.getUserAgentHeader(),
'X-Gitlab-Authentication-Type': 'oidc',
Authorization: `Bearer ${token.access_token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(prompt),
signal: AbortSignal.timeout(REQUEST_TIMEOUT_MILLISECONDS),
} satisfies RequestInit;
try {
const response = await fetch(this.#server, requestOptions);
await this.#handleErrorResponse(response, traceID);
return await response.json();
} catch (e) {
if (e.name === 'AbortError') {
throw new TimeoutError(this.#server);
}
throw e;
}
}