| /** |
| * @license |
| * Copyright 2023 Google LLC |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| import { |
| ChangeInfo, |
| CommentRange, |
| FixSuggestionInfo, |
| RevisionPatchSetNum, |
| } from './rest-api'; |
| |
| export declare interface SuggestionsPluginApi { |
| /** |
| * Must only be called once. You cannot register twice. You cannot unregister. |
| */ |
| register(provider: SuggestionsProvider): void; |
| } |
| |
| export declare interface SuggestCodeRequest { |
| prompt: string; |
| changeInfo: ChangeInfo; |
| patchsetNumber: RevisionPatchSetNum; |
| filePath: string; |
| range?: CommentRange; |
| lineNumber?: number; |
| } |
| |
| export declare interface AutocompleteCommentRequest { |
| id: string; |
| commentText: string; |
| changeInfo: ChangeInfo; |
| patchsetNumber: RevisionPatchSetNum; |
| filePath: string; |
| range?: CommentRange; |
| lineNumber?: number; |
| } |
| |
| export declare interface SuggestionsProvider { |
| autocompleteComment?( |
| req: AutocompleteCommentRequest |
| ): Promise<AutocompleteCommentResponse>; |
| |
| /** |
| * Gerrit calls these methods when ... |
| * - ... user types a comment draft |
| */ |
| suggestCode?(commentData: SuggestCodeRequest): Promise<SuggestCodeResponse>; |
| suggestFix?(commentData: SuggestCodeRequest): Promise<SuggestedFixResponse>; |
| /** |
| * Gets the title to display on the fix suggestion preview. |
| * |
| * @param fix_suggestions A list of suggested fixes. |
| * @return The title string or empty to use the default title. |
| */ |
| getFixSuggestionTitle?(fix_suggestions?: FixSuggestionInfo[]): string; |
| /** |
| * Gets a link to documentation for icon help next to title |
| * |
| * @param fix_suggestions A list of suggested fixes. |
| * @return The documentation URL string or empty to use the default link to |
| * gerrit documentation about fix suggestions. |
| */ |
| getDocumentationLink?(fix_suggestions?: FixSuggestionInfo[]): string; |
| /** |
| * List of supported file extensions. If undefined, all file extensions supported. |
| */ |
| supportedFileExtensions?: string[]; |
| /** |
| * Sends feedback on autocompletion suggestions. |
| * This method allows the plugin to report which suggestions were accepted or |
| * rejected by the user, which can be used for improving future suggestions. |
| */ |
| sendAutocompleteFeedback?(feedbackEntries: SuggestionFeedbackEntry[]): void; |
| /** |
| * Sends feedback on 'suggest fix' (code repair) suggestions. |
| * This method allows the plugin to report which suggestions were accepted or |
| * rejected by the user, which can be used for improving future suggestions. |
| * |
| */ |
| sendSuggestFixFeedback?(feedbackEntries: SuggestionFeedbackEntry[]): void; |
| } |
| |
| /** |
| * Represents a 128-bit unique identifier for a suggestion, used for tracking feedback. |
| * The ID is split into two 64-bit BigInt components. |
| */ |
| export declare interface Feedback { |
| /** The least significant 64 bits of the 128-bit identifier. */ |
| id1: bigint; |
| /** The most significant 64 bits of the 128-bit identifier. */ |
| id2: bigint; |
| } |
| |
| export declare interface SuggestionFeedbackEntry { |
| /** The unique identifier for the suggestion. */ |
| feedbackId: Feedback; |
| /** True if the suggestion was accepted by the user, false otherwise. */ |
| accepted: boolean; |
| } |
| |
| export declare interface AutocompleteCommentResponse { |
| responseCode: ResponseCode; |
| completion?: string; |
| modelVersion?: string; |
| outcome?: number; |
| feedback?: Feedback; |
| } |
| |
| export declare interface SuggestCodeResponse { |
| responseCode: ResponseCode; |
| suggestions: Suggestion[]; |
| } |
| |
| export declare interface SuggestedFixResponse { |
| responseCode: ResponseCode; |
| fix_suggestions: FixSuggestionInfo[]; |
| } |
| |
| export declare interface Suggestion { |
| replacement: string; |
| newRange?: CommentRange; |
| } |
| |
| export enum ResponseCode { |
| OK = 'OK', |
| NO_SUGGESTION = 'NO_SUGGESTION', |
| OUT_OF_RANGE = 'OUT_OF_RANGE', |
| ERROR = 'ERROR', |
| FILE_TOO_LARGE = 'FILE_TOO_LARGE', |
| INVALID_RANGE = 'INVALID_RANGE', |
| UNSUPPORTED_FILE_TYPE = 'UNSUPPORTED_FILE_TYPE', |
| USER_QUOTA_EXCEEDED = 'USER_QUOTA_EXCEEDED', |
| OK_LOW_CONFIDENCE = 'OK_LOW_CONFIDENCE', |
| } |