Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
0a04914
feat(ghost): improve no-model-configured message with supported provi…
markijbema Jan 5, 2026
d08b279
refactor(ghost): remove redundant AUTOCOMPLETE_PROVIDER_MODELS export…
markijbema Jan 5, 2026
5d2ffda
i18n(ghost): update noModelConfigured translations
markijbema Jan 5, 2026
78374ea
add translations
markijbema Jan 5, 2026
09a904f
chore: update displayName to include Copilot and Autocomplete keywords
markijbema Jan 5, 2026
621994c
docs: add inline autocomplete to README features
markijbema Jan 5, 2026
1795a8c
i18n: translate displayName to all languages
kiloconnect[bot] Jan 5, 2026
878d47f
Merge branch 'main' into mark/update-display-name-marketplace
markijbema Jan 5, 2026
641e16d
fix: update test selectors for split translation keys
markijbema Jan 5, 2026
bf43de0
Merge branch 'main' into mark/improve-autocomplete-no-model-message
markijbema Jan 5, 2026
2051fd3
Merge pull request #4786 from Kilo-Org/mark/update-display-name-marke…
markijbema Jan 6, 2026
383c56e
refactor: consolidate last suggestion tracking into single object
markijbema Jan 6, 2026
aec48d9
feat: show no credits message when kilocode profile has no balance
markijbema Jan 6, 2026
d21d387
Add translations for noCredits message in autocomplete settings
markijbema Jan 6, 2026
1d79105
refactor: make LastSuggestionInfo extend AutocompleteContext
markijbema Jan 6, 2026
4f32874
fix: add Gradle caching and Maven mirrors for JetBrains CI builds
markijbema Jan 6, 2026
87edd68
Merge pull request #4784 from Kilo-Org/mark/improve-autocomplete-no-m…
markijbema Jan 6, 2026
fb894c8
Merge pull request #4809 from Kilo-Org/mark/fix-jetbrains-maven-403
markijbema Jan 6, 2026
20d3bed
Merge pull request #4807 from Kilo-Org/mark/fix-chat-autocomplete-tel…
markijbema Jan 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/code-qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,10 @@ jobs:
check-latest: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
- name: Install system dependencies
run: |
sudo apt-get update
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/marketplace-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,10 @@ jobs:
java-version: "21"
check-latest: false
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: false
- name: Install system dependencies
run: |
sudo apt-get update
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
- ✅ Checks its own work
- 🧪 Run terminal commands
- 🌐 Automate the browser
- ⚡ Inline autocomplete suggestions
- 🤖 Latest AI models
- 🎁 API keys optional
- 💡 **Get $20 in bonus credits when you top-up for the first time** Credits can be used with 500+ models like Gemini 3 Pro, Claude 4.5 Sonnet & Opus, and GPT-5
Expand All @@ -29,6 +30,7 @@
## Key Features

- **Code Generation:** Kilo can generate code using natural language.
- **Inline Autocomplete:** Get intelligent code completions as you type, powered by AI.
- **Task Automation:** Kilo can automate repetitive coding tasks.
- **Automated Refactoring:** Kilo can refactor and improve existing code.
- **MCP Server Marketplace**: Kilo can easily find, and use MCP servers to extend the agent capabilities.
Expand Down
15 changes: 15 additions & 0 deletions jetbrains/plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,21 @@ version = properties("pluginVersion").get()

repositories {
mavenCentral()
// Fallback mirrors for when Maven Central returns 403 (common in CI environments)
maven {
url = uri("https://repo1.maven.org/maven2/")
content {
includeGroupByRegex("com\\.squareup.*")
includeGroupByRegex("com\\.google.*")
}
}
maven {
url = uri("https://maven-central.storage.googleapis.com/maven2/")
content {
includeGroupByRegex("com\\.squareup.*")
includeGroupByRegex("com\\.google.*")
}
}

intellijPlatform {
defaultRepositories()
Expand Down
19 changes: 19 additions & 0 deletions packages/types/src/kilocode/kilocode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,30 @@ export const ghostServiceSettingsSchema = z
provider: z.string().optional(),
model: z.string().optional(),
snoozeUntil: z.number().optional(),
hasKilocodeProfileWithNoBalance: z.boolean().optional(),
})
.optional()

