mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-08-29 03:44:06 +08:00
Merge branch 'main' into kevinvandijk/kilo-opencode-v1.2.16
This commit is contained in:
@@ -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
@@ -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,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/app",
|
||||
"version": "7.0.44",
|
||||
"version": "7.0.46",
|
||||
"description": "",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@opencode-ai/desktop",
|
||||
"private": true,
|
||||
"version": "7.0.44",
|
||||
"version": "7.0.46",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -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,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,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,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,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,6 +1,6 @@
|
||||
{
|
||||
"name": "@kilocode/kilo-ui",
|
||||
"version": "7.0.44",
|
||||
"version": "7.0.46",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"exports": {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2ff01b76764db6c3d7cc014ddc6e3bfd7950383c5d224ae248a211b5c886be60
|
||||
size 9835
|
||||
oid sha256:670c7b9ad645c3d3fabac7916d3be2e1c08f9b4dd1444f6a5c444959ef9c28df
|
||||
size 9194
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:27920c6e87bb1fe8f2869757f2d22eeb556bf16c032912bf765115b801aada3b
|
||||
size 2198
|
||||
oid sha256:e1b226702ffdb6f676509336e5d56240c9a099098adf504fc3f498030907b14e
|
||||
size 1610
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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")
|
||||
})
|
||||
})
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b8b1ba56d6632bfcbd0e4c5b0c1514cd80832339dde0c86568572ada656ca33d
|
||||
size 24134
|
||||
oid sha256:1f95a30590881f0212823027fe7494390e298d3532fb3e1d488ad7e7a2012599
|
||||
size 23362
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:278855516fe11d95b9de942d9690531c114b0a0b9ac0239c2ef31f82b420bd7e
|
||||
size 32467
|
||||
oid sha256:45b84883b6300049d99e09e1be4aa834a1a5eac15dac5b4ce5a1e09d16b72a8b
|
||||
size 31636
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f6193ba79b4d5dda29bf39d1127dacd7e332755d1f6f42dd67ff667088975659
|
||||
size 35678
|
||||
oid sha256:8c4c2ba388cdfc687b14343aa672b22badd1164b2dbab6e99a99c983b0179f13
|
||||
size 34924
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:83076ce468f046d5a884d8abf38189718641803cc966cae255e75e238894ae72
|
||||
size 30673
|
||||
oid sha256:9d5c9422fae8406813e46e5f088ee5a437a601b5cd96a0babcf28c5fffdd758d
|
||||
size 30554
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:353cb9b38c19e5d3bf1c7c6e84a29da3b3365211c425703d7fcdb7e7a2153c74
|
||||
size 22824
|
||||
oid sha256:b7fe365d1a0ffdd713d3146c66112fad2207c2030132ab117543a6a430197aca
|
||||
size 36247
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
@@ -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,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",
|
||||
|
||||
@@ -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,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": {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"exports": {
|
||||
".": "./src/index.ts"
|
||||
},
|
||||
"version": "7.0.44",
|
||||
"version": "7.0.46",
|
||||
"dependencies": {},
|
||||
"peerDependencies": {}
|
||||
}
|
||||
|
||||
@@ -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,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/ui",
|
||||
"version": "7.0.44",
|
||||
"version": "7.0.46",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"exports": {
|
||||
|
||||
@@ -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,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/util",
|
||||
"version": "7.0.44",
|
||||
"version": "7.0.46",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user