Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>AVACompleteNew to Visual Studio Code? Get it now.
AVAComplete

AVAComplete

Aidia-srl

|
4 installs
| (0) | Free
Standalone VS Code inline autocomplete with direct endpoint configuration.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

AVAComplete

A minimal VS Code extension that provides editor inline autocomplete using any user-configured HTTP endpoint. No backend, no gateway, no login, no chat — just prefix/suffix completions.

Quick start

  1. Install dependencies:
bun install
  1. Build the extension:
bun run build
  1. Launch VS Code with the extension in development mode:
/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code \
  --extensionDevelopmentPath=/Path/To/AVAComplete \
  /path/to/your/workspace
  1. Open VS Code settings and configure your endpoint (see Configuration).

Build scripts

Script Description
bun run typecheck Run TypeScript with --noEmit
bun run build Bundle src/extension.ts into dist/extension.js
bun run watch Watch mode for the extension bundle
bun run package Typecheck + production bundle
bun test Run the direct-client smoke tests

Configuration

All settings live under the avacomplete namespace.

Required settings

Setting Type Default Description
avacomplete.endpoint.url string "" Full URL of the autocomplete endpoint
avacomplete.endpoint.apiKey string "" API key sent as Authorization: Bearer ...
avacomplete.endpoint.model string "" Model name passed in the request body

Optional settings

Setting Type Default Description
avacomplete.endpoint.temperature number 0.2 Sampling temperature
avacomplete.endpoint.maxTokens number 256 Maximum tokens to generate
avacomplete.endpoint.requestTemplate string see below JSON request body template
avacomplete.endpoint.responsePath string choices[0].text JSON path to the completion text
avacomplete.endpoint.headers string "" Extra headers as a JSON object
avacomplete.enableAutoTrigger boolean true Show suggestions automatically
avacomplete.enableSmartInlineTaskKeybinding boolean false Enable Ctrl+L / Cmd+L manual trigger
avacomplete.triggerMidWord boolean false Allow autocomplete to trigger while typing inside a word
avacomplete.triggerInGitignoredFiles boolean true Allow autocomplete to trigger in files matched by .gitignore
avacomplete.maxPrefixChars number \| null null Maximum characters of prefix sent to the model (null = whole document)
avacomplete.maxSuffixChars number \| null null Maximum characters of suffix sent to the model (null = whole document)
avacomplete.logLevel string INFO Log verbosity (DEBUG, INFO, WARN, ERROR, OFF)

Applying settings

You can configure the extension in two ways:

Via settings.json (recommended for copy-pasting the examples below):

  1. Open the Command Palette (Cmd+Shift+P / Ctrl+Shift+P)
  2. Run Preferences: Open User Settings (JSON)
  3. Paste the example JSON block inside the top-level object

Via the Settings UI:

  1. Open Settings (Cmd+, / Ctrl+,)
  2. Search for avacomplete
  3. Fill in the fields under AVAComplete > Endpoint

Request template

avacomplete.endpoint.requestTemplate is a JSON object. The following placeholders are replaced before the request is sent:

Placeholder Type Description
{prefix} string Text before the cursor
{suffix} string Text after the cursor
{context} string Extra context block when context.enabled is true, otherwise empty
{model} string Value of endpoint.model
{temperature} number Value of endpoint.temperature
{maxTokens} number Value of endpoint.maxTokens

Default template:

{
  "prompt": "{context}{prefix}{suffix}",
  "model": "{model}",
  "temperature": "{temperature}",
  "max_tokens": "{maxTokens}"
}

The extension parses the template as JSON, replaces placeholders, then serializes the result. Numeric placeholders must be written as string values ("{temperature}") so the JSON is valid; they are converted back to numbers before sending.

Extra context

You can opt-in to sending the current selection, clipboard, and recent edits as extra context. This is useful when the backend expects the extra information to live inside the prefix section (e.g., the AVACode [PREFIX]/[SUFFIX] format).

Context settings

Setting Type Default Description
avacomplete.context.enabled boolean false Include selection, clipboard, and recent edits as context
avacomplete.context.prefixTemplate string see below Template for the {context} block. Placeholders: {selection}, {clipboard}, {recentEdits}
avacomplete.context.maxChars number 1000 Maximum characters for recent edits
avacomplete.context.maxSelectionChars number \| null null Maximum characters of the active selection (null = full selection)
avacomplete.context.maxClipboardChars number \| null null Maximum characters of the clipboard (null = full clipboard)

Default prefixTemplate:

### Recent context
- selection: {selection}
- clipboard: {clipboard}
- recent edits: {recentEdits}

Place the {context} placeholder where you want it inside your requestTemplate. For the AVACode backend, put it inside the [PREFIX] section:

{
  "avacomplete.context.enabled": true,
  "avacomplete.endpoint.requestTemplate": "{\"model\": \"{model}\", \"messages\": [{\"role\": \"user\", \"content\": \"[PREFIX]{context}{prefix}[SUFFIX]{suffix}\"}], \"temperature\": \"{temperature}\", \"max_tokens\": \"{maxTokens}\"}"
}

