mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-09-19 10:02:04 +08:00
Merge branch 'dev' into kevinvandijk/kilo-opencode-v1.1.59
This commit is contained in:
Vendored
+3
-1
@@ -10,7 +10,8 @@
|
||||
"type": "extensionHost",
|
||||
"request": "launch",
|
||||
"args": ["--disable-extensions", "--extensionDevelopmentPath=${workspaceFolder}/packages/kilo-vscode"],
|
||||
"outFiles": ["${workspaceFolder}/packages/kilo-vscode/dist/**/*.js"]
|
||||
"outFiles": ["${workspaceFolder}/packages/kilo-vscode/dist/**/*.js"],
|
||||
"preLaunchTask": "VSCode - Compile"
|
||||
},
|
||||
{
|
||||
"name": "VSCode - Run Extension (Local Backend)",
|
||||
@@ -18,6 +19,7 @@
|
||||
"request": "launch",
|
||||
"args": ["--disable-extensions", "--extensionDevelopmentPath=${workspaceFolder}/packages/kilo-vscode"],
|
||||
"outFiles": ["${workspaceFolder}/packages/kilo-vscode/dist/**/*.js"],
|
||||
"preLaunchTask": "VSCode - Compile",
|
||||
"env": {
|
||||
"KILO_API_URL": "http://localhost:3000"
|
||||
}
|
||||
|
||||
Vendored
+14
@@ -65,6 +65,20 @@
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "VSCode - Compile",
|
||||
"type": "shell",
|
||||
"command": "bun",
|
||||
"args": ["run", "compile"],
|
||||
"group": "build",
|
||||
"presentation": {
|
||||
"reveal": "silent"
|
||||
},
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/packages/kilo-vscode"
|
||||
},
|
||||
"problemMatcher": ["$tsc", "$eslint-stylish"]
|
||||
},
|
||||
{
|
||||
"label": "VSCode - Tests",
|
||||
"type": "shell",
|
||||
|
||||
@@ -7,7 +7,12 @@ import type { QuestionAnswer, QuestionRequest } from "@kilocode/sdk/v2"
|
||||
import { useLanguage } from "@/context/language"
|
||||
import { useSDK } from "@/context/sdk"
|
||||
|
||||
export const QuestionDock: Component<{ request: QuestionRequest }> = (props) => {
|
||||
// kilocode_change start - add onModeAction prop for mode-switching support
|
||||
export const QuestionDock: Component<{
|
||||
request: QuestionRequest
|
||||
onModeAction?: (input: { mode: string; text: string; description?: string }) => void
|
||||
}> = (props) => {
|
||||
// kilocode_change end
|
||||
const sdk = useSDK()
|
||||
const language = useLanguage()
|
||||
|
||||
@@ -39,13 +44,10 @@ export const QuestionDock: Component<{ request: QuestionRequest }> = (props) =>
|
||||
}
|
||||
|
||||
const reply = (answers: QuestionAnswer[]) => {
|
||||
if (store.sending) return
|
||||
if (store.sending) return undefined
|
||||
|
||||
setStore("sending", true)
|
||||
sdk.client.question
|
||||
.reply({ requestID: props.request.id, answers })
|
||||
.catch(fail)
|
||||
.finally(() => setStore("sending", false))
|
||||
return sdk.client.question.reply({ requestID: props.request.id, answers }).finally(() => setStore("sending", false))
|
||||
}
|
||||
|
||||
const reject = () => {
|
||||
@@ -59,10 +61,15 @@ export const QuestionDock: Component<{ request: QuestionRequest }> = (props) =>
|
||||
}
|
||||
|
||||
const submit = () => {
|
||||
reply(questions().map((_, i) => store.answers[i] ?? []))
|
||||
reply(questions().map((_, i) => store.answers[i] ?? []))?.catch(fail) // kilocode_change
|
||||
}
|
||||
|
||||
const pick = (answer: string, custom: boolean = false) => {
|
||||
// kilocode_change start - find option to check for mode
|
||||
// Custom answers won't match a predefined option, so mode switching is intentionally skipped
|
||||
const option = options().find((o) => o.label === answer)
|
||||
// kilocode_change end
|
||||
|
||||
const answers = [...store.answers]
|
||||
answers[store.tab] = [answer]
|
||||
setStore("answers", answers)
|
||||
@@ -74,7 +81,17 @@ export const QuestionDock: Component<{ request: QuestionRequest }> = (props) =>
|
||||
}
|
||||
|
||||
if (single()) {
|
||||
reply([[answer]])
|
||||
// kilocode_change start - trigger mode switch after question reply completes
|
||||
const pending = reply([[answer]])
|
||||
if (option?.mode && props.onModeAction) {
|
||||
const action = props.onModeAction
|
||||
const mode = option.mode
|
||||
const description = option.description
|
||||
pending?.then(() => action({ mode, text: answer, description }), fail).catch(fail)
|
||||
} else {
|
||||
pending?.catch(fail)
|
||||
}
|
||||
// kilocode_change end
|
||||
return
|
||||
}
|
||||
|
||||
@@ -194,6 +211,13 @@ export const QuestionDock: Component<{ request: QuestionRequest }> = (props) =>
|
||||
<Show when={opt.description}>
|
||||
<span data-slot="option-description">{opt.description}</span>
|
||||
</Show>
|
||||
{/* kilocode_change start - show mode badge */}
|
||||
<Show when={opt.mode}>
|
||||
<span data-slot="option-mode" class="text-text-weakest text-11-regular">
|
||||
→ {opt.mode}
|
||||
</span>
|
||||
</Show>
|
||||
{/* kilocode_change end */}
|
||||
<Show when={picked()}>
|
||||
<Icon name="check-small" size="normal" />
|
||||
</Show>
|
||||
|
||||
@@ -504,6 +504,11 @@ export const dict = {
|
||||
|
||||
"session.context.addToContext": "Add {{selection}} to context",
|
||||
|
||||
"session.modeSwitch.switching": "Switching to {{mode}} mode…",
|
||||
"session.modeSwitch.waiting": "Waiting for current task to complete",
|
||||
"session.modeSwitch.notAvailable": "Agent not available",
|
||||
"session.modeSwitch.fallback": '"{{requested}}" not found, using "{{actual}}"',
|
||||
|
||||
"session.new.worktree.main": "Main branch",
|
||||
"session.new.worktree.mainWithBranch": "Main branch ({{branch}})",
|
||||
"session.new.worktree.create": "Create new worktree",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { For, onCleanup, Show, Match, Switch, createMemo, createEffect, on } from "solid-js"
|
||||
import { For, onCleanup, Show, Match, Switch, createMemo, createEffect, createRoot, on } from "solid-js"
|
||||
import { createMediaQuery } from "@solid-primitives/media"
|
||||
import { createResizeObserver } from "@solid-primitives/resize-observer"
|
||||
import { Dynamic } from "solid-js/web"
|
||||
@@ -39,6 +39,7 @@ import { usePermission } from "@/context/permission"
|
||||
import { showToast } from "@opencode-ai/ui/toast"
|
||||
import { SessionHeader, SessionContextTab, SortableTab, FileVisual, NewSessionView } from "@/components/session"
|
||||
import { navMark, navParams } from "@/utils/perf"
|
||||
import { Identifier } from "@/utils/id" // kilocode_change
|
||||
import { same } from "@/utils/same"
|
||||
import { createOpenReviewFile, focusTerminalById, getTabReorderIndex } from "@/pages/session/helpers"
|
||||
import { createScrollSpy } from "@/pages/session/scroll-spy"
|
||||
@@ -150,6 +151,106 @@ export default function Page() {
|
||||
})
|
||||
.finally(() => setUi("responding", false))
|
||||
}
|
||||
|
||||
// kilocode_change start - handle mode switch from question options
|
||||
let modeActionAbort: AbortController | undefined
|
||||
|
||||
const waitForIdle = (sessionID: string, signal: AbortSignal) =>
|
||||
new Promise<void>((resolve, reject) => {
|
||||
let settled = false
|
||||
const ref: { dispose?: () => void } = {}
|
||||
const settle = (fn: () => void) => {
|
||||
if (settled) return
|
||||
settled = true
|
||||
clearTimeout(timeout)
|
||||
ref.dispose?.()
|
||||
fn()
|
||||
}
|
||||
const timeout = setTimeout(() => {
|
||||
settle(() => reject(new Error("Timed out waiting for session idle")))
|
||||
}, 30_000)
|
||||
|
||||
createRoot((dispose) => {
|
||||
ref.dispose = dispose
|
||||
signal.addEventListener("abort", () => settle(() => reject(new Error("Cancelled"))), { once: true })
|
||||
createEffect(() => {
|
||||
const status = sync.data.session_status[sessionID]
|
||||
if (!status || status.type !== "idle") return
|
||||
settle(() => resolve())
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
onCleanup(() => modeActionAbort?.abort())
|
||||
|
||||
const handleModeAction = async (input: { mode: string; text: string; description?: string }) => {
|
||||
const sessionID = params.id
|
||||
if (!sessionID) return
|
||||
|
||||
modeActionAbort?.abort()
|
||||
const controller = new AbortController()
|
||||
modeActionAbort = controller
|
||||
|
||||
const toastTimer = setTimeout(() => {
|
||||
showToast({
|
||||
title: language.t("session.modeSwitch.switching", { mode: input.mode }),
|
||||
description: language.t("session.modeSwitch.waiting"),
|
||||
})
|
||||
}, 500)
|
||||
|
||||
try {
|
||||
// Allow one microtask for session status to reflect the reply before checking idle
|
||||
await new Promise((r) => setTimeout(r, 0))
|
||||
await waitForIdle(sessionID, controller.signal)
|
||||
} catch (err: unknown) {
|
||||
clearTimeout(toastTimer)
|
||||
if (controller.signal.aborted) return
|
||||
const message = err instanceof Error ? err.message : String(err)
|
||||
showToast({ title: language.t("common.requestFailed"), description: message })
|
||||
return
|
||||
}
|
||||
|
||||
clearTimeout(toastTimer)
|
||||
|
||||
if (controller.signal.aborted) return
|
||||
|
||||
local.agent.set(input.mode)
|
||||
|
||||
const agent = local.agent.current()
|
||||
if (!agent) return
|
||||
|
||||
if (agent.name !== input.mode) {
|
||||
showToast({
|
||||
title: language.t("session.modeSwitch.notAvailable"),
|
||||
description: language.t("session.modeSwitch.fallback", { requested: input.mode, actual: agent.name }),
|
||||
})
|
||||
}
|
||||
|
||||
const model = local.model.current()
|
||||
if (!model) return
|
||||
|
||||
const variant = local.model.variant.current()
|
||||
const messageID = Identifier.ascending("message")
|
||||
|
||||
sdk.client.session
|
||||
.prompt({
|
||||
sessionID,
|
||||
agent: agent.name,
|
||||
model: {
|
||||
modelID: model.id,
|
||||
providerID: model.provider.id,
|
||||
},
|
||||
messageID,
|
||||
parts: [{ type: "text", text: input.description ?? input.text }],
|
||||
variant,
|
||||
})
|
||||
.catch((err: unknown) => {
|
||||
const message = err instanceof Error ? err.message : String(err)
|
||||
showToast({ title: language.t("common.requestFailed"), description: message })
|
||||
})
|
||||
}
|
||||
// kilocode_change end
|
||||
|
||||
const sessionKey = createMemo(() => `${params.dir}${params.id ? "/" + params.id : ""}`)
|
||||
const workspaceKey = createMemo(() => params.dir ?? "")
|
||||
const workspaceTabs = createMemo(() => layout.tabs(workspaceKey))
|
||||
@@ -1697,6 +1798,7 @@ export default function Page() {
|
||||
resumeScroll()
|
||||
}}
|
||||
setPromptDockRef={(el) => (promptDock = el)}
|
||||
onModeAction={handleModeAction}
|
||||
/>
|
||||
|
||||
<Show when={desktopReviewOpen()}>
|
||||
|
||||
@@ -22,6 +22,7 @@ export function SessionPromptDock(props: {
|
||||
onNewSessionWorktreeReset: () => void
|
||||
onSubmit: () => void
|
||||
setPromptDockRef: (el: HTMLDivElement) => void
|
||||
onModeAction?: (input: { mode: string; text: string; description?: string }) => void // kilocode_change
|
||||
}) {
|
||||
return (
|
||||
<div
|
||||
@@ -48,7 +49,7 @@ export function SessionPromptDock(props: {
|
||||
subtitle,
|
||||
}}
|
||||
/>
|
||||
<QuestionDock request={questionDockRequest(req)} />
|
||||
<QuestionDock request={questionDockRequest(req)} onModeAction={props.onModeAction} />
|
||||
</div>
|
||||
)
|
||||
}}
|
||||
|
||||
@@ -50,7 +50,6 @@ export const HEADER_TASKID = "X-KILOCODE-TASKID"
|
||||
export const HEADER_PROJECTID = "X-KILOCODE-PROJECTID"
|
||||
export const HEADER_TESTER = "X-KILOCODE-TESTER"
|
||||
export const HEADER_EDITORNAME = "X-KILOCODE-EDITORNAME"
|
||||
export const HEADER_MACHINEID = "X-KILOCODE-MACHINEID"
|
||||
|
||||
/** Default editor name value */
|
||||
export const DEFAULT_EDITOR_NAME = "Kilo CLI"
|
||||
|
||||
@@ -4,7 +4,6 @@ import {
|
||||
HEADER_PROJECTID,
|
||||
HEADER_TESTER,
|
||||
HEADER_EDITORNAME,
|
||||
HEADER_MACHINEID,
|
||||
USER_AGENT,
|
||||
CONTENT_TYPE,
|
||||
DEFAULT_EDITOR_NAME,
|
||||
@@ -21,7 +20,6 @@ export const X_KILOCODE_TASKID = HEADER_TASKID
|
||||
export const X_KILOCODE_PROJECTID = HEADER_PROJECTID
|
||||
export const X_KILOCODE_TESTER = HEADER_TESTER
|
||||
export const X_KILOCODE_EDITORNAME = HEADER_EDITORNAME
|
||||
export const X_KILOCODE_MACHINEID = HEADER_MACHINEID
|
||||
|
||||
/**
|
||||
* Default headers for KiloCode requests
|
||||
@@ -47,7 +45,6 @@ export function buildKiloHeaders(
|
||||
options?: {
|
||||
kilocodeOrganizationId?: string
|
||||
kilocodeTesterWarningsDisabledUntil?: number
|
||||
machineId?: string
|
||||
},
|
||||
): Record<string, string> {
|
||||
const headers: Record<string, string> = {
|
||||
@@ -71,9 +68,5 @@ export function buildKiloHeaders(
|
||||
headers[X_KILOCODE_TESTER] = TESTER_SUPPRESS_VALUE
|
||||
}
|
||||
|
||||
if (options?.machineId) {
|
||||
headers[X_KILOCODE_MACHINEID] = options.machineId
|
||||
}
|
||||
|
||||
return headers
|
||||
}
|
||||
|
||||
@@ -89,7 +89,6 @@ export {
|
||||
HEADER_PROJECTID,
|
||||
HEADER_TESTER,
|
||||
HEADER_EDITORNAME,
|
||||
HEADER_MACHINEID,
|
||||
DEFAULT_EDITOR_NAME,
|
||||
ENV_EDITOR_NAME,
|
||||
TESTER_SUPPRESS_VALUE,
|
||||
|
||||
@@ -28,31 +28,45 @@
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: rgba(121, 121, 121, 0.4);
|
||||
border-radius: 0;
|
||||
border-radius: 5px;
|
||||
border: 3px solid transparent !important;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: rgba(100, 100, 100, 0.7);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
::-webkit-scrollbar-corner {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-corner {
|
||||
background: transparent;
|
||||
::-webkit-scrollbar-button {
|
||||
display: block;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/* ===== VS Code extension: inherit native styling ===== */
|
||||
|
||||
html[data-theme="kilo-vscode"] {
|
||||
--font-family-sans: var(--vscode-font-family);
|
||||
--font-family-mono: var(--vscode-editor-font-family, Menlo, Monaco, "Courier New", monospace);
|
||||
font-family: var(--vscode-font-family);
|
||||
font-size: var(--vscode-font-size);
|
||||
font-weight: var(--vscode-font-weight);
|
||||
|
||||
::-webkit-scrollbar-button {
|
||||
display: block;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--vscode-scrollbarSlider-background);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ html[data-theme="kilo-vscode"] {
|
||||
--surface-float-base: var(--vscode-editorWidget-background, var(--vscode-menu-background));
|
||||
--surface-float-base-hover: var(--vscode-editorHoverWidget-statusBarBackground, var(--vscode-menu-background));
|
||||
|
||||
--surface-weak: var(--vscode-list-hoverBackground);
|
||||
--surface-weak: var(--vscode-input-background, var(--vscode-list-hoverBackground));
|
||||
--surface-weaker: var(--vscode-editor-inactiveSelectionBackground);
|
||||
--surface-strong: var(--vscode-editorWidget-background);
|
||||
|
||||
|
||||
@@ -103,6 +103,10 @@ New webview features must use **`@kilocode/kilo-ui`** components instead of raw
|
||||
|
||||
While the old extension coexists, runtime labels append `(NEW)` — controlled by the flag in [`constants.ts`](src/constants.ts). Static labels in `package.json` must be updated separately. Remove this convention once the old extension is retired.
|
||||
|
||||
## Agent Manager
|
||||
|
||||
Opens as an editor tab (not the sidebar) and lets users run multiple independent AI sessions in parallel. It has a left sidebar listing active sessions and a right panel showing the chat UI for the selected one. Each session is a standard `kilo serve` session. The extension side uses the same `KiloProvider` wiring as the sidebar; the webview side reuses the same provider chain and `ChatView` component.
|
||||
|
||||
## Kilocode Change Markers
|
||||
|
||||
This package is entirely Kilo-specific — `kilocode_change` markers are NOT needed in any files under `packages/kilo-vscode/`. The markers are only necessary when modifying shared upstream opencode files.
|
||||
|
||||
@@ -80,6 +80,30 @@
|
||||
"command": "kilo-code.new.autocomplete.generateSuggestions",
|
||||
"title": "Generate Suggested Edits",
|
||||
"category": "Kilo Code"
|
||||
},
|
||||
{
|
||||
"command": "kilo-code.new.agentManager.previousSession",
|
||||
"title": "Agent Manager: Previous Session",
|
||||
"category": "Kilo Code"
|
||||
},
|
||||
{
|
||||
"command": "kilo-code.new.agentManager.nextSession",
|
||||
"title": "Agent Manager: Next Session",
|
||||
"category": "Kilo Code"
|
||||
}
|
||||
],
|
||||
"keybindings": [
|
||||
{
|
||||
"command": "kilo-code.new.agentManager.previousSession",
|
||||
"key": "ctrl+up",
|
||||
"mac": "cmd+up",
|
||||
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
|
||||
},
|
||||
{
|
||||
"command": "kilo-code.new.agentManager.nextSession",
|
||||
"key": "ctrl+down",
|
||||
"mac": "cmd+down",
|
||||
"when": "activeWebviewPanelId == 'kilo-code.new.AgentManagerPanel'"
|
||||
}
|
||||
],
|
||||
"menus": {
|
||||
|
||||
@@ -294,6 +294,9 @@ export class KiloProvider implements vscode.WebviewViewProvider {
|
||||
case "requestNotificationSettings":
|
||||
this.sendNotificationSettings()
|
||||
break
|
||||
case "resetAllSettings":
|
||||
await this.handleResetAllSettings()
|
||||
break
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -1073,6 +1076,43 @@ export class KiloProvider implements vscode.WebviewViewProvider {
|
||||
await config.update(leaf, value, vscode.ConfigurationTarget.Global)
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset all "kilo-code.new.*" extension settings to their defaults by reading
|
||||
* contributes.configuration from the extension's package.json at runtime.
|
||||
* Only resets settings under the "kilo-code.new." namespace to avoid touching
|
||||
* settings from the previous version of the extension which shares the same
|
||||
* extension ID and "kilo-code.*" namespace.
|
||||
*/
|
||||
// kilocode_change start
|
||||
private async handleResetAllSettings(): Promise<void> {
|
||||
const confirmed = await vscode.window.showWarningMessage(
|
||||
"Reset all Kilo Code extension settings to defaults?",
|
||||
{ modal: true },
|
||||
"Reset",
|
||||
)
|
||||
if (confirmed !== "Reset") return
|
||||
|
||||
const prefix = "kilo-code.new."
|
||||
const ext = vscode.extensions.getExtension("kilocode.kilo-code")
|
||||
const properties = ext?.packageJSON?.contributes?.configuration?.properties as Record<string, unknown> | undefined
|
||||
if (!properties) return
|
||||
|
||||
for (const key of Object.keys(properties)) {
|
||||
if (!key.startsWith(prefix)) continue
|
||||
const parts = key.split(".")
|
||||
const section = parts.slice(0, -1).join(".")
|
||||
const leaf = parts[parts.length - 1]
|
||||
const config = vscode.workspace.getConfiguration(section)
|
||||
await config.update(leaf, undefined, vscode.ConfigurationTarget.Global)
|
||||
}
|
||||
|
||||
// Re-send all settings to the webview so the UI reflects the reset
|
||||
this.sendAutocompleteSettings()
|
||||
this.sendBrowserSettings()
|
||||
this.sendNotificationSettings()
|
||||
}
|
||||
// kilocode_change end
|
||||
|
||||
/**
|
||||
* Read the current browser automation settings and push them to the webview.
|
||||
*/
|
||||
|
||||
@@ -82,6 +82,10 @@ export class AgentManagerProvider implements vscode.Disposable {
|
||||
})
|
||||
}
|
||||
|
||||
public postMessage(message: unknown): void {
|
||||
this.panel?.webview.postMessage(message)
|
||||
}
|
||||
|
||||
public dispose(): void {
|
||||
this.provider?.dispose()
|
||||
this.panel?.dispose()
|
||||
|
||||
@@ -61,6 +61,12 @@ export function activate(context: vscode.ExtensionContext) {
|
||||
vscode.commands.registerCommand("kilo-code.new.openInTab", () => {
|
||||
return openKiloInNewTab(context, connectionService)
|
||||
}),
|
||||
vscode.commands.registerCommand("kilo-code.new.agentManager.previousSession", () => {
|
||||
agentManagerProvider.postMessage({ type: "action", action: "sessionPrevious" })
|
||||
}),
|
||||
vscode.commands.registerCommand("kilo-code.new.agentManager.nextSession", () => {
|
||||
agentManagerProvider.postMessage({ type: "action", action: "sessionNext" })
|
||||
}),
|
||||
)
|
||||
|
||||
// Register autocomplete provider
|
||||
|
||||
@@ -39,6 +39,14 @@ export function buildWebviewHtml(
|
||||
<link rel="stylesheet" href="${opts.styleUri}">
|
||||
<title>${opts.title}</title>
|
||||
<style>
|
||||
html {
|
||||
scrollbar-color: auto;
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
border: 3px solid transparent !important;
|
||||
background-clip: padding-box !important;
|
||||
}
|
||||
}
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
/**
|
||||
* Architecture tests: Agent Manager
|
||||
*
|
||||
* The agent manager runs in the same webview context as other UI.
|
||||
* All its CSS classes must be prefixed with "am-" to avoid conflicts.
|
||||
* These tests also verify consistency between CSS definitions and TSX usage.
|
||||
*/
|
||||
|
||||
import { describe, it, expect } from "bun:test"
|
||||
import fs from "node:fs"
|
||||
import path from "node:path"
|
||||
|
||||
const ROOT = path.resolve(import.meta.dir, "../..")
|
||||
const CSS_FILE = path.join(ROOT, "webview-ui/agent-manager/agent-manager.css")
|
||||
const TSX_FILE = path.join(ROOT, "webview-ui/agent-manager/AgentManagerApp.tsx")
|
||||
|
||||
describe("Agent Manager CSS Prefix", () => {
|
||||
it("all class selectors should use am- prefix", () => {
|
||||
const css = fs.readFileSync(CSS_FILE, "utf-8")
|
||||
const matches = [...css.matchAll(/\.([a-z][a-z0-9-]*)/gi)]
|
||||
const names = [...new Set(matches.map((m) => m[1]))]
|
||||
|
||||
const invalid = names.filter((n) => !n!.startsWith("am-"))
|
||||
|
||||
expect(invalid, `Classes missing "am-" prefix: ${invalid.join(", ")}`).toEqual([])
|
||||
})
|
||||
|
||||
it("all CSS custom properties should use am- prefix", () => {
|
||||
const css = fs.readFileSync(CSS_FILE, "utf-8")
|
||||
const matches = [...css.matchAll(/--([a-z][a-z0-9-]*)\s*:/gi)]
|
||||
const names = [...new Set(matches.map((m) => m[1]))]
|
||||
|
||||
// Allow kilo-ui design tokens and vscode theme variables used as fallbacks
|
||||
const allowed = ["am-", "vscode-", "surface-", "text-", "border-"]
|
||||
const invalid = names.filter((n) => !allowed.some((p) => n!.startsWith(p)))
|
||||
|
||||
expect(invalid, `CSS properties missing allowed prefix: ${invalid.join(", ")}`).toEqual([])
|
||||
})
|
||||
|
||||
it("all @keyframes should use am- prefix", () => {
|
||||
const css = fs.readFileSync(CSS_FILE, "utf-8")
|
||||
const matches = [...css.matchAll(/@keyframes\s+([a-z][a-z0-9-]*)/gi)]
|
||||
const names = matches.map((m) => m[1])
|
||||
|
||||
const invalid = names.filter((n) => !n!.startsWith("am-"))
|
||||
|
||||
expect(invalid, `Keyframes missing "am-" prefix: ${invalid.join(", ")}`).toEqual([])
|
||||
})
|
||||
})
|
||||
|
||||
describe("Agent Manager CSS/TSX Consistency", () => {
|
||||
it("all classes used in TSX should be defined in CSS", () => {
|
||||
const css = fs.readFileSync(CSS_FILE, "utf-8")
|
||||
const tsx = fs.readFileSync(TSX_FILE, "utf-8")
|
||||
|
||||
// Extract am- classes defined in CSS
|
||||
const cssMatches = [...css.matchAll(/\.([a-z][a-z0-9-]*)/gi)]
|
||||
const defined = new Set(cssMatches.map((m) => m[1]))
|
||||
|
||||
// Extract am- classes referenced in TSX (class="am-..." or `am-...`)
|
||||
const tsxMatches = [...tsx.matchAll(/\bam-[a-z0-9-]+/g)]
|
||||
const used = [...new Set(tsxMatches.map((m) => m[0]))]
|
||||
|
||||
const missing = used.filter((c) => !defined.has(c))
|
||||
|
||||
expect(missing, `Classes used in TSX but not defined in CSS: ${missing.join(", ")}`).toEqual([])
|
||||
})
|
||||
|
||||
it("all am- classes defined in CSS should be used in TSX", () => {
|
||||
const css = fs.readFileSync(CSS_FILE, "utf-8")
|
||||
const tsx = fs.readFileSync(TSX_FILE, "utf-8")
|
||||
|
||||
// Extract am- classes defined in CSS
|
||||
const cssMatches = [...css.matchAll(/\.([a-z][a-z0-9-]*)/gi)]
|
||||
const defined = [...new Set(cssMatches.map((m) => m[1]!).filter((n) => n.startsWith("am-")))]
|
||||
|
||||
const unused = defined.filter((c) => !tsx.includes(c!))
|
||||
|
||||
expect(unused, `Classes defined in CSS but not used in TSX: ${unused.join(", ")}`).toEqual([])
|
||||
})
|
||||
})
|
||||
@@ -1,6 +1,7 @@
|
||||
// Agent Manager root component
|
||||
|
||||
import { Component, For } from "solid-js"
|
||||
import { Component, For, createMemo, onMount, onCleanup } from "solid-js"
|
||||
import type { ExtensionMessage } from "../src/types/messages"
|
||||
import { ThemeProvider } from "@kilocode/kilo-ui/theme"
|
||||
import { DialogProvider } from "@kilocode/kilo-ui/context/dialog"
|
||||
import { MarkedProvider } from "@kilocode/kilo-ui/context/marked"
|
||||
@@ -22,6 +23,30 @@ import "./agent-manager.css"
|
||||
|
||||
const AgentManagerContent: Component = () => {
|
||||
const session = useSession()
|
||||
const sorted = createMemo(() =>
|
||||
[...session.sessions()].sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()),
|
||||
)
|
||||
|
||||
const navigate = (direction: "up" | "down") => {
|
||||
const list = sorted()
|
||||
if (list.length === 0) return
|
||||
const current = session.currentSessionID()
|
||||
const idx = current ? list.findIndex((s) => s.id === current) : -1
|
||||
const next = direction === "up" ? idx - 1 : idx + 1
|
||||
if (next < 0 || next >= list.length) return
|
||||
session.selectSession(list[next]!.id)
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
const handler = (event: MessageEvent) => {
|
||||
const msg = event.data as ExtensionMessage
|
||||
if (msg?.type !== "action") return
|
||||
if (msg.action === "sessionPrevious") navigate("up")
|
||||
else if (msg.action === "sessionNext") navigate("down")
|
||||
}
|
||||
window.addEventListener("message", handler)
|
||||
onCleanup(() => window.removeEventListener("message", handler))
|
||||
})
|
||||
|
||||
return (
|
||||
<div class="am-layout">
|
||||
@@ -32,7 +57,7 @@ const AgentManagerContent: Component = () => {
|
||||
</Button>
|
||||
<div class="am-sessions-header">SESSIONS</div>
|
||||
<div class="am-list">
|
||||
<For each={session.sessions()}>
|
||||
<For each={sorted()}>
|
||||
{(s) => (
|
||||
<button
|
||||
class={`am-item ${s.id === session.currentSessionID() ? "am-item-active" : ""}`}
|
||||
|
||||
@@ -55,7 +55,7 @@ const ProfileView: Component<ProfileViewProps> = (props) => {
|
||||
const orgs = props.profileData?.profile.organizations ?? []
|
||||
if (orgs.length === 0) return []
|
||||
return [
|
||||
{ value: PERSONAL, label: "Personal Account" },
|
||||
{ value: PERSONAL, label: language.t("profile.personalAccount") },
|
||||
...orgs.map((org) => ({ value: org.id, label: org.name, description: org.role })),
|
||||
]
|
||||
})
|
||||
|
||||
@@ -2,32 +2,46 @@
|
||||
* ModeSwitcher component
|
||||
* Popover-based selector for choosing an agent/mode in the chat prompt area.
|
||||
* Uses kilo-ui Popover component (Phase 4.5 of UI implementation plan).
|
||||
*
|
||||
* ModeSwitcherBase — reusable core that accepts agents/value/onSelect props.
|
||||
* ModeSwitcher — thin wrapper wired to session context for chat usage.
|
||||
*/
|
||||
|
||||
import { Component, createSignal, For, Show } from "solid-js"
|
||||
import { Popover } from "@kilocode/kilo-ui/popover"
|
||||
import { Button } from "@kilocode/kilo-ui/button"
|
||||
import { useSession } from "../../context/session"
|
||||
import type { AgentInfo } from "../../types/messages"
|
||||
|
||||
export const ModeSwitcher: Component = () => {
|
||||
const session = useSession()
|
||||
// ---------------------------------------------------------------------------
|
||||
// Reusable base component
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export interface ModeSwitcherBaseProps {
|
||||
/** Available agents to pick from */
|
||||
agents: AgentInfo[]
|
||||
/** Currently selected agent name */
|
||||
value: string
|
||||
/** Called when the user picks an agent */
|
||||
onSelect: (name: string) => void
|
||||
}
|
||||
|
||||
export const ModeSwitcherBase: Component<ModeSwitcherBaseProps> = (props) => {
|
||||
const [open, setOpen] = createSignal(false)
|
||||
|
||||
const available = () => session.agents()
|
||||
const hasAgents = () => available().length > 1
|
||||
const hasAgents = () => props.agents.length > 1
|
||||
|
||||
function pick(name: string) {
|
||||
session.selectAgent(name)
|
||||
props.onSelect(name)
|
||||
setOpen(false)
|
||||
}
|
||||
|
||||
const triggerLabel = () => {
|
||||
const name = session.selectedAgent()
|
||||
const agent = available().find((a) => a.name === name)
|
||||
const agent = props.agents.find((a) => a.name === props.value)
|
||||
if (agent) {
|
||||
return agent.name.charAt(0).toUpperCase() + agent.name.slice(1)
|
||||
}
|
||||
return name || "Code"
|
||||
return props.value || "Code"
|
||||
}
|
||||
|
||||
return (
|
||||
@@ -48,12 +62,12 @@ export const ModeSwitcher: Component = () => {
|
||||
}
|
||||
>
|
||||
<div class="mode-switcher-list" role="listbox">
|
||||
<For each={available()}>
|
||||
<For each={props.agents}>
|
||||
{(agent) => (
|
||||
<div
|
||||
class={`mode-switcher-item${agent.name === session.selectedAgent() ? " selected" : ""}`}
|
||||
class={`mode-switcher-item${agent.name === props.value ? " selected" : ""}`}
|
||||
role="option"
|
||||
aria-selected={agent.name === session.selectedAgent()}
|
||||
aria-selected={agent.name === props.value}
|
||||
onClick={() => pick(agent.name)}
|
||||
>
|
||||
<span class="mode-switcher-item-name">{agent.name.charAt(0).toUpperCase() + agent.name.slice(1)}</span>
|
||||
@@ -68,3 +82,13 @@ export const ModeSwitcher: Component = () => {
|
||||
</Show>
|
||||
)
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Chat-specific wrapper (backwards-compatible)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export const ModeSwitcher: Component = () => {
|
||||
const session = useSession()
|
||||
|
||||
return <ModeSwitcherBase agents={session.agents()} value={session.selectedAgent()} onSelect={session.selectAgent} />
|
||||
}
|
||||
|
||||
@@ -193,7 +193,7 @@ export const ModelSelectorBase: Component<ModelSelectorBaseProps> = (props) => {
|
||||
return raw.providerID === KILO_GATEWAY_ID ? raw.modelID : `${raw.providerID} / ${raw.modelID}`
|
||||
}
|
||||
if (props.allowClear) {
|
||||
return props.clearLabel ?? "Not set"
|
||||
return props.clearLabel ?? language.t("dialog.model.notSet")
|
||||
}
|
||||
return hasProviders() ? language.t("dialog.model.select.title") : language.t("dialog.model.noProviders")
|
||||
}
|
||||
@@ -246,7 +246,7 @@ export const ModelSelectorBase: Component<ModelSelectorBaseProps> = (props) => {
|
||||
onMouseEnter={() => setActiveIndex(0)}
|
||||
>
|
||||
<span class="model-selector-item-name" style={{ "font-style": "italic", opacity: 0.7 }}>
|
||||
{props.clearLabel ?? "Not set (use server default)"}
|
||||
{props.clearLabel ?? language.t("dialog.model.notSet")}
|
||||
</span>
|
||||
</div>
|
||||
</Show>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* Text input with send/abort buttons and ghost-text autocomplete for the chat interface
|
||||
*/
|
||||
|
||||
import { Component, createSignal, onCleanup, Show } from "solid-js"
|
||||
import { Component, createSignal, createEffect, on, onCleanup, Show, untrack } from "solid-js"
|
||||
import { Button } from "@kilocode/kilo-ui/button"
|
||||
import { Tooltip } from "@kilocode/kilo-ui/tooltip"
|
||||
import { useSession } from "../../context/session"
|
||||
@@ -16,17 +16,40 @@ import { ModeSwitcher } from "./ModeSwitcher"
|
||||
const AUTOCOMPLETE_DEBOUNCE_MS = 500
|
||||
const MIN_TEXT_LENGTH = 3
|
||||
|
||||
// Per-session input text storage (module-level so it survives remounts)
|
||||
const drafts = new Map<string, string>()
|
||||
|
||||
export const PromptInput: Component = () => {
|
||||
const session = useSession()
|
||||
const server = useServer()
|
||||
const language = useLanguage()
|
||||
const vscode = useVSCode()
|
||||
|
||||
const sessionKey = () => session.currentSessionID() ?? "__new__"
|
||||
|
||||
const [text, setText] = createSignal("")
|
||||
const [ghostText, setGhostText] = createSignal("")
|
||||
let textareaRef: HTMLTextAreaElement | undefined
|
||||
let debounceTimer: ReturnType<typeof setTimeout> | undefined
|
||||
let requestCounter = 0
|
||||
// Save/restore input text when switching sessions.
|
||||
// Uses `on()` to track only sessionKey — avoids re-running on every keystroke.
|
||||
createEffect(
|
||||
on(sessionKey, (key, prev) => {
|
||||
if (prev !== undefined && prev !== key) {
|
||||
drafts.set(prev, untrack(text))
|
||||
}
|
||||
const draft = drafts.get(key) ?? ""
|
||||
setText(draft)
|
||||
setGhostText("")
|
||||
if (textareaRef) {
|
||||
textareaRef.value = draft
|
||||
// Reset height then adjust
|
||||
textareaRef.style.height = "auto"
|
||||
textareaRef.style.height = `${Math.min(textareaRef.scrollHeight, 200)}px`
|
||||
}
|
||||
}),
|
||||
)
|
||||
|
||||
const isBusy = () => session.status() === "busy"
|
||||
const isDisabled = () => !server.isConnected()
|
||||
@@ -45,6 +68,9 @@ export const PromptInput: Component = () => {
|
||||
})
|
||||
|
||||
onCleanup(() => {
|
||||
// Persist current draft before unmounting
|
||||
const current = text()
|
||||
if (current) drafts.set(sessionKey(), current)
|
||||
unsubscribe()
|
||||
if (debounceTimer) {
|
||||
clearTimeout(debounceTimer)
|
||||
@@ -150,6 +176,7 @@ export const PromptInput: Component = () => {
|
||||
session.sendMessage(message, sel?.providerID, sel?.modelID)
|
||||
setText("")
|
||||
setGhostText("")
|
||||
drafts.delete(sessionKey())
|
||||
|
||||
// Reset textarea height
|
||||
if (textareaRef) {
|
||||
@@ -184,7 +211,13 @@ export const PromptInput: Component = () => {
|
||||
</div>
|
||||
</Show>
|
||||
</div>
|
||||
<div class="prompt-input-actions">
|
||||
</div>
|
||||
<div class="prompt-input-hint">
|
||||
<div class="prompt-input-hint-selectors">
|
||||
<ModeSwitcher />
|
||||
<ModelSelector />
|
||||
</div>
|
||||
<div class="prompt-input-hint-actions">
|
||||
<Show
|
||||
when={isBusy()}
|
||||
fallback={
|
||||
@@ -213,10 +246,6 @@ export const PromptInput: Component = () => {
|
||||
</Show>
|
||||
</div>
|
||||
</div>
|
||||
<div class="prompt-input-hint">
|
||||
<ModeSwitcher />
|
||||
<ModelSelector />
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ export const TaskHeader: Component = () => {
|
||||
const cost = createMemo(() => {
|
||||
const total = session.totalCost()
|
||||
if (total === 0) return undefined
|
||||
return new Intl.NumberFormat("en-US", {
|
||||
return new Intl.NumberFormat(language.locale(), {
|
||||
style: "currency",
|
||||
currency: "USD",
|
||||
}).format(total)
|
||||
@@ -31,7 +31,7 @@ export const TaskHeader: Component = () => {
|
||||
const context = createMemo(() => {
|
||||
const usage = session.contextUsage()
|
||||
if (!usage) return undefined
|
||||
const tokens = usage.tokens.toLocaleString("en-US")
|
||||
const tokens = usage.tokens.toLocaleString(language.locale())
|
||||
const pct = usage.percentage !== null ? `${usage.percentage}%` : undefined
|
||||
return { tokens, pct }
|
||||
})
|
||||
|
||||
@@ -130,7 +130,7 @@ const AboutKiloCodeTab: Component<AboutKiloCodeTabProps> = (props) => {
|
||||
</div>
|
||||
|
||||
{/* CLI Server */}
|
||||
<div style={{ ...sectionStyle, "margin-bottom": "0" }}>
|
||||
<div style={sectionStyle}>
|
||||
<h4 style={headingStyle}>{language.t("settings.aboutKiloCode.cliServer")}</h4>
|
||||
|
||||
{/* Connection Status */}
|
||||
@@ -156,6 +156,36 @@ const AboutKiloCodeTab: Component<AboutKiloCodeTabProps> = (props) => {
|
||||
<span style={valueStyle}>{props.port !== null ? props.port : "—"}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Reset Settings */}
|
||||
<div style={{ ...sectionStyle, "margin-bottom": "0" }}>
|
||||
<h4 style={headingStyle}>{language.t("settings.aboutKiloCode.resetSettings.title")}</h4>
|
||||
<p
|
||||
style={{
|
||||
"font-size": "12px",
|
||||
color: "var(--vscode-descriptionForeground)",
|
||||
margin: "0 0 12px 0",
|
||||
"line-height": "1.5",
|
||||
}}
|
||||
>
|
||||
{language.t("settings.aboutKiloCode.resetSettings.description")}
|
||||
</p>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => vscode.postMessage({ type: "resetAllSettings" })}
|
||||
style={{
|
||||
background: "var(--vscode-button-background)",
|
||||
color: "var(--vscode-button-foreground)",
|
||||
border: "none",
|
||||
padding: "6px 14px",
|
||||
"border-radius": "2px",
|
||||
cursor: "pointer",
|
||||
"font-size": "12px",
|
||||
}}
|
||||
>
|
||||
{language.t("settings.aboutKiloCode.resetSettings.button")}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ const Placeholder: Component<{ text: string }> = (props) => (
|
||||
"line-height": "1.5",
|
||||
}}
|
||||
>
|
||||
<strong>Not yet implemented.</strong> {props.text}
|
||||
<strong>{useLanguage().t("settings.agentBehaviour.notImplemented")}</strong> {props.text}
|
||||
</p>
|
||||
</Card>
|
||||
)
|
||||
@@ -70,12 +70,12 @@ const AgentBehaviourTab: Component = () => {
|
||||
})
|
||||
|
||||
const defaultAgentOptions = createMemo<SelectOption[]>(() => [
|
||||
{ value: "", label: "Default" },
|
||||
{ value: "", label: language.t("common.default") },
|
||||
...agentNames().map((name) => ({ value: name, label: name })),
|
||||
])
|
||||
|
||||
const agentSelectorOptions = createMemo<SelectOption[]>(() => [
|
||||
{ value: "", label: "Select an agent to configure…" },
|
||||
{ value: "", label: language.t("settings.agentBehaviour.selectAgent") },
|
||||
...agentNames().map((name) => ({ value: name, label: name })),
|
||||
])
|
||||
|
||||
@@ -164,7 +164,11 @@ const AgentBehaviourTab: Component = () => {
|
||||
<div>
|
||||
{/* Default agent */}
|
||||
<Card style={{ "margin-bottom": "12px" }}>
|
||||
<SettingsRow title="Default Agent" description="Agent to use when none is specified" last>
|
||||
<SettingsRow
|
||||
title={language.t("settings.agentBehaviour.defaultAgent.title")}
|
||||
description={language.t("settings.agentBehaviour.defaultAgent.description")}
|
||||
last
|
||||
>
|
||||
<Select
|
||||
options={defaultAgentOptions()}
|
||||
current={defaultAgentOptions().find((o) => o.value === (config().default_agent ?? ""))}
|
||||
@@ -195,7 +199,10 @@ const AgentBehaviourTab: Component = () => {
|
||||
<Show when={selectedAgent()}>
|
||||
<Card>
|
||||
{/* Model override */}
|
||||
<SettingsRow title="Model Override" description="Override the default model for this agent">
|
||||
<SettingsRow
|
||||
title={language.t("settings.agentBehaviour.modelOverride.title")}
|
||||
description={language.t("settings.agentBehaviour.modelOverride.description")}
|
||||
>
|
||||
<TextField
|
||||
value={currentAgentConfig().model ?? ""}
|
||||
placeholder="e.g. anthropic/claude-sonnet-4-20250514"
|
||||
@@ -208,7 +215,10 @@ const AgentBehaviourTab: Component = () => {
|
||||
</SettingsRow>
|
||||
|
||||
{/* System prompt */}
|
||||
<SettingsRow title="Custom Prompt" description="Additional system prompt for this agent">
|
||||
<SettingsRow
|
||||
title={language.t("settings.agentBehaviour.prompt.title")}
|
||||
description={language.t("settings.agentBehaviour.prompt.description")}
|
||||
>
|
||||
<TextField
|
||||
value={currentAgentConfig().prompt ?? ""}
|
||||
placeholder="Custom instructions…"
|
||||
@@ -222,10 +232,13 @@ const AgentBehaviourTab: Component = () => {
|
||||
</SettingsRow>
|
||||
|
||||
{/* Temperature */}
|
||||
<SettingsRow title="Temperature" description="Sampling temperature (0-2)">
|
||||
<SettingsRow
|
||||
title={language.t("settings.agentBehaviour.temperature.title")}
|
||||
description={language.t("settings.agentBehaviour.temperature.description")}
|
||||
>
|
||||
<TextField
|
||||
value={currentAgentConfig().temperature?.toString() ?? ""}
|
||||
placeholder="Default"
|
||||
placeholder={language.t("common.default")}
|
||||
onChange={(val) => {
|
||||
const parsed = parseFloat(val)
|
||||
updateAgentConfig(selectedAgent(), { temperature: isNaN(parsed) ? undefined : parsed })
|
||||
@@ -234,10 +247,13 @@ const AgentBehaviourTab: Component = () => {
|
||||
</SettingsRow>
|
||||
|
||||
{/* Top-p */}
|
||||
<SettingsRow title="Top P" description="Nucleus sampling parameter (0-1)">
|
||||
<SettingsRow
|
||||
title={language.t("settings.agentBehaviour.topP.title")}
|
||||
description={language.t("settings.agentBehaviour.topP.description")}
|
||||
>
|
||||
<TextField
|
||||
value={currentAgentConfig().top_p?.toString() ?? ""}
|
||||
placeholder="Default"
|
||||
placeholder={language.t("common.default")}
|
||||
onChange={(val) => {
|
||||
const parsed = parseFloat(val)
|
||||
updateAgentConfig(selectedAgent(), { top_p: isNaN(parsed) ? undefined : parsed })
|
||||
@@ -246,10 +262,14 @@ const AgentBehaviourTab: Component = () => {
|
||||
</SettingsRow>
|
||||
|
||||
{/* Max steps */}
|
||||
<SettingsRow title="Max Steps" description="Maximum agentic iterations" last>
|
||||
<SettingsRow
|
||||
title={language.t("settings.agentBehaviour.maxSteps.title")}
|
||||
description={language.t("settings.agentBehaviour.maxSteps.description")}
|
||||
last
|
||||
>
|
||||
<TextField
|
||||
value={currentAgentConfig().steps?.toString() ?? ""}
|
||||
placeholder="Default"
|
||||
placeholder={language.t("common.default")}
|
||||
onChange={(val) => {
|
||||
const parsed = parseInt(val, 10)
|
||||
updateAgentConfig(selectedAgent(), { steps: isNaN(parsed) ? undefined : parsed })
|
||||
@@ -276,7 +296,7 @@ const AgentBehaviourTab: Component = () => {
|
||||
color: "var(--text-weak-base, var(--vscode-descriptionForeground))",
|
||||
}}
|
||||
>
|
||||
No MCP servers configured. Edit the opencode config file to add MCP servers.
|
||||
{language.t("settings.agentBehaviour.mcpEmpty")}
|
||||
</div>
|
||||
</Card>
|
||||
}
|
||||
@@ -320,7 +340,7 @@ const AgentBehaviourTab: Component = () => {
|
||||
const renderSkillsSubtab = () => (
|
||||
<div>
|
||||
{/* Skill paths */}
|
||||
<h4 style={{ "margin-top": "0", "margin-bottom": "8px" }}>Skill Folder Paths</h4>
|
||||
<h4 style={{ "margin-top": "0", "margin-bottom": "8px" }}>{language.t("settings.agentBehaviour.skillPaths")}</h4>
|
||||
<Card style={{ "margin-bottom": "16px" }}>
|
||||
<div
|
||||
style={{
|
||||
@@ -342,7 +362,7 @@ const AgentBehaviourTab: Component = () => {
|
||||
/>
|
||||
</div>
|
||||
<Button size="small" onClick={addSkillPath}>
|
||||
Add
|
||||
{language.t("common.add")}
|
||||
</Button>
|
||||
</div>
|
||||
<For each={skillPaths()}>
|
||||
@@ -371,7 +391,7 @@ const AgentBehaviourTab: Component = () => {
|
||||
</Card>
|
||||
|
||||
{/* Skill URLs */}
|
||||
<h4 style={{ "margin-top": "0", "margin-bottom": "8px" }}>Skill URLs</h4>
|
||||
<h4 style={{ "margin-top": "0", "margin-bottom": "8px" }}>{language.t("settings.agentBehaviour.skillUrls")}</h4>
|
||||
<Card>
|
||||
<div
|
||||
style={{
|
||||
@@ -393,7 +413,7 @@ const AgentBehaviourTab: Component = () => {
|
||||
/>
|
||||
</div>
|
||||
<Button size="small" onClick={addSkillUrl}>
|
||||
Add
|
||||
{language.t("common.add")}
|
||||
</Button>
|
||||
</div>
|
||||
<For each={skillUrls()}>
|
||||
@@ -432,7 +452,7 @@ const AgentBehaviourTab: Component = () => {
|
||||
"border-bottom": "1px solid var(--border-weak-base)",
|
||||
}}
|
||||
>
|
||||
<div style={{ "font-weight": "500" }}>Additional Instruction Files</div>
|
||||
<div style={{ "font-weight": "500" }}>{language.t("settings.agentBehaviour.instructionFiles")}</div>
|
||||
<div
|
||||
style={{
|
||||
"font-size": "11px",
|
||||
@@ -440,7 +460,7 @@ const AgentBehaviourTab: Component = () => {
|
||||
"margin-top": "2px",
|
||||
}}
|
||||
>
|
||||
Paths to additional instruction files that are included in the system prompt
|
||||
{language.t("settings.agentBehaviour.instructionFiles.description")}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -465,7 +485,7 @@ const AgentBehaviourTab: Component = () => {
|
||||
/>
|
||||
</div>
|
||||
<Button size="small" onClick={addInstruction}>
|
||||
Add
|
||||
{language.t("common.add")}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -506,7 +526,7 @@ const AgentBehaviourTab: Component = () => {
|
||||
case "rules":
|
||||
return renderRulesSubtab()
|
||||
case "workflows":
|
||||
return <Placeholder text="Workflows are managed via workflow files in your workspace." />
|
||||
return <Placeholder text={language.t("settings.agentBehaviour.workflowsPlaceholder")} />
|
||||
case "skills":
|
||||
return renderSkillsSubtab()
|
||||
default:
|
||||
|
||||
@@ -2,6 +2,7 @@ import { Component, For, createMemo } from "solid-js"
|
||||
import { Select } from "@kilocode/kilo-ui/select"
|
||||
import { Card } from "@kilocode/kilo-ui/card"
|
||||
import { useConfig } from "../../context/config"
|
||||
import { useLanguage } from "../../context/language"
|
||||
import type { PermissionLevel } from "../../types/messages"
|
||||
|
||||
const TOOLS = [
|
||||
@@ -25,36 +26,18 @@ const TOOLS = [
|
||||
|
||||
interface LevelOption {
|
||||
value: PermissionLevel
|
||||
label: string
|
||||
labelKey: string
|
||||
}
|
||||
|
||||
const LEVEL_OPTIONS: LevelOption[] = [
|
||||
{ value: "allow", label: "Allow" },
|
||||
{ value: "ask", label: "Ask" },
|
||||
{ value: "deny", label: "Deny" },
|
||||
{ value: "allow", labelKey: "settings.autoApprove.level.allow" },
|
||||
{ value: "ask", labelKey: "settings.autoApprove.level.ask" },
|
||||
{ value: "deny", labelKey: "settings.autoApprove.level.deny" },
|
||||
]
|
||||
|
||||
const TOOL_DESCRIPTIONS: Record<string, string> = {
|
||||
read: "Read file contents",
|
||||
edit: "Edit or create files",
|
||||
glob: "Find files by pattern",
|
||||
grep: "Search file contents",
|
||||
list: "List directory contents",
|
||||
bash: "Execute shell commands",
|
||||
task: "Create sub-agent tasks",
|
||||
skill: "Execute skills",
|
||||
lsp: "Language server operations",
|
||||
todoread: "Read todo lists",
|
||||
todowrite: "Write todo lists",
|
||||
webfetch: "Fetch web pages",
|
||||
websearch: "Search the web",
|
||||
codesearch: "Search codebase",
|
||||
external_directory: "Access files outside workspace",
|
||||
doom_loop: "Continue after repeated failures",
|
||||
}
|
||||
|
||||
const AutoApproveTab: Component = () => {
|
||||
const { config, updateConfig } = useConfig()
|
||||
const language = useLanguage()
|
||||
|
||||
const permissions = createMemo(() => config().permission ?? {})
|
||||
|
||||
@@ -84,16 +67,16 @@ const AutoApproveTab: Component = () => {
|
||||
data-slot="settings-row"
|
||||
style={{ display: "flex", "align-items": "center", "justify-content": "space-between", padding: "8px 0" }}
|
||||
>
|
||||
<span style={{ "font-weight": "600" }}>Set all permissions</span>
|
||||
<span style={{ "font-weight": "600" }}>{language.t("settings.autoApprove.setAll")}</span>
|
||||
<Select
|
||||
options={LEVEL_OPTIONS}
|
||||
value={(o) => o.value}
|
||||
label={(o) => o.label}
|
||||
label={(o) => language.t(o.labelKey)}
|
||||
onSelect={(option) => option && setAll(option.value)}
|
||||
variant="secondary"
|
||||
size="small"
|
||||
triggerVariant="settings"
|
||||
placeholder="Choose…"
|
||||
placeholder={language.t("common.choose")}
|
||||
/>
|
||||
</div>
|
||||
</Card>
|
||||
@@ -130,14 +113,14 @@ const AutoApproveTab: Component = () => {
|
||||
"margin-top": "2px",
|
||||
}}
|
||||
>
|
||||
{TOOL_DESCRIPTIONS[tool] ?? tool}
|
||||
{language.t(`settings.autoApprove.tool.${tool}`)}
|
||||
</div>
|
||||
</div>
|
||||
<Select
|
||||
options={LEVEL_OPTIONS}
|
||||
current={LEVEL_OPTIONS.find((o) => o.value === getLevel(tool))}
|
||||
value={(o) => o.value}
|
||||
label={(o) => o.label}
|
||||
label={(o) => language.t(o.labelKey)}
|
||||
onSelect={(option) => option && setPermission(tool, option.value)}
|
||||
variant="secondary"
|
||||
size="small"
|
||||
|
||||
@@ -2,11 +2,13 @@ import { Component, createSignal, onCleanup } from "solid-js"
|
||||
import { Switch } from "@kilocode/kilo-ui/switch"
|
||||
import { Card } from "@kilocode/kilo-ui/card"
|
||||
import { useVSCode } from "../../context/vscode"
|
||||
import { useLanguage } from "../../context/language"
|
||||
import type { ExtensionMessage } from "../../types/messages"
|
||||
import SettingsRow from "./SettingsRow"
|
||||
|
||||
const AutocompleteTab: Component = () => {
|
||||
const vscode = useVSCode()
|
||||
const language = useLanguage()
|
||||
|
||||
const [enableAutoTrigger, setEnableAutoTrigger] = createSignal(true)
|
||||
const [enableSmartInlineTaskKeybinding, setEnableSmartInlineTaskKeybinding] = createSignal(false)
|
||||
@@ -36,34 +38,34 @@ const AutocompleteTab: Component = () => {
|
||||
<div data-component="autocomplete-settings">
|
||||
<Card>
|
||||
<SettingsRow
|
||||
title="Enable automatic inline completions"
|
||||
description="Automatically show inline completion suggestions as you type"
|
||||
title={language.t("settings.autocomplete.autoTrigger.title")}
|
||||
description={language.t("settings.autocomplete.autoTrigger.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={enableAutoTrigger()}
|
||||
onChange={(checked) => updateSetting("enableAutoTrigger", checked)}
|
||||
hideLabel
|
||||
>
|
||||
Enable automatic inline completions
|
||||
{language.t("settings.autocomplete.autoTrigger.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
|
||||
<SettingsRow
|
||||
title="Enable smart inline task keybinding"
|
||||
description="Use a smart keybinding for triggering inline tasks"
|
||||
title={language.t("settings.autocomplete.smartKeybinding.title")}
|
||||
description={language.t("settings.autocomplete.smartKeybinding.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={enableSmartInlineTaskKeybinding()}
|
||||
onChange={(checked) => updateSetting("enableSmartInlineTaskKeybinding", checked)}
|
||||
hideLabel
|
||||
>
|
||||
Enable smart inline task keybinding
|
||||
{language.t("settings.autocomplete.smartKeybinding.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
|
||||
<SettingsRow
|
||||
title="Enable chat textarea autocomplete"
|
||||
description="Show autocomplete suggestions in the chat textarea"
|
||||
title={language.t("settings.autocomplete.chatAutocomplete.title")}
|
||||
description={language.t("settings.autocomplete.chatAutocomplete.description")}
|
||||
last
|
||||
>
|
||||
<Switch
|
||||
@@ -71,7 +73,7 @@ const AutocompleteTab: Component = () => {
|
||||
onChange={(checked) => updateSetting("enableChatAutocomplete", checked)}
|
||||
hideLabel
|
||||
>
|
||||
Enable chat textarea autocomplete
|
||||
{language.t("settings.autocomplete.chatAutocomplete.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
</Card>
|
||||
|
||||
@@ -2,17 +2,19 @@ import { Component } from "solid-js"
|
||||
import { Switch } from "@kilocode/kilo-ui/switch"
|
||||
import { Card } from "@kilocode/kilo-ui/card"
|
||||
import { useConfig } from "../../context/config"
|
||||
import { useLanguage } from "../../context/language"
|
||||
import SettingsRow from "./SettingsRow"
|
||||
|
||||
const CheckpointsTab: Component = () => {
|
||||
const { config, updateConfig } = useConfig()
|
||||
const language = useLanguage()
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Card>
|
||||
<SettingsRow
|
||||
title="Enable Snapshots"
|
||||
description="Create checkpoints before file edits so you can restore previous states"
|
||||
title={language.t("settings.checkpoints.enable.title")}
|
||||
description={language.t("settings.checkpoints.enable.description")}
|
||||
last
|
||||
>
|
||||
<Switch
|
||||
@@ -20,7 +22,7 @@ const CheckpointsTab: Component = () => {
|
||||
onChange={(checked) => updateConfig({ snapshot: checked })}
|
||||
hideLabel
|
||||
>
|
||||
Enable Snapshots
|
||||
{language.t("settings.checkpoints.enable.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
</Card>
|
||||
|
||||
@@ -6,10 +6,12 @@ import { Button } from "@kilocode/kilo-ui/button"
|
||||
import { IconButton } from "@kilocode/kilo-ui/icon-button"
|
||||
|
||||
import { useConfig } from "../../context/config"
|
||||
import { useLanguage } from "../../context/language"
|
||||
import SettingsRow from "./SettingsRow"
|
||||
|
||||
const ContextTab: Component = () => {
|
||||
const { config, updateConfig } = useConfig()
|
||||
const language = useLanguage()
|
||||
const [newPattern, setNewPattern] = createSignal("")
|
||||
|
||||
const patterns = () => config().watcher?.ignore ?? []
|
||||
@@ -35,27 +37,34 @@ const ContextTab: Component = () => {
|
||||
<div>
|
||||
{/* Compaction settings */}
|
||||
<Card>
|
||||
<SettingsRow title="Auto Compaction" description="Automatically compact context when it's full">
|
||||
<SettingsRow
|
||||
title={language.t("settings.context.autoCompaction.title")}
|
||||
description={language.t("settings.context.autoCompaction.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={config().compaction?.auto ?? false}
|
||||
onChange={(checked) => updateConfig({ compaction: { ...config().compaction, auto: checked } })}
|
||||
hideLabel
|
||||
>
|
||||
Auto Compaction
|
||||
{language.t("settings.context.autoCompaction.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
<SettingsRow title="Prune Old Outputs" description="Remove old tool outputs during compaction" last>
|
||||
<SettingsRow
|
||||
title={language.t("settings.context.prune.title")}
|
||||
description={language.t("settings.context.prune.description")}
|
||||
last
|
||||
>
|
||||
<Switch
|
||||
checked={config().compaction?.prune ?? false}
|
||||
onChange={(checked) => updateConfig({ compaction: { ...config().compaction, prune: checked } })}
|
||||
hideLabel
|
||||
>
|
||||
Prune Old Outputs
|
||||
{language.t("settings.context.prune.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
</Card>
|
||||
|
||||
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>File Watcher Ignore Patterns</h4>
|
||||
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>{language.t("settings.context.watcherPatterns")}</h4>
|
||||
|
||||
<Card>
|
||||
<div
|
||||
@@ -66,7 +75,7 @@ const ContextTab: Component = () => {
|
||||
"border-bottom": patterns().length > 0 || newPattern() ? "1px solid var(--border-weak-base)" : "none",
|
||||
}}
|
||||
>
|
||||
Glob patterns for files the watcher should ignore
|
||||
{language.t("settings.context.watcherPatterns.description")}
|
||||
</div>
|
||||
|
||||
{/* Add new pattern */}
|
||||
@@ -90,7 +99,7 @@ const ContextTab: Component = () => {
|
||||
/>
|
||||
</div>
|
||||
<Button size="small" onClick={addPattern}>
|
||||
Add
|
||||
{language.t("common.add")}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -3,25 +3,30 @@ import { Select } from "@kilocode/kilo-ui/select"
|
||||
import { TextField } from "@kilocode/kilo-ui/text-field"
|
||||
import { Card } from "@kilocode/kilo-ui/card"
|
||||
import { useConfig } from "../../context/config"
|
||||
import { useLanguage } from "../../context/language"
|
||||
import SettingsRow from "./SettingsRow"
|
||||
|
||||
interface LayoutOption {
|
||||
value: string
|
||||
label: string
|
||||
labelKey: string
|
||||
}
|
||||
|
||||
const LAYOUT_OPTIONS: LayoutOption[] = [
|
||||
{ value: "auto", label: "Auto" },
|
||||
{ value: "stretch", label: "Stretch" },
|
||||
{ value: "auto", labelKey: "settings.display.layout.auto" },
|
||||
{ value: "stretch", labelKey: "settings.display.layout.stretch" },
|
||||
]
|
||||
|
||||
const DisplayTab: Component = () => {
|
||||
const { config, updateConfig } = useConfig()
|
||||
const language = useLanguage()
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Card>
|
||||
<SettingsRow title="Username" description="Custom username displayed in conversations">
|
||||
<SettingsRow
|
||||
title={language.t("settings.display.username.title")}
|
||||
description={language.t("settings.display.username.description")}
|
||||
>
|
||||
<div style={{ width: "160px" }}>
|
||||
<TextField
|
||||
value={config().username ?? ""}
|
||||
@@ -31,12 +36,16 @@ const DisplayTab: Component = () => {
|
||||
</div>
|
||||
</SettingsRow>
|
||||
|
||||
<SettingsRow title="Layout" description="Layout mode for the chat interface" last>
|
||||
<SettingsRow
|
||||
title={language.t("settings.display.layout.title")}
|
||||
description={language.t("settings.display.layout.description")}
|
||||
last
|
||||
>
|
||||
<Select
|
||||
options={LAYOUT_OPTIONS}
|
||||
current={LAYOUT_OPTIONS.find((o) => o.value === (config().layout ?? "auto"))}
|
||||
value={(o) => o.value}
|
||||
label={(o) => o.label}
|
||||
label={(o) => language.t(o.labelKey)}
|
||||
onSelect={(o) => o && updateConfig({ layout: o.value as "auto" | "stretch" })}
|
||||
variant="secondary"
|
||||
size="small"
|
||||
|
||||
@@ -4,21 +4,23 @@ import { Select } from "@kilocode/kilo-ui/select"
|
||||
import { TextField } from "@kilocode/kilo-ui/text-field"
|
||||
import { Card } from "@kilocode/kilo-ui/card"
|
||||
import { useConfig } from "../../context/config"
|
||||
import { useLanguage } from "../../context/language"
|
||||
import SettingsRow from "./SettingsRow"
|
||||
|
||||
interface ShareOption {
|
||||
value: string
|
||||
label: string
|
||||
labelKey: string
|
||||
}
|
||||
|
||||
const SHARE_OPTIONS: ShareOption[] = [
|
||||
{ value: "manual", label: "Manual" },
|
||||
{ value: "auto", label: "Auto" },
|
||||
{ value: "disabled", label: "Disabled" },
|
||||
{ value: "manual", labelKey: "settings.experimental.share.manual" },
|
||||
{ value: "auto", labelKey: "settings.experimental.share.auto" },
|
||||
{ value: "disabled", labelKey: "settings.experimental.share.disabled" },
|
||||
]
|
||||
|
||||
const ExperimentalTab: Component = () => {
|
||||
const { config, updateConfig } = useConfig()
|
||||
const language = useLanguage()
|
||||
|
||||
const experimental = createMemo(() => config().experimental ?? {})
|
||||
|
||||
@@ -32,12 +34,15 @@ const ExperimentalTab: Component = () => {
|
||||
<div>
|
||||
<Card>
|
||||
{/* Share mode */}
|
||||
<SettingsRow title="Share Mode" description="How session sharing behaves">
|
||||
<SettingsRow
|
||||
title={language.t("settings.experimental.share.title")}
|
||||
description={language.t("settings.experimental.share.description")}
|
||||
>
|
||||
<Select
|
||||
options={SHARE_OPTIONS}
|
||||
current={SHARE_OPTIONS.find((o) => o.value === (config().share ?? "manual"))}
|
||||
value={(o) => o.value}
|
||||
label={(o) => o.label}
|
||||
label={(o) => language.t(o.labelKey)}
|
||||
onSelect={(o) => o && updateConfig({ share: o.value as "manual" | "auto" | "disabled" })}
|
||||
variant="secondary"
|
||||
size="small"
|
||||
@@ -45,58 +50,77 @@ const ExperimentalTab: Component = () => {
|
||||
/>
|
||||
</SettingsRow>
|
||||
|
||||
<SettingsRow title="Formatter" description="Enable the automatic code formatter">
|
||||
<SettingsRow
|
||||
title={language.t("settings.experimental.formatter.title")}
|
||||
description={language.t("settings.experimental.formatter.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={config().formatter !== false}
|
||||
onChange={(checked) => updateConfig({ formatter: checked ? {} : false })}
|
||||
hideLabel
|
||||
>
|
||||
Formatter
|
||||
{language.t("settings.experimental.formatter.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
|
||||
<SettingsRow title="LSP" description="Enable language server protocol integration">
|
||||
<SettingsRow
|
||||
title={language.t("settings.experimental.lsp.title")}
|
||||
description={language.t("settings.experimental.lsp.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={config().lsp !== false}
|
||||
onChange={(checked) => updateConfig({ lsp: checked ? {} : false })}
|
||||
hideLabel
|
||||
>
|
||||
LSP
|
||||
{language.t("settings.experimental.lsp.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
|
||||
<SettingsRow title="Disable Paste Summary" description="Don't summarize large pasted content">
|
||||
<SettingsRow
|
||||
title={language.t("settings.experimental.pasteSummary.title")}
|
||||
description={language.t("settings.experimental.pasteSummary.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={experimental().disable_paste_summary ?? false}
|
||||
onChange={(checked) => updateExperimental("disable_paste_summary", checked)}
|
||||
hideLabel
|
||||
>
|
||||
Disable Paste Summary
|
||||
{language.t("settings.experimental.pasteSummary.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
|
||||
<SettingsRow title="Batch Tool" description="Enable batching of multiple tool calls">
|
||||
<SettingsRow
|
||||
title={language.t("settings.experimental.batch.title")}
|
||||
description={language.t("settings.experimental.batch.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={experimental().batch_tool ?? false}
|
||||
onChange={(checked) => updateExperimental("batch_tool", checked)}
|
||||
hideLabel
|
||||
>
|
||||
Batch Tool
|
||||
{language.t("settings.experimental.batch.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
|
||||
<SettingsRow title="Continue on Deny" description="Continue the agent loop when a permission is denied">
|
||||
<SettingsRow
|
||||
title={language.t("settings.experimental.continueOnDeny.title")}
|
||||
description={language.t("settings.experimental.continueOnDeny.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={experimental().continue_loop_on_deny ?? false}
|
||||
onChange={(checked) => updateExperimental("continue_loop_on_deny", checked)}
|
||||
hideLabel
|
||||
>
|
||||
Continue on Deny
|
||||
{language.t("settings.experimental.continueOnDeny.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
|
||||
{/* MCP timeout */}
|
||||
<SettingsRow title="MCP Timeout (ms)" description="Timeout for MCP server requests in milliseconds" last>
|
||||
<SettingsRow
|
||||
title={language.t("settings.experimental.mcpTimeout.title")}
|
||||
description={language.t("settings.experimental.mcpTimeout.description")}
|
||||
last
|
||||
>
|
||||
<TextField
|
||||
value={String(experimental().mcp_timeout ?? 60000)}
|
||||
onChange={(val) => {
|
||||
@@ -111,7 +135,9 @@ const ExperimentalTab: Component = () => {
|
||||
|
||||
{/* Tool toggles */}
|
||||
<Show when={config().tools && Object.keys(config().tools ?? {}).length > 0}>
|
||||
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>Tool Toggles</h4>
|
||||
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>
|
||||
{language.t("settings.experimental.toolToggles")}
|
||||
</h4>
|
||||
<Card>
|
||||
<For each={Object.entries(config().tools ?? {})}>
|
||||
{([name, enabled], index) => (
|
||||
|
||||
@@ -3,21 +3,23 @@ import { Switch } from "@kilocode/kilo-ui/switch"
|
||||
import { Select } from "@kilocode/kilo-ui/select"
|
||||
import { Card } from "@kilocode/kilo-ui/card"
|
||||
import { useVSCode } from "../../context/vscode"
|
||||
import { useLanguage } from "../../context/language"
|
||||
import type { ExtensionMessage } from "../../types/messages"
|
||||
import SettingsRow from "./SettingsRow"
|
||||
|
||||
interface SoundOption {
|
||||
value: string
|
||||
label: string
|
||||
labelKey: string
|
||||
}
|
||||
|
||||
const SOUND_OPTIONS: SoundOption[] = [
|
||||
{ value: "default", label: "Default" },
|
||||
{ value: "none", label: "None" },
|
||||
{ value: "default", labelKey: "settings.notifications.sound.default" },
|
||||
{ value: "none", labelKey: "settings.notifications.sound.none" },
|
||||
]
|
||||
|
||||
const NotificationsTab: Component = () => {
|
||||
const vscode = useVSCode()
|
||||
const language = useLanguage()
|
||||
|
||||
const [agentNotify, setAgentNotify] = createSignal(true)
|
||||
const [permNotify, setPermNotify] = createSignal(true)
|
||||
@@ -49,7 +51,10 @@ const NotificationsTab: Component = () => {
|
||||
return (
|
||||
<div>
|
||||
<Card>
|
||||
<SettingsRow title="Agent Completion" description="Show notification when agent completes a task">
|
||||
<SettingsRow
|
||||
title={language.t("settings.notifications.agent.title")}
|
||||
description={language.t("settings.notifications.agent.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={agentNotify()}
|
||||
onChange={(checked) => {
|
||||
@@ -58,10 +63,13 @@ const NotificationsTab: Component = () => {
|
||||
}}
|
||||
hideLabel
|
||||
>
|
||||
Agent Completion
|
||||
{language.t("settings.notifications.agent.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
<SettingsRow title="Permission Requests" description="Show notification on permission requests">
|
||||
<SettingsRow
|
||||
title={language.t("settings.notifications.permissions.title")}
|
||||
description={language.t("settings.notifications.permissions.description")}
|
||||
>
|
||||
<Switch
|
||||
checked={permNotify()}
|
||||
onChange={(checked) => {
|
||||
@@ -70,10 +78,14 @@ const NotificationsTab: Component = () => {
|
||||
}}
|
||||
hideLabel
|
||||
>
|
||||
Permission Requests
|
||||
{language.t("settings.notifications.permissions.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
<SettingsRow title="Errors" description="Show notification on errors" last>
|
||||
<SettingsRow
|
||||
title={language.t("settings.notifications.errors.title")}
|
||||
description={language.t("settings.notifications.errors.description")}
|
||||
last
|
||||
>
|
||||
<Switch
|
||||
checked={errorNotify()}
|
||||
onChange={(checked) => {
|
||||
@@ -82,19 +94,22 @@ const NotificationsTab: Component = () => {
|
||||
}}
|
||||
hideLabel
|
||||
>
|
||||
Errors
|
||||
{language.t("settings.notifications.errors.title")}
|
||||
</Switch>
|
||||
</SettingsRow>
|
||||
</Card>
|
||||
|
||||
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>Sounds</h4>
|
||||
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>{language.t("settings.notifications.sounds")}</h4>
|
||||
<Card>
|
||||
<SettingsRow title="Agent Completion Sound" description="Sound to play when agent completes">
|
||||
<SettingsRow
|
||||
title={language.t("settings.notifications.agentSound.title")}
|
||||
description={language.t("settings.notifications.agentSound.description")}
|
||||
>
|
||||
<Select
|
||||
options={SOUND_OPTIONS}
|
||||
current={SOUND_OPTIONS.find((o) => o.value === agentSound())}
|
||||
value={(o) => o.value}
|
||||
label={(o) => o.label}
|
||||
label={(o) => language.t(o.labelKey)}
|
||||
onSelect={(o) => {
|
||||
if (o) {
|
||||
setAgentSound(o.value)
|
||||
@@ -106,12 +121,15 @@ const NotificationsTab: Component = () => {
|
||||
triggerVariant="settings"
|
||||
/>
|
||||
</SettingsRow>
|
||||
<SettingsRow title="Permission Request Sound" description="Sound to play on permission requests">
|
||||
<SettingsRow
|
||||
title={language.t("settings.notifications.permSound.title")}
|
||||
description={language.t("settings.notifications.permSound.description")}
|
||||
>
|
||||
<Select
|
||||
options={SOUND_OPTIONS}
|
||||
current={SOUND_OPTIONS.find((o) => o.value === permSound())}
|
||||
value={(o) => o.value}
|
||||
label={(o) => o.label}
|
||||
label={(o) => language.t(o.labelKey)}
|
||||
onSelect={(o) => {
|
||||
if (o) {
|
||||
setPermSound(o.value)
|
||||
@@ -123,12 +141,16 @@ const NotificationsTab: Component = () => {
|
||||
triggerVariant="settings"
|
||||
/>
|
||||
</SettingsRow>
|
||||
<SettingsRow title="Error Sound" description="Sound to play on errors" last>
|
||||
<SettingsRow
|
||||
title={language.t("settings.notifications.errorSound.title")}
|
||||
description={language.t("settings.notifications.errorSound.description")}
|
||||
last
|
||||
>
|
||||
<Select
|
||||
options={SOUND_OPTIONS}
|
||||
current={SOUND_OPTIONS.find((o) => o.value === errorSound())}
|
||||
value={(o) => o.value}
|
||||
label={(o) => o.label}
|
||||
label={(o) => language.t(o.labelKey)}
|
||||
onSelect={(o) => {
|
||||
if (o) {
|
||||
setErrorSound(o.value)
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { Component } from "solid-js"
|
||||
import { useLanguage } from "../../context/language"
|
||||
|
||||
const PromptsTab: Component = () => {
|
||||
const language = useLanguage()
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div
|
||||
@@ -19,10 +22,8 @@ const PromptsTab: Component = () => {
|
||||
"line-height": "1.5",
|
||||
}}
|
||||
>
|
||||
<strong style={{ color: "var(--vscode-foreground)" }}>This section is not implemented yet.</strong> It will
|
||||
contain configuration options and explanatory text related to the selected settings category. During
|
||||
reimplementation, use this space to validate layout, spacing, scrolling behavior, and navigation state before
|
||||
wiring up real controls.
|
||||
<strong style={{ color: "var(--vscode-foreground)" }}>{language.t("settings.notImplemented")}</strong>{" "}
|
||||
{language.t("settings.notImplemented.description")}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,6 +5,7 @@ import { Button } from "@kilocode/kilo-ui/button"
|
||||
import { IconButton } from "@kilocode/kilo-ui/icon-button"
|
||||
import { useConfig } from "../../context/config"
|
||||
import { useProvider } from "../../context/provider"
|
||||
import { useLanguage } from "../../context/language"
|
||||
import { ModelSelectorBase } from "../chat/ModelSelector"
|
||||
import type { ModelSelection } from "../../types/messages"
|
||||
import SettingsRow from "./SettingsRow"
|
||||
@@ -29,6 +30,7 @@ function parseModelConfig(raw: string | undefined): ModelSelection | null {
|
||||
const ProvidersTab: Component = () => {
|
||||
const { config, updateConfig } = useConfig()
|
||||
const provider = useProvider()
|
||||
const language = useLanguage()
|
||||
|
||||
const providerOptions = createMemo<ProviderOption[]>(() =>
|
||||
Object.keys(provider.providers())
|
||||
@@ -70,18 +72,21 @@ const ProvidersTab: Component = () => {
|
||||
<div>
|
||||
{/* Model selection */}
|
||||
<Card>
|
||||
<SettingsRow title="Default Model" description="Primary model for conversations">
|
||||
<SettingsRow
|
||||
title={language.t("settings.providers.defaultModel.title")}
|
||||
description={language.t("settings.providers.defaultModel.description")}
|
||||
>
|
||||
<ModelSelectorBase
|
||||
value={parseModelConfig(config().model)}
|
||||
onSelect={handleModelSelect("model")}
|
||||
placement="bottom-start"
|
||||
allowClear
|
||||
clearLabel="Not set (use server default)"
|
||||
clearLabel={language.t("settings.providers.notSet")}
|
||||
/>
|
||||
</SettingsRow>
|
||||
<SettingsRow
|
||||
title="Small Model"
|
||||
description="Lightweight model for title generation and other quick tasks"
|
||||
title={language.t("settings.providers.smallModel.title")}
|
||||
description={language.t("settings.providers.smallModel.description")}
|
||||
last
|
||||
>
|
||||
<ModelSelectorBase
|
||||
@@ -89,13 +94,13 @@ const ProvidersTab: Component = () => {
|
||||
onSelect={handleModelSelect("small_model")}
|
||||
placement="bottom-start"
|
||||
allowClear
|
||||
clearLabel="Not set (use server default)"
|
||||
clearLabel={language.t("settings.providers.notSet")}
|
||||
/>
|
||||
</SettingsRow>
|
||||
</Card>
|
||||
|
||||
{/* Disabled providers */}
|
||||
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>Disabled Providers</h4>
|
||||
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>{language.t("settings.providers.disabled")}</h4>
|
||||
<Card>
|
||||
<div
|
||||
style={{
|
||||
@@ -105,7 +110,7 @@ const ProvidersTab: Component = () => {
|
||||
"border-bottom": "1px solid var(--border-weak-base)",
|
||||
}}
|
||||
>
|
||||
Providers to hide from the provider list
|
||||
{language.t("settings.providers.disabled.description")}
|
||||
</div>
|
||||
<div
|
||||
style={{
|
||||
@@ -138,7 +143,7 @@ const ProvidersTab: Component = () => {
|
||||
}
|
||||
}}
|
||||
>
|
||||
Add
|
||||
{language.t("common.add")}
|
||||
</Button>
|
||||
</div>
|
||||
<For each={disabledProviders()}>
|
||||
@@ -166,7 +171,7 @@ const ProvidersTab: Component = () => {
|
||||
</Card>
|
||||
|
||||
{/* Enabled providers (allowlist) */}
|
||||
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>Enabled Providers (Allowlist)</h4>
|
||||
<h4 style={{ "margin-top": "16px", "margin-bottom": "8px" }}>{language.t("settings.providers.enabled")}</h4>
|
||||
<Card>
|
||||
<div
|
||||
style={{
|
||||
@@ -176,7 +181,7 @@ const ProvidersTab: Component = () => {
|
||||
"border-bottom": "1px solid var(--border-weak-base)",
|
||||
}}
|
||||
>
|
||||
If set, only these providers will be available (exclusive allowlist)
|
||||
{language.t("settings.providers.enabled.description")}
|
||||
</div>
|
||||
<div
|
||||
style={{
|
||||
@@ -209,7 +214,7 @@ const ProvidersTab: Component = () => {
|
||||
}
|
||||
}}
|
||||
>
|
||||
Add
|
||||
{language.t("common.add")}
|
||||
</Button>
|
||||
</div>
|
||||
<For each={enabledProviders()}>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { Component } from "solid-js"
|
||||
import { useLanguage } from "../../context/language"
|
||||
|
||||
const TerminalTab: Component = () => {
|
||||
const language = useLanguage()
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div
|
||||
@@ -19,10 +22,8 @@ const TerminalTab: Component = () => {
|
||||
"line-height": "1.5",
|
||||
}}
|
||||
>
|
||||
<strong style={{ color: "var(--vscode-foreground)" }}>This section is not implemented yet.</strong> It will
|
||||
contain configuration options and explanatory text related to the selected settings category. During
|
||||
reimplementation, use this space to validate layout, spacing, scrolling behavior, and navigation state before
|
||||
wiring up real controls.
|
||||
<strong style={{ color: "var(--vscode-foreground)" }}>{language.t("settings.notImplemented")}</strong>{" "}
|
||||
{language.t("settings.notImplemented.description")}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -80,6 +80,7 @@ interface SessionStore {
|
||||
parts: Record<string, Part[]> // messageID -> parts
|
||||
todos: Record<string, TodoItem[]> // sessionID -> todos
|
||||
modelSelections: Record<string, ModelSelection> // sessionID -> model
|
||||
agentSelections: Record<string, string> // sessionID -> agent name
|
||||
}
|
||||
|
||||
interface SessionContextValue {
|
||||
@@ -122,10 +123,12 @@ interface SessionContextValue {
|
||||
totalCost: Accessor<number>
|
||||
contextUsage: Accessor<ContextUsage | undefined>
|
||||
|
||||
// Agent/mode selection
|
||||
// Agent/mode selection (per-session)
|
||||
agents: Accessor<AgentInfo[]>
|
||||
selectedAgent: Accessor<string>
|
||||
selectAgent: (name: string) => void
|
||||
getSessionAgent: (sessionID: string) => string
|
||||
getSessionModel: (sessionID: string) => ModelSelection | null
|
||||
|
||||
// Actions
|
||||
sendMessage: (text: string, providerID?: string, modelID?: string, files?: FileAttachment[]) => void
|
||||
@@ -177,15 +180,18 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
// Agents (modes) loaded from the CLI backend
|
||||
const [agents, setAgents] = createSignal<AgentInfo[]>([])
|
||||
const [defaultAgent, setDefaultAgent] = createSignal("code")
|
||||
const [selectedAgentName, setSelectedAgentName] = createSignal("code")
|
||||
|
||||
// Store for sessions, messages, parts, todos, modelSelections
|
||||
// Pending agent selection for before a session exists (mirrors pendingModelSelection)
|
||||
const [pendingAgentSelection, setPendingAgentSelection] = createSignal<string | null>(null)
|
||||
|
||||
// Store for sessions, messages, parts, todos, modelSelections, agentSelections
|
||||
const [store, setStore] = createStore<SessionStore>({
|
||||
sessions: {},
|
||||
messages: {},
|
||||
parts: {},
|
||||
todos: {},
|
||||
modelSelections: {},
|
||||
agentSelections: {},
|
||||
})
|
||||
|
||||
// Keep pending selection in sync with provider default until the user
|
||||
@@ -219,6 +225,15 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
return pendingModelSelection()
|
||||
})
|
||||
|
||||
// Per-session agent selection
|
||||
const selectedAgentName = createMemo<string>(() => {
|
||||
const sessionID = currentSessionID()
|
||||
if (sessionID) {
|
||||
return store.agentSelections[sessionID] ?? defaultAgent()
|
||||
}
|
||||
return pendingAgentSelection() ?? defaultAgent()
|
||||
})
|
||||
|
||||
function selectModel(providerID: string, modelID: string) {
|
||||
const selection: ModelSelection = { providerID, modelID }
|
||||
const id = currentSessionID()
|
||||
@@ -239,9 +254,9 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
}
|
||||
setAgents(message.agents)
|
||||
setDefaultAgent(message.defaultAgent)
|
||||
// Only override if the user hasn't explicitly selected an agent
|
||||
if (selectedAgentName() === "code" || !message.agents.some((a) => a.name === selectedAgentName())) {
|
||||
setSelectedAgentName(message.defaultAgent)
|
||||
// Initialize pending agent if not yet set by the user
|
||||
if (!pendingAgentSelection()) {
|
||||
setPendingAgentSelection(message.defaultAgent)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -349,6 +364,13 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
setPendingWasUserSet(false)
|
||||
}
|
||||
|
||||
// Transfer pending agent selection to the new session
|
||||
const pendingAgent = pendingAgentSelection()
|
||||
if (pendingAgent && !store.agentSelections[session.id]) {
|
||||
setStore("agentSelections", session.id, pendingAgent)
|
||||
setPendingAgentSelection(null)
|
||||
}
|
||||
|
||||
setCurrentSessionID(session.id)
|
||||
})
|
||||
}
|
||||
@@ -543,6 +565,12 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
delete selections[sessionID]
|
||||
}),
|
||||
)
|
||||
setStore(
|
||||
"agentSelections",
|
||||
produce((selections) => {
|
||||
delete selections[sessionID]
|
||||
}),
|
||||
)
|
||||
// Clean up pending questions/errors for the deleted session
|
||||
const deleted = questions()
|
||||
.filter((q) => q.sessionID === sessionID)
|
||||
@@ -567,7 +595,12 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
|
||||
// Actions
|
||||
function selectAgent(name: string) {
|
||||
setSelectedAgentName(name)
|
||||
const id = currentSessionID()
|
||||
if (id) {
|
||||
setStore("agentSelections", id, name)
|
||||
} else {
|
||||
setPendingAgentSelection(name)
|
||||
}
|
||||
}
|
||||
|
||||
function sendMessage(text: string, providerID?: string, modelID?: string, files?: FileAttachment[]) {
|
||||
@@ -688,6 +721,7 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
// Reset pending selection to default for the new session
|
||||
setPendingModelSelection(provider.defaultSelection())
|
||||
setPendingWasUserSet(false)
|
||||
setPendingAgentSelection(defaultAgent())
|
||||
vscode.postMessage({ type: "createSession" })
|
||||
}
|
||||
|
||||
@@ -701,6 +735,7 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
setQuestionErrors(new Set<string>())
|
||||
setPendingModelSelection(provider.defaultSelection())
|
||||
setPendingWasUserSet(false)
|
||||
setPendingAgentSelection(defaultAgent())
|
||||
vscode.postMessage({ type: "clearSession" })
|
||||
}
|
||||
|
||||
@@ -828,6 +863,8 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
agents,
|
||||
selectedAgent: selectedAgentName,
|
||||
selectAgent,
|
||||
getSessionAgent: (sessionID: string) => store.agentSelections[sessionID] ?? defaultAgent(),
|
||||
getSessionModel: (sessionID: string) => store.modelSelections[sessionID] ?? provider.defaultSelection(),
|
||||
sendMessage,
|
||||
abort,
|
||||
compact,
|
||||
|
||||
@@ -797,6 +797,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.prefix": "إذا كان لديك أي أسئلة أو ملاحظات، لا تتردد في فتح مشكلة على",
|
||||
"settings.aboutKiloCode.feedback.or": "أو",
|
||||
"settings.aboutKiloCode.support.prefix": "لأسئلة الفوترة أو الحساب، تواصل مع دعم العملاء على",
|
||||
"settings.aboutKiloCode.resetSettings.title": "إعادة تعيين الإعدادات",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"إعادة تعيين جميع إعدادات إضافة Kilo Code إلى قيمها الافتراضية. لا يؤثر هذا على تكوين CLI أو الواجهة الخلفية.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "إعادة تعيين جميع الإعدادات",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "الأوضاع",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -817,4 +821,114 @@ export const dict = {
|
||||
"settings.language.description": 'اختر اللغة لواجهة Kilo Code. "تلقائي" يستخدم لغة عرض VS Code.',
|
||||
"settings.language.auto": "تلقائي (لغة VS Code)",
|
||||
"settings.language.current": "الحالية:",
|
||||
|
||||
"common.add": "إضافة",
|
||||
"common.default": "افتراضي",
|
||||
"common.choose": "اختر…",
|
||||
"settings.notImplemented": "هذا القسم لم يتم تنفيذه بعد.",
|
||||
"settings.notImplemented.description": "سيحتوي على خيارات التكوين والنص التوضيحي.",
|
||||
"settings.autocomplete.autoTrigger.title": "تمكين الإكمال التلقائي المضمّن",
|
||||
"settings.autocomplete.autoTrigger.description": "عرض اقتراحات الإكمال المضمّن تلقائياً أثناء الكتابة",
|
||||
"settings.autocomplete.smartKeybinding.title": "تمكين اختصار المهمة المضمّنة الذكي",
|
||||
"settings.autocomplete.smartKeybinding.description": "استخدام اختصار ذكي لتشغيل المهام المضمّنة",
|
||||
"settings.autocomplete.chatAutocomplete.title": "تمكين الإكمال التلقائي للدردشة",
|
||||
"settings.autocomplete.chatAutocomplete.description": "عرض اقتراحات الإكمال التلقائي في مربع الدردشة",
|
||||
"settings.notifications.agent.title": "إكمال الوكيل",
|
||||
"settings.notifications.agent.description": "إظهار إشعار عند إكمال الوكيل لمهمة",
|
||||
"settings.notifications.permissions.title": "طلبات الأذونات",
|
||||
"settings.notifications.permissions.description": "إظهار إشعار عند طلبات الأذونات",
|
||||
"settings.notifications.errors.title": "أخطاء",
|
||||
"settings.notifications.errors.description": "إظهار إشعار عند الأخطاء",
|
||||
"settings.notifications.sounds": "أصوات",
|
||||
"settings.notifications.agentSound.title": "صوت إكمال الوكيل",
|
||||
"settings.notifications.agentSound.description": "الصوت عند إكمال الوكيل",
|
||||
"settings.notifications.permSound.title": "صوت طلب الأذونات",
|
||||
"settings.notifications.permSound.description": "الصوت عند طلبات الأذونات",
|
||||
"settings.notifications.errorSound.title": "صوت الخطأ",
|
||||
"settings.notifications.errorSound.description": "الصوت عند الأخطاء",
|
||||
"settings.notifications.sound.default": "افتراضي",
|
||||
"settings.notifications.sound.none": "بدون",
|
||||
"settings.experimental.share.title": "وضع المشاركة",
|
||||
"settings.experimental.share.description": "سلوك مشاركة الجلسة",
|
||||
"settings.experimental.share.manual": "يدوي",
|
||||
"settings.experimental.share.auto": "تلقائي",
|
||||
"settings.experimental.share.disabled": "معطل",
|
||||
"settings.experimental.formatter.title": "المنسق",
|
||||
"settings.experimental.formatter.description": "تمكين منسق الكود التلقائي",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "تمكين تكامل بروتوكول خادم اللغة",
|
||||
"settings.experimental.pasteSummary.title": "تعطيل ملخص اللصق",
|
||||
"settings.experimental.pasteSummary.description": "عدم تلخيص المحتوى الملصق الكبير",
|
||||
"settings.experimental.batch.title": "أداة دفعية",
|
||||
"settings.experimental.batch.description": "تمكين المعالجة الدفعية لاستدعاءات الأدوات",
|
||||
"settings.experimental.continueOnDeny.title": "المتابعة عند الرفض",
|
||||
"settings.experimental.continueOnDeny.description": "متابعة حلقة الوكيل عند رفض الإذن",
|
||||
"settings.experimental.mcpTimeout.title": "مهلة MCP (مللي ثانية)",
|
||||
"settings.experimental.mcpTimeout.description": "مهلة طلبات خادم MCP بالمللي ثانية",
|
||||
"settings.experimental.toolToggles": "مفاتيح الأدوات",
|
||||
"settings.agentBehaviour.defaultAgent.title": "الوكيل الافتراضي",
|
||||
"settings.agentBehaviour.defaultAgent.description": "الوكيل المستخدم عند عدم التحديد",
|
||||
"settings.agentBehaviour.selectAgent": "اختر وكيلاً للتهيئة…",
|
||||
"settings.agentBehaviour.modelOverride.title": "تجاوز النموذج",
|
||||
"settings.agentBehaviour.modelOverride.description": "تجاوز النموذج الافتراضي لهذا الوكيل",
|
||||
"settings.agentBehaviour.prompt.title": "موجه مخصص",
|
||||
"settings.agentBehaviour.prompt.description": "موجه نظام إضافي لهذا الوكيل",
|
||||
"settings.agentBehaviour.temperature.title": "الحرارة",
|
||||
"settings.agentBehaviour.temperature.description": "حرارة أخذ العينات (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "معامل أخذ العينات النووي (0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "الحد الأقصى للخطوات",
|
||||
"settings.agentBehaviour.maxSteps.description": "الحد الأقصى لتكرارات الوكيل",
|
||||
"settings.agentBehaviour.skillPaths": "مسارات مجلدات المهارات",
|
||||
"settings.agentBehaviour.skillUrls": "عناوين URL للمهارات",
|
||||
"settings.agentBehaviour.instructionFiles": "ملفات تعليمات إضافية",
|
||||
"settings.agentBehaviour.instructionFiles.description": "مسارات ملفات التعليمات الإضافية في موجه النظام",
|
||||
"settings.agentBehaviour.mcpEmpty": "لم يتم تهيئة خوادم MCP. قم بتحرير ملف تهيئة opencode لإضافة خوادم MCP.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "تُدار سير العمل عبر ملفات سير العمل في مساحة العمل.",
|
||||
"settings.agentBehaviour.notImplemented": "لم يتم التنفيذ بعد.",
|
||||
"settings.autoApprove.setAll": "تعيين جميع الأذونات",
|
||||
"settings.autoApprove.level.allow": "سماح",
|
||||
"settings.autoApprove.level.ask": "سؤال",
|
||||
"settings.autoApprove.level.deny": "رفض",
|
||||
"settings.autoApprove.tool.read": "قراءة محتويات الملفات",
|
||||
"settings.autoApprove.tool.edit": "تحرير أو إنشاء الملفات",
|
||||
"settings.autoApprove.tool.glob": "البحث عن ملفات بنمط",
|
||||
"settings.autoApprove.tool.grep": "البحث في محتويات الملفات",
|
||||
"settings.autoApprove.tool.list": "عرض محتويات المجلد",
|
||||
"settings.autoApprove.tool.bash": "تنفيذ أوامر الصدفة",
|
||||
"settings.autoApprove.tool.task": "إنشاء مهام وكيل فرعي",
|
||||
"settings.autoApprove.tool.skill": "تنفيذ المهارات",
|
||||
"settings.autoApprove.tool.lsp": "عمليات خادم اللغة",
|
||||
"settings.autoApprove.tool.todoread": "قراءة قوائم المهام",
|
||||
"settings.autoApprove.tool.todowrite": "كتابة قوائم المهام",
|
||||
"settings.autoApprove.tool.webfetch": "جلب صفحات الويب",
|
||||
"settings.autoApprove.tool.websearch": "البحث في الويب",
|
||||
"settings.autoApprove.tool.codesearch": "البحث في قاعدة الكود",
|
||||
"settings.autoApprove.tool.external_directory": "الوصول للملفات خارج مساحة العمل",
|
||||
"settings.autoApprove.tool.doom_loop": "المتابعة بعد الإخفاقات المتكررة",
|
||||
"settings.checkpoints.enable.title": "تمكين اللقطات",
|
||||
"settings.checkpoints.enable.description": "إنشاء نقاط فحص قبل تحرير الملفات",
|
||||
"settings.context.autoCompaction.title": "ضغط تلقائي",
|
||||
"settings.context.autoCompaction.description": "ضغط السياق تلقائياً عند امتلائه",
|
||||
"settings.context.prune.title": "تقليم المخرجات القديمة",
|
||||
"settings.context.prune.description": "إزالة مخرجات الأدوات القديمة أثناء الضغط",
|
||||
"settings.context.watcherPatterns": "أنماط تجاهل مراقب الملفات",
|
||||
"settings.context.watcherPatterns.description": "أنماط glob للملفات التي يجب على المراقب تجاهلها",
|
||||
"settings.display.username.title": "اسم المستخدم",
|
||||
"settings.display.username.description": "اسم مستخدم مخصص في المحادثات",
|
||||
"settings.display.layout.title": "التخطيط",
|
||||
"settings.display.layout.description": "وضع التخطيط لواجهة الدردشة",
|
||||
"settings.display.layout.auto": "تلقائي",
|
||||
"settings.display.layout.stretch": "تمديد",
|
||||
"settings.providers.defaultModel.title": "النموذج الافتراضي",
|
||||
"settings.providers.defaultModel.description": "النموذج الأساسي للمحادثات",
|
||||
"settings.providers.smallModel.title": "نموذج صغير",
|
||||
"settings.providers.smallModel.description": "نموذج خفيف لتوليد العناوين والمهام السريعة",
|
||||
"settings.providers.disabled": "مزودون معطلون",
|
||||
"settings.providers.disabled.description": "مزودون لإخفائهم من القائمة",
|
||||
"settings.providers.enabled": "مزودون مفعلون (قائمة بيضاء)",
|
||||
"settings.providers.enabled.description": "إذا تم التعيين، فقط هؤلاء المزودون سيكونون متاحين",
|
||||
"settings.providers.notSet": "غير محدد (استخدام الافتراضي)",
|
||||
"dialog.model.notSet": "غير محدد",
|
||||
"profile.personalAccount": "حساب شخصي",
|
||||
}
|
||||
|
||||
@@ -805,6 +805,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.or": "ou",
|
||||
"settings.aboutKiloCode.support.prefix":
|
||||
"Para questões de cobrança ou conta, entre em contato com o Suporte ao Cliente em",
|
||||
"settings.aboutKiloCode.resetSettings.title": "Redefinir Configurações",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Redefinir todas as configurações da extensão Kilo Code para os valores padrão. Isso não afeta a configuração do CLI ou do backend.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "Redefinir Todas as Configurações",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "Modos",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -827,4 +831,118 @@ export const dict = {
|
||||
'Escolha o idioma da interface do Kilo Code. "Auto" usa o idioma de exibição do VS Code.',
|
||||
"settings.language.auto": "Auto (idioma do VS Code)",
|
||||
"settings.language.current": "Atual:",
|
||||
|
||||
"common.add": "Adicionar",
|
||||
"common.default": "Padrão",
|
||||
"common.choose": "Escolher…",
|
||||
"settings.notImplemented": "Esta seção ainda não foi implementada.",
|
||||
"settings.notImplemented.description": "Conterá opções de configuração e texto explicativo.",
|
||||
"settings.autocomplete.autoTrigger.title": "Ativar completamento automático inline",
|
||||
"settings.autocomplete.autoTrigger.description":
|
||||
"Mostrar automaticamente sugestões de completamento inline ao digitar",
|
||||
"settings.autocomplete.smartKeybinding.title": "Ativar atalho inteligente de tarefa inline",
|
||||
"settings.autocomplete.smartKeybinding.description": "Usar um atalho inteligente para acionar tarefas inline",
|
||||
"settings.autocomplete.chatAutocomplete.title": "Ativar autocompletar do chat",
|
||||
"settings.autocomplete.chatAutocomplete.description": "Mostrar sugestões de autocompletar no campo de chat",
|
||||
"settings.notifications.agent.title": "Conclusão do agente",
|
||||
"settings.notifications.agent.description": "Mostrar notificação quando o agente conclui uma tarefa",
|
||||
"settings.notifications.permissions.title": "Solicitações de permissão",
|
||||
"settings.notifications.permissions.description": "Mostrar notificação em solicitações de permissão",
|
||||
"settings.notifications.errors.title": "Erros",
|
||||
"settings.notifications.errors.description": "Mostrar notificação em erros",
|
||||
"settings.notifications.sounds": "Sons",
|
||||
"settings.notifications.agentSound.title": "Som de conclusão do agente",
|
||||
"settings.notifications.agentSound.description": "Som ao concluir o agente",
|
||||
"settings.notifications.permSound.title": "Som de solicitação de permissão",
|
||||
"settings.notifications.permSound.description": "Som em solicitações de permissão",
|
||||
"settings.notifications.errorSound.title": "Som de erro",
|
||||
"settings.notifications.errorSound.description": "Som em erros",
|
||||
"settings.notifications.sound.default": "Padrão",
|
||||
"settings.notifications.sound.none": "Nenhum",
|
||||
"settings.experimental.share.title": "Modo de compartilhamento",
|
||||
"settings.experimental.share.description": "Comportamento do compartilhamento de sessão",
|
||||
"settings.experimental.share.manual": "Manual",
|
||||
"settings.experimental.share.auto": "Automático",
|
||||
"settings.experimental.share.disabled": "Desativado",
|
||||
"settings.experimental.formatter.title": "Formatador",
|
||||
"settings.experimental.formatter.description": "Ativar formatador automático de código",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "Ativar integração do protocolo de servidor de linguagem",
|
||||
"settings.experimental.pasteSummary.title": "Desativar resumo de colagem",
|
||||
"settings.experimental.pasteSummary.description": "Não resumir conteúdo colado grande",
|
||||
"settings.experimental.batch.title": "Ferramenta em lote",
|
||||
"settings.experimental.batch.description": "Ativar processamento em lote de chamadas de ferramentas",
|
||||
"settings.experimental.continueOnDeny.title": "Continuar ao negar",
|
||||
"settings.experimental.continueOnDeny.description": "Continuar o loop do agente quando uma permissão é negada",
|
||||
"settings.experimental.mcpTimeout.title": "Tempo limite MCP (ms)",
|
||||
"settings.experimental.mcpTimeout.description": "Tempo limite para solicitações do servidor MCP em milissegundos",
|
||||
"settings.experimental.toolToggles": "Alternadores de ferramentas",
|
||||
"settings.agentBehaviour.defaultAgent.title": "Agente padrão",
|
||||
"settings.agentBehaviour.defaultAgent.description": "Agente a usar quando nenhum é especificado",
|
||||
"settings.agentBehaviour.selectAgent": "Selecionar um agente para configurar…",
|
||||
"settings.agentBehaviour.modelOverride.title": "Substituição de modelo",
|
||||
"settings.agentBehaviour.modelOverride.description": "Substituir o modelo padrão para este agente",
|
||||
"settings.agentBehaviour.prompt.title": "Prompt personalizado",
|
||||
"settings.agentBehaviour.prompt.description": "Prompt de sistema adicional para este agente",
|
||||
"settings.agentBehaviour.temperature.title": "Temperatura",
|
||||
"settings.agentBehaviour.temperature.description": "Temperatura de amostragem (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"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.skillPaths": "Caminhos de pastas de habilidades",
|
||||
"settings.agentBehaviour.skillUrls": "URLs de habilidades",
|
||||
"settings.agentBehaviour.instructionFiles": "Arquivos de instruções adicionais",
|
||||
"settings.agentBehaviour.instructionFiles.description":
|
||||
"Caminhos para arquivos de instruções adicionais no prompt do sistema",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"Nenhum servidor MCP configurado. Edite o arquivo de configuração do opencode para adicionar servidores MCP.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder":
|
||||
"Fluxos de trabalho são gerenciados por arquivos de fluxo de trabalho no espaço de trabalho.",
|
||||
"settings.agentBehaviour.notImplemented": "Ainda não implementado.",
|
||||
"settings.autoApprove.setAll": "Definir todas as permissões",
|
||||
"settings.autoApprove.level.allow": "Permitir",
|
||||
"settings.autoApprove.level.ask": "Perguntar",
|
||||
"settings.autoApprove.level.deny": "Negar",
|
||||
"settings.autoApprove.tool.read": "Ler conteúdo de arquivos",
|
||||
"settings.autoApprove.tool.edit": "Editar ou criar arquivos",
|
||||
"settings.autoApprove.tool.glob": "Encontrar arquivos por padrão",
|
||||
"settings.autoApprove.tool.grep": "Pesquisar conteúdo de arquivos",
|
||||
"settings.autoApprove.tool.list": "Listar conteúdo do diretório",
|
||||
"settings.autoApprove.tool.bash": "Executar comandos shell",
|
||||
"settings.autoApprove.tool.task": "Criar tarefas de sub-agente",
|
||||
"settings.autoApprove.tool.skill": "Executar habilidades",
|
||||
"settings.autoApprove.tool.lsp": "Operações do servidor de linguagem",
|
||||
"settings.autoApprove.tool.todoread": "Ler listas de tarefas",
|
||||
"settings.autoApprove.tool.todowrite": "Escrever listas de tarefas",
|
||||
"settings.autoApprove.tool.webfetch": "Buscar páginas web",
|
||||
"settings.autoApprove.tool.websearch": "Pesquisar na web",
|
||||
"settings.autoApprove.tool.codesearch": "Pesquisar no código",
|
||||
"settings.autoApprove.tool.external_directory": "Acessar arquivos fora do espaço de trabalho",
|
||||
"settings.autoApprove.tool.doom_loop": "Continuar após falhas repetidas",
|
||||
"settings.checkpoints.enable.title": "Ativar snapshots",
|
||||
"settings.checkpoints.enable.description": "Criar pontos de verificação antes de editar arquivos",
|
||||
"settings.context.autoCompaction.title": "Compactação automática",
|
||||
"settings.context.autoCompaction.description": "Compactar automaticamente o contexto quando estiver cheio",
|
||||
"settings.context.prune.title": "Remover saídas antigas",
|
||||
"settings.context.prune.description": "Remover saídas antigas de ferramentas durante a compactação",
|
||||
"settings.context.watcherPatterns": "Padrões de ignorar do observador",
|
||||
"settings.context.watcherPatterns.description": "Padrões glob para arquivos que o observador deve ignorar",
|
||||
"settings.display.username.title": "Nome de usuário",
|
||||
"settings.display.username.description": "Nome de usuário personalizado nas conversas",
|
||||
"settings.display.layout.title": "Layout",
|
||||
"settings.display.layout.description": "Modo de layout para a interface de chat",
|
||||
"settings.display.layout.auto": "Automático",
|
||||
"settings.display.layout.stretch": "Esticar",
|
||||
"settings.providers.defaultModel.title": "Modelo padrão",
|
||||
"settings.providers.defaultModel.description": "Modelo principal para conversas",
|
||||
"settings.providers.smallModel.title": "Modelo pequeno",
|
||||
"settings.providers.smallModel.description": "Modelo leve para geração de títulos e tarefas rápidas",
|
||||
"settings.providers.disabled": "Provedores desativados",
|
||||
"settings.providers.disabled.description": "Provedores a ocultar da lista",
|
||||
"settings.providers.enabled": "Provedores ativados (lista branca)",
|
||||
"settings.providers.enabled.description": "Se definido, apenas estes provedores estarão disponíveis",
|
||||
"settings.providers.notSet": "Não definido (usar padrão do servidor)",
|
||||
"dialog.model.notSet": "Não definido",
|
||||
"profile.personalAccount": "Conta pessoal",
|
||||
}
|
||||
|
||||
@@ -831,6 +831,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.prefix": "Ako imate pitanja ili povratne informacije, slobodno otvorite issue na",
|
||||
"settings.aboutKiloCode.feedback.or": "ili",
|
||||
"settings.aboutKiloCode.support.prefix": "Za pitanja o naplati ili računu, kontaktirajte korisničku podršku na",
|
||||
"settings.aboutKiloCode.resetSettings.title": "Resetovanje postavki",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Resetujte sve postavke Kilo Code ekstenzije na zadane vrijednosti. Ovo ne utiče na CLI ili backend konfiguraciju.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "Resetuj sve postavke",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "Modovi",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -852,4 +856,115 @@ export const dict = {
|
||||
"settings.language.description": 'Odaberite jezik za Kilo Code sučelje. "Auto" koristi jezik prikaza VS Code-a.',
|
||||
"settings.language.auto": "Auto (VS Code jezik)",
|
||||
"settings.language.current": "Trenutni:",
|
||||
|
||||
"common.add": "Dodaj",
|
||||
"common.default": "Zadano",
|
||||
"common.choose": "Odaberi…",
|
||||
"settings.notImplemented": "Ovaj dio još nije implementiran.",
|
||||
"settings.notImplemented.description": "Sadržavat će opcije konfiguracije i objašnjenje.",
|
||||
"settings.autocomplete.autoTrigger.title": "Omogući automatsko inline dovršavanje",
|
||||
"settings.autocomplete.autoTrigger.description": "Automatski prikaži prijedloge inline dovršavanja tokom tipkanja",
|
||||
"settings.autocomplete.smartKeybinding.title": "Omogući pametnu prečicu inline zadatka",
|
||||
"settings.autocomplete.smartKeybinding.description": "Koristi pametnu prečicu za pokretanje inline zadataka",
|
||||
"settings.autocomplete.chatAutocomplete.title": "Omogući automatsko dovršavanje chata",
|
||||
"settings.autocomplete.chatAutocomplete.description": "Prikaži prijedloge automatskog dovršavanja u polju chata",
|
||||
"settings.notifications.agent.title": "Završetak agenta",
|
||||
"settings.notifications.agent.description": "Prikaži obavijest kada agent završi zadatak",
|
||||
"settings.notifications.permissions.title": "Zahtjevi za dozvolu",
|
||||
"settings.notifications.permissions.description": "Prikaži obavijest pri zahtjevima za dozvolu",
|
||||
"settings.notifications.errors.title": "Greške",
|
||||
"settings.notifications.errors.description": "Prikaži obavijest pri greškama",
|
||||
"settings.notifications.sounds": "Zvukovi",
|
||||
"settings.notifications.agentSound.title": "Zvuk završetka agenta",
|
||||
"settings.notifications.agentSound.description": "Zvuk pri završetku agenta",
|
||||
"settings.notifications.permSound.title": "Zvuk zahtjeva za dozvolu",
|
||||
"settings.notifications.permSound.description": "Zvuk pri zahtjevima za dozvolu",
|
||||
"settings.notifications.errorSound.title": "Zvuk greške",
|
||||
"settings.notifications.errorSound.description": "Zvuk pri greškama",
|
||||
"settings.notifications.sound.default": "Zadano",
|
||||
"settings.notifications.sound.none": "Ništa",
|
||||
"settings.experimental.share.title": "Način dijeljenja",
|
||||
"settings.experimental.share.description": "Ponašanje dijeljenja sesije",
|
||||
"settings.experimental.share.manual": "Ručno",
|
||||
"settings.experimental.share.auto": "Automatski",
|
||||
"settings.experimental.share.disabled": "Onemogućeno",
|
||||
"settings.experimental.formatter.title": "Formater",
|
||||
"settings.experimental.formatter.description": "Omogući automatsko formatiranje koda",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "Omogući integraciju jezičkog servera",
|
||||
"settings.experimental.pasteSummary.title": "Onemogući sažetak lijepljenja",
|
||||
"settings.experimental.pasteSummary.description": "Ne sažimaj veliki zalijepljeni sadržaj",
|
||||
"settings.experimental.batch.title": "Batch alat",
|
||||
"settings.experimental.batch.description": "Omogući batch obradu poziva alata",
|
||||
"settings.experimental.continueOnDeny.title": "Nastavi pri odbijanju",
|
||||
"settings.experimental.continueOnDeny.description": "Nastavi petlju agenta kada je dozvola odbijena",
|
||||
"settings.experimental.mcpTimeout.title": "MCP istek vremena (ms)",
|
||||
"settings.experimental.mcpTimeout.description": "Istek vremena za MCP server zahtjeve u milisekundama",
|
||||
"settings.experimental.toolToggles": "Prekidači alata",
|
||||
"settings.agentBehaviour.defaultAgent.title": "Zadani agent",
|
||||
"settings.agentBehaviour.defaultAgent.description": "Agent koji se koristi kada nijedan nije naveden",
|
||||
"settings.agentBehaviour.selectAgent": "Odaberi agenta za konfiguraciju…",
|
||||
"settings.agentBehaviour.modelOverride.title": "Zamjena modela",
|
||||
"settings.agentBehaviour.modelOverride.description": "Zamijeni zadani model za ovog agenta",
|
||||
"settings.agentBehaviour.prompt.title": "Prilagođeni prompt",
|
||||
"settings.agentBehaviour.prompt.description": "Dodatni sistemski prompt za ovog agenta",
|
||||
"settings.agentBehaviour.temperature.title": "Temperatura",
|
||||
"settings.agentBehaviour.temperature.description": "Temperatura uzorkovanja (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "Nucleus parametar uzorkovanja (0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "Maks. koraci",
|
||||
"settings.agentBehaviour.maxSteps.description": "Maksimalne iteracije agenta",
|
||||
"settings.agentBehaviour.skillPaths": "Putanje mapa vještina",
|
||||
"settings.agentBehaviour.skillUrls": "URL-ovi vještina",
|
||||
"settings.agentBehaviour.instructionFiles": "Dodatne datoteke uputa",
|
||||
"settings.agentBehaviour.instructionFiles.description": "Putanje do dodatnih datoteka uputa u sistemskom promptu",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"Nema konfiguriranih MCP servera. Uredite konfiguracijsku datoteku opencode za dodavanje MCP servera.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "Tokovi rada se upravljaju putem datoteka tokova rada.",
|
||||
"settings.agentBehaviour.notImplemented": "Još nije implementirano.",
|
||||
"settings.autoApprove.setAll": "Postavi sve dozvole",
|
||||
"settings.autoApprove.level.allow": "Dozvoli",
|
||||
"settings.autoApprove.level.ask": "Pitaj",
|
||||
"settings.autoApprove.level.deny": "Odbij",
|
||||
"settings.autoApprove.tool.read": "Čitanje sadržaja datoteka",
|
||||
"settings.autoApprove.tool.edit": "Uređivanje ili kreiranje datoteka",
|
||||
"settings.autoApprove.tool.glob": "Pronalaženje datoteka po uzorku",
|
||||
"settings.autoApprove.tool.grep": "Pretraživanje sadržaja datoteka",
|
||||
"settings.autoApprove.tool.list": "Prikaz sadržaja direktorija",
|
||||
"settings.autoApprove.tool.bash": "Pokretanje shell naredbi",
|
||||
"settings.autoApprove.tool.task": "Kreiranje podzadataka agenta",
|
||||
"settings.autoApprove.tool.skill": "Pokretanje vještina",
|
||||
"settings.autoApprove.tool.lsp": "Operacije jezičkog servera",
|
||||
"settings.autoApprove.tool.todoread": "Čitanje popisa zadataka",
|
||||
"settings.autoApprove.tool.todowrite": "Pisanje popisa zadataka",
|
||||
"settings.autoApprove.tool.webfetch": "Dohvaćanje web stranica",
|
||||
"settings.autoApprove.tool.websearch": "Pretraživanje weba",
|
||||
"settings.autoApprove.tool.codesearch": "Pretraživanje baze koda",
|
||||
"settings.autoApprove.tool.external_directory": "Pristup datotekama izvan radnog prostora",
|
||||
"settings.autoApprove.tool.doom_loop": "Nastavi nakon ponovljenih neuspjeha",
|
||||
"settings.checkpoints.enable.title": "Omogući snimke",
|
||||
"settings.checkpoints.enable.description": "Kreiraj kontrolne točke prije uređivanja datoteka",
|
||||
"settings.context.autoCompaction.title": "Automatska kompresija",
|
||||
"settings.context.autoCompaction.description": "Automatski komprimiraj kontekst kada je pun",
|
||||
"settings.context.prune.title": "Očisti stare izlaze",
|
||||
"settings.context.prune.description": "Ukloni stare izlaze alata tokom kompresije",
|
||||
"settings.context.watcherPatterns": "Uzorci ignoriranja za promatrač datoteka",
|
||||
"settings.context.watcherPatterns.description": "Glob uzorci za datoteke koje promatrač treba ignorirati",
|
||||
"settings.display.username.title": "Korisničko ime",
|
||||
"settings.display.username.description": "Prilagođeno korisničko ime u razgovorima",
|
||||
"settings.display.layout.title": "Raspored",
|
||||
"settings.display.layout.description": "Način rasporeda za sučelje chata",
|
||||
"settings.display.layout.auto": "Automatski",
|
||||
"settings.display.layout.stretch": "Rastegni",
|
||||
"settings.providers.defaultModel.title": "Zadani model",
|
||||
"settings.providers.defaultModel.description": "Primarni model za razgovore",
|
||||
"settings.providers.smallModel.title": "Mali model",
|
||||
"settings.providers.smallModel.description": "Lagani model za generiranje naslova i brze zadatke",
|
||||
"settings.providers.disabled": "Onemogućeni pružatelji",
|
||||
"settings.providers.disabled.description": "Pružatelji za skrivanje s popisa",
|
||||
"settings.providers.enabled": "Omogućeni pružatelji (bijela lista)",
|
||||
"settings.providers.enabled.description": "Ako je postavljeno, samo ovi pružatelji će biti dostupni",
|
||||
"settings.providers.notSet": "Nije postavljeno (koristi zadano servera)",
|
||||
"dialog.model.notSet": "Nije postavljeno",
|
||||
"profile.personalAccount": "Osobni račun",
|
||||
}
|
||||
|
||||
@@ -804,6 +804,10 @@ export const dict = {
|
||||
"Hvis du har spørgsmål eller feedback, er du velkommen til at åbne en issue på",
|
||||
"settings.aboutKiloCode.feedback.or": "eller",
|
||||
"settings.aboutKiloCode.support.prefix": "For fakturerings- eller kontospørgsmål, kontakt kundesupport på",
|
||||
"settings.aboutKiloCode.resetSettings.title": "Nulstil indstillinger",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Nulstil alle Kilo Code-udvidelsesindstillinger til standardværdierne. Dette påvirker ikke CLI- eller backend-konfiguration.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "Nulstil alle indstillinger",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "Tilstande",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -825,4 +829,115 @@ export const dict = {
|
||||
"settings.language.description": 'Vælg sproget til Kilo Code-brugerfladen. "Auto" bruger VS Codes visningssprog.',
|
||||
"settings.language.auto": "Auto (VS Code-sprog)",
|
||||
"settings.language.current": "Nuværende:",
|
||||
|
||||
"common.add": "Tilføj",
|
||||
"common.default": "Standard",
|
||||
"common.choose": "Vælg…",
|
||||
"settings.notImplemented": "Denne sektion er endnu ikke implementeret.",
|
||||
"settings.notImplemented.description": "Den vil indeholde konfigurationsmuligheder og forklarende tekst.",
|
||||
"settings.autocomplete.autoTrigger.title": "Aktiver automatisk inline-fuldførelse",
|
||||
"settings.autocomplete.autoTrigger.description": "Vis automatisk inline-fuldførelsesforslag under indtastning",
|
||||
"settings.autocomplete.smartKeybinding.title": "Aktiver smart inline-opgave-tastaturgenvej",
|
||||
"settings.autocomplete.smartKeybinding.description": "Brug en smart tastaturgenvej til at udløse inline-opgaver",
|
||||
"settings.autocomplete.chatAutocomplete.title": "Aktiver chat-autofuldførelse",
|
||||
"settings.autocomplete.chatAutocomplete.description": "Vis autofuldførelsesforslag i chatfeltet",
|
||||
"settings.notifications.agent.title": "Agentafslutning",
|
||||
"settings.notifications.agent.description": "Vis notifikation, når agenten fuldfører en opgave",
|
||||
"settings.notifications.permissions.title": "Tilladelsesanmodninger",
|
||||
"settings.notifications.permissions.description": "Vis notifikation ved tilladelsesanmodninger",
|
||||
"settings.notifications.errors.title": "Fejl",
|
||||
"settings.notifications.errors.description": "Vis notifikation ved fejl",
|
||||
"settings.notifications.sounds": "Lyde",
|
||||
"settings.notifications.agentSound.title": "Agentafslutningslyd",
|
||||
"settings.notifications.agentSound.description": "Lyd ved agentafslutning",
|
||||
"settings.notifications.permSound.title": "Tilladelsesanmodningslyd",
|
||||
"settings.notifications.permSound.description": "Lyd ved tilladelsesanmodninger",
|
||||
"settings.notifications.errorSound.title": "Fejllyd",
|
||||
"settings.notifications.errorSound.description": "Lyd ved fejl",
|
||||
"settings.notifications.sound.default": "Standard",
|
||||
"settings.notifications.sound.none": "Ingen",
|
||||
"settings.experimental.share.title": "Delingstilstand",
|
||||
"settings.experimental.share.description": "Adfærd for sessionsdeling",
|
||||
"settings.experimental.share.manual": "Manuel",
|
||||
"settings.experimental.share.auto": "Automatisk",
|
||||
"settings.experimental.share.disabled": "Deaktiveret",
|
||||
"settings.experimental.formatter.title": "Formater",
|
||||
"settings.experimental.formatter.description": "Aktiver automatisk kodeformatering",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "Aktiver sprogserverprotokol-integration",
|
||||
"settings.experimental.pasteSummary.title": "Deaktiver indsæt-resumé",
|
||||
"settings.experimental.pasteSummary.description": "Resumér ikke stort indsat indhold",
|
||||
"settings.experimental.batch.title": "Batchværktøj",
|
||||
"settings.experimental.batch.description": "Aktiver batchbehandling af flere værktøjskald",
|
||||
"settings.experimental.continueOnDeny.title": "Fortsæt ved afvisning",
|
||||
"settings.experimental.continueOnDeny.description": "Fortsæt agentløkken, når en tilladelse afvises",
|
||||
"settings.experimental.mcpTimeout.title": "MCP-timeout (ms)",
|
||||
"settings.experimental.mcpTimeout.description": "Timeout for MCP-serveranmodninger i millisekunder",
|
||||
"settings.experimental.toolToggles": "Værktøjsskift",
|
||||
"settings.agentBehaviour.defaultAgent.title": "Standardagent",
|
||||
"settings.agentBehaviour.defaultAgent.description": "Agent til brug, når ingen er angivet",
|
||||
"settings.agentBehaviour.selectAgent": "Vælg en agent at konfigurere…",
|
||||
"settings.agentBehaviour.modelOverride.title": "Modeloverstyring",
|
||||
"settings.agentBehaviour.modelOverride.description": "Tilsidesæt standardmodellen for denne agent",
|
||||
"settings.agentBehaviour.prompt.title": "Brugerdefineret prompt",
|
||||
"settings.agentBehaviour.prompt.description": "Yderligere systemprompt for denne agent",
|
||||
"settings.agentBehaviour.temperature.title": "Temperatur",
|
||||
"settings.agentBehaviour.temperature.description": "Samplingtemperatur (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "Nucleus-samplingparameter (0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "Maks. trin",
|
||||
"settings.agentBehaviour.maxSteps.description": "Maksimale agentiterationer",
|
||||
"settings.agentBehaviour.skillPaths": "Skill-mappestier",
|
||||
"settings.agentBehaviour.skillUrls": "Skill-URL'er",
|
||||
"settings.agentBehaviour.instructionFiles": "Yderligere instruktionsfiler",
|
||||
"settings.agentBehaviour.instructionFiles.description": "Stier til yderligere instruktionsfiler i systemprompten",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"Ingen MCP-servere konfigureret. Rediger opencode-konfigurationsfilen for at tilføje MCP-servere.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "Workflows administreres via workflow-filer i dit arbejdsområde.",
|
||||
"settings.agentBehaviour.notImplemented": "Endnu ikke implementeret.",
|
||||
"settings.autoApprove.setAll": "Indstil alle tilladelser",
|
||||
"settings.autoApprove.level.allow": "Tillad",
|
||||
"settings.autoApprove.level.ask": "Spørg",
|
||||
"settings.autoApprove.level.deny": "Afvis",
|
||||
"settings.autoApprove.tool.read": "Læs filindhold",
|
||||
"settings.autoApprove.tool.edit": "Rediger eller opret filer",
|
||||
"settings.autoApprove.tool.glob": "Find filer efter mønster",
|
||||
"settings.autoApprove.tool.grep": "Søg i filindhold",
|
||||
"settings.autoApprove.tool.list": "List mappeindhold",
|
||||
"settings.autoApprove.tool.bash": "Udfør shell-kommandoer",
|
||||
"settings.autoApprove.tool.task": "Opret underagentopgaver",
|
||||
"settings.autoApprove.tool.skill": "Udfør skills",
|
||||
"settings.autoApprove.tool.lsp": "Sprogserveroperationer",
|
||||
"settings.autoApprove.tool.todoread": "Læs opgavelister",
|
||||
"settings.autoApprove.tool.todowrite": "Skriv opgavelister",
|
||||
"settings.autoApprove.tool.webfetch": "Hent websider",
|
||||
"settings.autoApprove.tool.websearch": "Søg på nettet",
|
||||
"settings.autoApprove.tool.codesearch": "Søg i kodebasen",
|
||||
"settings.autoApprove.tool.external_directory": "Adgang til filer uden for arbejdsområdet",
|
||||
"settings.autoApprove.tool.doom_loop": "Fortsæt efter gentagne fejl",
|
||||
"settings.checkpoints.enable.title": "Aktiver snapshots",
|
||||
"settings.checkpoints.enable.description": "Opret kontrolpunkter før filredigeringer",
|
||||
"settings.context.autoCompaction.title": "Automatisk komprimering",
|
||||
"settings.context.autoCompaction.description": "Komprimér automatisk kontekst, når den er fuld",
|
||||
"settings.context.prune.title": "Fjern gamle output",
|
||||
"settings.context.prune.description": "Fjern gamle værktøjsoutput under komprimering",
|
||||
"settings.context.watcherPatterns": "Filvagt-ignormønstre",
|
||||
"settings.context.watcherPatterns.description": "Glob-mønstre for filer, som vagten skal ignorere",
|
||||
"settings.display.username.title": "Brugernavn",
|
||||
"settings.display.username.description": "Brugerdefineret brugernavn i samtaler",
|
||||
"settings.display.layout.title": "Layout",
|
||||
"settings.display.layout.description": "Layouttilstand for chatgrænsefladen",
|
||||
"settings.display.layout.auto": "Automatisk",
|
||||
"settings.display.layout.stretch": "Stræk",
|
||||
"settings.providers.defaultModel.title": "Standardmodel",
|
||||
"settings.providers.defaultModel.description": "Primær model til samtaler",
|
||||
"settings.providers.smallModel.title": "Lille model",
|
||||
"settings.providers.smallModel.description": "Letvægtsmodel til titelgenerering og hurtige opgaver",
|
||||
"settings.providers.disabled": "Deaktiverede udbydere",
|
||||
"settings.providers.disabled.description": "Udbydere at skjule fra listen",
|
||||
"settings.providers.enabled": "Aktiverede udbydere (hvidliste)",
|
||||
"settings.providers.enabled.description": "Hvis angivet, er kun disse udbydere tilgængelige",
|
||||
"settings.providers.notSet": "Ikke angivet (brug serverstandard)",
|
||||
"dialog.model.notSet": "Ikke angivet",
|
||||
"profile.personalAccount": "Personlig konto",
|
||||
}
|
||||
|
||||
@@ -810,6 +810,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.or": "oder",
|
||||
"settings.aboutKiloCode.support.prefix":
|
||||
"Bei Abrechnungs- oder Kontofragen wenden Sie sich an den Kundensupport unter",
|
||||
"settings.aboutKiloCode.resetSettings.title": "Einstellungen zurücksetzen",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Alle Kilo Code-Erweiterungseinstellungen auf Standardwerte zurücksetzen. Dies hat keinen Einfluss auf die CLI- oder Backend-Konfiguration.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "Alle Einstellungen zurücksetzen",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "Modi",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -832,4 +836,121 @@ export const dict = {
|
||||
'Wählen Sie die Sprache für die Kilo Code Oberfläche. „Auto" verwendet die VS Code Anzeigesprache.',
|
||||
"settings.language.auto": "Auto (VS Code Sprache)",
|
||||
"settings.language.current": "Aktuell:",
|
||||
|
||||
"common.add": "Hinzufügen",
|
||||
"common.default": "Standard",
|
||||
"common.choose": "Auswählen…",
|
||||
"settings.notImplemented": "Dieser Bereich ist noch nicht implementiert.",
|
||||
"settings.notImplemented.description":
|
||||
"Er wird Konfigurationsoptionen und erklärende Texte zur ausgewählten Einstellungskategorie enthalten.",
|
||||
"settings.autocomplete.autoTrigger.title": "Automatische Inline-Vervollständigung aktivieren",
|
||||
"settings.autocomplete.autoTrigger.description":
|
||||
"Inline-Vervollständigungsvorschläge beim Tippen automatisch anzeigen",
|
||||
"settings.autocomplete.smartKeybinding.title": "Intelligente Inline-Aufgaben-Tastenkombination aktivieren",
|
||||
"settings.autocomplete.smartKeybinding.description":
|
||||
"Eine intelligente Tastenkombination zum Auslösen von Inline-Aufgaben verwenden",
|
||||
"settings.autocomplete.chatAutocomplete.title": "Chat-Textfeld-Autovervollständigung aktivieren",
|
||||
"settings.autocomplete.chatAutocomplete.description": "Autovervollständigungsvorschläge im Chat-Textfeld anzeigen",
|
||||
"settings.notifications.agent.title": "Agent-Abschluss",
|
||||
"settings.notifications.agent.description": "Benachrichtigung anzeigen, wenn der Agent eine Aufgabe abschließt",
|
||||
"settings.notifications.permissions.title": "Berechtigungsanfragen",
|
||||
"settings.notifications.permissions.description": "Benachrichtigung bei Berechtigungsanfragen anzeigen",
|
||||
"settings.notifications.errors.title": "Fehler",
|
||||
"settings.notifications.errors.description": "Benachrichtigung bei Fehlern anzeigen",
|
||||
"settings.notifications.sounds": "Töne",
|
||||
"settings.notifications.agentSound.title": "Agent-Abschlusston",
|
||||
"settings.notifications.agentSound.description": "Ton bei Agent-Abschluss abspielen",
|
||||
"settings.notifications.permSound.title": "Berechtigungsanfrageton",
|
||||
"settings.notifications.permSound.description": "Ton bei Berechtigungsanfragen abspielen",
|
||||
"settings.notifications.errorSound.title": "Fehlerton",
|
||||
"settings.notifications.errorSound.description": "Ton bei Fehlern abspielen",
|
||||
"settings.notifications.sound.default": "Standard",
|
||||
"settings.notifications.sound.none": "Kein",
|
||||
"settings.experimental.share.title": "Freigabemodus",
|
||||
"settings.experimental.share.description": "Verhalten der Sitzungsfreigabe",
|
||||
"settings.experimental.share.manual": "Manuell",
|
||||
"settings.experimental.share.auto": "Automatisch",
|
||||
"settings.experimental.share.disabled": "Deaktiviert",
|
||||
"settings.experimental.formatter.title": "Formatierer",
|
||||
"settings.experimental.formatter.description": "Automatischen Code-Formatierer aktivieren",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "Language-Server-Protokoll-Integration aktivieren",
|
||||
"settings.experimental.pasteSummary.title": "Einfüge-Zusammenfassung deaktivieren",
|
||||
"settings.experimental.pasteSummary.description": "Große eingefügte Inhalte nicht zusammenfassen",
|
||||
"settings.experimental.batch.title": "Batch-Werkzeug",
|
||||
"settings.experimental.batch.description": "Bündelung mehrerer Werkzeugaufrufe aktivieren",
|
||||
"settings.experimental.continueOnDeny.title": "Bei Ablehnung fortfahren",
|
||||
"settings.experimental.continueOnDeny.description":
|
||||
"Agent-Schleife fortsetzen, wenn eine Berechtigung abgelehnt wird",
|
||||
"settings.experimental.mcpTimeout.title": "MCP-Zeitlimit (ms)",
|
||||
"settings.experimental.mcpTimeout.description": "Zeitlimit für MCP-Server-Anfragen in Millisekunden",
|
||||
"settings.experimental.toolToggles": "Werkzeug-Schalter",
|
||||
"settings.agentBehaviour.defaultAgent.title": "Standard-Agent",
|
||||
"settings.agentBehaviour.defaultAgent.description": "Agent, der verwendet wird, wenn keiner angegeben ist",
|
||||
"settings.agentBehaviour.selectAgent": "Agent zum Konfigurieren auswählen…",
|
||||
"settings.agentBehaviour.modelOverride.title": "Modell-Überschreibung",
|
||||
"settings.agentBehaviour.modelOverride.description": "Standardmodell für diesen Agent überschreiben",
|
||||
"settings.agentBehaviour.prompt.title": "Benutzerdefinierter Prompt",
|
||||
"settings.agentBehaviour.prompt.description": "Zusätzlicher System-Prompt für diesen Agent",
|
||||
"settings.agentBehaviour.temperature.title": "Temperatur",
|
||||
"settings.agentBehaviour.temperature.description": "Sampling-Temperatur (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "Nucleus-Sampling-Parameter (0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "Max. Schritte",
|
||||
"settings.agentBehaviour.maxSteps.description": "Maximale Agent-Iterationen",
|
||||
"settings.agentBehaviour.skillPaths": "Skill-Ordnerpfade",
|
||||
"settings.agentBehaviour.skillUrls": "Skill-URLs",
|
||||
"settings.agentBehaviour.instructionFiles": "Zusätzliche Anweisungsdateien",
|
||||
"settings.agentBehaviour.instructionFiles.description": "Pfade zu zusätzlichen Anweisungsdateien im System-Prompt",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"Keine MCP-Server konfiguriert. Bearbeiten Sie die opencode-Konfigurationsdatei, um MCP-Server hinzuzufügen.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder":
|
||||
"Workflows werden über Workflow-Dateien in Ihrem Arbeitsbereich verwaltet.",
|
||||
"settings.agentBehaviour.notImplemented": "Noch nicht implementiert.",
|
||||
"settings.autoApprove.setAll": "Alle Berechtigungen festlegen",
|
||||
"settings.autoApprove.level.allow": "Erlauben",
|
||||
"settings.autoApprove.level.ask": "Fragen",
|
||||
"settings.autoApprove.level.deny": "Ablehnen",
|
||||
"settings.autoApprove.tool.read": "Dateiinhalte lesen",
|
||||
"settings.autoApprove.tool.edit": "Dateien bearbeiten oder erstellen",
|
||||
"settings.autoApprove.tool.glob": "Dateien nach Muster suchen",
|
||||
"settings.autoApprove.tool.grep": "Dateiinhalte durchsuchen",
|
||||
"settings.autoApprove.tool.list": "Verzeichnisinhalte auflisten",
|
||||
"settings.autoApprove.tool.bash": "Shell-Befehle ausführen",
|
||||
"settings.autoApprove.tool.task": "Unter-Agent-Aufgaben erstellen",
|
||||
"settings.autoApprove.tool.skill": "Skills ausführen",
|
||||
"settings.autoApprove.tool.lsp": "Sprachserver-Operationen",
|
||||
"settings.autoApprove.tool.todoread": "Aufgabenlisten lesen",
|
||||
"settings.autoApprove.tool.todowrite": "Aufgabenlisten schreiben",
|
||||
"settings.autoApprove.tool.webfetch": "Webseiten abrufen",
|
||||
"settings.autoApprove.tool.websearch": "Im Web suchen",
|
||||
"settings.autoApprove.tool.codesearch": "Codebasis durchsuchen",
|
||||
"settings.autoApprove.tool.external_directory": "Auf Dateien außerhalb des Arbeitsbereichs zugreifen",
|
||||
"settings.autoApprove.tool.doom_loop": "Nach wiederholten Fehlern fortfahren",
|
||||
"settings.checkpoints.enable.title": "Snapshots aktivieren",
|
||||
"settings.checkpoints.enable.description":
|
||||
"Prüfpunkte vor Dateibearbeitungen erstellen, um vorherige Zustände wiederherstellen zu können",
|
||||
"settings.context.autoCompaction.title": "Automatische Komprimierung",
|
||||
"settings.context.autoCompaction.description": "Kontext automatisch komprimieren, wenn er voll ist",
|
||||
"settings.context.prune.title": "Alte Ausgaben bereinigen",
|
||||
"settings.context.prune.description": "Alte Werkzeugausgaben während der Komprimierung entfernen",
|
||||
"settings.context.watcherPatterns": "Datei-Watcher-Ignorierungsmuster",
|
||||
"settings.context.watcherPatterns.description": "Glob-Muster für Dateien, die der Watcher ignorieren soll",
|
||||
"settings.display.username.title": "Benutzername",
|
||||
"settings.display.username.description": "Benutzerdefinierter Benutzername in Gesprächen",
|
||||
"settings.display.layout.title": "Layout",
|
||||
"settings.display.layout.description": "Layout-Modus für die Chat-Oberfläche",
|
||||
"settings.display.layout.auto": "Automatisch",
|
||||
"settings.display.layout.stretch": "Gestreckt",
|
||||
"settings.providers.defaultModel.title": "Standardmodell",
|
||||
"settings.providers.defaultModel.description": "Primäres Modell für Gespräche",
|
||||
"settings.providers.smallModel.title": "Kleines Modell",
|
||||
"settings.providers.smallModel.description": "Leichtgewichtiges Modell für Titelgenerierung und schnelle Aufgaben",
|
||||
"settings.providers.disabled": "Deaktivierte Anbieter",
|
||||
"settings.providers.disabled.description": "Anbieter aus der Anbieterliste ausblenden",
|
||||
"settings.providers.enabled": "Aktivierte Anbieter (Whitelist)",
|
||||
"settings.providers.enabled.description": "Wenn gesetzt, sind nur diese Anbieter verfügbar (exklusive Whitelist)",
|
||||
"settings.providers.notSet": "Nicht festgelegt (Server-Standard verwenden)",
|
||||
"dialog.model.notSet": "Nicht festgelegt",
|
||||
"profile.personalAccount": "Persönliches Konto",
|
||||
} satisfies Partial<Record<Keys, string>>
|
||||
|
||||
@@ -836,6 +836,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.prefix": "If you have any questions or feedback, feel free to open an issue on",
|
||||
"settings.aboutKiloCode.feedback.or": "or",
|
||||
"settings.aboutKiloCode.support.prefix": "For billing or account questions, contact Customer Support at",
|
||||
"settings.aboutKiloCode.resetSettings.title": "Reset Settings",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Reset all Kilo Code extension settings to their default values. This does not affect CLI or backend configuration.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "Reset All Settings",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "Modes",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -858,4 +862,128 @@ export const dict = {
|
||||
'Choose the language for the Kilo Code UI. "Auto" uses your VS Code display language.',
|
||||
"settings.language.auto": "Auto (VS Code language)",
|
||||
"settings.language.current": "Current:",
|
||||
|
||||
"common.add": "Add",
|
||||
"common.default": "Default",
|
||||
"common.choose": "Choose…",
|
||||
|
||||
"settings.notImplemented": "This section is not implemented yet.",
|
||||
"settings.notImplemented.description":
|
||||
"It will contain configuration options and explanatory text related to the selected settings category. During reimplementation, use this space to validate layout, spacing, scrolling behavior, and navigation state before wiring up real controls.",
|
||||
|
||||
"settings.autocomplete.autoTrigger.title": "Enable automatic inline completions",
|
||||
"settings.autocomplete.autoTrigger.description": "Automatically show inline completion suggestions as you type",
|
||||
"settings.autocomplete.smartKeybinding.title": "Enable smart inline task keybinding",
|
||||
"settings.autocomplete.smartKeybinding.description": "Use a smart keybinding for triggering inline tasks",
|
||||
"settings.autocomplete.chatAutocomplete.title": "Enable chat textarea autocomplete",
|
||||
"settings.autocomplete.chatAutocomplete.description": "Show autocomplete suggestions in the chat textarea",
|
||||
|
||||
"settings.notifications.agent.title": "Agent Completion",
|
||||
"settings.notifications.agent.description": "Show notification when agent completes a task",
|
||||
"settings.notifications.permissions.title": "Permission Requests",
|
||||
"settings.notifications.permissions.description": "Show notification on permission requests",
|
||||
"settings.notifications.errors.title": "Errors",
|
||||
"settings.notifications.errors.description": "Show notification on errors",
|
||||
"settings.notifications.sounds": "Sounds",
|
||||
"settings.notifications.agentSound.title": "Agent Completion Sound",
|
||||
"settings.notifications.agentSound.description": "Sound to play when agent completes",
|
||||
"settings.notifications.permSound.title": "Permission Request Sound",
|
||||
"settings.notifications.permSound.description": "Sound to play on permission requests",
|
||||
"settings.notifications.errorSound.title": "Error Sound",
|
||||
"settings.notifications.errorSound.description": "Sound to play on errors",
|
||||
"settings.notifications.sound.default": "Default",
|
||||
"settings.notifications.sound.none": "None",
|
||||
|
||||
"settings.experimental.share.title": "Share Mode",
|
||||
"settings.experimental.share.description": "How session sharing behaves",
|
||||
"settings.experimental.share.manual": "Manual",
|
||||
"settings.experimental.share.auto": "Auto",
|
||||
"settings.experimental.share.disabled": "Disabled",
|
||||
"settings.experimental.formatter.title": "Formatter",
|
||||
"settings.experimental.formatter.description": "Enable the automatic code formatter",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "Enable language server protocol integration",
|
||||
"settings.experimental.pasteSummary.title": "Disable Paste Summary",
|
||||
"settings.experimental.pasteSummary.description": "Don't summarize large pasted content",
|
||||
"settings.experimental.batch.title": "Batch Tool",
|
||||
"settings.experimental.batch.description": "Enable batching of multiple tool calls",
|
||||
"settings.experimental.continueOnDeny.title": "Continue on Deny",
|
||||
"settings.experimental.continueOnDeny.description": "Continue the agent loop when a permission is denied",
|
||||
"settings.experimental.mcpTimeout.title": "MCP Timeout (ms)",
|
||||
"settings.experimental.mcpTimeout.description": "Timeout for MCP server requests in milliseconds",
|
||||
"settings.experimental.toolToggles": "Tool Toggles",
|
||||
|
||||
"settings.agentBehaviour.defaultAgent.title": "Default Agent",
|
||||
"settings.agentBehaviour.defaultAgent.description": "Agent to use when none is specified",
|
||||
"settings.agentBehaviour.selectAgent": "Select an agent to configure…",
|
||||
"settings.agentBehaviour.modelOverride.title": "Model Override",
|
||||
"settings.agentBehaviour.modelOverride.description": "Override the default model for this agent",
|
||||
"settings.agentBehaviour.prompt.title": "Custom Prompt",
|
||||
"settings.agentBehaviour.prompt.description": "Additional system prompt for this agent",
|
||||
"settings.agentBehaviour.temperature.title": "Temperature",
|
||||
"settings.agentBehaviour.temperature.description": "Sampling temperature (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "Nucleus sampling parameter (0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "Max Steps",
|
||||
"settings.agentBehaviour.maxSteps.description": "Maximum agentic iterations",
|
||||
"settings.agentBehaviour.skillPaths": "Skill Folder Paths",
|
||||
"settings.agentBehaviour.skillUrls": "Skill URLs",
|
||||
"settings.agentBehaviour.instructionFiles": "Additional Instruction Files",
|
||||
"settings.agentBehaviour.instructionFiles.description":
|
||||
"Paths to additional instruction files that are included in the system prompt",
|
||||
"settings.agentBehaviour.mcpEmpty": "No MCP servers configured. Edit the opencode config file to add MCP servers.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "Workflows are managed via workflow files in your workspace.",
|
||||
"settings.agentBehaviour.notImplemented": "Not yet implemented.",
|
||||
|
||||
"settings.autoApprove.setAll": "Set all permissions",
|
||||
"settings.autoApprove.level.allow": "Allow",
|
||||
"settings.autoApprove.level.ask": "Ask",
|
||||
"settings.autoApprove.level.deny": "Deny",
|
||||
"settings.autoApprove.tool.read": "Read file contents",
|
||||
"settings.autoApprove.tool.edit": "Edit or create files",
|
||||
"settings.autoApprove.tool.glob": "Find files by pattern",
|
||||
"settings.autoApprove.tool.grep": "Search file contents",
|
||||
"settings.autoApprove.tool.list": "List directory contents",
|
||||
"settings.autoApprove.tool.bash": "Execute shell commands",
|
||||
"settings.autoApprove.tool.task": "Create sub-agent tasks",
|
||||
"settings.autoApprove.tool.skill": "Execute skills",
|
||||
"settings.autoApprove.tool.lsp": "Language server operations",
|
||||
"settings.autoApprove.tool.todoread": "Read todo lists",
|
||||
"settings.autoApprove.tool.todowrite": "Write todo lists",
|
||||
"settings.autoApprove.tool.webfetch": "Fetch web pages",
|
||||
"settings.autoApprove.tool.websearch": "Search the web",
|
||||
"settings.autoApprove.tool.codesearch": "Search codebase",
|
||||
"settings.autoApprove.tool.external_directory": "Access files outside workspace",
|
||||
"settings.autoApprove.tool.doom_loop": "Continue after repeated failures",
|
||||
|
||||
"settings.checkpoints.enable.title": "Enable Snapshots",
|
||||
"settings.checkpoints.enable.description": "Create checkpoints before file edits so you can restore previous states",
|
||||
|
||||
"settings.context.autoCompaction.title": "Auto Compaction",
|
||||
"settings.context.autoCompaction.description": "Automatically compact context when it's full",
|
||||
"settings.context.prune.title": "Prune Old Outputs",
|
||||
"settings.context.prune.description": "Remove old tool outputs during compaction",
|
||||
"settings.context.watcherPatterns": "File Watcher Ignore Patterns",
|
||||
"settings.context.watcherPatterns.description": "Glob patterns for files the watcher should ignore",
|
||||
|
||||
"settings.display.username.title": "Username",
|
||||
"settings.display.username.description": "Custom username displayed in conversations",
|
||||
"settings.display.layout.title": "Layout",
|
||||
"settings.display.layout.description": "Layout mode for the chat interface",
|
||||
"settings.display.layout.auto": "Auto",
|
||||
"settings.display.layout.stretch": "Stretch",
|
||||
|
||||
"settings.providers.defaultModel.title": "Default Model",
|
||||
"settings.providers.defaultModel.description": "Primary model for conversations",
|
||||
"settings.providers.smallModel.title": "Small Model",
|
||||
"settings.providers.smallModel.description": "Lightweight model for title generation and other quick tasks",
|
||||
"settings.providers.disabled": "Disabled Providers",
|
||||
"settings.providers.disabled.description": "Providers to hide from the provider list",
|
||||
"settings.providers.enabled": "Enabled Providers (Allowlist)",
|
||||
"settings.providers.enabled.description": "If set, only these providers will be available (exclusive allowlist)",
|
||||
"settings.providers.notSet": "Not set (use server default)",
|
||||
|
||||
"dialog.model.notSet": "Not set",
|
||||
|
||||
"profile.personalAccount": "Personal Account",
|
||||
}
|
||||
|
||||
@@ -809,6 +809,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.prefix": "Si tienes preguntas o comentarios, abre un issue en",
|
||||
"settings.aboutKiloCode.feedback.or": "o",
|
||||
"settings.aboutKiloCode.support.prefix": "Para preguntas de facturación o cuenta, contacta al Soporte al Cliente en",
|
||||
"settings.aboutKiloCode.resetSettings.title": "Restablecer configuración",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Restablecer todas las configuraciones de la extensión Kilo Code a sus valores predeterminados. Esto no afecta la configuración del CLI o del backend.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "Restablecer toda la configuración",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "Modos",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -831,4 +835,117 @@ export const dict = {
|
||||
'Elige el idioma de la interfaz de Kilo Code. "Auto" utiliza el idioma de visualización de VS Code.',
|
||||
"settings.language.auto": "Auto (idioma de VS Code)",
|
||||
"settings.language.current": "Actual:",
|
||||
|
||||
"common.add": "Añadir",
|
||||
"common.default": "Predeterminado",
|
||||
"common.choose": "Elegir…",
|
||||
"settings.notImplemented": "Esta sección aún no está implementada.",
|
||||
"settings.notImplemented.description": "Contendrá opciones de configuración y texto explicativo.",
|
||||
"settings.autocomplete.autoTrigger.title": "Habilitar completado en línea automático",
|
||||
"settings.autocomplete.autoTrigger.description": "Mostrar automáticamente sugerencias de completado al escribir",
|
||||
"settings.autocomplete.smartKeybinding.title": "Habilitar atajo inteligente de tarea en línea",
|
||||
"settings.autocomplete.smartKeybinding.description": "Usar un atajo inteligente para activar tareas en línea",
|
||||
"settings.autocomplete.chatAutocomplete.title": "Habilitar autocompletado del chat",
|
||||
"settings.autocomplete.chatAutocomplete.description": "Mostrar sugerencias de autocompletado en el chat",
|
||||
"settings.notifications.agent.title": "Finalización del agente",
|
||||
"settings.notifications.agent.description": "Mostrar notificación cuando el agente completa una tarea",
|
||||
"settings.notifications.permissions.title": "Solicitudes de permiso",
|
||||
"settings.notifications.permissions.description": "Mostrar notificación en solicitudes de permiso",
|
||||
"settings.notifications.errors.title": "Errores",
|
||||
"settings.notifications.errors.description": "Mostrar notificación en errores",
|
||||
"settings.notifications.sounds": "Sonidos",
|
||||
"settings.notifications.agentSound.title": "Sonido de finalización del agente",
|
||||
"settings.notifications.agentSound.description": "Sonido a reproducir cuando el agente finaliza",
|
||||
"settings.notifications.permSound.title": "Sonido de solicitud de permiso",
|
||||
"settings.notifications.permSound.description": "Sonido a reproducir en solicitudes de permiso",
|
||||
"settings.notifications.errorSound.title": "Sonido de error",
|
||||
"settings.notifications.errorSound.description": "Sonido a reproducir en errores",
|
||||
"settings.notifications.sound.default": "Predeterminado",
|
||||
"settings.notifications.sound.none": "Ninguno",
|
||||
"settings.experimental.share.title": "Modo de compartir",
|
||||
"settings.experimental.share.description": "Comportamiento de compartir sesión",
|
||||
"settings.experimental.share.manual": "Manual",
|
||||
"settings.experimental.share.auto": "Automático",
|
||||
"settings.experimental.share.disabled": "Deshabilitado",
|
||||
"settings.experimental.formatter.title": "Formateador",
|
||||
"settings.experimental.formatter.description": "Habilitar el formateador automático de código",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "Habilitar integración del protocolo de servidor de lenguaje",
|
||||
"settings.experimental.pasteSummary.title": "Deshabilitar resumen de pegado",
|
||||
"settings.experimental.pasteSummary.description": "No resumir contenido pegado grande",
|
||||
"settings.experimental.batch.title": "Herramienta por lotes",
|
||||
"settings.experimental.batch.description": "Habilitar procesamiento por lotes de llamadas a herramientas",
|
||||
"settings.experimental.continueOnDeny.title": "Continuar al denegar",
|
||||
"settings.experimental.continueOnDeny.description": "Continuar el bucle del agente cuando se deniega un permiso",
|
||||
"settings.experimental.mcpTimeout.title": "Tiempo de espera MCP (ms)",
|
||||
"settings.experimental.mcpTimeout.description": "Tiempo de espera para solicitudes del servidor MCP en milisegundos",
|
||||
"settings.experimental.toolToggles": "Interruptores de herramientas",
|
||||
"settings.agentBehaviour.defaultAgent.title": "Agente predeterminado",
|
||||
"settings.agentBehaviour.defaultAgent.description": "Agente a usar cuando no se especifica ninguno",
|
||||
"settings.agentBehaviour.selectAgent": "Seleccionar un agente para configurar…",
|
||||
"settings.agentBehaviour.modelOverride.title": "Anulación de modelo",
|
||||
"settings.agentBehaviour.modelOverride.description": "Anular el modelo predeterminado para este agente",
|
||||
"settings.agentBehaviour.prompt.title": "Prompt personalizado",
|
||||
"settings.agentBehaviour.prompt.description": "Prompt de sistema adicional para este agente",
|
||||
"settings.agentBehaviour.temperature.title": "Temperatura",
|
||||
"settings.agentBehaviour.temperature.description": "Temperatura de muestreo (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"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.skillPaths": "Rutas de carpetas de habilidades",
|
||||
"settings.agentBehaviour.skillUrls": "URLs de habilidades",
|
||||
"settings.agentBehaviour.instructionFiles": "Archivos de instrucciones adicionales",
|
||||
"settings.agentBehaviour.instructionFiles.description":
|
||||
"Rutas a archivos de instrucciones adicionales incluidos en el prompt del sistema",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"No hay servidores MCP configurados. Edite el archivo de configuración de opencode para añadir servidores MCP.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder":
|
||||
"Los flujos de trabajo se gestionan mediante archivos de flujo de trabajo en su espacio de trabajo.",
|
||||
"settings.agentBehaviour.notImplemented": "Aún no implementado.",
|
||||
"settings.autoApprove.setAll": "Establecer todos los permisos",
|
||||
"settings.autoApprove.level.allow": "Permitir",
|
||||
"settings.autoApprove.level.ask": "Preguntar",
|
||||
"settings.autoApprove.level.deny": "Denegar",
|
||||
"settings.autoApprove.tool.read": "Leer contenido de archivos",
|
||||
"settings.autoApprove.tool.edit": "Editar o crear archivos",
|
||||
"settings.autoApprove.tool.glob": "Buscar archivos por patrón",
|
||||
"settings.autoApprove.tool.grep": "Buscar contenido de archivos",
|
||||
"settings.autoApprove.tool.list": "Listar contenido de directorio",
|
||||
"settings.autoApprove.tool.bash": "Ejecutar comandos de shell",
|
||||
"settings.autoApprove.tool.task": "Crear tareas de sub-agente",
|
||||
"settings.autoApprove.tool.skill": "Ejecutar habilidades",
|
||||
"settings.autoApprove.tool.lsp": "Operaciones del servidor de lenguaje",
|
||||
"settings.autoApprove.tool.todoread": "Leer listas de tareas",
|
||||
"settings.autoApprove.tool.todowrite": "Escribir listas de tareas",
|
||||
"settings.autoApprove.tool.webfetch": "Obtener páginas web",
|
||||
"settings.autoApprove.tool.websearch": "Buscar en la web",
|
||||
"settings.autoApprove.tool.codesearch": "Buscar en el código",
|
||||
"settings.autoApprove.tool.external_directory": "Acceder a archivos fuera del espacio de trabajo",
|
||||
"settings.autoApprove.tool.doom_loop": "Continuar tras fallos repetidos",
|
||||
"settings.checkpoints.enable.title": "Habilitar instantáneas",
|
||||
"settings.checkpoints.enable.description": "Crear puntos de control antes de editar archivos",
|
||||
"settings.context.autoCompaction.title": "Compactación automática",
|
||||
"settings.context.autoCompaction.description": "Compactar automáticamente el contexto cuando está lleno",
|
||||
"settings.context.prune.title": "Eliminar salidas antiguas",
|
||||
"settings.context.prune.description": "Eliminar salidas de herramientas antiguas durante la compactación",
|
||||
"settings.context.watcherPatterns": "Patrones de ignorar del observador",
|
||||
"settings.context.watcherPatterns.description": "Patrones glob para archivos que el observador debe ignorar",
|
||||
"settings.display.username.title": "Nombre de usuario",
|
||||
"settings.display.username.description": "Nombre de usuario personalizado en conversaciones",
|
||||
"settings.display.layout.title": "Diseño",
|
||||
"settings.display.layout.description": "Modo de diseño para la interfaz de chat",
|
||||
"settings.display.layout.auto": "Automático",
|
||||
"settings.display.layout.stretch": "Estirar",
|
||||
"settings.providers.defaultModel.title": "Modelo predeterminado",
|
||||
"settings.providers.defaultModel.description": "Modelo principal para conversaciones",
|
||||
"settings.providers.smallModel.title": "Modelo pequeño",
|
||||
"settings.providers.smallModel.description": "Modelo ligero para generación de títulos y tareas rápidas",
|
||||
"settings.providers.disabled": "Proveedores deshabilitados",
|
||||
"settings.providers.disabled.description": "Proveedores a ocultar de la lista de proveedores",
|
||||
"settings.providers.enabled": "Proveedores habilitados (lista blanca)",
|
||||
"settings.providers.enabled.description": "Si se establece, solo estos proveedores estarán disponibles",
|
||||
"settings.providers.notSet": "No establecido (usar predeterminado del servidor)",
|
||||
"dialog.model.notSet": "No establecido",
|
||||
"profile.personalAccount": "Cuenta personal",
|
||||
}
|
||||
|
||||
@@ -815,6 +815,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.or": "ou",
|
||||
"settings.aboutKiloCode.support.prefix":
|
||||
"Pour les questions de facturation ou de compte, contactez le support client à",
|
||||
"settings.aboutKiloCode.resetSettings.title": "Réinitialiser les paramètres",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Réinitialiser tous les paramètres de l'extension Kilo Code à leurs valeurs par défaut. Cela n'affecte pas la configuration CLI ou backend.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "Réinitialiser tous les paramètres",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "Modes",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -837,4 +841,119 @@ export const dict = {
|
||||
"Choisissez la langue de l'interface de Kilo Code. \"Auto\" utilise la langue d'affichage de VS Code.",
|
||||
"settings.language.auto": "Auto (langue VS Code)",
|
||||
"settings.language.current": "Actuelle :",
|
||||
|
||||
"common.add": "Ajouter",
|
||||
"common.default": "Par défaut",
|
||||
"common.choose": "Choisir…",
|
||||
"settings.notImplemented": "Cette section n'est pas encore implémentée.",
|
||||
"settings.notImplemented.description": "Elle contiendra des options de configuration et du texte explicatif.",
|
||||
"settings.autocomplete.autoTrigger.title": "Activer la complétion automatique en ligne",
|
||||
"settings.autocomplete.autoTrigger.description":
|
||||
"Afficher automatiquement les suggestions de complétion lors de la saisie",
|
||||
"settings.autocomplete.smartKeybinding.title": "Activer le raccourci intelligent de tâche en ligne",
|
||||
"settings.autocomplete.smartKeybinding.description":
|
||||
"Utiliser un raccourci intelligent pour déclencher les tâches en ligne",
|
||||
"settings.autocomplete.chatAutocomplete.title": "Activer l'autocomplétion du chat",
|
||||
"settings.autocomplete.chatAutocomplete.description": "Afficher les suggestions d'autocomplétion dans le chat",
|
||||
"settings.notifications.agent.title": "Achèvement de l'agent",
|
||||
"settings.notifications.agent.description": "Afficher une notification lorsque l'agent termine une tâche",
|
||||
"settings.notifications.permissions.title": "Demandes d'autorisation",
|
||||
"settings.notifications.permissions.description": "Afficher une notification lors des demandes d'autorisation",
|
||||
"settings.notifications.errors.title": "Erreurs",
|
||||
"settings.notifications.errors.description": "Afficher une notification en cas d'erreur",
|
||||
"settings.notifications.sounds": "Sons",
|
||||
"settings.notifications.agentSound.title": "Son d'achèvement de l'agent",
|
||||
"settings.notifications.agentSound.description": "Son à jouer lorsque l'agent termine",
|
||||
"settings.notifications.permSound.title": "Son de demande d'autorisation",
|
||||
"settings.notifications.permSound.description": "Son à jouer lors des demandes d'autorisation",
|
||||
"settings.notifications.errorSound.title": "Son d'erreur",
|
||||
"settings.notifications.errorSound.description": "Son à jouer en cas d'erreur",
|
||||
"settings.notifications.sound.default": "Par défaut",
|
||||
"settings.notifications.sound.none": "Aucun",
|
||||
"settings.experimental.share.title": "Mode de partage",
|
||||
"settings.experimental.share.description": "Comportement du partage de session",
|
||||
"settings.experimental.share.manual": "Manuel",
|
||||
"settings.experimental.share.auto": "Automatique",
|
||||
"settings.experimental.share.disabled": "Désactivé",
|
||||
"settings.experimental.formatter.title": "Formateur",
|
||||
"settings.experimental.formatter.description": "Activer le formateur de code automatique",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "Activer l'intégration du protocole de serveur de langage",
|
||||
"settings.experimental.pasteSummary.title": "Désactiver le résumé du collage",
|
||||
"settings.experimental.pasteSummary.description": "Ne pas résumer le contenu collé volumineux",
|
||||
"settings.experimental.batch.title": "Outil par lot",
|
||||
"settings.experimental.batch.description": "Activer le traitement par lot d'appels d'outils",
|
||||
"settings.experimental.continueOnDeny.title": "Continuer en cas de refus",
|
||||
"settings.experimental.continueOnDeny.description":
|
||||
"Continuer la boucle de l'agent lorsqu'une autorisation est refusée",
|
||||
"settings.experimental.mcpTimeout.title": "Délai MCP (ms)",
|
||||
"settings.experimental.mcpTimeout.description": "Délai des requêtes du serveur MCP en millisecondes",
|
||||
"settings.experimental.toolToggles": "Commutateurs d'outils",
|
||||
"settings.agentBehaviour.defaultAgent.title": "Agent par défaut",
|
||||
"settings.agentBehaviour.defaultAgent.description": "Agent à utiliser lorsqu'aucun n'est spécifié",
|
||||
"settings.agentBehaviour.selectAgent": "Sélectionner un agent à configurer…",
|
||||
"settings.agentBehaviour.modelOverride.title": "Remplacement du modèle",
|
||||
"settings.agentBehaviour.modelOverride.description": "Remplacer le modèle par défaut pour cet agent",
|
||||
"settings.agentBehaviour.prompt.title": "Prompt personnalisé",
|
||||
"settings.agentBehaviour.prompt.description": "Prompt système supplémentaire pour cet agent",
|
||||
"settings.agentBehaviour.temperature.title": "Température",
|
||||
"settings.agentBehaviour.temperature.description": "Température d'échantillonnage (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"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.skillPaths": "Chemins des dossiers de compétences",
|
||||
"settings.agentBehaviour.skillUrls": "URLs de compétences",
|
||||
"settings.agentBehaviour.instructionFiles": "Fichiers d'instructions supplémentaires",
|
||||
"settings.agentBehaviour.instructionFiles.description": "Chemins vers des fichiers d'instructions supplémentaires",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"Aucun serveur MCP configuré. Modifiez le fichier de configuration opencode pour ajouter des serveurs MCP.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder":
|
||||
"Les workflows sont gérés via les fichiers de workflow dans votre espace de travail.",
|
||||
"settings.agentBehaviour.notImplemented": "Pas encore implémenté.",
|
||||
"settings.autoApprove.setAll": "Définir toutes les autorisations",
|
||||
"settings.autoApprove.level.allow": "Autoriser",
|
||||
"settings.autoApprove.level.ask": "Demander",
|
||||
"settings.autoApprove.level.deny": "Refuser",
|
||||
"settings.autoApprove.tool.read": "Lire le contenu des fichiers",
|
||||
"settings.autoApprove.tool.edit": "Modifier ou créer des fichiers",
|
||||
"settings.autoApprove.tool.glob": "Rechercher des fichiers par motif",
|
||||
"settings.autoApprove.tool.grep": "Rechercher le contenu des fichiers",
|
||||
"settings.autoApprove.tool.list": "Lister le contenu du répertoire",
|
||||
"settings.autoApprove.tool.bash": "Exécuter des commandes shell",
|
||||
"settings.autoApprove.tool.task": "Créer des tâches de sous-agent",
|
||||
"settings.autoApprove.tool.skill": "Exécuter des compétences",
|
||||
"settings.autoApprove.tool.lsp": "Opérations du serveur de langage",
|
||||
"settings.autoApprove.tool.todoread": "Lire les listes de tâches",
|
||||
"settings.autoApprove.tool.todowrite": "Écrire les listes de tâches",
|
||||
"settings.autoApprove.tool.webfetch": "Récupérer des pages web",
|
||||
"settings.autoApprove.tool.websearch": "Rechercher sur le web",
|
||||
"settings.autoApprove.tool.codesearch": "Rechercher dans le code",
|
||||
"settings.autoApprove.tool.external_directory": "Accéder aux fichiers hors de l'espace de travail",
|
||||
"settings.autoApprove.tool.doom_loop": "Continuer après des échecs répétés",
|
||||
"settings.checkpoints.enable.title": "Activer les instantanés",
|
||||
"settings.checkpoints.enable.description": "Créer des points de contrôle avant les modifications de fichiers",
|
||||
"settings.context.autoCompaction.title": "Compaction automatique",
|
||||
"settings.context.autoCompaction.description": "Compacter automatiquement le contexte lorsqu'il est plein",
|
||||
"settings.context.prune.title": "Élaguer les anciennes sorties",
|
||||
"settings.context.prune.description": "Supprimer les anciennes sorties d'outils pendant la compaction",
|
||||
"settings.context.watcherPatterns": "Motifs d'ignorance de l'observateur",
|
||||
"settings.context.watcherPatterns.description": "Motifs glob pour les fichiers que l'observateur doit ignorer",
|
||||
"settings.display.username.title": "Nom d'utilisateur",
|
||||
"settings.display.username.description": "Nom d'utilisateur personnalisé dans les conversations",
|
||||
"settings.display.layout.title": "Disposition",
|
||||
"settings.display.layout.description": "Mode de disposition pour l'interface de chat",
|
||||
"settings.display.layout.auto": "Automatique",
|
||||
"settings.display.layout.stretch": "Étiré",
|
||||
"settings.providers.defaultModel.title": "Modèle par défaut",
|
||||
"settings.providers.defaultModel.description": "Modèle principal pour les conversations",
|
||||
"settings.providers.smallModel.title": "Petit modèle",
|
||||
"settings.providers.smallModel.description": "Modèle léger pour la génération de titres et tâches rapides",
|
||||
"settings.providers.disabled": "Fournisseurs désactivés",
|
||||
"settings.providers.disabled.description": "Fournisseurs à masquer de la liste",
|
||||
"settings.providers.enabled": "Fournisseurs activés (liste blanche)",
|
||||
"settings.providers.enabled.description": "Si défini, seuls ces fournisseurs seront disponibles",
|
||||
"settings.providers.notSet": "Non défini (utiliser la valeur par défaut du serveur)",
|
||||
"dialog.model.notSet": "Non défini",
|
||||
"profile.personalAccount": "Compte personnel",
|
||||
}
|
||||
|
||||
@@ -798,6 +798,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.or": "または",
|
||||
"settings.aboutKiloCode.support.prefix":
|
||||
"請求やアカウントに関するご質問は、カスタマーサポートまでお問い合わせください",
|
||||
"settings.aboutKiloCode.resetSettings.title": "設定をリセット",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Kilo Code拡張機能のすべての設定をデフォルト値にリセットします。CLIやバックエンドの設定には影響しません。",
|
||||
"settings.aboutKiloCode.resetSettings.button": "すべての設定をリセット",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "モード",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -819,4 +823,117 @@ export const dict = {
|
||||
"settings.language.description": "Kilo Code UIの言語を選択します。「自動」はVS Codeの表示言語を使用します。",
|
||||
"settings.language.auto": "自動(VS Code言語)",
|
||||
"settings.language.current": "現在:",
|
||||
|
||||
"common.add": "追加",
|
||||
"common.default": "デフォルト",
|
||||
"common.choose": "選択…",
|
||||
"settings.notImplemented": "このセクションはまだ実装されていません。",
|
||||
"settings.notImplemented.description":
|
||||
"選択した設定カテゴリに関連する設定オプションと説明テキストが含まれる予定です。",
|
||||
"settings.autocomplete.autoTrigger.title": "自動インライン補完を有効にする",
|
||||
"settings.autocomplete.autoTrigger.description": "入力時にインライン補完の提案を自動的に表示",
|
||||
"settings.autocomplete.smartKeybinding.title": "スマートインラインタスクキーバインドを有効にする",
|
||||
"settings.autocomplete.smartKeybinding.description": "インラインタスクをトリガーするスマートキーバインドを使用",
|
||||
"settings.autocomplete.chatAutocomplete.title": "チャットの自動補完を有効にする",
|
||||
"settings.autocomplete.chatAutocomplete.description": "チャットテキストエリアに自動補完の提案を表示",
|
||||
"settings.notifications.agent.title": "エージェント完了",
|
||||
"settings.notifications.agent.description": "エージェントがタスクを完了したら通知を表示",
|
||||
"settings.notifications.permissions.title": "権限リクエスト",
|
||||
"settings.notifications.permissions.description": "権限リクエスト時に通知を表示",
|
||||
"settings.notifications.errors.title": "エラー",
|
||||
"settings.notifications.errors.description": "エラー発生時に通知を表示",
|
||||
"settings.notifications.sounds": "サウンド",
|
||||
"settings.notifications.agentSound.title": "エージェント完了サウンド",
|
||||
"settings.notifications.agentSound.description": "エージェント完了時に再生するサウンド",
|
||||
"settings.notifications.permSound.title": "権限リクエストサウンド",
|
||||
"settings.notifications.permSound.description": "権限リクエスト時に再生するサウンド",
|
||||
"settings.notifications.errorSound.title": "エラーサウンド",
|
||||
"settings.notifications.errorSound.description": "エラー発生時に再生するサウンド",
|
||||
"settings.notifications.sound.default": "デフォルト",
|
||||
"settings.notifications.sound.none": "なし",
|
||||
"settings.experimental.share.title": "共有モード",
|
||||
"settings.experimental.share.description": "セッション共有の動作",
|
||||
"settings.experimental.share.manual": "手動",
|
||||
"settings.experimental.share.auto": "自動",
|
||||
"settings.experimental.share.disabled": "無効",
|
||||
"settings.experimental.formatter.title": "フォーマッター",
|
||||
"settings.experimental.formatter.description": "自動コードフォーマッターを有効にする",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "言語サーバープロトコル統合を有効にする",
|
||||
"settings.experimental.pasteSummary.title": "ペースト要約を無効にする",
|
||||
"settings.experimental.pasteSummary.description": "大量のペーストコンテンツを要約しない",
|
||||
"settings.experimental.batch.title": "バッチツール",
|
||||
"settings.experimental.batch.description": "複数のツール呼び出しのバッチ処理を有効にする",
|
||||
"settings.experimental.continueOnDeny.title": "拒否時に続行",
|
||||
"settings.experimental.continueOnDeny.description": "権限が拒否された場合にエージェントループを続行",
|
||||
"settings.experimental.mcpTimeout.title": "MCPタイムアウト(ミリ秒)",
|
||||
"settings.experimental.mcpTimeout.description": "MCPサーバーリクエストのタイムアウト(ミリ秒)",
|
||||
"settings.experimental.toolToggles": "ツールトグル",
|
||||
"settings.agentBehaviour.defaultAgent.title": "デフォルトエージェント",
|
||||
"settings.agentBehaviour.defaultAgent.description": "指定されていない場合に使用するエージェント",
|
||||
"settings.agentBehaviour.selectAgent": "設定するエージェントを選択…",
|
||||
"settings.agentBehaviour.modelOverride.title": "モデルオーバーライド",
|
||||
"settings.agentBehaviour.modelOverride.description": "このエージェントのデフォルトモデルを上書き",
|
||||
"settings.agentBehaviour.prompt.title": "カスタムプロンプト",
|
||||
"settings.agentBehaviour.prompt.description": "このエージェントの追加システムプロンプト",
|
||||
"settings.agentBehaviour.temperature.title": "温度",
|
||||
"settings.agentBehaviour.temperature.description": "サンプリング温度(0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "核サンプリングパラメータ(0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "最大ステップ数",
|
||||
"settings.agentBehaviour.maxSteps.description": "最大エージェント反復回数",
|
||||
"settings.agentBehaviour.skillPaths": "スキルフォルダパス",
|
||||
"settings.agentBehaviour.skillUrls": "スキルURL",
|
||||
"settings.agentBehaviour.instructionFiles": "追加の指示ファイル",
|
||||
"settings.agentBehaviour.instructionFiles.description": "システムプロンプトに含まれる追加の指示ファイルへのパス",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"MCPサーバーが設定されていません。opencode設定ファイルを編集してMCPサーバーを追加してください。",
|
||||
"settings.agentBehaviour.workflowsPlaceholder":
|
||||
"ワークフローはワークスペース内のワークフローファイルを通じて管理されます。",
|
||||
"settings.agentBehaviour.notImplemented": "まだ実装されていません。",
|
||||
"settings.autoApprove.setAll": "すべての権限を設定",
|
||||
"settings.autoApprove.level.allow": "許可",
|
||||
"settings.autoApprove.level.ask": "確認",
|
||||
"settings.autoApprove.level.deny": "拒否",
|
||||
"settings.autoApprove.tool.read": "ファイルの内容を読み取る",
|
||||
"settings.autoApprove.tool.edit": "ファイルを編集または作成",
|
||||
"settings.autoApprove.tool.glob": "パターンでファイルを検索",
|
||||
"settings.autoApprove.tool.grep": "ファイルの内容を検索",
|
||||
"settings.autoApprove.tool.list": "ディレクトリの内容を一覧表示",
|
||||
"settings.autoApprove.tool.bash": "シェルコマンドを実行",
|
||||
"settings.autoApprove.tool.task": "サブエージェントタスクを作成",
|
||||
"settings.autoApprove.tool.skill": "スキルを実行",
|
||||
"settings.autoApprove.tool.lsp": "言語サーバー操作",
|
||||
"settings.autoApprove.tool.todoread": "TODOリストを読み取る",
|
||||
"settings.autoApprove.tool.todowrite": "TODOリストに書き込む",
|
||||
"settings.autoApprove.tool.webfetch": "ウェブページを取得",
|
||||
"settings.autoApprove.tool.websearch": "ウェブ検索",
|
||||
"settings.autoApprove.tool.codesearch": "コードベースを検索",
|
||||
"settings.autoApprove.tool.external_directory": "ワークスペース外のファイルにアクセス",
|
||||
"settings.autoApprove.tool.doom_loop": "繰り返しの失敗後に続行",
|
||||
"settings.checkpoints.enable.title": "スナップショットを有効にする",
|
||||
"settings.checkpoints.enable.description": "ファイル編集前にチェックポイントを作成して以前の状態を復元可能にする",
|
||||
"settings.context.autoCompaction.title": "自動圧縮",
|
||||
"settings.context.autoCompaction.description": "コンテキストが満杯のとき自動的に圧縮",
|
||||
"settings.context.prune.title": "古い出力を削除",
|
||||
"settings.context.prune.description": "圧縮時に古いツール出力を削除",
|
||||
"settings.context.watcherPatterns": "ファイルウォッチャー無視パターン",
|
||||
"settings.context.watcherPatterns.description": "ウォッチャーが無視すべきファイルのglobパターン",
|
||||
"settings.display.username.title": "ユーザー名",
|
||||
"settings.display.username.description": "会話に表示されるカスタムユーザー名",
|
||||
"settings.display.layout.title": "レイアウト",
|
||||
"settings.display.layout.description": "チャットインターフェースのレイアウトモード",
|
||||
"settings.display.layout.auto": "自動",
|
||||
"settings.display.layout.stretch": "ストレッチ",
|
||||
"settings.providers.defaultModel.title": "デフォルトモデル",
|
||||
"settings.providers.defaultModel.description": "会話のプライマリモデル",
|
||||
"settings.providers.smallModel.title": "小型モデル",
|
||||
"settings.providers.smallModel.description": "タイトル生成やその他の高速タスク用の軽量モデル",
|
||||
"settings.providers.disabled": "無効化されたプロバイダー",
|
||||
"settings.providers.disabled.description": "プロバイダーリストから非表示にするプロバイダー",
|
||||
"settings.providers.enabled": "有効化されたプロバイダー(ホワイトリスト)",
|
||||
"settings.providers.enabled.description": "設定された場合、これらのプロバイダーのみが利用可能",
|
||||
"settings.providers.notSet": "未設定(サーバーのデフォルトを使用)",
|
||||
"dialog.model.notSet": "未設定",
|
||||
"profile.personalAccount": "個人アカウント",
|
||||
}
|
||||
|
||||
@@ -802,6 +802,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.prefix": "질문이나 피드백이 있으시면 다음에서 이슈를 열어주세요",
|
||||
"settings.aboutKiloCode.feedback.or": "또는",
|
||||
"settings.aboutKiloCode.support.prefix": "결제 또는 계정 관련 문의는 고객 지원팀에 문의하세요",
|
||||
"settings.aboutKiloCode.resetSettings.title": "설정 초기화",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Kilo Code 확장 프로그램의 모든 설정을 기본값으로 초기화합니다. CLI 또는 백엔드 구성에는 영향을 미치지 않습니다.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "모든 설정 초기화",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "모드",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -822,4 +826,115 @@ export const dict = {
|
||||
"settings.language.description": 'Kilo Code UI의 언어를 선택하세요. "자동"은 VS Code 표시 언어를 사용합니다.',
|
||||
"settings.language.auto": "자동 (VS Code 언어)",
|
||||
"settings.language.current": "현재:",
|
||||
|
||||
"common.add": "추가",
|
||||
"common.default": "기본값",
|
||||
"common.choose": "선택…",
|
||||
"settings.notImplemented": "이 섹션은 아직 구현되지 않았습니다.",
|
||||
"settings.notImplemented.description": "선택한 설정 카테고리와 관련된 구성 옵션 및 설명 텍스트가 포함될 예정입니다.",
|
||||
"settings.autocomplete.autoTrigger.title": "자동 인라인 완성 활성화",
|
||||
"settings.autocomplete.autoTrigger.description": "입력 시 인라인 완성 제안을 자동으로 표시",
|
||||
"settings.autocomplete.smartKeybinding.title": "스마트 인라인 작업 키바인딩 활성화",
|
||||
"settings.autocomplete.smartKeybinding.description": "인라인 작업을 트리거하는 스마트 키바인딩 사용",
|
||||
"settings.autocomplete.chatAutocomplete.title": "채팅 텍스트 영역 자동완성 활성화",
|
||||
"settings.autocomplete.chatAutocomplete.description": "채팅 텍스트 영역에서 자동완성 제안 표시",
|
||||
"settings.notifications.agent.title": "에이전트 완료",
|
||||
"settings.notifications.agent.description": "에이전트가 작업을 완료하면 알림 표시",
|
||||
"settings.notifications.permissions.title": "권한 요청",
|
||||
"settings.notifications.permissions.description": "권한 요청 시 알림 표시",
|
||||
"settings.notifications.errors.title": "오류",
|
||||
"settings.notifications.errors.description": "오류 발생 시 알림 표시",
|
||||
"settings.notifications.sounds": "소리",
|
||||
"settings.notifications.agentSound.title": "에이전트 완료 소리",
|
||||
"settings.notifications.agentSound.description": "에이전트 완료 시 재생할 소리",
|
||||
"settings.notifications.permSound.title": "권한 요청 소리",
|
||||
"settings.notifications.permSound.description": "권한 요청 시 재생할 소리",
|
||||
"settings.notifications.errorSound.title": "오류 소리",
|
||||
"settings.notifications.errorSound.description": "오류 발생 시 재생할 소리",
|
||||
"settings.notifications.sound.default": "기본값",
|
||||
"settings.notifications.sound.none": "없음",
|
||||
"settings.experimental.share.title": "공유 모드",
|
||||
"settings.experimental.share.description": "세션 공유 동작 방식",
|
||||
"settings.experimental.share.manual": "수동",
|
||||
"settings.experimental.share.auto": "자동",
|
||||
"settings.experimental.share.disabled": "비활성화",
|
||||
"settings.experimental.formatter.title": "포매터",
|
||||
"settings.experimental.formatter.description": "자동 코드 포매터 활성화",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "언어 서버 프로토콜 통합 활성화",
|
||||
"settings.experimental.pasteSummary.title": "붙여넣기 요약 비활성화",
|
||||
"settings.experimental.pasteSummary.description": "대량 붙여넣기 콘텐츠를 요약하지 않음",
|
||||
"settings.experimental.batch.title": "배치 도구",
|
||||
"settings.experimental.batch.description": "여러 도구 호출의 배치 처리 활성화",
|
||||
"settings.experimental.continueOnDeny.title": "거부 시 계속",
|
||||
"settings.experimental.continueOnDeny.description": "권한이 거부되면 에이전트 루프 계속",
|
||||
"settings.experimental.mcpTimeout.title": "MCP 타임아웃 (ms)",
|
||||
"settings.experimental.mcpTimeout.description": "MCP 서버 요청의 타임아웃 시간 (밀리초)",
|
||||
"settings.experimental.toolToggles": "도구 토글",
|
||||
"settings.agentBehaviour.defaultAgent.title": "기본 에이전트",
|
||||
"settings.agentBehaviour.defaultAgent.description": "지정되지 않은 경우 사용할 에이전트",
|
||||
"settings.agentBehaviour.selectAgent": "구성할 에이전트를 선택하세요…",
|
||||
"settings.agentBehaviour.modelOverride.title": "모델 재정의",
|
||||
"settings.agentBehaviour.modelOverride.description": "이 에이전트의 기본 모델 재정의",
|
||||
"settings.agentBehaviour.prompt.title": "사용자 정의 프롬프트",
|
||||
"settings.agentBehaviour.prompt.description": "이 에이전트의 추가 시스템 프롬프트",
|
||||
"settings.agentBehaviour.temperature.title": "온도",
|
||||
"settings.agentBehaviour.temperature.description": "샘플링 온도 (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "핵 샘플링 매개변수 (0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "최대 단계",
|
||||
"settings.agentBehaviour.maxSteps.description": "최대 에이전트 반복 횟수",
|
||||
"settings.agentBehaviour.skillPaths": "스킬 폴더 경로",
|
||||
"settings.agentBehaviour.skillUrls": "스킬 URL",
|
||||
"settings.agentBehaviour.instructionFiles": "추가 지시 파일",
|
||||
"settings.agentBehaviour.instructionFiles.description": "시스템 프롬프트에 포함되는 추가 지시 파일 경로",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"MCP 서버가 구성되지 않았습니다. opencode 구성 파일을 편집하여 MCP 서버를 추가하세요.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "워크플로우는 워크스페이스의 워크플로우 파일을 통해 관리됩니다.",
|
||||
"settings.agentBehaviour.notImplemented": "아직 구현되지 않았습니다.",
|
||||
"settings.autoApprove.setAll": "모든 권한 설정",
|
||||
"settings.autoApprove.level.allow": "허용",
|
||||
"settings.autoApprove.level.ask": "확인",
|
||||
"settings.autoApprove.level.deny": "거부",
|
||||
"settings.autoApprove.tool.read": "파일 내용 읽기",
|
||||
"settings.autoApprove.tool.edit": "파일 편집 또는 생성",
|
||||
"settings.autoApprove.tool.glob": "패턴으로 파일 찾기",
|
||||
"settings.autoApprove.tool.grep": "파일 내용 검색",
|
||||
"settings.autoApprove.tool.list": "디렉토리 내용 나열",
|
||||
"settings.autoApprove.tool.bash": "셸 명령 실행",
|
||||
"settings.autoApprove.tool.task": "하위 에이전트 작업 생성",
|
||||
"settings.autoApprove.tool.skill": "스킬 실행",
|
||||
"settings.autoApprove.tool.lsp": "언어 서버 작업",
|
||||
"settings.autoApprove.tool.todoread": "할 일 목록 읽기",
|
||||
"settings.autoApprove.tool.todowrite": "할 일 목록 쓰기",
|
||||
"settings.autoApprove.tool.webfetch": "웹 페이지 가져오기",
|
||||
"settings.autoApprove.tool.websearch": "웹 검색",
|
||||
"settings.autoApprove.tool.codesearch": "코드베이스 검색",
|
||||
"settings.autoApprove.tool.external_directory": "워크스페이스 외부 파일 접근",
|
||||
"settings.autoApprove.tool.doom_loop": "반복 실패 후 계속",
|
||||
"settings.checkpoints.enable.title": "스냅샷 활성화",
|
||||
"settings.checkpoints.enable.description": "파일 편집 전 체크포인트를 생성하여 이전 상태를 복원할 수 있습니다",
|
||||
"settings.context.autoCompaction.title": "자동 압축",
|
||||
"settings.context.autoCompaction.description": "컨텍스트가 가득 차면 자동으로 압축",
|
||||
"settings.context.prune.title": "이전 출력 정리",
|
||||
"settings.context.prune.description": "압축 중 이전 도구 출력 제거",
|
||||
"settings.context.watcherPatterns": "파일 감시자 무시 패턴",
|
||||
"settings.context.watcherPatterns.description": "감시자가 무시해야 할 파일의 글로브 패턴",
|
||||
"settings.display.username.title": "사용자 이름",
|
||||
"settings.display.username.description": "대화에 표시되는 사용자 정의 사용자 이름",
|
||||
"settings.display.layout.title": "레이아웃",
|
||||
"settings.display.layout.description": "채팅 인터페이스의 레이아웃 모드",
|
||||
"settings.display.layout.auto": "자동",
|
||||
"settings.display.layout.stretch": "늘리기",
|
||||
"settings.providers.defaultModel.title": "기본 모델",
|
||||
"settings.providers.defaultModel.description": "대화의 기본 모델",
|
||||
"settings.providers.smallModel.title": "소형 모델",
|
||||
"settings.providers.smallModel.description": "제목 생성 및 기타 빠른 작업을 위한 경량 모델",
|
||||
"settings.providers.disabled": "비활성화된 공급자",
|
||||
"settings.providers.disabled.description": "공급자 목록에서 숨길 공급자",
|
||||
"settings.providers.enabled": "활성화된 공급자 (허용 목록)",
|
||||
"settings.providers.enabled.description": "설정된 경우 이 공급자만 사용 가능 (배타적 허용 목록)",
|
||||
"settings.providers.notSet": "설정되지 않음 (서버 기본값 사용)",
|
||||
"dialog.model.notSet": "설정되지 않음",
|
||||
"profile.personalAccount": "개인 계정",
|
||||
}
|
||||
|
||||
@@ -806,6 +806,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.prefix": "Hvis du har spørsmål eller tilbakemeldinger, åpne gjerne en issue på",
|
||||
"settings.aboutKiloCode.feedback.or": "eller",
|
||||
"settings.aboutKiloCode.support.prefix": "For fakturerings- eller kontospørsmål, kontakt kundestøtte på",
|
||||
"settings.aboutKiloCode.resetSettings.title": "Tilbakestill innstillinger",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Tilbakestill alle Kilo Code-utvidelsesinnstillinger til standardverdier. Dette påvirker ikke CLI- eller backend-konfigurasjon.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "Tilbakestill alle innstillinger",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "Moduser",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -827,4 +831,115 @@ export const dict = {
|
||||
"settings.language.description": 'Velg språket for Kilo Code-grensesnittet. "Auto" bruker VS Codes visningsspråk.',
|
||||
"settings.language.auto": "Auto (VS Code-språk)",
|
||||
"settings.language.current": "Nåværende:",
|
||||
|
||||
"common.add": "Legg til",
|
||||
"common.default": "Standard",
|
||||
"common.choose": "Velg…",
|
||||
"settings.notImplemented": "Denne seksjonen er ikke implementert ennå.",
|
||||
"settings.notImplemented.description": "Den vil inneholde konfigurasjonsalternativer og forklarende tekst.",
|
||||
"settings.autocomplete.autoTrigger.title": "Aktiver automatisk innebygd fullføring",
|
||||
"settings.autocomplete.autoTrigger.description": "Vis automatisk innebygde fullføringsforslag ved skriving",
|
||||
"settings.autocomplete.smartKeybinding.title": "Aktiver smart innebygd oppgavetastbinding",
|
||||
"settings.autocomplete.smartKeybinding.description": "Bruk en smart tastbinding for å utløse innebygde oppgaver",
|
||||
"settings.autocomplete.chatAutocomplete.title": "Aktiver chat-autofullføring",
|
||||
"settings.autocomplete.chatAutocomplete.description": "Vis autofullføringsforslag i chatfeltet",
|
||||
"settings.notifications.agent.title": "Agentfullføring",
|
||||
"settings.notifications.agent.description": "Vis varsling når agenten fullfører en oppgave",
|
||||
"settings.notifications.permissions.title": "Tillatelsesforespørsler",
|
||||
"settings.notifications.permissions.description": "Vis varsling ved tillatelsesforespørsler",
|
||||
"settings.notifications.errors.title": "Feil",
|
||||
"settings.notifications.errors.description": "Vis varsling ved feil",
|
||||
"settings.notifications.sounds": "Lyder",
|
||||
"settings.notifications.agentSound.title": "Agentfullføringslyd",
|
||||
"settings.notifications.agentSound.description": "Lyd ved agentfullføring",
|
||||
"settings.notifications.permSound.title": "Tillatelsesforespørselslyd",
|
||||
"settings.notifications.permSound.description": "Lyd ved tillatelsesforespørsler",
|
||||
"settings.notifications.errorSound.title": "Feillyd",
|
||||
"settings.notifications.errorSound.description": "Lyd ved feil",
|
||||
"settings.notifications.sound.default": "Standard",
|
||||
"settings.notifications.sound.none": "Ingen",
|
||||
"settings.experimental.share.title": "Delingsmodus",
|
||||
"settings.experimental.share.description": "Oppførsel for sesjonsdeling",
|
||||
"settings.experimental.share.manual": "Manuell",
|
||||
"settings.experimental.share.auto": "Automatisk",
|
||||
"settings.experimental.share.disabled": "Deaktivert",
|
||||
"settings.experimental.formatter.title": "Formater",
|
||||
"settings.experimental.formatter.description": "Aktiver automatisk kodeformatering",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "Aktiver språkserverprotokoll-integrasjon",
|
||||
"settings.experimental.pasteSummary.title": "Deaktiver lim-sammendrag",
|
||||
"settings.experimental.pasteSummary.description": "Ikke oppsummer stort limt innhold",
|
||||
"settings.experimental.batch.title": "Batchverktøy",
|
||||
"settings.experimental.batch.description": "Aktiver batchbehandling av verktøykall",
|
||||
"settings.experimental.continueOnDeny.title": "Fortsett ved avvisning",
|
||||
"settings.experimental.continueOnDeny.description": "Fortsett agentløkken når en tillatelse avvises",
|
||||
"settings.experimental.mcpTimeout.title": "MCP-tidsavbrudd (ms)",
|
||||
"settings.experimental.mcpTimeout.description": "Tidsavbrudd for MCP-serverforespørsler i millisekunder",
|
||||
"settings.experimental.toolToggles": "Verktøybrytere",
|
||||
"settings.agentBehaviour.defaultAgent.title": "Standardagent",
|
||||
"settings.agentBehaviour.defaultAgent.description": "Agent å bruke når ingen er angitt",
|
||||
"settings.agentBehaviour.selectAgent": "Velg en agent å konfigurere…",
|
||||
"settings.agentBehaviour.modelOverride.title": "Modelloverstying",
|
||||
"settings.agentBehaviour.modelOverride.description": "Overstyr standardmodellen for denne agenten",
|
||||
"settings.agentBehaviour.prompt.title": "Egendefinert prompt",
|
||||
"settings.agentBehaviour.prompt.description": "Ekstra systemprompt for denne agenten",
|
||||
"settings.agentBehaviour.temperature.title": "Temperatur",
|
||||
"settings.agentBehaviour.temperature.description": "Samplingstemperatur (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "Nucleus-samplingsparameter (0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "Maks. trinn",
|
||||
"settings.agentBehaviour.maxSteps.description": "Maksimale agentiterasjoner",
|
||||
"settings.agentBehaviour.skillPaths": "Ferdighetsmappe-stier",
|
||||
"settings.agentBehaviour.skillUrls": "Ferdighets-URLer",
|
||||
"settings.agentBehaviour.instructionFiles": "Ekstra instruksjonsfiler",
|
||||
"settings.agentBehaviour.instructionFiles.description": "Stier til ekstra instruksjonsfiler i systemprompten",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"Ingen MCP-servere konfigurert. Rediger opencode-konfigurasjonsfilen for å legge til MCP-servere.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "Arbeidsflyter administreres via arbeidsflytfiler i arbeidsområdet.",
|
||||
"settings.agentBehaviour.notImplemented": "Ikke implementert ennå.",
|
||||
"settings.autoApprove.setAll": "Sett alle tillatelser",
|
||||
"settings.autoApprove.level.allow": "Tillat",
|
||||
"settings.autoApprove.level.ask": "Spør",
|
||||
"settings.autoApprove.level.deny": "Avvis",
|
||||
"settings.autoApprove.tool.read": "Les filinnhold",
|
||||
"settings.autoApprove.tool.edit": "Rediger eller opprett filer",
|
||||
"settings.autoApprove.tool.glob": "Finn filer etter mønster",
|
||||
"settings.autoApprove.tool.grep": "Søk i filinnhold",
|
||||
"settings.autoApprove.tool.list": "List mappeinnhold",
|
||||
"settings.autoApprove.tool.bash": "Kjør skallkommandoer",
|
||||
"settings.autoApprove.tool.task": "Opprett underagentoppgaver",
|
||||
"settings.autoApprove.tool.skill": "Kjør ferdigheter",
|
||||
"settings.autoApprove.tool.lsp": "Språkserveroperasjoner",
|
||||
"settings.autoApprove.tool.todoread": "Les oppgavelister",
|
||||
"settings.autoApprove.tool.todowrite": "Skriv oppgavelister",
|
||||
"settings.autoApprove.tool.webfetch": "Hent nettsider",
|
||||
"settings.autoApprove.tool.websearch": "Søk på nettet",
|
||||
"settings.autoApprove.tool.codesearch": "Søk i kodebasen",
|
||||
"settings.autoApprove.tool.external_directory": "Tilgang til filer utenfor arbeidsområdet",
|
||||
"settings.autoApprove.tool.doom_loop": "Fortsett etter gjentatte feil",
|
||||
"settings.checkpoints.enable.title": "Aktiver øyeblikksbilder",
|
||||
"settings.checkpoints.enable.description": "Opprett kontrollpunkter før filredigeringer",
|
||||
"settings.context.autoCompaction.title": "Automatisk komprimering",
|
||||
"settings.context.autoCompaction.description": "Komprimer automatisk kontekst når den er full",
|
||||
"settings.context.prune.title": "Fjern gamle utdata",
|
||||
"settings.context.prune.description": "Fjern gamle verktøyutdata under komprimering",
|
||||
"settings.context.watcherPatterns": "Filvakt-ignormønstre",
|
||||
"settings.context.watcherPatterns.description": "Glob-mønstre for filer som vakten skal ignorere",
|
||||
"settings.display.username.title": "Brukernavn",
|
||||
"settings.display.username.description": "Egendefinert brukernavn i samtaler",
|
||||
"settings.display.layout.title": "Layout",
|
||||
"settings.display.layout.description": "Layoutmodus for chatgrensesnittet",
|
||||
"settings.display.layout.auto": "Automatisk",
|
||||
"settings.display.layout.stretch": "Strekk",
|
||||
"settings.providers.defaultModel.title": "Standardmodell",
|
||||
"settings.providers.defaultModel.description": "Primær modell for samtaler",
|
||||
"settings.providers.smallModel.title": "Liten modell",
|
||||
"settings.providers.smallModel.description": "Lettvektsmodell for titelgenerering og raske oppgaver",
|
||||
"settings.providers.disabled": "Deaktiverte leverandører",
|
||||
"settings.providers.disabled.description": "Leverandører å skjule fra listen",
|
||||
"settings.providers.enabled": "Aktiverte leverandører (hvitliste)",
|
||||
"settings.providers.enabled.description": "Hvis angitt, er bare disse leverandørene tilgjengelige",
|
||||
"settings.providers.notSet": "Ikke angitt (bruk serverstandard)",
|
||||
"dialog.model.notSet": "Ikke angitt",
|
||||
"profile.personalAccount": "Personlig konto",
|
||||
} satisfies Partial<Record<Keys, string>>
|
||||
|
||||
@@ -806,6 +806,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.or": "lub",
|
||||
"settings.aboutKiloCode.support.prefix":
|
||||
"W sprawach rozliczeń lub konta skontaktuj się z obsługą klienta pod adresem",
|
||||
"settings.aboutKiloCode.resetSettings.title": "Resetuj ustawienia",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Zresetuj wszystkie ustawienia rozszerzenia Kilo Code do wartości domyślnych. Nie wpływa to na konfigurację CLI ani backendu.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "Resetuj wszystkie ustawienia",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "Tryby",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -827,4 +831,116 @@ export const dict = {
|
||||
"settings.language.description": 'Wybierz język interfejsu Kilo Code. „Auto" używa języka wyświetlania VS Code.',
|
||||
"settings.language.auto": "Auto (język VS Code)",
|
||||
"settings.language.current": "Bieżący:",
|
||||
|
||||
"common.add": "Dodaj",
|
||||
"common.default": "Domyślny",
|
||||
"common.choose": "Wybierz…",
|
||||
"settings.notImplemented": "Ta sekcja nie jest jeszcze zaimplementowana.",
|
||||
"settings.notImplemented.description": "Będzie zawierać opcje konfiguracji i tekst objaśniający.",
|
||||
"settings.autocomplete.autoTrigger.title": "Włącz automatyczne uzupełnianie inline",
|
||||
"settings.autocomplete.autoTrigger.description": "Automatycznie pokazuj sugestie uzupełniania podczas pisania",
|
||||
"settings.autocomplete.smartKeybinding.title": "Włącz inteligentny skrót zadania inline",
|
||||
"settings.autocomplete.smartKeybinding.description": "Użyj inteligentnego skrótu do wyzwalania zadań inline",
|
||||
"settings.autocomplete.chatAutocomplete.title": "Włącz autouzupełnianie czatu",
|
||||
"settings.autocomplete.chatAutocomplete.description": "Pokaż sugestie autouzupełniania w polu czatu",
|
||||
"settings.notifications.agent.title": "Zakończenie agenta",
|
||||
"settings.notifications.agent.description": "Pokaż powiadomienie po zakończeniu zadania przez agenta",
|
||||
"settings.notifications.permissions.title": "Żądania uprawnień",
|
||||
"settings.notifications.permissions.description": "Pokaż powiadomienie przy żądaniach uprawnień",
|
||||
"settings.notifications.errors.title": "Błędy",
|
||||
"settings.notifications.errors.description": "Pokaż powiadomienie przy błędach",
|
||||
"settings.notifications.sounds": "Dźwięki",
|
||||
"settings.notifications.agentSound.title": "Dźwięk zakończenia agenta",
|
||||
"settings.notifications.agentSound.description": "Dźwięk odtwarzany po zakończeniu agenta",
|
||||
"settings.notifications.permSound.title": "Dźwięk żądania uprawnień",
|
||||
"settings.notifications.permSound.description": "Dźwięk odtwarzany przy żądaniach uprawnień",
|
||||
"settings.notifications.errorSound.title": "Dźwięk błędu",
|
||||
"settings.notifications.errorSound.description": "Dźwięk odtwarzany przy błędach",
|
||||
"settings.notifications.sound.default": "Domyślny",
|
||||
"settings.notifications.sound.none": "Brak",
|
||||
"settings.experimental.share.title": "Tryb udostępniania",
|
||||
"settings.experimental.share.description": "Zachowanie udostępniania sesji",
|
||||
"settings.experimental.share.manual": "Ręczny",
|
||||
"settings.experimental.share.auto": "Automatyczny",
|
||||
"settings.experimental.share.disabled": "Wyłączony",
|
||||
"settings.experimental.formatter.title": "Formater",
|
||||
"settings.experimental.formatter.description": "Włącz automatyczny formater kodu",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "Włącz integrację protokołu serwera języka",
|
||||
"settings.experimental.pasteSummary.title": "Wyłącz podsumowanie wklejania",
|
||||
"settings.experimental.pasteSummary.description": "Nie podsumowuj dużego wklejonego tekstu",
|
||||
"settings.experimental.batch.title": "Narzędzie wsadowe",
|
||||
"settings.experimental.batch.description": "Włącz przetwarzanie wsadowe wywołań narzędzi",
|
||||
"settings.experimental.continueOnDeny.title": "Kontynuuj przy odmowie",
|
||||
"settings.experimental.continueOnDeny.description": "Kontynuuj pętlę agenta po odmowie uprawnienia",
|
||||
"settings.experimental.mcpTimeout.title": "Limit czasu MCP (ms)",
|
||||
"settings.experimental.mcpTimeout.description": "Limit czasu żądań serwera MCP w milisekundach",
|
||||
"settings.experimental.toolToggles": "Przełączniki narzędzi",
|
||||
"settings.agentBehaviour.defaultAgent.title": "Domyślny agent",
|
||||
"settings.agentBehaviour.defaultAgent.description": "Agent używany, gdy żaden nie jest określony",
|
||||
"settings.agentBehaviour.selectAgent": "Wybierz agenta do konfiguracji…",
|
||||
"settings.agentBehaviour.modelOverride.title": "Nadpisanie modelu",
|
||||
"settings.agentBehaviour.modelOverride.description": "Nadpisz domyślny model dla tego agenta",
|
||||
"settings.agentBehaviour.prompt.title": "Niestandardowy prompt",
|
||||
"settings.agentBehaviour.prompt.description": "Dodatkowy prompt systemowy dla tego agenta",
|
||||
"settings.agentBehaviour.temperature.title": "Temperatura",
|
||||
"settings.agentBehaviour.temperature.description": "Temperatura próbkowania (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"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.skillPaths": "Ścieżki folderów umiejętności",
|
||||
"settings.agentBehaviour.skillUrls": "Adresy URL umiejętności",
|
||||
"settings.agentBehaviour.instructionFiles": "Dodatkowe pliki instrukcji",
|
||||
"settings.agentBehaviour.instructionFiles.description":
|
||||
"Ścieżki do dodatkowych plików instrukcji w prompcie systemowym",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"Brak skonfigurowanych serwerów MCP. Edytuj plik konfiguracyjny opencode, aby dodać serwery MCP.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "Przepływy pracy zarządzane są za pomocą plików przepływów pracy.",
|
||||
"settings.agentBehaviour.notImplemented": "Jeszcze nie zaimplementowano.",
|
||||
"settings.autoApprove.setAll": "Ustaw wszystkie uprawnienia",
|
||||
"settings.autoApprove.level.allow": "Zezwól",
|
||||
"settings.autoApprove.level.ask": "Pytaj",
|
||||
"settings.autoApprove.level.deny": "Odmów",
|
||||
"settings.autoApprove.tool.read": "Odczyt zawartości plików",
|
||||
"settings.autoApprove.tool.edit": "Edycja lub tworzenie plików",
|
||||
"settings.autoApprove.tool.glob": "Wyszukiwanie plików według wzorca",
|
||||
"settings.autoApprove.tool.grep": "Przeszukiwanie zawartości plików",
|
||||
"settings.autoApprove.tool.list": "Listowanie zawartości katalogu",
|
||||
"settings.autoApprove.tool.bash": "Wykonywanie poleceń powłoki",
|
||||
"settings.autoApprove.tool.task": "Tworzenie podzadań agenta",
|
||||
"settings.autoApprove.tool.skill": "Wykonywanie umiejętności",
|
||||
"settings.autoApprove.tool.lsp": "Operacje serwera języka",
|
||||
"settings.autoApprove.tool.todoread": "Odczyt list zadań",
|
||||
"settings.autoApprove.tool.todowrite": "Zapis list zadań",
|
||||
"settings.autoApprove.tool.webfetch": "Pobieranie stron internetowych",
|
||||
"settings.autoApprove.tool.websearch": "Wyszukiwanie w internecie",
|
||||
"settings.autoApprove.tool.codesearch": "Przeszukiwanie bazy kodu",
|
||||
"settings.autoApprove.tool.external_directory": "Dostęp do plików poza obszarem roboczym",
|
||||
"settings.autoApprove.tool.doom_loop": "Kontynuuj po powtarzających się błędach",
|
||||
"settings.checkpoints.enable.title": "Włącz migawki",
|
||||
"settings.checkpoints.enable.description": "Twórz punkty kontrolne przed edycją plików",
|
||||
"settings.context.autoCompaction.title": "Automatyczna kompakcja",
|
||||
"settings.context.autoCompaction.description": "Automatycznie kompaktuj kontekst, gdy jest pełny",
|
||||
"settings.context.prune.title": "Przytnij stare wyjścia",
|
||||
"settings.context.prune.description": "Usuń stare wyjścia narzędzi podczas kompakcji",
|
||||
"settings.context.watcherPatterns": "Wzorce ignorowania obserwatora plików",
|
||||
"settings.context.watcherPatterns.description": "Wzorce glob dla plików do ignorowania",
|
||||
"settings.display.username.title": "Nazwa użytkownika",
|
||||
"settings.display.username.description": "Niestandardowa nazwa użytkownika w rozmowach",
|
||||
"settings.display.layout.title": "Układ",
|
||||
"settings.display.layout.description": "Tryb układu interfejsu czatu",
|
||||
"settings.display.layout.auto": "Automatyczny",
|
||||
"settings.display.layout.stretch": "Rozciągnij",
|
||||
"settings.providers.defaultModel.title": "Domyślny model",
|
||||
"settings.providers.defaultModel.description": "Główny model do rozmów",
|
||||
"settings.providers.smallModel.title": "Mały model",
|
||||
"settings.providers.smallModel.description": "Lekki model do generowania tytułów i szybkich zadań",
|
||||
"settings.providers.disabled": "Wyłączeni dostawcy",
|
||||
"settings.providers.disabled.description": "Dostawcy do ukrycia z listy",
|
||||
"settings.providers.enabled": "Włączeni dostawcy (biała lista)",
|
||||
"settings.providers.enabled.description": "Jeśli ustawiono, tylko ci dostawcy będą dostępni",
|
||||
"settings.providers.notSet": "Nie ustawiono (użyj domyślnego serwera)",
|
||||
"dialog.model.notSet": "Nie ustawiono",
|
||||
"profile.personalAccount": "Konto osobiste",
|
||||
}
|
||||
|
||||
@@ -809,6 +809,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.prefix": "Если у вас есть вопросы или отзывы, создайте issue на",
|
||||
"settings.aboutKiloCode.feedback.or": "или",
|
||||
"settings.aboutKiloCode.support.prefix": "По вопросам оплаты или аккаунта обращайтесь в службу поддержки по адресу",
|
||||
"settings.aboutKiloCode.resetSettings.title": "Сброс настроек",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"Сбросить все настройки расширения Kilo Code до значений по умолчанию. Это не влияет на конфигурацию CLI или бэкенда.",
|
||||
"settings.aboutKiloCode.resetSettings.button": "Сбросить все настройки",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "Режимы",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -830,4 +834,115 @@ export const dict = {
|
||||
"settings.language.description": "Выберите язык интерфейса Kilo Code. «Авто» использует язык отображения VS Code.",
|
||||
"settings.language.auto": "Авто (язык VS Code)",
|
||||
"settings.language.current": "Текущий:",
|
||||
|
||||
"common.add": "Добавить",
|
||||
"common.default": "По умолчанию",
|
||||
"common.choose": "Выбрать…",
|
||||
"settings.notImplemented": "Этот раздел ещё не реализован.",
|
||||
"settings.notImplemented.description": "Здесь будут параметры конфигурации и пояснительный текст.",
|
||||
"settings.autocomplete.autoTrigger.title": "Включить автоматическое встроенное дополнение",
|
||||
"settings.autocomplete.autoTrigger.description": "Автоматически показывать предложения дополнения при вводе",
|
||||
"settings.autocomplete.smartKeybinding.title": "Включить умную клавишу встроенной задачи",
|
||||
"settings.autocomplete.smartKeybinding.description": "Использовать умную клавишу для запуска встроенных задач",
|
||||
"settings.autocomplete.chatAutocomplete.title": "Включить автодополнение чата",
|
||||
"settings.autocomplete.chatAutocomplete.description": "Показывать предложения автодополнения в поле чата",
|
||||
"settings.notifications.agent.title": "Завершение агента",
|
||||
"settings.notifications.agent.description": "Показать уведомление при завершении задачи агентом",
|
||||
"settings.notifications.permissions.title": "Запросы разрешений",
|
||||
"settings.notifications.permissions.description": "Показать уведомление при запросах разрешений",
|
||||
"settings.notifications.errors.title": "Ошибки",
|
||||
"settings.notifications.errors.description": "Показать уведомление при ошибках",
|
||||
"settings.notifications.sounds": "Звуки",
|
||||
"settings.notifications.agentSound.title": "Звук завершения агента",
|
||||
"settings.notifications.agentSound.description": "Звук при завершении агента",
|
||||
"settings.notifications.permSound.title": "Звук запроса разрешений",
|
||||
"settings.notifications.permSound.description": "Звук при запросах разрешений",
|
||||
"settings.notifications.errorSound.title": "Звук ошибки",
|
||||
"settings.notifications.errorSound.description": "Звук при ошибках",
|
||||
"settings.notifications.sound.default": "По умолчанию",
|
||||
"settings.notifications.sound.none": "Нет",
|
||||
"settings.experimental.share.title": "Режим обмена",
|
||||
"settings.experimental.share.description": "Поведение обмена сессиями",
|
||||
"settings.experimental.share.manual": "Вручную",
|
||||
"settings.experimental.share.auto": "Автоматически",
|
||||
"settings.experimental.share.disabled": "Отключено",
|
||||
"settings.experimental.formatter.title": "Форматтер",
|
||||
"settings.experimental.formatter.description": "Включить автоматическое форматирование кода",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "Включить интеграцию протокола языкового сервера",
|
||||
"settings.experimental.pasteSummary.title": "Отключить сводку вставки",
|
||||
"settings.experimental.pasteSummary.description": "Не суммировать большой вставленный контент",
|
||||
"settings.experimental.batch.title": "Пакетный инструмент",
|
||||
"settings.experimental.batch.description": "Включить пакетную обработку вызовов инструментов",
|
||||
"settings.experimental.continueOnDeny.title": "Продолжить при отказе",
|
||||
"settings.experimental.continueOnDeny.description": "Продолжить цикл агента при отказе в разрешении",
|
||||
"settings.experimental.mcpTimeout.title": "Таймаут MCP (мс)",
|
||||
"settings.experimental.mcpTimeout.description": "Таймаут запросов MCP-сервера в миллисекундах",
|
||||
"settings.experimental.toolToggles": "Переключатели инструментов",
|
||||
"settings.agentBehaviour.defaultAgent.title": "Агент по умолчанию",
|
||||
"settings.agentBehaviour.defaultAgent.description": "Агент при отсутствии указания",
|
||||
"settings.agentBehaviour.selectAgent": "Выберите агента для настройки…",
|
||||
"settings.agentBehaviour.modelOverride.title": "Переопределение модели",
|
||||
"settings.agentBehaviour.modelOverride.description": "Переопределить модель по умолчанию для этого агента",
|
||||
"settings.agentBehaviour.prompt.title": "Пользовательский промпт",
|
||||
"settings.agentBehaviour.prompt.description": "Дополнительный системный промпт для этого агента",
|
||||
"settings.agentBehaviour.temperature.title": "Температура",
|
||||
"settings.agentBehaviour.temperature.description": "Температура сэмплирования (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "Параметр nucleus-сэмплирования (0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "Макс. шагов",
|
||||
"settings.agentBehaviour.maxSteps.description": "Максимальное число итераций агента",
|
||||
"settings.agentBehaviour.skillPaths": "Пути папок навыков",
|
||||
"settings.agentBehaviour.skillUrls": "URL навыков",
|
||||
"settings.agentBehaviour.instructionFiles": "Дополнительные файлы инструкций",
|
||||
"settings.agentBehaviour.instructionFiles.description": "Пути к дополнительным файлам инструкций в системном промпте",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"MCP-серверы не настроены. Отредактируйте файл конфигурации opencode для добавления MCP-серверов.",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "Рабочие процессы управляются через файлы рабочих процессов.",
|
||||
"settings.agentBehaviour.notImplemented": "Ещё не реализовано.",
|
||||
"settings.autoApprove.setAll": "Установить все разрешения",
|
||||
"settings.autoApprove.level.allow": "Разрешить",
|
||||
"settings.autoApprove.level.ask": "Спросить",
|
||||
"settings.autoApprove.level.deny": "Отклонить",
|
||||
"settings.autoApprove.tool.read": "Чтение содержимого файлов",
|
||||
"settings.autoApprove.tool.edit": "Редактирование или создание файлов",
|
||||
"settings.autoApprove.tool.glob": "Поиск файлов по шаблону",
|
||||
"settings.autoApprove.tool.grep": "Поиск в содержимом файлов",
|
||||
"settings.autoApprove.tool.list": "Список содержимого каталога",
|
||||
"settings.autoApprove.tool.bash": "Выполнение команд оболочки",
|
||||
"settings.autoApprove.tool.task": "Создание подзадач агента",
|
||||
"settings.autoApprove.tool.skill": "Выполнение навыков",
|
||||
"settings.autoApprove.tool.lsp": "Операции языкового сервера",
|
||||
"settings.autoApprove.tool.todoread": "Чтение списков задач",
|
||||
"settings.autoApprove.tool.todowrite": "Запись списков задач",
|
||||
"settings.autoApprove.tool.webfetch": "Получение веб-страниц",
|
||||
"settings.autoApprove.tool.websearch": "Поиск в интернете",
|
||||
"settings.autoApprove.tool.codesearch": "Поиск в кодовой базе",
|
||||
"settings.autoApprove.tool.external_directory": "Доступ к файлам вне рабочей области",
|
||||
"settings.autoApprove.tool.doom_loop": "Продолжить после повторных сбоев",
|
||||
"settings.checkpoints.enable.title": "Включить снимки",
|
||||
"settings.checkpoints.enable.description": "Создавать контрольные точки перед редактированием файлов",
|
||||
"settings.context.autoCompaction.title": "Автоматическое сжатие",
|
||||
"settings.context.autoCompaction.description": "Автоматически сжимать контекст при заполнении",
|
||||
"settings.context.prune.title": "Очистить старые выходные данные",
|
||||
"settings.context.prune.description": "Удалить старые выходные данные инструментов при сжатии",
|
||||
"settings.context.watcherPatterns": "Шаблоны игнорирования наблюдателя файлов",
|
||||
"settings.context.watcherPatterns.description": "Glob-шаблоны для файлов, которые наблюдатель должен игнорировать",
|
||||
"settings.display.username.title": "Имя пользователя",
|
||||
"settings.display.username.description": "Пользовательское имя в разговорах",
|
||||
"settings.display.layout.title": "Макет",
|
||||
"settings.display.layout.description": "Режим макета для интерфейса чата",
|
||||
"settings.display.layout.auto": "Авто",
|
||||
"settings.display.layout.stretch": "Растянуть",
|
||||
"settings.providers.defaultModel.title": "Модель по умолчанию",
|
||||
"settings.providers.defaultModel.description": "Основная модель для разговоров",
|
||||
"settings.providers.smallModel.title": "Малая модель",
|
||||
"settings.providers.smallModel.description": "Лёгкая модель для генерации заголовков и быстрых задач",
|
||||
"settings.providers.disabled": "Отключённые провайдеры",
|
||||
"settings.providers.disabled.description": "Провайдеры для скрытия из списка",
|
||||
"settings.providers.enabled": "Включённые провайдеры (белый список)",
|
||||
"settings.providers.enabled.description": "Если установлено, только эти провайдеры будут доступны",
|
||||
"settings.providers.notSet": "Не задано (использовать значение сервера по умолчанию)",
|
||||
"dialog.model.notSet": "Не задано",
|
||||
"profile.personalAccount": "Личный аккаунт",
|
||||
}
|
||||
|
||||
@@ -794,6 +794,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.prefix": "หากคุณมีคำถามหรือข้อเสนอแนะ สามารถเปิด issue ได้ที่",
|
||||
"settings.aboutKiloCode.feedback.or": "หรือ",
|
||||
"settings.aboutKiloCode.support.prefix": "สำหรับคำถามเกี่ยวกับการเรียกเก็บเงินหรือบัญชี ติดต่อฝ่ายสนับสนุนลูกค้าที่",
|
||||
"settings.aboutKiloCode.resetSettings.title": "รีเซ็ตการตั้งค่า",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"รีเซ็ตการตั้งค่าส่วนขยาย Kilo Code ทั้งหมดเป็นค่าเริ่มต้น ไม่ส่งผลกระทบต่อการกำหนดค่า CLI หรือแบ็กเอนด์",
|
||||
"settings.aboutKiloCode.resetSettings.button": "รีเซ็ตการตั้งค่าทั้งหมด",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "โหมด",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -814,4 +818,115 @@ export const dict = {
|
||||
"settings.language.description": 'เลือกภาษาสำหรับ UI ของ Kilo Code "อัตโนมัติ" จะใช้ภาษาการแสดงผลของ VS Code',
|
||||
"settings.language.auto": "อัตโนมัติ (ภาษา VS Code)",
|
||||
"settings.language.current": "ปัจจุบัน:",
|
||||
|
||||
"common.add": "เพิ่ม",
|
||||
"common.default": "ค่าเริ่มต้น",
|
||||
"common.choose": "เลือก…",
|
||||
"settings.notImplemented": "ส่วนนี้ยังไม่ได้ใช้งาน",
|
||||
"settings.notImplemented.description": "จะมีตัวเลือกการกำหนดค่าและข้อความอธิบาย",
|
||||
"settings.autocomplete.autoTrigger.title": "เปิดใช้งานการเติมอัตโนมัติแบบอินไลน์",
|
||||
"settings.autocomplete.autoTrigger.description": "แสดงข้อเสนอแนะการเติมอัตโนมัติระหว่างพิมพ์",
|
||||
"settings.autocomplete.smartKeybinding.title": "เปิดใช้งานปุ่มลัดงานอินไลน์อัจฉริยะ",
|
||||
"settings.autocomplete.smartKeybinding.description": "ใช้ปุ่มลัดอัจฉริยะสำหรับงานอินไลน์",
|
||||
"settings.autocomplete.chatAutocomplete.title": "เปิดใช้งานเติมอัตโนมัติแชท",
|
||||
"settings.autocomplete.chatAutocomplete.description": "แสดงข้อเสนอแนะเติมอัตโนมัติในช่องแชท",
|
||||
"settings.notifications.agent.title": "เอเจนต์เสร็จสิ้น",
|
||||
"settings.notifications.agent.description": "แสดงการแจ้งเตือนเมื่อเอเจนต์ทำงานเสร็จ",
|
||||
"settings.notifications.permissions.title": "คำขออนุญาต",
|
||||
"settings.notifications.permissions.description": "แสดงการแจ้งเตือนเมื่อมีคำขออนุญาต",
|
||||
"settings.notifications.errors.title": "ข้อผิดพลาด",
|
||||
"settings.notifications.errors.description": "แสดงการแจ้งเตือนเมื่อเกิดข้อผิดพลาด",
|
||||
"settings.notifications.sounds": "เสียง",
|
||||
"settings.notifications.agentSound.title": "เสียงเอเจนต์เสร็จสิ้น",
|
||||
"settings.notifications.agentSound.description": "เสียงเมื่อเอเจนต์ทำงานเสร็จ",
|
||||
"settings.notifications.permSound.title": "เสียงคำขออนุญาต",
|
||||
"settings.notifications.permSound.description": "เสียงเมื่อมีคำขออนุญาต",
|
||||
"settings.notifications.errorSound.title": "เสียงข้อผิดพลาด",
|
||||
"settings.notifications.errorSound.description": "เสียงเมื่อเกิดข้อผิดพลาด",
|
||||
"settings.notifications.sound.default": "ค่าเริ่มต้น",
|
||||
"settings.notifications.sound.none": "ไม่มี",
|
||||
"settings.experimental.share.title": "โหมดแชร์",
|
||||
"settings.experimental.share.description": "พฤติกรรมการแชร์เซสชัน",
|
||||
"settings.experimental.share.manual": "ด้วยตนเอง",
|
||||
"settings.experimental.share.auto": "อัตโนมัติ",
|
||||
"settings.experimental.share.disabled": "ปิดใช้งาน",
|
||||
"settings.experimental.formatter.title": "ฟอร์แมตเตอร์",
|
||||
"settings.experimental.formatter.description": "เปิดใช้งานฟอร์แมตโค้ดอัตโนมัติ",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "เปิดใช้งานการรวม Language Server Protocol",
|
||||
"settings.experimental.pasteSummary.title": "ปิดใช้งานสรุปการวาง",
|
||||
"settings.experimental.pasteSummary.description": "ไม่สรุปเนื้อหาที่วางขนาดใหญ่",
|
||||
"settings.experimental.batch.title": "เครื่องมือแบทช์",
|
||||
"settings.experimental.batch.description": "เปิดใช้งานการประมวลผลแบทช์ของการเรียกเครื่องมือ",
|
||||
"settings.experimental.continueOnDeny.title": "ดำเนินต่อเมื่อถูกปฏิเสธ",
|
||||
"settings.experimental.continueOnDeny.description": "ดำเนินลูปเอเจนต์ต่อเมื่อสิทธิ์ถูกปฏิเสธ",
|
||||
"settings.experimental.mcpTimeout.title": "หมดเวลา MCP (มิลลิวินาที)",
|
||||
"settings.experimental.mcpTimeout.description": "หมดเวลาสำหรับคำขอเซิร์ฟเวอร์ MCP เป็นมิลลิวินาที",
|
||||
"settings.experimental.toolToggles": "สวิตช์เครื่องมือ",
|
||||
"settings.agentBehaviour.defaultAgent.title": "เอเจนต์เริ่มต้น",
|
||||
"settings.agentBehaviour.defaultAgent.description": "เอเจนต์ที่ใช้เมื่อไม่ได้ระบุ",
|
||||
"settings.agentBehaviour.selectAgent": "เลือกเอเจนต์เพื่อกำหนดค่า…",
|
||||
"settings.agentBehaviour.modelOverride.title": "แทนที่โมเดล",
|
||||
"settings.agentBehaviour.modelOverride.description": "แทนที่โมเดลเริ่มต้นของเอเจนต์นี้",
|
||||
"settings.agentBehaviour.prompt.title": "พรอมต์กำหนดเอง",
|
||||
"settings.agentBehaviour.prompt.description": "พรอมต์ระบบเพิ่มเติมสำหรับเอเจนต์นี้",
|
||||
"settings.agentBehaviour.temperature.title": "อุณหภูมิ",
|
||||
"settings.agentBehaviour.temperature.description": "อุณหภูมิการสุ่มตัวอย่าง (0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "พารามิเตอร์ nucleus sampling (0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "ขั้นตอนสูงสุด",
|
||||
"settings.agentBehaviour.maxSteps.description": "จำนวนรอบเอเจนต์สูงสุด",
|
||||
"settings.agentBehaviour.skillPaths": "เส้นทางโฟลเดอร์ทักษะ",
|
||||
"settings.agentBehaviour.skillUrls": "URL ทักษะ",
|
||||
"settings.agentBehaviour.instructionFiles": "ไฟล์คำสั่งเพิ่มเติม",
|
||||
"settings.agentBehaviour.instructionFiles.description": "เส้นทางไฟล์คำสั่งเพิ่มเติมในพรอมต์ระบบ",
|
||||
"settings.agentBehaviour.mcpEmpty":
|
||||
"ไม่ได้กำหนดค่าเซิร์ฟเวอร์ MCP แก้ไขไฟล์กำหนดค่า opencode เพื่อเพิ่มเซิร์ฟเวอร์ MCP",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "เวิร์กโฟลว์จัดการผ่านไฟล์เวิร์กโฟลว์ในพื้นที่ทำงาน",
|
||||
"settings.agentBehaviour.notImplemented": "ยังไม่ได้ใช้งาน",
|
||||
"settings.autoApprove.setAll": "ตั้งค่าสิทธิ์ทั้งหมด",
|
||||
"settings.autoApprove.level.allow": "อนุญาต",
|
||||
"settings.autoApprove.level.ask": "ถาม",
|
||||
"settings.autoApprove.level.deny": "ปฏิเสธ",
|
||||
"settings.autoApprove.tool.read": "อ่านเนื้อหาไฟล์",
|
||||
"settings.autoApprove.tool.edit": "แก้ไขหรือสร้างไฟล์",
|
||||
"settings.autoApprove.tool.glob": "ค้นหาไฟล์ตามรูปแบบ",
|
||||
"settings.autoApprove.tool.grep": "ค้นหาเนื้อหาไฟล์",
|
||||
"settings.autoApprove.tool.list": "แสดงเนื้อหาไดเรกทอรี",
|
||||
"settings.autoApprove.tool.bash": "เรียกใช้คำสั่ง shell",
|
||||
"settings.autoApprove.tool.task": "สร้างงานเอเจนต์ย่อย",
|
||||
"settings.autoApprove.tool.skill": "เรียกใช้ทักษะ",
|
||||
"settings.autoApprove.tool.lsp": "การดำเนินการเซิร์ฟเวอร์ภาษา",
|
||||
"settings.autoApprove.tool.todoread": "อ่านรายการสิ่งที่ต้องทำ",
|
||||
"settings.autoApprove.tool.todowrite": "เขียนรายการสิ่งที่ต้องทำ",
|
||||
"settings.autoApprove.tool.webfetch": "ดึงหน้าเว็บ",
|
||||
"settings.autoApprove.tool.websearch": "ค้นหาเว็บ",
|
||||
"settings.autoApprove.tool.codesearch": "ค้นหาโค้ดเบส",
|
||||
"settings.autoApprove.tool.external_directory": "เข้าถึงไฟล์นอกพื้นที่ทำงาน",
|
||||
"settings.autoApprove.tool.doom_loop": "ดำเนินต่อหลังจากล้มเหลวซ้ำ",
|
||||
"settings.checkpoints.enable.title": "เปิดใช้งานสแนปชอต",
|
||||
"settings.checkpoints.enable.description": "สร้างจุดตรวจก่อนแก้ไขไฟล์",
|
||||
"settings.context.autoCompaction.title": "การบีบอัดอัตโนมัติ",
|
||||
"settings.context.autoCompaction.description": "บีบอัดบริบทอัตโนมัติเมื่อเต็ม",
|
||||
"settings.context.prune.title": "ตัดผลลัพธ์เก่า",
|
||||
"settings.context.prune.description": "ลบผลลัพธ์เครื่องมือเก่าระหว่างการบีบอัด",
|
||||
"settings.context.watcherPatterns": "รูปแบบการละเว้นตัวเฝ้าดูไฟล์",
|
||||
"settings.context.watcherPatterns.description": "รูปแบบ glob สำหรับไฟล์ที่ตัวเฝ้าดูควรละเว้น",
|
||||
"settings.display.username.title": "ชื่อผู้ใช้",
|
||||
"settings.display.username.description": "ชื่อผู้ใช้กำหนดเองในบทสนทนา",
|
||||
"settings.display.layout.title": "เค้าโครง",
|
||||
"settings.display.layout.description": "โหมดเค้าโครงสำหรับอินเทอร์เฟซแชท",
|
||||
"settings.display.layout.auto": "อัตโนมัติ",
|
||||
"settings.display.layout.stretch": "ยืด",
|
||||
"settings.providers.defaultModel.title": "โมเดลเริ่มต้น",
|
||||
"settings.providers.defaultModel.description": "โมเดลหลักสำหรับบทสนทนา",
|
||||
"settings.providers.smallModel.title": "โมเดลขนาดเล็ก",
|
||||
"settings.providers.smallModel.description": "โมเดลน้ำหนักเบาสำหรับสร้างชื่อและงานด่วน",
|
||||
"settings.providers.disabled": "ผู้ให้บริการที่ปิดใช้งาน",
|
||||
"settings.providers.disabled.description": "ผู้ให้บริการที่จะซ่อนจากรายการ",
|
||||
"settings.providers.enabled": "ผู้ให้บริการที่เปิดใช้งาน (รายการที่อนุญาต)",
|
||||
"settings.providers.enabled.description": "หากตั้งค่า เฉพาะผู้ให้บริการเหล่านี้เท่านั้นที่จะพร้อมใช้งาน",
|
||||
"settings.providers.notSet": "ไม่ได้ตั้งค่า (ใช้ค่าเริ่มต้นของเซิร์ฟเวอร์)",
|
||||
"dialog.model.notSet": "ไม่ได้ตั้งค่า",
|
||||
"profile.personalAccount": "บัญชีส่วนตัว",
|
||||
}
|
||||
|
||||
@@ -797,6 +797,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.prefix": "如果您有任何问题或反馈,欢迎在以下平台提交 issue",
|
||||
"settings.aboutKiloCode.feedback.or": "或",
|
||||
"settings.aboutKiloCode.support.prefix": "如有账单或账户问题,请联系客户支持",
|
||||
"settings.aboutKiloCode.resetSettings.title": "重置设置",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"将所有 Kilo Code 扩展设置重置为默认值。这不会影响 CLI 或后端配置。",
|
||||
"settings.aboutKiloCode.resetSettings.button": "重置所有设置",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "模式",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -817,4 +821,115 @@ export const dict = {
|
||||
"settings.language.description": '"自动"将使用 VS Code 的显示语言。选择 Kilo Code 界面的语言。',
|
||||
"settings.language.auto": "自动(VS Code 语言)",
|
||||
"settings.language.current": "当前:",
|
||||
|
||||
"common.add": "添加",
|
||||
"common.default": "默认",
|
||||
"common.choose": "选择…",
|
||||
"settings.notImplemented": "此部分尚未实现。",
|
||||
"settings.notImplemented.description":
|
||||
"此处将包含与所选设置类别相关的配置选项和说明文字。在重新实现期间,可使用此空间验证布局、间距、滚动行为和导航状态,然后再接入实际控件。",
|
||||
"settings.autocomplete.autoTrigger.title": "启用自动内联补全",
|
||||
"settings.autocomplete.autoTrigger.description": "在您输入时自动显示内联补全建议",
|
||||
"settings.autocomplete.smartKeybinding.title": "启用智能内联任务快捷键",
|
||||
"settings.autocomplete.smartKeybinding.description": "使用智能快捷键触发内联任务",
|
||||
"settings.autocomplete.chatAutocomplete.title": "启用聊天文本框自动补全",
|
||||
"settings.autocomplete.chatAutocomplete.description": "在聊天文本框中显示自动补全建议",
|
||||
"settings.notifications.agent.title": "智能体完成",
|
||||
"settings.notifications.agent.description": "智能体完成任务时显示通知",
|
||||
"settings.notifications.permissions.title": "权限请求",
|
||||
"settings.notifications.permissions.description": "权限请求时显示通知",
|
||||
"settings.notifications.errors.title": "错误",
|
||||
"settings.notifications.errors.description": "发生错误时显示通知",
|
||||
"settings.notifications.sounds": "声音",
|
||||
"settings.notifications.agentSound.title": "智能体完成提示音",
|
||||
"settings.notifications.agentSound.description": "智能体完成时播放的声音",
|
||||
"settings.notifications.permSound.title": "权限请求提示音",
|
||||
"settings.notifications.permSound.description": "权限请求时播放的声音",
|
||||
"settings.notifications.errorSound.title": "错误提示音",
|
||||
"settings.notifications.errorSound.description": "发生错误时播放的声音",
|
||||
"settings.notifications.sound.default": "默认",
|
||||
"settings.notifications.sound.none": "无",
|
||||
"settings.experimental.share.title": "分享模式",
|
||||
"settings.experimental.share.description": "会话分享行为",
|
||||
"settings.experimental.share.manual": "手动",
|
||||
"settings.experimental.share.auto": "自动",
|
||||
"settings.experimental.share.disabled": "禁用",
|
||||
"settings.experimental.formatter.title": "格式化工具",
|
||||
"settings.experimental.formatter.description": "启用自动代码格式化",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "启用语言服务器协议集成",
|
||||
"settings.experimental.pasteSummary.title": "禁用粘贴摘要",
|
||||
"settings.experimental.pasteSummary.description": "不对大量粘贴内容进行摘要",
|
||||
"settings.experimental.batch.title": "批量工具",
|
||||
"settings.experimental.batch.description": "启用多个工具调用的批处理",
|
||||
"settings.experimental.continueOnDeny.title": "拒绝后继续",
|
||||
"settings.experimental.continueOnDeny.description": "权限被拒绝时继续智能体循环",
|
||||
"settings.experimental.mcpTimeout.title": "MCP 超时(毫秒)",
|
||||
"settings.experimental.mcpTimeout.description": "MCP 服务器请求的超时时间(毫秒)",
|
||||
"settings.experimental.toolToggles": "工具开关",
|
||||
"settings.agentBehaviour.defaultAgent.title": "默认智能体",
|
||||
"settings.agentBehaviour.defaultAgent.description": "未指定时使用的智能体",
|
||||
"settings.agentBehaviour.selectAgent": "选择要配置的智能体…",
|
||||
"settings.agentBehaviour.modelOverride.title": "模型覆盖",
|
||||
"settings.agentBehaviour.modelOverride.description": "覆盖此智能体的默认模型",
|
||||
"settings.agentBehaviour.prompt.title": "自定义提示词",
|
||||
"settings.agentBehaviour.prompt.description": "此智能体的附加系统提示词",
|
||||
"settings.agentBehaviour.temperature.title": "温度",
|
||||
"settings.agentBehaviour.temperature.description": "采样温度(0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "核采样参数(0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "最大步数",
|
||||
"settings.agentBehaviour.maxSteps.description": "最大智能体迭代次数",
|
||||
"settings.agentBehaviour.skillPaths": "技能文件夹路径",
|
||||
"settings.agentBehaviour.skillUrls": "技能 URL",
|
||||
"settings.agentBehaviour.instructionFiles": "附加指令文件",
|
||||
"settings.agentBehaviour.instructionFiles.description": "包含在系统提示词中的附加指令文件路径",
|
||||
"settings.agentBehaviour.mcpEmpty": "未配置 MCP 服务器。编辑 opencode 配置文件以添加 MCP 服务器。",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "工作流通过工作区中的工作流文件管理。",
|
||||
"settings.agentBehaviour.notImplemented": "尚未实现。",
|
||||
"settings.autoApprove.setAll": "设置所有权限",
|
||||
"settings.autoApprove.level.allow": "允许",
|
||||
"settings.autoApprove.level.ask": "询问",
|
||||
"settings.autoApprove.level.deny": "拒绝",
|
||||
"settings.autoApprove.tool.read": "读取文件内容",
|
||||
"settings.autoApprove.tool.edit": "编辑或创建文件",
|
||||
"settings.autoApprove.tool.glob": "按模式查找文件",
|
||||
"settings.autoApprove.tool.grep": "搜索文件内容",
|
||||
"settings.autoApprove.tool.list": "列出目录内容",
|
||||
"settings.autoApprove.tool.bash": "执行 shell 命令",
|
||||
"settings.autoApprove.tool.task": "创建子智能体任务",
|
||||
"settings.autoApprove.tool.skill": "执行技能",
|
||||
"settings.autoApprove.tool.lsp": "语言服务器操作",
|
||||
"settings.autoApprove.tool.todoread": "读取待办列表",
|
||||
"settings.autoApprove.tool.todowrite": "写入待办列表",
|
||||
"settings.autoApprove.tool.webfetch": "获取网页",
|
||||
"settings.autoApprove.tool.websearch": "搜索网络",
|
||||
"settings.autoApprove.tool.codesearch": "搜索代码库",
|
||||
"settings.autoApprove.tool.external_directory": "访问工作区外的文件",
|
||||
"settings.autoApprove.tool.doom_loop": "重复失败后继续",
|
||||
"settings.checkpoints.enable.title": "启用快照",
|
||||
"settings.checkpoints.enable.description": "在文件编辑前创建检查点,以便恢复之前的状态",
|
||||
"settings.context.autoCompaction.title": "自动压缩",
|
||||
"settings.context.autoCompaction.description": "上下文满时自动压缩",
|
||||
"settings.context.prune.title": "修剪旧输出",
|
||||
"settings.context.prune.description": "压缩期间移除旧的工具输出",
|
||||
"settings.context.watcherPatterns": "文件监视器忽略模式",
|
||||
"settings.context.watcherPatterns.description": "监视器应忽略的文件的 glob 模式",
|
||||
"settings.display.username.title": "用户名",
|
||||
"settings.display.username.description": "对话中显示的自定义用户名",
|
||||
"settings.display.layout.title": "布局",
|
||||
"settings.display.layout.description": "聊天界面的布局模式",
|
||||
"settings.display.layout.auto": "自动",
|
||||
"settings.display.layout.stretch": "拉伸",
|
||||
"settings.providers.defaultModel.title": "默认模型",
|
||||
"settings.providers.defaultModel.description": "对话的主要模型",
|
||||
"settings.providers.smallModel.title": "小模型",
|
||||
"settings.providers.smallModel.description": "用于标题生成和其他快速任务的轻量模型",
|
||||
"settings.providers.disabled": "已禁用的提供者",
|
||||
"settings.providers.disabled.description": "从提供者列表中隐藏的提供者",
|
||||
"settings.providers.enabled": "已启用的提供者(白名单)",
|
||||
"settings.providers.enabled.description": "如果设置,只有这些提供者可用(排他性白名单)",
|
||||
"settings.providers.notSet": "未设置(使用服务器默认值)",
|
||||
"dialog.model.notSet": "未设置",
|
||||
"profile.personalAccount": "个人账户",
|
||||
} satisfies Partial<Record<Keys, string>>
|
||||
|
||||
@@ -794,6 +794,10 @@ export const dict = {
|
||||
"settings.aboutKiloCode.feedback.prefix": "如果您有任何問題或回饋,歡迎在以下平台提交 issue",
|
||||
"settings.aboutKiloCode.feedback.or": "或",
|
||||
"settings.aboutKiloCode.support.prefix": "如有帳單或帳戶問題,請聯繫客戶支援",
|
||||
"settings.aboutKiloCode.resetSettings.title": "重置設定",
|
||||
"settings.aboutKiloCode.resetSettings.description":
|
||||
"將所有 Kilo Code 擴充功能設定重置為預設值。這不會影響 CLI 或後端配置。",
|
||||
"settings.aboutKiloCode.resetSettings.button": "重置所有設定",
|
||||
|
||||
"settings.agentBehaviour.subtab.modes": "模式",
|
||||
"settings.agentBehaviour.subtab.agents": "Agents",
|
||||
@@ -814,4 +818,114 @@ export const dict = {
|
||||
"settings.language.description": "選擇 Kilo Code 介面的語言。「自動」使用 VS Code 的顯示語言。",
|
||||
"settings.language.auto": "自動(VS Code 語言)",
|
||||
"settings.language.current": "目前:",
|
||||
|
||||
"common.add": "新增",
|
||||
"common.default": "預設",
|
||||
"common.choose": "選擇…",
|
||||
"settings.notImplemented": "此部分尚未實作。",
|
||||
"settings.notImplemented.description": "此處將包含與所選設定類別相關的設定選項和說明文字。",
|
||||
"settings.autocomplete.autoTrigger.title": "啟用自動內嵌補全",
|
||||
"settings.autocomplete.autoTrigger.description": "在您輸入時自動顯示內嵌補全建議",
|
||||
"settings.autocomplete.smartKeybinding.title": "啟用智慧內嵌任務快捷鍵",
|
||||
"settings.autocomplete.smartKeybinding.description": "使用智慧快捷鍵觸發內嵌任務",
|
||||
"settings.autocomplete.chatAutocomplete.title": "啟用聊天文字方塊自動補全",
|
||||
"settings.autocomplete.chatAutocomplete.description": "在聊天文字方塊中顯示自動補全建議",
|
||||
"settings.notifications.agent.title": "代理完成",
|
||||
"settings.notifications.agent.description": "代理完成任務時顯示通知",
|
||||
"settings.notifications.permissions.title": "權限請求",
|
||||
"settings.notifications.permissions.description": "權限請求時顯示通知",
|
||||
"settings.notifications.errors.title": "錯誤",
|
||||
"settings.notifications.errors.description": "發生錯誤時顯示通知",
|
||||
"settings.notifications.sounds": "聲音",
|
||||
"settings.notifications.agentSound.title": "代理完成提示音",
|
||||
"settings.notifications.agentSound.description": "代理完成時播放的聲音",
|
||||
"settings.notifications.permSound.title": "權限請求提示音",
|
||||
"settings.notifications.permSound.description": "權限請求時播放的聲音",
|
||||
"settings.notifications.errorSound.title": "錯誤提示音",
|
||||
"settings.notifications.errorSound.description": "發生錯誤時播放的聲音",
|
||||
"settings.notifications.sound.default": "預設",
|
||||
"settings.notifications.sound.none": "無",
|
||||
"settings.experimental.share.title": "分享模式",
|
||||
"settings.experimental.share.description": "工作階段分享行為",
|
||||
"settings.experimental.share.manual": "手動",
|
||||
"settings.experimental.share.auto": "自動",
|
||||
"settings.experimental.share.disabled": "停用",
|
||||
"settings.experimental.formatter.title": "格式化工具",
|
||||
"settings.experimental.formatter.description": "啟用自動程式碼格式化",
|
||||
"settings.experimental.lsp.title": "LSP",
|
||||
"settings.experimental.lsp.description": "啟用語言伺服器協定整合",
|
||||
"settings.experimental.pasteSummary.title": "停用貼上摘要",
|
||||
"settings.experimental.pasteSummary.description": "不對大量貼上內容進行摘要",
|
||||
"settings.experimental.batch.title": "批次工具",
|
||||
"settings.experimental.batch.description": "啟用多個工具呼叫的批次處理",
|
||||
"settings.experimental.continueOnDeny.title": "拒絕後繼續",
|
||||
"settings.experimental.continueOnDeny.description": "權限被拒絕時繼續代理迴圈",
|
||||
"settings.experimental.mcpTimeout.title": "MCP 逾時(毫秒)",
|
||||
"settings.experimental.mcpTimeout.description": "MCP 伺服器請求的逾時時間(毫秒)",
|
||||
"settings.experimental.toolToggles": "工具開關",
|
||||
"settings.agentBehaviour.defaultAgent.title": "預設代理",
|
||||
"settings.agentBehaviour.defaultAgent.description": "未指定時使用的代理",
|
||||
"settings.agentBehaviour.selectAgent": "選擇要設定的代理…",
|
||||
"settings.agentBehaviour.modelOverride.title": "模型覆寫",
|
||||
"settings.agentBehaviour.modelOverride.description": "覆寫此代理的預設模型",
|
||||
"settings.agentBehaviour.prompt.title": "自訂提示詞",
|
||||
"settings.agentBehaviour.prompt.description": "此代理的附加系統提示詞",
|
||||
"settings.agentBehaviour.temperature.title": "溫度",
|
||||
"settings.agentBehaviour.temperature.description": "取樣溫度(0-2)",
|
||||
"settings.agentBehaviour.topP.title": "Top P",
|
||||
"settings.agentBehaviour.topP.description": "核取樣參數(0-1)",
|
||||
"settings.agentBehaviour.maxSteps.title": "最大步數",
|
||||
"settings.agentBehaviour.maxSteps.description": "最大代理迭代次數",
|
||||
"settings.agentBehaviour.skillPaths": "技能資料夾路徑",
|
||||
"settings.agentBehaviour.skillUrls": "技能 URL",
|
||||
"settings.agentBehaviour.instructionFiles": "附加指令檔案",
|
||||
"settings.agentBehaviour.instructionFiles.description": "包含在系統提示詞中的附加指令檔案路徑",
|
||||
"settings.agentBehaviour.mcpEmpty": "未設定 MCP 伺服器。編輯 opencode 設定檔以新增 MCP 伺服器。",
|
||||
"settings.agentBehaviour.workflowsPlaceholder": "工作流程透過工作區中的工作流程檔案管理。",
|
||||
"settings.agentBehaviour.notImplemented": "尚未實作。",
|
||||
"settings.autoApprove.setAll": "設定所有權限",
|
||||
"settings.autoApprove.level.allow": "允許",
|
||||
"settings.autoApprove.level.ask": "詢問",
|
||||
"settings.autoApprove.level.deny": "拒絕",
|
||||
"settings.autoApprove.tool.read": "讀取檔案內容",
|
||||
"settings.autoApprove.tool.edit": "編輯或建立檔案",
|
||||
"settings.autoApprove.tool.glob": "按模式尋找檔案",
|
||||
"settings.autoApprove.tool.grep": "搜尋檔案內容",
|
||||
"settings.autoApprove.tool.list": "列出目錄內容",
|
||||
"settings.autoApprove.tool.bash": "執行 shell 命令",
|
||||
"settings.autoApprove.tool.task": "建立子代理任務",
|
||||
"settings.autoApprove.tool.skill": "執行技能",
|
||||
"settings.autoApprove.tool.lsp": "語言伺服器操作",
|
||||
"settings.autoApprove.tool.todoread": "讀取待辦清單",
|
||||
"settings.autoApprove.tool.todowrite": "寫入待辦清單",
|
||||
"settings.autoApprove.tool.webfetch": "擷取網頁",
|
||||
"settings.autoApprove.tool.websearch": "搜尋網路",
|
||||
"settings.autoApprove.tool.codesearch": "搜尋程式碼庫",
|
||||
"settings.autoApprove.tool.external_directory": "存取工作區外的檔案",
|
||||
"settings.autoApprove.tool.doom_loop": "重複失敗後繼續",
|
||||
"settings.checkpoints.enable.title": "啟用快照",
|
||||
"settings.checkpoints.enable.description": "在檔案編輯前建立檢查點,以便恢復之前的狀態",
|
||||
"settings.context.autoCompaction.title": "自動壓縮",
|
||||
"settings.context.autoCompaction.description": "上下文滿時自動壓縮",
|
||||
"settings.context.prune.title": "修剪舊輸出",
|
||||
"settings.context.prune.description": "壓縮期間移除舊的工具輸出",
|
||||
"settings.context.watcherPatterns": "檔案監視器忽略模式",
|
||||
"settings.context.watcherPatterns.description": "監視器應忽略的檔案的 glob 模式",
|
||||
"settings.display.username.title": "使用者名稱",
|
||||
"settings.display.username.description": "對話中顯示的自訂使用者名稱",
|
||||
"settings.display.layout.title": "佈局",
|
||||
"settings.display.layout.description": "聊天介面的佈局模式",
|
||||
"settings.display.layout.auto": "自動",
|
||||
"settings.display.layout.stretch": "延伸",
|
||||
"settings.providers.defaultModel.title": "預設模型",
|
||||
"settings.providers.defaultModel.description": "對話的主要模型",
|
||||
"settings.providers.smallModel.title": "小模型",
|
||||
"settings.providers.smallModel.description": "用於標題產生和其他快速任務的輕量模型",
|
||||
"settings.providers.disabled": "已停用的提供者",
|
||||
"settings.providers.disabled.description": "從提供者清單中隱藏的提供者",
|
||||
"settings.providers.enabled": "已啟用的提供者(白名單)",
|
||||
"settings.providers.enabled.description": "如果設定,只有這些提供者可用(排他性白名單)",
|
||||
"settings.providers.notSet": "未設定(使用伺服器預設值)",
|
||||
"dialog.model.notSet": "未設定",
|
||||
"profile.personalAccount": "個人帳戶",
|
||||
} satisfies Partial<Record<Keys, string>>
|
||||
|
||||
@@ -165,7 +165,16 @@
|
||||
============================================ */
|
||||
|
||||
.prompt-input-container {
|
||||
padding: 12px;
|
||||
margin: 12px;
|
||||
border-radius: 0.25rem;
|
||||
background-color: var(--input-base, var(--vscode-input-background, #3c3c3c));
|
||||
border: 1px solid var(--border-weak-base, var(--vscode-input-border, #3c3c3c));
|
||||
box-shadow: none;
|
||||
|
||||
&:focus-within {
|
||||
border-color: var(--border-focus, var(--vscode-focusBorder, #007fd4));
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
.prompt-input-wrapper {
|
||||
@@ -176,13 +185,10 @@
|
||||
|
||||
.prompt-input {
|
||||
flex: 1;
|
||||
min-height: 52px;
|
||||
min-height: 54px;
|
||||
max-height: 200px;
|
||||
padding: 8px 12px;
|
||||
background: var(--vscode-input-background);
|
||||
padding: 8px;
|
||||
color: var(--vscode-input-foreground);
|
||||
border: 1px solid var(--vscode-input-border);
|
||||
border-radius: 4px;
|
||||
font-family: var(--vscode-font-family);
|
||||
font-size: 13px;
|
||||
line-height: 1.4;
|
||||
@@ -243,15 +249,77 @@
|
||||
color: var(--vscode-editorGhostText-foreground, rgba(255, 255, 255, 0.35));
|
||||
}
|
||||
|
||||
.prompt-input-actions {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.prompt-input-hint {
|
||||
margin-top: 4px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 11px;
|
||||
color: var(--vscode-descriptionForeground);
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
.prompt-input-hint-selectors {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
|
||||
[data-component="button"] {
|
||||
height: auto !important;
|
||||
min-height: 22px;
|
||||
padding: 4px 6px !important;
|
||||
font-size: 12px;
|
||||
line-height: normal;
|
||||
border-radius: 6px;
|
||||
background: var(--surface-base);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
box-shadow: none;
|
||||
opacity: 1;
|
||||
gap: 6px;
|
||||
white-space: nowrap;
|
||||
transition: all 150ms;
|
||||
color: var(--text-base, var(--vscode-foreground));
|
||||
|
||||
&[data-expanded] {
|
||||
background: var(--surface-base-hover) !important;
|
||||
background-color: var(--surface-base-hover) !important;
|
||||
}
|
||||
|
||||
&:hover:not(:disabled) {
|
||||
background: var(--surface-base-hover);
|
||||
background-color: var(--surface-base-hover);
|
||||
}
|
||||
|
||||
&:focus-visible {
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 1px var(--border-focus);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.prompt-input-hint-actions {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
|
||||
[data-component="button"] {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0;
|
||||
|
||||
[data-slot="icon-svg"] {
|
||||
color: var(--icon-base);
|
||||
}
|
||||
|
||||
[data-slot="progress-circle-background"] {
|
||||
stroke: var(--icon-base);
|
||||
}
|
||||
|
||||
[data-slot="progress-circle-progress"] {
|
||||
stroke: var(--border-focus, var(--vscode-focusBorder, #007fd4));
|
||||
}
|
||||
}
|
||||
[data-component="icon-button"] {
|
||||
[data-slot="icon-svg"] {
|
||||
color: var(--icon-base) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
|
||||
@@ -690,6 +690,10 @@ export interface RequestNotificationSettingsMessage {
|
||||
type: "requestNotificationSettings"
|
||||
}
|
||||
|
||||
export interface ResetAllSettingsRequest {
|
||||
type: "resetAllSettings"
|
||||
}
|
||||
|
||||
export type WebviewMessage =
|
||||
| SendMessageRequest
|
||||
| AbortRequest
|
||||
@@ -722,6 +726,7 @@ export type WebviewMessage =
|
||||
| RequestConfigMessage
|
||||
| UpdateConfigMessage
|
||||
| RequestNotificationSettingsMessage
|
||||
| ResetAllSettingsRequest
|
||||
|
||||
// ============================================
|
||||
// VS Code API type
|
||||
|
||||
@@ -128,13 +128,13 @@ async function showRemovalSummary(targets: RemovalTargets, method: Installation.
|
||||
|
||||
if (method !== "curl" && method !== "unknown") {
|
||||
const cmds: Record<string, string> = {
|
||||
npm: "npm uninstall -g opencode-ai",
|
||||
pnpm: "pnpm uninstall -g opencode-ai",
|
||||
bun: "bun remove -g opencode-ai",
|
||||
yarn: "yarn global remove opencode-ai",
|
||||
npm: "npm uninstall -g @kilocode/cli", // kilocode_change
|
||||
pnpm: "pnpm uninstall -g @kilocode/cli", // kilocode_change
|
||||
bun: "bun remove -g @kilocode/cli", // kilocode_change
|
||||
yarn: "yarn global remove @kilocode/cli", // kilocode_change
|
||||
brew: "brew uninstall opencode",
|
||||
choco: "choco uninstall opencode",
|
||||
scoop: "scoop uninstall opencode",
|
||||
choco: "choco uninstall kilo", // kilocode_change
|
||||
scoop: "scoop uninstall kilo", // kilocode_change
|
||||
}
|
||||
prompts.log.info(` ✓ Package: ${cmds[method] || method}`)
|
||||
}
|
||||
@@ -179,13 +179,13 @@ async function executeUninstall(method: Installation.Method, targets: RemovalTar
|
||||
|
||||
if (method !== "curl" && method !== "unknown") {
|
||||
const cmds: Record<string, string[]> = {
|
||||
npm: ["npm", "uninstall", "-g", "opencode-ai"],
|
||||
pnpm: ["pnpm", "uninstall", "-g", "opencode-ai"],
|
||||
bun: ["bun", "remove", "-g", "opencode-ai"],
|
||||
yarn: ["yarn", "global", "remove", "opencode-ai"],
|
||||
npm: ["npm", "uninstall", "-g", "@kilocode/cli"], // kilocode_change
|
||||
pnpm: ["pnpm", "uninstall", "-g", "@kilocode/cli"], // kilocode_change
|
||||
bun: ["bun", "remove", "-g", "@kilocode/cli"], // kilocode_change
|
||||
yarn: ["yarn", "global", "remove", "@kilocode/cli"], // kilocode_change
|
||||
brew: ["brew", "uninstall", "opencode"],
|
||||
choco: ["choco", "uninstall", "opencode"],
|
||||
scoop: ["scoop", "uninstall", "opencode"],
|
||||
choco: ["choco", "uninstall", "kilo"], // kilocode_change
|
||||
scoop: ["scoop", "uninstall", "kilo"], // kilocode_change
|
||||
}
|
||||
|
||||
const cmd = cmds[method]
|
||||
@@ -193,7 +193,7 @@ async function executeUninstall(method: Installation.Method, targets: RemovalTar
|
||||
spinner.start(`Running ${cmd.join(" ")}...`)
|
||||
const result =
|
||||
method === "choco"
|
||||
? await $`echo Y | choco uninstall opencode -y -r`.quiet().nothrow()
|
||||
? await $`echo Y | choco uninstall kilo -y -r`.quiet().nothrow() // kilocode_change
|
||||
: await $`${cmd}`.quiet().nothrow()
|
||||
if (result.exitCode !== 0) {
|
||||
spinner.stop(`Package manager uninstall failed: exit code ${result.exitCode}`, 1)
|
||||
@@ -217,7 +217,8 @@ async function executeUninstall(method: Installation.Method, targets: RemovalTar
|
||||
prompts.log.info(` rm "${targets.binary}"`)
|
||||
|
||||
const binDir = path.dirname(targets.binary)
|
||||
if (binDir.includes(".opencode")) {
|
||||
if (binDir.includes(".opencode") || binDir.includes(".kilo")) {
|
||||
// kilocode_change
|
||||
prompts.log.info(` rmdir "${binDir}" 2>/dev/null`)
|
||||
}
|
||||
}
|
||||
@@ -270,9 +271,16 @@ async function getShellConfigFile(): Promise<string | null> {
|
||||
const content = await Bun.file(file)
|
||||
.text()
|
||||
.catch(() => "")
|
||||
if (content.includes("# opencode") || content.includes(".opencode/bin")) {
|
||||
// kilocode_change start - detect both opencode and kilo markers
|
||||
if (
|
||||
content.includes("# opencode") ||
|
||||
content.includes(".opencode/bin") ||
|
||||
content.includes("# kilo") ||
|
||||
content.includes(".kilo/bin")
|
||||
) {
|
||||
return file
|
||||
}
|
||||
// kilocode_change end
|
||||
}
|
||||
|
||||
return null
|
||||
@@ -288,24 +296,26 @@ async function cleanShellConfig(file: string) {
|
||||
for (const line of lines) {
|
||||
const trimmed = line.trim()
|
||||
|
||||
if (trimmed === "# opencode") {
|
||||
// kilocode_change start - clean both opencode and kilo markers
|
||||
if (trimmed === "# opencode" || trimmed === "# kilo") {
|
||||
skip = true
|
||||
continue
|
||||
}
|
||||
|
||||
if (skip) {
|
||||
skip = false
|
||||
if (trimmed.includes(".opencode/bin") || trimmed.includes("fish_add_path")) {
|
||||
if (trimmed.includes(".opencode/bin") || trimmed.includes(".kilo/bin") || trimmed.includes("fish_add_path")) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
(trimmed.startsWith("export PATH=") && trimmed.includes(".opencode/bin")) ||
|
||||
(trimmed.startsWith("fish_add_path") && trimmed.includes(".opencode"))
|
||||
(trimmed.startsWith("export PATH=") && (trimmed.includes(".opencode/bin") || trimmed.includes(".kilo/bin"))) ||
|
||||
(trimmed.startsWith("fish_add_path") && (trimmed.includes(".opencode") || trimmed.includes(".kilo")))
|
||||
) {
|
||||
continue
|
||||
}
|
||||
// kilocode_change end
|
||||
|
||||
filtered.push(line)
|
||||
}
|
||||
|
||||
@@ -68,7 +68,38 @@ One of:
|
||||
- **APPROVE** — Code is ready to merge/commit
|
||||
- **APPROVE WITH SUGGESTIONS** — Minor improvements suggested but not blocking
|
||||
- **NEEDS CHANGES** — Issues must be addressed before merging
|
||||
- **NEEDS DISCUSSION** — Architectural or design concerns need team input
|
||||
|
||||
## IMPORTANT: Post-Review Workflow
|
||||
|
||||
You MUST first write the COMPLETE review above (Summary, Issues Found, Detailed Findings, Recommendation) as regular text output. Do NOT use the question tool until the entire review text has been written.
|
||||
|
||||
ONLY AFTER the full review is written:
|
||||
|
||||
- If your recommendation is **APPROVE** with no issues found, you are done. Do NOT call the question tool.
|
||||
- If your recommendation is **APPROVE WITH SUGGESTIONS** or **NEEDS CHANGES**, THEN call the question tool to offer fix suggestions with mode switching.
|
||||
|
||||
When calling the question tool, provide at least one option. Choose the appropriate mode for each option:
|
||||
- mode "code" for direct code fixes (bugs, missing error handling, clear improvements)
|
||||
- mode "debug" for issues needing investigation before fixing (race conditions, unclear root causes, intermittent failures)
|
||||
- mode "orchestrator" when there are many issues (5+) spanning different categories that need coordinated, planned fixes
|
||||
|
||||
Option patterns based on review findings:
|
||||
- **Few clear fixes (1-4 issues, same category):** offer mode "code" fixes
|
||||
- **Many issues across categories (5+, mixed security/performance/quality):** offer mode "orchestrator" to plan fixes and mode "code" for quick wins
|
||||
- **Issues needing investigation:** include a mode "debug" option to investigate root causes
|
||||
- **Suggestions only:** offer mode "code" to apply improvements
|
||||
|
||||
Example question tool call (ONLY after full review is written):
|
||||
{
|
||||
"questions": [{
|
||||
"question": "What would you like to do?",
|
||||
"header": "Next steps",
|
||||
"options": [
|
||||
{ "label": "Fix all issues", "description": "Fix all issues found in this review", "mode": "code" },
|
||||
{ "label": "Fix critical only", "description": "Fix critical issues only", "mode": "code" }
|
||||
]
|
||||
}]
|
||||
}
|
||||
`
|
||||
|
||||
const EMPTY_DIFF_PROMPT = `You are Kilo Code, an expert code reviewer with deep expertise in software engineering best practices, security vulnerabilities, performance optimization, and code quality. Your role is advisory — provide clear, actionable feedback but DO NOT modify any files. Do not use any file editing tools.
|
||||
|
||||
@@ -12,6 +12,10 @@ export namespace Question {
|
||||
.object({
|
||||
label: z.string().describe("Display text (1-5 words, concise)"),
|
||||
description: z.string().describe("Explanation of choice"),
|
||||
mode: z
|
||||
.string()
|
||||
.optional()
|
||||
.describe("Optional agent/mode to switch to when selected (e.g. code, debug, orchestrator)"), // kilocode_change
|
||||
})
|
||||
.meta({
|
||||
ref: "QuestionOption",
|
||||
|
||||
@@ -26,8 +26,7 @@ import { DEFAULT_HEADERS } from "@/kilocode/const" // kilocode_change
|
||||
import { Telemetry } from "@kilocode/kilo-telemetry" // kilocode_change
|
||||
// kilocode_change start
|
||||
import { getKiloProjectId } from "@/kilocode/project-id"
|
||||
import { HEADER_PROJECTID, HEADER_MACHINEID } from "@kilocode/kilo-gateway"
|
||||
import { Identity } from "@kilocode/kilo-telemetry"
|
||||
import { HEADER_PROJECTID } from "@kilocode/kilo-gateway"
|
||||
// kilocode_change end
|
||||
|
||||
export namespace LLM {
|
||||
@@ -159,10 +158,9 @@ export namespace LLM {
|
||||
},
|
||||
)
|
||||
|
||||
// kilocode_change start - resolve project ID and machine ID for kilo provider
|
||||
const isKilo = input.model.api.npm === "@kilocode/kilo-gateway"
|
||||
const kiloProjectId = isKilo ? await getKiloProjectId().catch(() => undefined) : undefined
|
||||
const machineId = isKilo ? await Identity.getMachineId().catch(() => undefined) : undefined
|
||||
// kilocode_change start - resolve project ID for kilo provider
|
||||
const kiloProjectId =
|
||||
input.model.api.npm === "@kilocode/kilo-gateway" ? await getKiloProjectId().catch(() => undefined) : undefined
|
||||
// kilocode_change end
|
||||
|
||||
const maxOutputTokens =
|
||||
@@ -239,9 +237,10 @@ export namespace LLM {
|
||||
...(input.model.api.npm === "@kilocode/kilo-gateway" && input.agent.name
|
||||
? { "x-kilocode-mode": input.agent.name.toLowerCase() }
|
||||
: {}),
|
||||
// kilocode_change start - add project ID and machine ID headers for kilo provider
|
||||
...(isKilo && kiloProjectId ? { [HEADER_PROJECTID]: kiloProjectId } : {}),
|
||||
...(isKilo && machineId ? { [HEADER_MACHINEID]: machineId } : {}),
|
||||
// kilocode_change start - add project ID header for kilo provider
|
||||
...(input.model.api.npm === "@kilocode/kilo-gateway" && kiloProjectId
|
||||
? { [HEADER_PROJECTID]: kiloProjectId }
|
||||
: {}),
|
||||
// kilocode_change end
|
||||
...input.model.headers,
|
||||
...headers,
|
||||
|
||||
@@ -578,6 +578,10 @@ export type QuestionOption = {
|
||||
* Explanation of choice
|
||||
*/
|
||||
description: string
|
||||
/**
|
||||
* Optional agent/mode to switch to when selected (e.g. code, debug, orchestrator)
|
||||
*/
|
||||
mode?: string
|
||||
}
|
||||
|
||||
export type QuestionInfo = {
|
||||
|
||||
@@ -7786,6 +7786,10 @@
|
||||
"description": {
|
||||
"description": "Explanation of choice",
|
||||
"type": "string"
|
||||
},
|
||||
"mode": {
|
||||
"description": "Optional agent/mode to switch to when selected (e.g. code, debug, orchestrator)",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": ["label", "description"]
|
||||
|
||||
Reference in New Issue
Block a user