async fetchCompletions()

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;
    }
  }