Response path

avacomplete.endpoint.responsePath tells the extension where the completion text lives in the JSON response. Use dot notation and bracket indexes.

Provider style Response path
OpenAI Completions choices[0].text
OpenAI Chat Completions choices[0].message.content
Custom object completions[0].data.message

Example configurations

AVACode (Aidia)

{
  "avacomplete.endpoint.url": "https://ava-coding.aidia.it/v1/chat/completions",
  "avacomplete.endpoint.apiKey": "aidia-xxxxxxxxxxxx",
  "avacomplete.endpoint.model": "ava-autocomplete",
  "avacomplete.endpoint.temperature": 0.2,
  "avacomplete.endpoint.maxTokens": 1024,
  "avacomplete.endpoint.requestTemplate": "{\"model\": \"{model}\", \"messages\": [{\"role\": \"user\", \"content\": \"[SUFFIX]{suffix}[PREFIX]{prefix}\"}], \"temperature\": \"{temperature}\", \"max_tokens\": \"{maxTokens}\"}",
  "avacomplete.endpoint.responsePath": "choices[0].message.content"
}

The API key must start with aidia-. Replace the example key with your personal key.

Add {context} before prefix if you want to send extra context:

{
  "avacomplete.context.enabled": true,
  "avacomplete.endpoint.requestTemplate": "{\"model\": \"{model}\", \"messages\": [{\"role\": \"user\", \"content\": \"[SUFFIX]{suffix}[PREFIX]{context}{prefix}\"}], \"temperature\": \"{temperature}\", \"max_tokens\": \"{maxTokens}\"}"
}

OpenAI Completions

{
  "avacomplete.endpoint.url": "https://api.openai.com/v1/completions",
  "avacomplete.endpoint.apiKey": "sk-...",
  "avacomplete.endpoint.model": "gpt-3.5-turbo-instruct",
  "avacomplete.endpoint.temperature": 0.2,
  "avacomplete.endpoint.maxTokens": 128,
  "avacomplete.endpoint.requestTemplate": "{\"prompt\": \"{prefix}<|fim_middle|>{suffix}\", \"model\": \"{model}\", \"temperature\": \"{temperature}\", \"max_tokens\": \"{maxTokens}\"}",
  "avacomplete.endpoint.responsePath": "choices[0].text"
}

OpenAI Chat Completions

{
  "avacomplete.endpoint.url": "https://api.openai.com/v1/chat/completions",
  "avacomplete.endpoint.apiKey": "sk-...",
  "avacomplete.endpoint.model": "gpt-4o-mini",
  "avacomplete.endpoint.requestTemplate": "{\"model\": \"{model}\", \"messages\": [{\"role\": \"system\", \"content\": \"Complete the code. Return only the missing code.\"}, {\"role\": \"user\", \"content\": \"Prefix:\n{prefix}\n\nSuffix:\n{suffix}\"}], \"temperature\": \"{temperature}\", \"max_tokens\": \"{maxTokens}\"}",
  "avacomplete.endpoint.responsePath": "choices[0].message.content"
}

Ollama

{
  "avacomplete.endpoint.url": "http://localhost:11434/api/generate",
  "avacomplete.endpoint.model": "codellama:7b-code",
  "avacomplete.endpoint.requestTemplate": "{\"model\": \"{model}\", \"prompt\": \"{prefix}<FIM>{suffix}\", \"stream\": false, \"options\": {\"temperature\": {temperature}}}",
  "avacomplete.endpoint.responsePath": "response"
}

Commands

Command Default keybinding Description
avacomplete.generateSuggestions Ctrl+L / Cmd+L (when enabled) Manually trigger a suggestion
avacomplete.cancelSuggestions Escape Hide the current suggestion
avacomplete.reload none Reload settings and re-register the provider
avacomplete.disable none Turn autocomplete off
avacomplete.toggle none Enable or disable autocomplete
avacomplete.openSettings none Open the autocomplete endpoint settings

Status bar indicator

A status bar item named AVA appears at the bottom right of VS Code:

Icon Meaning
$(warning) AVA Endpoint not configured — click to open settings
$(x) AVA Autocomplete disabled — click to enable
$(check) AVA Autocomplete enabled — click to disable
$(sync~spin) AVA Fetching a suggestion — click to cancel

Hover over the item for a tooltip, and click it to toggle or open settings.

Packaging

To create a .vsix installable extension:

bun run build
npx @vscode/vsce package

Then install the generated .vsix from the VS Code extensions panel.

Troubleshooting

  • No suggestions appear: Check that endpoint.url, endpoint.model, and endpoint.apiKey are set. Open the Extension Host output channel for errors.
  • Request fails with 4xx/5xx: Verify the requestTemplate is valid JSON and matches what the endpoint expects. Test the response path against a sample response.
  • VS Code complains about activation: Make sure bun run build completed and dist/extension.js exists.

Scope notes

  • Chat autocomplete, Agent Manager, telemetry, login flows, CLI/TUI autocomplete, and gateway routing were intentionally removed.
  • Next Edit is not included in this minimal version; it can be added later as a separate provider.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft