async provideInlineCompletionItems()

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

		},