Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/task-model-selection.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@kilocode/cli": minor
"@kilocode/sdk": minor
"kilo-code": minor
---

Allow the orchestrating agent to choose a model, provider, and reasoning effort for each subagent task behind an experimental setting.
3 changes: 3 additions & 0 deletions packages/core/src/v1/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,9 @@ export const Info = Schema.Struct({
native_notebook_tools: Schema.optional(Schema.Boolean).annotate({
description: "Enable native tools for reading, editing, and executing VS Code notebooks",
}),
task_model_selection: Schema.optional(Schema.Boolean).annotate({
description: "Allow task subagents to select a model, provider, and reasoning effort",
}),
speech_to_text_model: Schema.optional(Schema.String).annotate({
description: "Speech-to-text transcription model ID to use for voice input",
}),
Expand Down
36 changes: 36 additions & 0 deletions packages/kilo-vscode/tests/unit/task-model-selection.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { describe, expect, it } from "bun:test"
import { ConfigState } from "../../webview-ui/src/utils/config-utils"

describe("task subagent model selection config", () => {
it("stages the experimental toggle and discards it", () => {
const state = new ConfigState()
state.handleConfigLoaded({ experimental: { task_model_selection: false } })

state.updateConfig({ experimental: { task_model_selection: true } })

expect(state.config.experimental?.task_model_selection).toBe(true)
expect(state.draft.experimental?.task_model_selection).toBe(true)
expect(state.dirty).toBe(true)

state.discardConfig()

expect(state.config.experimental?.task_model_selection).toBe(false)
expect(state.dirty).toBe(false)
})

it("clears the draft after the backend confirms the save", () => {
const state = new ConfigState()
state.handleConfigLoaded({ experimental: { task_model_selection: false } })
state.updateConfig({ experimental: { task_model_selection: true } })
state.saveConfig()

expect(state.saving).toBe(true)

state.handleConfigUpdated({ experimental: { task_model_selection: true } })

expect(state.config.experimental?.task_model_selection).toBe(true)
expect(state.dirty).toBe(false)
expect(state.saving).toBe(false)
expect(state.draft).toEqual({})
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,19 @@ const ExperimentalTab: Component = () => {
</Switch>
</SettingsRow>

<SettingsRow
title={language.t("settings.experimental.taskModelSelection.title")}
description={language.t("settings.experimental.taskModelSelection.description")}
>
<Switch
checked={experimental().task_model_selection ?? false}
onChange={(checked) => updateExperimental("task_model_selection", checked)}
hideLabel
>
{language.t("settings.experimental.taskModelSelection.title")}
</Switch>
</SettingsRow>

{/* MCP timeout */}
<SettingsRow
title={language.t("settings.experimental.mcpTimeout.title")}
Expand Down
3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/ar.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/br.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/bs.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/da.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -913,6 +913,9 @@ export const dict = {
"settings.experimental.multiProject.title": "Multi-Projekt Agent Manager",
"settings.experimental.multiProject.description":
"Aktivieren Sie die Verwaltung von Sitzungen und Worktrees über mehrere Repositories im Agent Manager. Das aktuelle Workspace-Repository ist immer das Standardprojekt.",
"settings.experimental.taskModelSelection.title": "Task-Subagent-Modellauswahl",
"settings.experimental.taskModelSelection.description":
"Erlaubt die explizite Auswahl von Modell, Anbieter und Schlussfolgerungsaufwand für Task-Subagenten.",
"settings.experimental.mcpTimeout.title": "MCP-Zeitlimit (ms)",
"settings.experimental.mcpTimeout.description": "Zeitlimit für MCP-Server-Anfragen in Millisekunden",
"settings.experimental.remote.title": "Remote-Steuerung",
Expand Down
3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -873,6 +873,9 @@ export const dict = {
"settings.experimental.multiProject.title": "Multi-Project Agent Manager",
"settings.experimental.multiProject.description":
"Enable managing sessions and worktrees across multiple repositories in Agent Manager. The current workspace repository is always the default project.",
"settings.experimental.taskModelSelection.title": "Task Subagent Model Selection",
"settings.experimental.taskModelSelection.description":
"Allow task subagents to use an explicitly selected model, provider, and reasoning effort.",
"settings.experimental.mcpTimeout.title": "MCP Timeout (ms)",
"settings.experimental.mcpTimeout.description": "Timeout for MCP server requests in milliseconds",
"settings.experimental.remote.title": "Remote Control",
Expand Down
3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/es.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/fa.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/fr.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/it.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/ja.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/ko.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/nl.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/no.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/pl.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/ru.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/th.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/tr.ts

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

3 changes: 3 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/uk.ts

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

Loading
Loading