in src/extension.ts [143:209]
async provideInlineCompletionItems(document, position, context, token) {
const config = vscode.workspace.getConfiguration("llm");
const autoSuggest = config.get("enableAutoSuggest") as boolean;
const requestDelay = config.get("requestDelay") as number;
if (context.triggerKind === vscode.InlineCompletionTriggerKind.Automatic && !autoSuggest) {
return;
}
if (position.line < 0) {
return;
}
if (requestDelay > 0) {
const cancelled = await delay(requestDelay, token);
if (cancelled) {
return
}
}
let tokenizerConfig: any = config.get("tokenizer");
if (tokenizerConfig != null && tokenizerConfig.repository != null && tokenizerConfig.api_token == null) {
tokenizerConfig.api_token = await ctx.secrets.get('apiToken');
}
let params = {
position,
textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),
model: config.get("modelId") as string,
backend: config.get("backend") as string,
url: config.get("url") as string | null,
tokensToClear: config.get("tokensToClear") as string[],
apiToken: await ctx.secrets.get('apiToken'),
requestBody: config.get("requestBody") as object,
fim: config.get("fillInTheMiddle") as number,
contextWindow: config.get("contextWindow") as number,
tlsSkipVerifyInsecure: config.get("tlsSkipVerifyInsecure") as boolean,
ide: "vscode",
tokenizerConfig,
disableUrlPathCompletion: config.get("disableUrlPathCompletion") as boolean,
};
try {
loadingIndicator.show()
const response: CompletionResponse = await client.sendRequest("llm-ls/getCompletions", params, token);
loadingIndicator.hide()
const items = [];
for (const completion of response.completions) {
items.push({
insertText: completion.generated_text,
range: new vscode.Range(position, position),
command: {
title: 'afterInsert',
command: 'llm.afterInsert',
arguments: [response],
}
});
}
return {
items,
};
} catch (e) {
const err_msg = (e as Error).message;
if (err_msg.includes("is currently loading")) {
vscode.window.showWarningMessage(err_msg);
} else if (err_msg !== "Canceled") {
vscode.window.showErrorMessage(err_msg);
}
}
},