Merge branch 'main' into kevinvandijk/kilo-opencode-v1.2.16

This commit is contained in:
Kevin van Dijk
2026-03-12 00:41:02 +01:00
committed by GitHub
58 changed files with 447 additions and 91 deletions
+14 -14
View File
@@ -25,7 +25,7 @@
},
"packages/app": {
"name": "@opencode-ai/app",
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {
"@kilocode/kilo-i18n": "workspace:*",
"@kilocode/kilo-ui": "workspace:*",
@@ -77,7 +77,7 @@
},
"packages/desktop": {
"name": "@opencode-ai/desktop",
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {
"@opencode-ai/app": "workspace:*",
"@opencode-ai/ui": "workspace:*",
@@ -110,7 +110,7 @@
},
"packages/kilo-docs": {
"name": "@kilocode/kilo-docs",
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {
"@docsearch/css": "^4",
"@docsearch/js": "^4",
@@ -139,7 +139,7 @@
},
"packages/kilo-gateway": {
"name": "@kilocode/kilo-gateway",
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {
"@clack/prompts": "1.0.0-alpha.1",
"@kilocode/plugin": "workspace:*",
@@ -171,7 +171,7 @@
},
"packages/kilo-i18n": {
"name": "@kilocode/kilo-i18n",
"version": "7.0.44",
"version": "7.0.46",
"devDependencies": {
"@tsconfig/node22": "catalog:",
"@types/bun": "catalog:",
@@ -181,7 +181,7 @@
},
"packages/kilo-telemetry": {
"name": "@kilocode/kilo-telemetry",
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {
"@kilocode/kilo-gateway": "workspace:*",
"@opentelemetry/api": "1.9.0",
@@ -201,7 +201,7 @@
},
"packages/kilo-ui": {
"name": "@kilocode/kilo-ui",
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {
"@kobalte/core": "0.13.11",
"@opencode-ai/util": "workspace:*",
@@ -230,7 +230,7 @@
},
"packages/kilo-vscode": {
"name": "kilo-code",
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {
"@anthropic-ai/sdk": "^0.39.0",
"@kilocode/kilo-i18n": "workspace:*",
@@ -281,7 +281,7 @@
},
"packages/opencode": {
"name": "@kilocode/cli",
"version": "7.0.44",
"version": "7.0.46",
"bin": {
"opencode": "./bin/opencode",
},
@@ -398,7 +398,7 @@
},
"packages/plugin": {
"name": "@kilocode/plugin",
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {
"@kilocode/sdk": "workspace:*",
"zod": "catalog:",
@@ -412,14 +412,14 @@
},
"packages/script": {
"name": "@opencode-ai/script",
"version": "7.0.44",
"version": "7.0.46",
"devDependencies": {
"@types/bun": "catalog:",
},
},
"packages/sdk/js": {
"name": "@kilocode/sdk",
"version": "7.0.44",
"version": "7.0.46",
"devDependencies": {
"@hey-api/openapi-ts": "0.90.10",
"@tsconfig/node22": "catalog:",
@@ -453,7 +453,7 @@
},
"packages/ui": {
"name": "@opencode-ai/ui",
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {
"@kilocode/sdk": "workspace:*",
"@kobalte/core": "catalog:",
@@ -498,7 +498,7 @@
},
"packages/util": {
"name": "@opencode-ai/util",
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {
"zod": "catalog:",
},
+1 -1
View File
@@ -108,6 +108,6 @@
"@openrouter/ai-sdk-provider@1.5.4": "patches/@openrouter%2Fai-sdk-provider@1.5.4.patch",
"ghostty-web@0.3.0": "patches/ghostty-web@0.3.0.patch"
},
"version": "7.0.44",
"version": "7.0.46",
"peerDependencies": {}
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/app",
"version": "7.0.44",
"version": "7.0.46",
"description": "",
"type": "module",
"exports": {
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@opencode-ai/desktop",
"private": true,
"version": "7.0.44",
"version": "7.0.46",
"type": "module",
"license": "MIT",
"scripts": {
+6 -6
View File
@@ -1,7 +1,7 @@
id = "kilo"
name = "Kilo"
description = "The open source coding agent."
version = "7.0.44"
version = "7.0.46"
schema_version = 1
authors = ["Anomaly"]
repository = "https://github.com/Kilo-Org/kilocode"
@@ -11,26 +11,26 @@ name = "Kilo"
icon = "./icons/opencode.svg"
[agent_servers.opencode.targets.darwin-aarch64]
archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.44/opencode-darwin-arm64.zip"
archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.46/opencode-darwin-arm64.zip"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.darwin-x86_64]
archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.44/opencode-darwin-x64.zip"
archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.46/opencode-darwin-x64.zip"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.linux-aarch64]
archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.44/opencode-linux-arm64.tar.gz"
archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.46/opencode-linux-arm64.tar.gz"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.linux-x86_64]
archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.44/opencode-linux-x64.tar.gz"
archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.46/opencode-linux-x64.tar.gz"
cmd = "./opencode"
args = ["acp"]
[agent_servers.opencode.targets.windows-x86_64]
archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.44/opencode-windows-x64.zip"
archive = "https://github.com/Kilo-Org/kilocode/releases/download/v7.0.46/opencode-windows-x64.zip"
cmd = "./opencode.exe"
args = ["acp"]
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@kilocode/kilo-docs",
"version": "7.0.44",
"version": "7.0.46",
"private": true,
"scripts": {
"dev": "next dev --webpack --port 3002",
@@ -114,6 +114,8 @@ The GitHub/GitLab bot that responds to issue comments and PR mentions. It dispat
A multi-tenant compute platform running on Fly.io, orchestrated by a Cloudflare Worker. Each user gets a dedicated persistent machine running an OpenClaw gateway, coordinated via Durable Objects for state management and self-healing reconciliation.
{% image src="/docs/img/kiloclaw/kiloclaw-architecture.png" alt="KiloClaw infrastructure architecture diagram" width="800" caption="KiloClaw infrastructure architecture" /%}
### Code Review
An automated code review service that subscribes to GitHub webhooks, dispatches reviews through the Cloud Agent, and posts feedback directly on pull requests. Supports per-organization concurrency limits and automatic queuing.
Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@kilocode/kilo-gateway",
"version": "7.0.44",
"version": "7.0.46",
"type": "module",
"license": "MIT",
"description": "Unified Kilo Gateway package for OpenCode - authentication, provider, and API integration",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@kilocode/kilo-i18n",
"version": "7.0.44",
"version": "7.0.46",
"type": "module",
"license": "MIT",
"description": "Kilo-specific i18n translations and overrides",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@kilocode/kilo-telemetry",
"version": "7.0.44",
"version": "7.0.46",
"type": "module",
"license": "MIT",
"description": "Telemetry for Kilo CLI - PostHog analytics integration",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@kilocode/kilo-ui",
"version": "7.0.44",
"version": "7.0.46",
"type": "module",
"license": "MIT",
"exports": {
+4
View File
@@ -4,4 +4,8 @@
border-radius: 2px;
padding: 8px;
border: 1px solid var(--border-weak-base);
&[data-variant="warning"] {
padding: 12px 14px;
}
}
@@ -76,6 +76,7 @@
}
html[data-theme="kilo-vscode"] [data-component="bash-output"] {
border-radius: 0;
background: var(--vscode-terminal-background, var(--vscode-panel-background));
[data-slot="bash-pre"] code {
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2ff01b76764db6c3d7cc014ddc6e3bfd7950383c5d224ae248a211b5c886be60
size 9835
oid sha256:670c7b9ad645c3d3fabac7916d3be2e1c08f9b4dd1444f6a5c444959ef9c28df
size 9194
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:27920c6e87bb1fe8f2869757f2d22eeb556bf16c032912bf765115b801aada3b
size 2198
oid sha256:e1b226702ffdb6f676509336e5d56240c9a099098adf504fc3f498030907b14e
size 1610
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "kilo-code",
"displayName": "Kilo Code: AI Coding Agent, Copilot, and Autocomplete",
"description": "Open Source AI coding agent that generates code from natural language, automates tasks, and runs terminal commands. Features inline autocomplete, browser automation, automated refactoring, and custom modes for planning, coding, and debugging. Supports 500+ AI models including Claude (Anthropic), Gemini, Grok, GPT, Codex and GLM.",
"version": "7.0.44",
"version": "7.0.46",
"icon": "assets/icons/logo-outline-black.png",
"galleryBanner": {
"color": "#FFFFFF",
+33 -12
View File
@@ -29,6 +29,7 @@ import {
mapSSEEventToWebviewMessage,
getErrorMessage,
isEventFromForeignProject,
mapCloudSessionMessageToWebviewMessage,
loadSessions as loadSessionsUtil,
flushPendingSessionRefresh as flushPendingSessionRefreshUtil,
type SessionRefreshContext,
@@ -48,6 +49,8 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
private cachedProvidersMessage: unknown = null
/** Cached agentsLoaded payload so requestAgents can be served before client is ready */
private cachedAgentsMessage: unknown = null
/** Cached skillsLoaded payload so requestSkills can be served before client is ready */
private cachedSkillsMessage: unknown = null
/** Cached configLoaded payload so requestConfig can be served before client is ready */
private cachedConfigMessage: unknown = null
/** Cached notificationsLoaded payload */
@@ -411,6 +414,9 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
case "requestAgents":
this.fetchAndSendAgents().catch((e) => console.error("[Kilo New] fetchAndSendAgents failed:", e))
break
case "requestSkills":
this.fetchAndSendSkills().catch((e) => console.error("[Kilo New] fetchAndSendSkills failed:", e))
break
case "questionReply":
await this.handleQuestionReply(message.requestID, message.answers)
break
@@ -686,10 +692,11 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
await this.syncWebviewState("initializeConnection")
await this.flushPendingSessionRefresh("initializeConnection")
// Fetch providers, agents, config, and notifications in parallel
// Fetch providers, agents, skills, config, and notifications in parallel
await Promise.all([
this.fetchAndSendProviders(),
this.fetchAndSendAgents(),
this.fetchAndSendSkills(),
this.fetchAndSendConfig(),
this.fetchAndSendNotifications(),
])
@@ -1067,6 +1074,29 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
}
}
private async fetchAndSendSkills(): Promise<void> {
if (!this.client) {
if (this.cachedSkillsMessage) {
this.postMessage(this.cachedSkillsMessage)
}
return
}
try {
const workspaceDir = this.getWorkspaceDirectory()
const { data: skills } = await this.client.app.skills({ directory: workspaceDir }, { throwOnError: true })
const message = {
type: "skillsLoaded",
skills,
}
this.cachedSkillsMessage = message
this.postMessage(message)
} catch (error) {
console.error("[Kilo New] KiloProvider: Failed to fetch skills:", error)
}
}
/**
* Fetch backend config and send to webview.
*/
@@ -1186,17 +1216,7 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
return
}
const messages = (data.messages ?? [])
.filter((m) => m.info)
.map((m) => ({
id: m.info.id,
sessionID: m.info.sessionID,
role: m.info.role as "user" | "assistant",
parts: m.parts,
createdAt: m.info.time?.created ? new Date(m.info.time.created).toISOString() : new Date().toISOString(),
cost: m.info.cost,
tokens: m.info.tokens,
}))
const messages = (data.messages ?? []).filter((m) => m.info).map(mapCloudSessionMessageToWebviewMessage)
this.postMessage({
type: "cloudSessionDataLoaded",
@@ -1884,6 +1904,7 @@ export class KiloProvider implements vscode.WebviewViewProvider, TelemetryProper
await Promise.all([
this.fetchAndSendProviders(),
this.fetchAndSendAgents(),
this.fetchAndSendSkills(),
this.fetchAndSendConfig(),
this.fetchAndSendNotifications(),
])
@@ -1,4 +1,5 @@
import type { Session, Agent, Event, ProviderListResponse } from "@kilocode/sdk/v2/client"
import type { CloudSessionMessage } from "./services/cli-backend/types"
/** A single provider entry as returned by the /provider list endpoint. */
export type ProviderInfo = ProviderListResponse["all"][number]
@@ -272,6 +273,21 @@ export function mapSSEEventToWebviewMessage(event: Event, sessionID: string | un
}
}
export function mapCloudSessionMessageToWebviewMessage(message: CloudSessionMessage) {
return {
id: message.info.id,
sessionID: message.info.sessionID,
role: message.info.role as "user" | "assistant",
parts: message.parts,
createdAt: message.info.time?.created
? new Date(message.info.time.created).toISOString()
: new Date().toISOString(),
time: message.info.time,
cost: message.info.cost,
tokens: message.info.tokens,
}
}
/**
* Check whether an SSE event belongs to a different project and should be dropped.
* Returns true when the event carries a projectID that does not match the expected one.
@@ -65,6 +65,25 @@ interface CloudSessionInfo {
}
// Full cloud session data for preview (from /kilo/cloud/session/:id)
export interface CloudSessionMessage {
info: {
id: string
sessionID: string
role: "user" | "assistant"
time: { created: number; completed?: number }
cost?: { input: number; output: number; reasoning?: number; cache?: { read: number; write: number } }
tokens?: { input: number; output: number; reasoning?: number; cache?: { read: number; write: number } }
[key: string]: unknown
}
parts: Array<{
id: string
sessionID: string
messageID: string
type: string
[key: string]: unknown
}>
}
export interface CloudSessionData {
info: {
id: string
@@ -72,24 +91,7 @@ export interface CloudSessionData {
time: { created: number; updated: number }
[key: string]: unknown
}
messages: Array<{
info: {
id: string
sessionID: string
role: "user" | "assistant"
time: { created: number; completed?: number }
cost?: { input: number; output: number; reasoning?: number; cache?: { read: number; write: number } }
tokens?: { input: number; output: number; reasoning?: number; cache?: { read: number; write: number } }
[key: string]: unknown
}
parts: Array<{
id: string
sessionID: string
messageID: string
type: string
[key: string]: unknown
}>
}>
messages: CloudSessionMessage[]
}
/** VS Code editor context sent alongside messages to the CLI backend */
@@ -6,8 +6,10 @@ import {
buildSettingPath,
mapSSEEventToWebviewMessage,
isEventFromForeignProject,
mapCloudSessionMessageToWebviewMessage,
type ProviderInfo,
} from "../../src/kilo-provider-utils"
import type { CloudSessionMessage } from "../../src/services/cli-backend/types"
import type {
Session,
Agent,
@@ -458,3 +460,55 @@ describe("isEventFromForeignProject", () => {
expect(isEventFromForeignProject(event, "project-A")).toBe(false)
})
})
describe("mapCloudSessionMessage", () => {
function makeCloudMessage(overrides: Partial<CloudSessionMessage["info"]> = {}): CloudSessionMessage {
return {
info: {
id: "msg-1",
sessionID: "sess-1",
role: "assistant",
time: { created: 1700000000000, completed: 1700000005000 },
cost: { input: 10, output: 20 },
tokens: { input: 100, output: 200 },
...overrides,
},
parts: [{ id: "p1", sessionID: "sess-1", messageID: "msg-1", type: "text", text: "hello" }],
}
}
it("maps fields to webview message format", () => {
const msg = mapCloudSessionMessageToWebviewMessage(makeCloudMessage())
expect(msg.id).toBe("msg-1")
expect(msg.sessionID).toBe("sess-1")
expect(msg.role).toBe("assistant")
expect(msg.createdAt).toBe(new Date(1700000000000).toISOString())
expect(msg.cost).toEqual({ input: 10, output: 20 })
expect(msg.tokens).toEqual({ input: 100, output: 200 })
expect(msg.parts).toHaveLength(1)
})
it("includes the time field with created and completed", () => {
const msg = mapCloudSessionMessageToWebviewMessage(makeCloudMessage())
expect(msg.time).toEqual({ created: 1700000000000, completed: 1700000005000 })
})
it("includes time when only created is present", () => {
const msg = mapCloudSessionMessageToWebviewMessage(makeCloudMessage({ time: { created: 1700000000000 } }))
expect(msg.time).toEqual({ created: 1700000000000 })
})
it("falls back to current date when time.created is missing", () => {
const before = Date.now()
const msg = mapCloudSessionMessageToWebviewMessage(makeCloudMessage({ time: undefined as never }))
const after = Date.now()
const createdAt = new Date(msg.createdAt).getTime()
expect(createdAt).toBeGreaterThanOrEqual(before)
expect(createdAt).toBeLessThanOrEqual(after)
})
it("maps user role correctly", () => {
const msg = mapCloudSessionMessageToWebviewMessage(makeCloudMessage({ role: "user" }))
expect(msg.role).toBe("user")
})
})
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b8b1ba56d6632bfcbd0e4c5b0c1514cd80832339dde0c86568572ada656ca33d
size 24134
oid sha256:1f95a30590881f0212823027fe7494390e298d3532fb3e1d488ad7e7a2012599
size 23362
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:278855516fe11d95b9de942d9690531c114b0a0b9ac0239c2ef31f82b420bd7e
size 32467
oid sha256:45b84883b6300049d99e09e1be4aa834a1a5eac15dac5b4ce5a1e09d16b72a8b
size 31636
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f6193ba79b4d5dda29bf39d1127dacd7e332755d1f6f42dd67ff667088975659
size 35678
oid sha256:8c4c2ba388cdfc687b14343aa672b22badd1164b2dbab6e99a99c983b0179f13
size 34924
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:83076ce468f046d5a884d8abf38189718641803cc966cae255e75e238894ae72
size 30673
oid sha256:9d5c9422fae8406813e46e5f088ee5a437a601b5cd96a0babcf28c5fffdd758d
size 30554
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:353cb9b38c19e5d3bf1c7c6e84a29da3b3365211c425703d7fcdb7e7a2153c74
size 22824
oid sha256:b7fe365d1a0ffdd713d3146c66112fad2207c2030132ab117543a6a430197aca
size 36247
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:47bc1fced8501aacd87ee50c31a552b5d03c4c3930e3aba0699238b48f7d409f
size 32627
oid sha256:b83a16d340c4af266d4dd0134a840c7c07bed50837a58460d3cebab61ca2bd06
size 45545
@@ -1,4 +1,4 @@
import { Component, createSignal, createMemo, For, Show } from "solid-js"
import { Component, createSignal, createMemo, createEffect, For, Show, onCleanup } from "solid-js"
import { Select } from "@kilocode/kilo-ui/select"
import { TextField } from "@kilocode/kilo-ui/text-field"
import { Card } from "@kilocode/kilo-ui/card"
@@ -8,7 +8,8 @@ import { IconButton } from "@kilocode/kilo-ui/icon-button"
import { useConfig } from "../../context/config"
import { useSession } from "../../context/session"
import { useLanguage } from "../../context/language"
import type { AgentConfig } from "../../types/messages"
import { useVSCode } from "../../context/vscode"
import type { AgentConfig, SkillInfo, ExtensionMessage } from "../../types/messages"
type SubtabId = "agents" | "mcpServers" | "rules" | "workflows" | "skills"
@@ -51,11 +52,29 @@ const AgentBehaviourTab: Component = () => {
const language = useLanguage()
const { config, updateConfig } = useConfig()
const session = useSession()
const vscode = useVSCode()
const [activeSubtab, setActiveSubtab] = createSignal<SubtabId>("agents")
const [selectedAgent, setSelectedAgent] = createSignal<string>("")
const [newSkillPath, setNewSkillPath] = createSignal("")
const [newSkillUrl, setNewSkillUrl] = createSignal("")
const [newInstruction, setNewInstruction] = createSignal("")
const [discoveredSkills, setDiscoveredSkills] = createSignal<SkillInfo[]>([])
// Subscribe to skillsLoaded messages from the extension
const unsub = vscode.onMessage((message: ExtensionMessage) => {
if (message.type === "skillsLoaded") {
setDiscoveredSkills(message.skills)
}
})
// Fetch skills whenever the skills subtab becomes active
createEffect(() => {
if (activeSubtab() === "skills") {
vscode.postMessage({ type: "requestSkills" })
}
})
onCleanup(() => unsub())
const agentNames = createMemo(() => {
const names = session.agents().map((a) => a.name)
@@ -344,6 +363,47 @@ const AgentBehaviourTab: Component = () => {
const renderSkillsSubtab = () => (
<div>
{/* Discovered skills */}
<h4 style={{ "margin-top": "0", "margin-bottom": "8px" }}>
{language.t("settings.agentBehaviour.discoveredSkills")}
</h4>
<Show
when={discoveredSkills().length > 0}
fallback={
<Card style={{ "margin-bottom": "16px" }}>
<div data-slot="settings-row-label-subtitle">{language.t("settings.agentBehaviour.noSkillsFound")}</div>
</Card>
}
>
<Card style={{ "margin-bottom": "16px" }}>
<For each={discoveredSkills()}>
{(skill, index) => (
<div
style={{
padding: "8px 0",
"border-bottom":
index() < discoveredSkills().length - 1 ? "1px solid var(--border-weak-base)" : "none",
}}
>
<div data-slot="settings-row-label-title" style={{ "margin-bottom": "0" }}>
{skill.name}
</div>
<div
data-slot="settings-row-label-subtitle"
style={{
"margin-top": "4px",
"font-family": "var(--vscode-editor-font-family, monospace)",
}}
>
<div>{skill.description}</div>
<div>{skill.location}</div>
</div>
</div>
)}
</For>
</Card>
</Show>
{/* Skill paths */}
<h4 style={{ "margin-top": "0", "margin-bottom": "8px" }}>{language.t("settings.agentBehaviour.skillPaths")}</h4>
<Card style={{ "margin-bottom": "16px" }}>
@@ -3,6 +3,7 @@ import { Select } from "@kilocode/kilo-ui/select"
import { Card } from "@kilocode/kilo-ui/card"
import { Button } from "@kilocode/kilo-ui/button"
import { IconButton } from "@kilocode/kilo-ui/icon-button"
import { Icon } from "@kilocode/kilo-ui/icon"
import { useConfig } from "../../context/config"
import { useProvider } from "../../context/provider"
import { useLanguage } from "../../context/language"
@@ -132,6 +133,21 @@ const ProvidersTab: Component = () => {
</For>
</Card>
{/* Beta notice */}
<Card
variant="warning"
style={{
"margin-top": "16px",
display: "flex",
"flex-direction": "row",
"align-items": "flex-start",
gap: "8px",
}}
>
<Icon name="warning" style={{ "flex-shrink": "0", "margin-top": "2px" }} />
<p style={{ margin: 0, "line-height": "1.5" }}>{language.t("settings.providers.betaNotice")}</p>
</Card>
{/* Disabled providers */}
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>{language.t("settings.providers.disabled")}</h4>
<Card>
@@ -664,6 +664,8 @@ export const dict = {
"settings.providers.title": "الموفرون",
"settings.providers.description": "ستكون إعدادات الموفر قابلة للتكوين هنا.",
"settings.providers.betaNotice":
"حالياً، يمكن إعداد مزود Kilo Gateway فقط في واجهة الإعدادات. سيتوفر دعم إعداد المزودين الآخرين قريباً خلال الفترة التجريبية. في غضون ذلك، يمكنك إعداد المزودين باستخدام CLI أو ملف التكوين. نحن ملتزمون بإبقاء Kilo مفتوحاً، دون تقييد.",
"settings.providers.section.connected": "الموفرون المتصلون",
"settings.providers.connected.empty": "لا يوجد موفرون متصلون",
"settings.providers.section.popular": "الموفرون الشائعون",
@@ -936,6 +938,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "معامل أخذ العينات النووي (0-1)",
"settings.agentBehaviour.maxSteps.title": "الحد الأقصى للخطوات",
"settings.agentBehaviour.maxSteps.description": "الحد الأقصى لتكرارات الوكيل",
"settings.agentBehaviour.discoveredSkills": "المهارات المكتشفة",
"settings.agentBehaviour.noSkillsFound":
"لم يتم العثور على مهارات. أضف مسارات مجلدات أو عناوين URL أدناه لإتاحة المهارات.",
"settings.agentBehaviour.skillPaths": "مسارات مجلدات المهارات",
"settings.agentBehaviour.skillUrls": "عناوين URL للمهارات",
"settings.agentBehaviour.instructionFiles": "ملفات تعليمات إضافية",
@@ -671,6 +671,8 @@ export const dict = {
"settings.providers.title": "Provedores",
"settings.providers.description": "Configurações de provedores estarão disponíveis aqui.",
"settings.providers.betaNotice":
"Atualmente, apenas o provedor Kilo Gateway pode ser configurado na interface de configurações. O suporte para a configuração de outros provedores estará disponível em breve durante o período beta. Enquanto isso, você pode configurar provedores usando a CLI ou o arquivo de configuração. Estamos comprometidos em manter o Kilo aberto, sem lock-in.",
"settings.providers.section.connected": "Provedores conectados",
"settings.providers.connected.empty": "Nenhum provedor conectado",
"settings.providers.section.popular": "Provedores populares",
@@ -948,6 +950,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "Parâmetro de amostragem nucleus (0-1)",
"settings.agentBehaviour.maxSteps.title": "Passos máximos",
"settings.agentBehaviour.maxSteps.description": "Iterações máximas do agente",
"settings.agentBehaviour.discoveredSkills": "Habilidades descobertas",
"settings.agentBehaviour.noSkillsFound":
"Nenhuma habilidade encontrada. Adicione caminhos de pastas ou URLs abaixo para disponibilizar habilidades.",
"settings.agentBehaviour.skillPaths": "Caminhos de pastas de habilidades",
"settings.agentBehaviour.skillUrls": "URLs de habilidades",
"settings.agentBehaviour.instructionFiles": "Arquivos de instruções adicionais",
@@ -675,6 +675,8 @@ export const dict = {
"settings.providers.title": "Provajderi",
"settings.providers.description": "Postavke provajdera će se ovdje moći podešavati.",
"settings.providers.betaNotice":
"Trenutno se samo Kilo Gateway provajder može konfigurisati u interfejsu za postavke. Podrška za konfigurisanje drugih provajdera stiže uskoro tokom beta perioda. U međuvremenu, provajdere možete konfigurisati koristeći CLI ili konfiguracijsku datoteku. Posvećeni smo tome da Kilo ostane otvoren, bez vezivanja.",
"settings.providers.section.connected": "Povezani provajderi",
"settings.providers.connected.empty": "Nema povezanih provajdera",
"settings.providers.section.popular": "Popularni provajderi",
@@ -948,6 +950,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "Nucleus parametar uzorkovanja (0-1)",
"settings.agentBehaviour.maxSteps.title": "Maks. koraci",
"settings.agentBehaviour.maxSteps.description": "Maksimalne iteracije agenta",
"settings.agentBehaviour.discoveredSkills": "Otkrivene vještine",
"settings.agentBehaviour.noSkillsFound":
"Nisu pronađene vještine. Dodajte putanje mapa ili URL-ove ispod kako biste učinili vještine dostupnim.",
"settings.agentBehaviour.skillPaths": "Putanje mapa vještina",
"settings.agentBehaviour.skillUrls": "URL-ovi vještina",
"settings.agentBehaviour.instructionFiles": "Dodatne datoteke uputa",
@@ -670,6 +670,8 @@ export const dict = {
"settings.providers.title": "Udbydere",
"settings.providers.description": "Udbyderindstillinger vil kunne konfigureres her.",
"settings.providers.betaNotice":
"I øjeblikket kan kun Kilo Gateway-udbyderen konfigureres i indstillingsgrænsefladen. Understøttelse af konfiguration af andre udbydere kommer snart i løbet af betaperioden. I mellemtiden kan du konfigurere udbydere via CLI eller konfigurationsfilen. Vi er dedikerede til at holde Kilo åben, ingen lock-in.",
"settings.providers.section.connected": "Forbundne udbydere",
"settings.providers.connected.empty": "Ingen forbundne udbydere",
"settings.providers.section.popular": "Populære udbydere",
@@ -944,6 +946,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "Nucleus-samplingparameter (0-1)",
"settings.agentBehaviour.maxSteps.title": "Maks. trin",
"settings.agentBehaviour.maxSteps.description": "Maksimale agentiterationer",
"settings.agentBehaviour.discoveredSkills": "Opdagede skills",
"settings.agentBehaviour.noSkillsFound":
"Ingen skills fundet. Tilføj skill-mappestier eller URL'er nedenfor for at gøre skills tilgængelige.",
"settings.agentBehaviour.skillPaths": "Skill-mappestier",
"settings.agentBehaviour.skillUrls": "Skill-URL'er",
"settings.agentBehaviour.instructionFiles": "Yderligere instruktionsfiler",
@@ -680,6 +680,8 @@ export const dict = {
"settings.providers.title": "Anbieter",
"settings.providers.description": "Anbietereinstellungen können hier konfiguriert werden.",
"settings.providers.betaNotice":
"Derzeit kann in den Einstellungen nur der Kilo Gateway-Anbieter konfiguriert werden. Die Unterstützung für die Konfiguration weiterer Anbieter folgt in Kürze während der Beta-Phase. In der Zwischenzeit können Sie Anbieter über die CLI oder die Konfigurationsdatei konfigurieren. Wir setzen uns dafür ein, Kilo offen zu halten, ohne Lock-in.",
"settings.providers.section.connected": "Verbundene Anbieter",
"settings.providers.connected.empty": "Keine verbundenen Anbieter",
"settings.providers.section.popular": "Beliebte Anbieter",
@@ -959,6 +961,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "Nucleus-Sampling-Parameter (0-1)",
"settings.agentBehaviour.maxSteps.title": "Max. Schritte",
"settings.agentBehaviour.maxSteps.description": "Maximale Agent-Iterationen",
"settings.agentBehaviour.discoveredSkills": "Erkannte Skills",
"settings.agentBehaviour.noSkillsFound":
"Keine Skills gefunden. Fügen Sie unten Skill-Ordnerpfade oder URLs hinzu, um Skills verfügbar zu machen.",
"settings.agentBehaviour.skillPaths": "Skill-Ordnerpfade",
"settings.agentBehaviour.skillUrls": "Skill-URLs",
"settings.agentBehaviour.instructionFiles": "Zusätzliche Anweisungsdateien",
@@ -676,6 +676,8 @@ export const dict = {
"settings.providers.title": "Providers",
"settings.providers.description": "Provider settings will be configurable here.",
"settings.providers.betaNotice":
"Currently only the Kilo Gateway provider can be configured in the settings interface. Support for configuring other providers is coming soon during the beta period. In the interim you can configure providers using the CLI or config file. We're committed to keeping Kilo open, no lock-in.",
"settings.providers.section.connected": "Connected providers",
"settings.providers.connected.empty": "No connected providers",
"settings.providers.section.popular": "Popular providers",
@@ -955,6 +957,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "Nucleus sampling parameter (0-1)",
"settings.agentBehaviour.maxSteps.title": "Max Steps",
"settings.agentBehaviour.maxSteps.description": "Maximum agentic iterations",
"settings.agentBehaviour.discoveredSkills": "Discovered Skills",
"settings.agentBehaviour.noSkillsFound":
"No skills discovered. Add skill folder paths or URLs below to make skills available.",
"settings.agentBehaviour.skillPaths": "Skill Folder Paths",
"settings.agentBehaviour.skillUrls": "Skill URLs",
"settings.agentBehaviour.instructionFiles": "Additional Instruction Files",
@@ -676,6 +676,8 @@ export const dict = {
"settings.providers.title": "Proveedores",
"settings.providers.description": "La configuración de proveedores estará disponible aquí.",
"settings.providers.betaNotice":
"Actualmente, solo el proveedor Kilo Gateway se puede configurar en la interfaz de ajustes. El soporte para configurar otros proveedores llegará pronto durante el período beta. Mientras tanto, puedes configurar proveedores usando la CLI o el archivo de configuración. Estamos comprometidos a mantener Kilo abierto, sin ataduras.",
"settings.providers.section.connected": "Proveedores conectados",
"settings.providers.connected.empty": "No hay proveedores conectados",
"settings.providers.section.popular": "Proveedores populares",
@@ -951,6 +953,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "Parámetro de muestreo nucleus (0-1)",
"settings.agentBehaviour.maxSteps.title": "Pasos máximos",
"settings.agentBehaviour.maxSteps.description": "Iteraciones máximas del agente",
"settings.agentBehaviour.discoveredSkills": "Habilidades descubiertas",
"settings.agentBehaviour.noSkillsFound":
"No se encontraron habilidades. Agregue rutas de carpetas o URLs abajo para hacer disponibles las habilidades.",
"settings.agentBehaviour.skillPaths": "Rutas de carpetas de habilidades",
"settings.agentBehaviour.skillUrls": "URLs de habilidades",
"settings.agentBehaviour.instructionFiles": "Archivos de instrucciones adicionales",
@@ -680,6 +680,8 @@ export const dict = {
"settings.providers.title": "Fournisseurs",
"settings.providers.description": "Les paramètres des fournisseurs seront configurables ici.",
"settings.providers.betaNotice":
"Actuellement, seul le fournisseur Kilo Gateway peut être configuré dans l'interface des paramètres. La prise en charge de la configuration d'autres fournisseurs sera bientôt disponible pendant la période bêta. En attendant, vous pouvez configurer les fournisseurs à l'aide de la CLI ou du fichier de configuration. Nous nous engageons à maintenir Kilo ouvert, sans enfermement propriétaire.",
"settings.providers.section.connected": "Fournisseurs connectés",
"settings.providers.connected.empty": "Aucun fournisseur connecté",
"settings.providers.section.popular": "Fournisseurs populaires",
@@ -961,6 +963,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "Paramètre d'échantillonnage nucleus (0-1)",
"settings.agentBehaviour.maxSteps.title": "Étapes max.",
"settings.agentBehaviour.maxSteps.description": "Itérations maximales de l'agent",
"settings.agentBehaviour.discoveredSkills": "Compétences découvertes",
"settings.agentBehaviour.noSkillsFound":
"Aucune compétence découverte. Ajoutez des chemins de dossiers ou des URLs ci-dessous pour rendre les compétences disponibles.",
"settings.agentBehaviour.skillPaths": "Chemins des dossiers de compétences",
"settings.agentBehaviour.skillUrls": "URLs de compétences",
"settings.agentBehaviour.instructionFiles": "Fichiers d'instructions supplémentaires",
@@ -669,6 +669,8 @@ export const dict = {
"settings.providers.title": "プロバイダー",
"settings.providers.description": "プロバイダー設定はここで構成できます。",
"settings.providers.betaNotice":
"現在、設定画面で設定できるのはKilo Gatewayプロバイダーのみです。他のプロバイダーの設定については、ベータ期間中にまもなく対応予定です。それまでの間は、CLIまたは設定ファイルを使用してプロバイダーを設定できます。私たちはKiloをオープンに保ち、ロックインのない状態を維持することをお約束します。",
"settings.providers.section.connected": "接続済みプロバイダー",
"settings.providers.connected.empty": "接続済みプロバイダーはありません",
"settings.providers.section.popular": "人気のプロバイダー",
@@ -944,6 +946,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "核サンプリングパラメータ(0-1)",
"settings.agentBehaviour.maxSteps.title": "最大ステップ数",
"settings.agentBehaviour.maxSteps.description": "最大エージェント反復回数",
"settings.agentBehaviour.discoveredSkills": "検出されたスキル",
"settings.agentBehaviour.noSkillsFound":
"スキルが見つかりません。スキルを利用可能にするには、以下にスキルフォルダパスまたはURLを追加してください。",
"settings.agentBehaviour.skillPaths": "スキルフォルダパス",
"settings.agentBehaviour.skillUrls": "スキルURL",
"settings.agentBehaviour.instructionFiles": "追加の指示ファイル",
@@ -670,6 +670,8 @@ export const dict = {
"settings.providers.title": "공급자",
"settings.providers.description": "공급자 설정은 여기서 구성할 수 있습니다.",
"settings.providers.betaNotice":
"현재 설정 인터페이스에서는 Kilo Gateway 제공자만 설정할 수 있습니다. 다른 제공자 설정에 대한 지원은 베타 기간 동안 곧 제공될 예정입니다. 그동안에는 CLI 또는 설정 파일을 사용하여 제공자를 설정할 수 있습니다. 우리는 종속(lock-in) 없이 Kilo를 개방적으로 유지하기 위해 최선을 다하고 있습니다.",
"settings.providers.section.connected": "연결된 공급자",
"settings.providers.connected.empty": "연결된 공급자 없음",
"settings.providers.section.popular": "인기 공급자",
@@ -941,6 +943,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "핵 샘플링 매개변수 (0-1)",
"settings.agentBehaviour.maxSteps.title": "최대 단계",
"settings.agentBehaviour.maxSteps.description": "최대 에이전트 반복 횟수",
"settings.agentBehaviour.discoveredSkills": "검색된 스킬",
"settings.agentBehaviour.noSkillsFound":
"스킬을 찾을 수 없습니다. 스킬을 사용하려면 아래에 스킬 폴더 경로 또는 URL을 추가하세요.",
"settings.agentBehaviour.skillPaths": "스킬 폴더 경로",
"settings.agentBehaviour.skillUrls": "스킬 URL",
"settings.agentBehaviour.instructionFiles": "추가 지시 파일",
@@ -673,6 +673,8 @@ export const dict = {
"settings.providers.title": "Leverandører",
"settings.providers.description": "Leverandørinnstillinger vil kunne konfigureres her.",
"settings.providers.betaNotice":
"For øyeblikket kan kun Kilo Gateway-leverandøren konfigureres i innstillingsgrensesnittet. Støtte for konfigurering av andre leverandører kommer snart i løpet av betaperioden. I mellomtiden kan du konfigurere leverandører via CLI eller konfigurasjonsfilen. Vi er forpliktet til å holde Kilo åpent, ingen lock-in.",
"settings.providers.section.connected": "Tilkoblede leverandører",
"settings.providers.connected.empty": "Ingen tilkoblede leverandører",
"settings.providers.section.popular": "Populære leverandører",
@@ -946,6 +948,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "Nucleus-samplingsparameter (0-1)",
"settings.agentBehaviour.maxSteps.title": "Maks. trinn",
"settings.agentBehaviour.maxSteps.description": "Maksimale agentiterasjoner",
"settings.agentBehaviour.discoveredSkills": "Oppdagede ferdigheter",
"settings.agentBehaviour.noSkillsFound":
"Ingen ferdigheter funnet. Legg til ferdighetsmappestier eller URLer nedenfor for å gjøre ferdigheter tilgjengelige.",
"settings.agentBehaviour.skillPaths": "Ferdighetsmappe-stier",
"settings.agentBehaviour.skillUrls": "Ferdighets-URLer",
"settings.agentBehaviour.instructionFiles": "Ekstra instruksjonsfiler",
@@ -673,6 +673,8 @@ export const dict = {
"settings.providers.title": "Dostawcy",
"settings.providers.description": "Ustawienia dostawców będą tutaj konfigurowalne.",
"settings.providers.betaNotice":
"Obecnie w interfejsie ustawień można skonfigurować tylko dostawcę Kilo Gateway. Obsługa konfiguracji innych dostawców pojawi się wkrótce w fazie beta. W międzyczasie możesz konfigurować dostawców za pomocą CLI lub pliku konfiguracyjnego. Zależy nam na zachowaniu otwartości Kilo, bez lock-inu.",
"settings.providers.section.connected": "Połączeni dostawcy",
"settings.providers.connected.empty": "Brak połączonych dostawców",
"settings.providers.section.popular": "Popularni dostawcy",
@@ -946,6 +948,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "Parametr próbkowania nucleus (0-1)",
"settings.agentBehaviour.maxSteps.title": "Maks. kroki",
"settings.agentBehaviour.maxSteps.description": "Maksymalna liczba iteracji agenta",
"settings.agentBehaviour.discoveredSkills": "Wykryte umiejętności",
"settings.agentBehaviour.noSkillsFound":
"Nie znaleziono umiejętności. Dodaj ścieżki folderów lub adresy URL poniżej, aby udostępnić umiejętności.",
"settings.agentBehaviour.skillPaths": "Ścieżki folderów umiejętności",
"settings.agentBehaviour.skillUrls": "Adresy URL umiejętności",
"settings.agentBehaviour.instructionFiles": "Dodatkowe pliki instrukcji",
@@ -676,6 +676,8 @@ export const dict = {
"settings.providers.title": "Провайдеры",
"settings.providers.description": "Настройки провайдеров будут доступны здесь.",
"settings.providers.betaNotice":
"В настоящее время в интерфейсе настроек можно настроить только провайдер Kilo Gateway. Поддержка настройки других провайдеров скоро появится в период бета-тестирования. А пока вы можете настраивать провайдеров с помощью CLI или конфигурационного файла. Мы стремимся сохранить Kilo открытым — без привязки к поставщикам.",
"settings.providers.section.connected": "Подключённые провайдеры",
"settings.providers.connected.empty": "Нет подключённых провайдеров",
"settings.providers.section.popular": "Популярные провайдеры",
@@ -949,6 +951,9 @@ export const dict = {
"settings.agentBehaviour.topP.description": "Параметр nucleus-сэмплирования (0-1)",
"settings.agentBehaviour.maxSteps.title": "Макс. шагов",
"settings.agentBehaviour.maxSteps.description": "Максимальное число итераций агента",
"settings.agentBehaviour.discoveredSkills": "Обнаруженные навыки",
"settings.agentBehaviour.noSkillsFound":
"Навыки не обнаружены. Добавьте пути к папкам навыков или URL-адреса ниже, чтобы сделать навыки доступными.",
"settings.agentBehaviour.skillPaths": "Пути папок навыков",
"settings.agentBehaviour.skillUrls": "URL навыков",
"settings.agentBehaviour.instructionFiles": "Дополнительные файлы инструкций",
@@ -667,6 +667,8 @@ export const dict = {
"settings.providers.title": "ผู้ให้บริการ",
"settings.providers.description": "การตั้งค่าผู้ให้บริการจะสามารถกำหนดค่าได้ที่นี่",
"settings.providers.betaNotice":
"ปัจจุบันสามารถตั้งค่าได้เฉพาะผู้ให้บริการ Kilo Gateway ในหน้าการตั้งค่าเท่านั้น การรองรับการตั้งค่าผู้ให้บริการรายอื่นจะพร้อมใช้งานในเร็วๆ นี้ในช่วงเบต้า ในระหว่างนี้คุณสามารถตั้งค่าผู้ให้บริการผ่าน CLI หรือไฟล์คอนฟิกได้ เรามุ่งมั่นที่จะรักษาให้ Kilo เปิดกว้างและไม่มีการผูกมัด",
"settings.providers.section.connected": "ผู้ให้บริการที่เชื่อมต่อ",
"settings.providers.connected.empty": "ไม่มีผู้ให้บริการที่เชื่อมต่อ",
"settings.providers.section.popular": "ผู้ให้บริการยอดนิยม",
@@ -937,6 +939,8 @@ export const dict = {
"settings.agentBehaviour.topP.description": "พารามิเตอร์ nucleus sampling (0-1)",
"settings.agentBehaviour.maxSteps.title": "ขั้นตอนสูงสุด",
"settings.agentBehaviour.maxSteps.description": "จำนวนรอบเอเจนต์สูงสุด",
"settings.agentBehaviour.discoveredSkills": "ทักษะที่ค้นพบ",
"settings.agentBehaviour.noSkillsFound": "ไม่พบทักษะ เพิ่มเส้นทางโฟลเดอร์หรือ URL ด้านล่างเพื่อทำให้ทักษะพร้อมใช้งาน",
"settings.agentBehaviour.skillPaths": "เส้นทางโฟลเดอร์ทักษะ",
"settings.agentBehaviour.skillUrls": "URL ทักษะ",
"settings.agentBehaviour.instructionFiles": "ไฟล์คำสั่งเพิ่มเติม",
@@ -660,6 +660,8 @@ export const dict = {
"settings.providers.title": "提供商",
"settings.providers.description": "提供商设置将在此处可配置。",
"settings.providers.betaNotice":
"目前只能在设置界面中配置 Kilo Gateway 提供商。在 Beta 测试期间即将支持配置其他提供商。在此期间,您可以使用 CLI 或配置文件来配置提供商。我们致力于保持 Kilo 开放,无锁定。",
"settings.providers.section.connected": "已连接的提供商",
"settings.providers.connected.empty": "没有已连接的提供商",
"settings.providers.section.popular": "热门提供商",
@@ -931,6 +933,8 @@ export const dict = {
"settings.agentBehaviour.topP.description": "核采样参数(0-1",
"settings.agentBehaviour.maxSteps.title": "最大步数",
"settings.agentBehaviour.maxSteps.description": "最大智能体迭代次数",
"settings.agentBehaviour.discoveredSkills": "已发现的技能",
"settings.agentBehaviour.noSkillsFound": "未发现任何技能。请在下方添加技能文件夹路径或 URL 以使技能可用。",
"settings.agentBehaviour.skillPaths": "技能文件夹路径",
"settings.agentBehaviour.skillUrls": "技能 URL",
"settings.agentBehaviour.instructionFiles": "附加指令文件",
@@ -662,6 +662,8 @@ export const dict = {
"settings.providers.title": "供應商",
"settings.providers.description": "可在此調整供應商設定。",
"settings.providers.betaNotice":
"目前在設定介面中僅能配置 Kilo Gateway 供應商。在測試期間,即將推出配置其他供應商的支援。在此期間,您可以使用 CLI 或設定檔來配置供應商。我們致力於保持 Kilo 開放,絕不綁定。",
"settings.providers.section.connected": "已連線的供應商",
"settings.providers.connected.empty": "沒有已連線的供應商",
"settings.providers.section.popular": "熱門供應商",
@@ -932,6 +934,8 @@ export const dict = {
"settings.agentBehaviour.topP.description": "核取樣參數(0-1",
"settings.agentBehaviour.maxSteps.title": "最大步數",
"settings.agentBehaviour.maxSteps.description": "最大 Agent 迭代次數",
"settings.agentBehaviour.discoveredSkills": "已發現的 Skill",
"settings.agentBehaviour.noSkillsFound": "未發現任何 Skill。請在下方新增 Skill 資料夾路徑或 URL 以使 Skill 可用。",
"settings.agentBehaviour.skillPaths": "Skill 資料夾路徑",
"settings.agentBehaviour.skillUrls": "Skill URL",
"settings.agentBehaviour.instructionFiles": "附加指令檔案",
@@ -1389,6 +1389,8 @@
============================================ */
[data-component="dock-prompt"][data-kind="question"] {
margin: 8px;
[data-slot="question-progress-nav"] {
display: inline-flex;
align-items: center;
@@ -164,6 +164,13 @@ export interface QuestionRequest {
}
}
// Skill info from CLI backend
export interface SkillInfo {
name: string
description: string
location: string
}
// Agent/mode info from CLI backend
export interface AgentInfo {
name: string
@@ -548,6 +555,11 @@ export interface AgentsLoadedMessage {
defaultAgent: string
}
export interface SkillsLoadedMessage {
type: "skillsLoaded"
skills: SkillInfo[]
}
export interface AutocompleteSettingsLoadedMessage {
type: "autocompleteSettingsLoaded"
settings: {
@@ -1004,6 +1016,7 @@ export type ExtensionMessage =
| NavigateMessage
| ProvidersLoadedMessage
| AgentsLoadedMessage
| SkillsLoadedMessage
| AutocompleteSettingsLoadedMessage
| ChatCompletionResultMessage
| FileSearchResultMessage
@@ -1181,6 +1194,10 @@ export interface RequestAgentsMessage {
type: "requestAgents"
}
export interface RequestSkillsMessage {
type: "requestSkills"
}
export interface SetLanguageRequest {
type: "setLanguage"
locale: string
@@ -1538,6 +1555,7 @@ export type WebviewMessage =
| RequestProvidersMessage
| CompactRequest
| RequestAgentsMessage
| RequestSkillsMessage
| SetLanguageRequest
| QuestionReplyRequest
| QuestionRejectRequest
+73 -6
View File
@@ -1,15 +1,82 @@
# js
# Kilo Code CLI
To install dependencies:
The AI coding agent built for the terminal. Generate code from natural language, automate tasks, and run terminal commands -- powered by 500+ AI models.
## Install
```bash
bun install
npm install -g @kilocode/cli
```
To run:
Or run directly with npx:
```bash
bun run index.ts
npx --package @kilocode/cli kilo
```
This project was created using `bun init` in bun v1.2.12. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
## Getting Started
Run `kilo` in any project directory to launch the interactive TUI:
```bash
kilo
```
Run a one-off task:
```bash
kilo run "add input validation to the signup form"
```
## Features
- **Code generation** -- describe what you want in natural language
- **Terminal commands** -- the agent can run shell commands on your behalf
- **500+ AI models** -- use models from OpenAI, Anthropic, Google, and more
- **MCP servers** -- extend agent capabilities with the Model Context Protocol
- **Multiple modes** -- Plan with Architect, code with Coder, debug with Debugger, or create your own
- **Sessions** -- resume previous conversations and export transcripts
- **API keys optional** -- bring your own keys or use Kilo credits
## Commands
| Command | Description |
| --------------------- | -------------------------- |
| `kilo` | Launch interactive TUI |
| `kilo run "<task>"` | Run a one-off task |
| `kilo auth` | Manage authentication |
| `kilo models` | List available models |
| `kilo mcp` | Manage MCP servers |
| `kilo session list` | List sessions |
| `kilo session delete` | Delete a session |
| `kilo export` | Export session transcripts |
Run `kilo --help` for the full list.
## Alternative Installation
### Homebrew (macOS/Linux)
```bash
brew install Kilo-Org/tap/kilo
```
### GitHub Releases
Download pre-built binaries from the [Releases page](https://github.com/Kilo-Org/kilocode/releases).
## Documentation
- [Docs](https://kilo.ai/docs)
- [Getting Started](https://kilo.ai/docs/getting-started)
## Links
- [GitHub](https://github.com/Kilo-Org/kilocode)
- [Discord](https://kilo.ai/discord)
- [VS Code Extension](https://kilo.ai/vscode-marketplace)
- [Website](https://kilo.ai)
## License
MIT
+1 -1
View File
@@ -1,6 +1,6 @@
{
"$schema": "https://json.schemastore.org/package.json",
"version": "7.0.44",
"version": "7.0.46",
"name": "@kilocode/cli",
"type": "module",
"license": "MIT",
+1
View File
@@ -20,6 +20,7 @@ await $`mkdir -p ./dist/${pkg.name}`
await $`cp -r ./bin ./dist/${pkg.name}/bin`
await $`cp ./script/postinstall.mjs ./dist/${pkg.name}/postinstall.mjs`
await Bun.file(`./dist/${pkg.name}/LICENSE`).write(await Bun.file("../../LICENSE").text())
await Bun.file(`./dist/${pkg.name}/README.md`).write(await Bun.file("./README.md").text()) // kilocode_change
await Bun.file(`./dist/${pkg.name}/package.json`).write(
JSON.stringify(
+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@kilocode/plugin",
"version": "7.0.44",
"version": "7.0.46",
"type": "module",
"license": "MIT",
"repository": {
+1 -1
View File
@@ -8,7 +8,7 @@
"exports": {
".": "./src/index.ts"
},
"version": "7.0.44",
"version": "7.0.46",
"dependencies": {},
"peerDependencies": {}
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@kilocode/sdk",
"version": "7.0.44",
"version": "7.0.46",
"type": "module",
"license": "MIT",
"repository": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/ui",
"version": "7.0.44",
"version": "7.0.46",
"type": "module",
"license": "MIT",
"exports": {
+15
View File
@@ -26,4 +26,19 @@
color: var(--icon-critical-active);
}
}
&[data-variant="warning"] {
background-color: rgba(245, 158, 11, 0.1);
border: 1px solid rgba(245, 158, 11, 0.45);
color: color-mix(in oklab, var(--text-warning, #d97706) 85%, var(--text-base, #ccc));
padding: 12px 14px;
/* text-12-regular */
font-family: var(--font-family-sans);
font-size: var(--font-size-small);
font-style: normal;
font-weight: var(--font-weight-regular);
line-height: var(--line-height-large); /* 166.667% */
letter-spacing: var(--letter-spacing-normal);
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@opencode-ai/util",
"version": "7.0.44",
"version": "7.0.46",
"private": true,
"type": "module",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@kilocode/upstream-merge",
"version": "7.0.44",
"version": "7.0.46",
"private": true,
"type": "module",
"description": "Scripts for automating upstream opencode merges into Kilo",
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "opencode",
"displayName": "opencode",
"description": "opencode for VS Code",
"version": "7.0.44",
"version": "7.0.46",
"publisher": "sst-dev",
"repository": {
"type": "git",