export type GhostServiceSettings = z.infer<typeof ghostServiceSettingsSchema>

/**
* Map of provider names to their default autocomplete models.
* These are the providers that support autocomplete functionality.
*/
export const AUTOCOMPLETE_PROVIDER_MODELS = new Map([
["mistral", "codestral-latest"],
["kilocode", "mistralai/codestral-2508"],
["openrouter", "mistralai/codestral-2508"],
["requesty", "mistral/codestral-latest"],
["bedrock", "mistral.codestral-2508-v1:0"],
["huggingface", "mistralai/Codestral-22B-v0.1"],
["litellm", "codestral/codestral-latest"],
["lmstudio", "mistralai/codestral-22b-v0.1"],
["ollama", "codestral:latest"],
] as const)

export type AutocompleteProviderKey = typeof AUTOCOMPLETE_PROVIDER_MODELS extends Map<infer K, unknown> ? K : never

export const commitRangeSchema = z.object({
from: z.string(),
fromTimeStamp: z.number().optional(),
Expand Down
2 changes: 1 addition & 1 deletion src/package.nls.ar.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.ca.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.cs.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.de.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.es.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.fr.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.hi.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.id.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.it.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.ja.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"extension.displayName": "Kilo Code AI Agent",
"extension.displayName": "Kilo Code: AI Coding Agent, Copilot, and Autocomplete",
"extension.description": "Open Source AI coding assistant for planning, building, and fixing code.",
"views.contextMenu.label": "Kilo Code",
"views.terminalMenu.label": "Kilo Code",
Expand Down
2 changes: 1 addition & 1 deletion src/package.nls.ko.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.nl.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.pl.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.pt-BR.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.ru.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.th.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.tr.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.uk.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.vi.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.zh-CN.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.nls.zh-TW.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 8 additions & 1 deletion src/services/ghost/GhostModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export class GhostModel {
public profileType: string | null = null
private currentProvider: ProviderName | null = null
public loaded = false
public hasKilocodeProfileWithNoBalance = false

constructor(apiHandler: ApiHandler | null = null) {
if (apiHandler) {
Expand All @@ -34,6 +35,7 @@ export class GhostModel {
this.profileType = null
this.currentProvider = null
this.loaded = false
this.hasKilocodeProfileWithNoBalance = false
}

public async reload(providerSettingsManager: ProviderSettingsManager): Promise<boolean> {
Expand All @@ -60,7 +62,12 @@ export class GhostModel {
if (provider === "kilocode") {
// For all other providers, assume they are usable
if (!profile.kilocodeToken) continue
if (!(await checkKilocodeBalance(profile.kilocodeToken, profile.kilocodeOrganizationId))) continue
const hasBalance = await checkKilocodeBalance(profile.kilocodeToken, profile.kilocodeOrganizationId)
if (!hasBalance) {
// Track that we found a kilocode profile but it has no balance
this.hasKilocodeProfileWithNoBalance = true
continue
}
}
await useProfile(this, { ...profile, [modelIdKeysByProvider[provider]]: model }, provider)
return true
Expand Down
1 change: 1 addition & 0 deletions src/services/ghost/GhostServiceManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ export class GhostServiceManager {
...this.settings,
provider: this.getCurrentProviderName(),
model: this.getCurrentModelName(),
hasKilocodeProfileWithNoBalance: this.model.hasKilocodeProfileWithNoBalance,
}
await ContextProxy.instance.setValues({ ghostServiceSettings: settingsWithModelInfo })
await this.cline.postStateToWebview()
Expand Down
Loading
Loading