chore: regenerate SDK

This commit is contained in:
Imanol Maiztegui
2026-04-27 19:00:21 +02:00
parent d4e44b6128
commit 85eb4fa69b
24 changed files with 69197 additions and 1122 deletions
@@ -1,13 +1,13 @@
on:
schedule:
- cron: "7,37 * * * *" # every 30 min at :07 and :37
- cron: "7,37 * * * *" # every 30 min at :07 and :37
workflow_dispatch:
concurrency:
group: opencode-release-watch
cancel-in-progress: false
permissions:
permissions:
contents: read
jobs:
@@ -66,4 +66,3 @@ jobs:
with:
path: .cache/last-seen
key: last-seen-${{ steps.fetch.outputs.tag }}
+21 -23
View File
@@ -32,11 +32,11 @@ For in-process tests (no socket, fastest loop) see `packages/opencode/test/kiloc
## 2. `kilo serve` vs `bun dev serve` — important
| Command | What it runs |
|---|---|
| `kilo serve` | The npm-installed production CLI on `$PATH`. **Not the code in this repo.** |
| `bun dev serve …` (repo root) | The local main-branch backend from this worktree. **This is what you want.** |
| `bun run --cwd packages/opencode --conditions=browser src/index.ts serve …` | Same as `bun dev serve`, fully expanded. |
| Command | What it runs |
| --------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| `kilo serve` | The npm-installed production CLI on `$PATH`. **Not the code in this repo.** |
| `bun dev serve …` (repo root) | The local main-branch backend from this worktree. **This is what you want.** |
| `bun run --cwd packages/opencode --conditions=browser src/index.ts serve …` | Same as `bun dev serve`, fully expanded. |
Root `package.json` defines `"dev"` as the full `bun run --cwd packages/opencode --conditions=browser src/index.ts` invocation, so `bun dev <args>` forwards `<args>` to the local CLI entry point (`packages/opencode/src/index.ts`) without touching the installed binary.
@@ -82,13 +82,13 @@ BASE="http://127.0.0.1:$PORT"
### Flags (`packages/opencode/src/cli/network.ts`)
| Flag | Default | Notes |
|---|---|---|
| `--port` | `0` (OS-assigned) | Must be passed literally when overriding `opencode.json`'s `server.port`. |
| `--hostname` | `127.0.0.1` | Becomes `0.0.0.0` when `--mdns` is set without an override. |
| `--mdns` | `false` | Publishes an mDNS SRV record. |
| `--mdns-domain` | `kilo.local` | |
| `--cors` | `[]` | Extra allowed origins. |
| Flag | Default | Notes |
| --------------- | ----------------- | ------------------------------------------------------------------------- |
| `--port` | `0` (OS-assigned) | Must be passed literally when overriding `opencode.json`'s `server.port`. |
| `--hostname` | `127.0.0.1` | Becomes `0.0.0.0` when `--mdns` is set without an override. |
| `--mdns` | `false` | Publishes an mDNS SRV record. |
| `--mdns-domain` | `kilo.local` | |
| `--cors` | `[]` | Extra allowed origins. |
## 4. The two mandatory request knobs
@@ -190,14 +190,14 @@ rm -f /tmp/kilo-serve.pid /tmp/kilo-serve.log
## 7. Useful environment variables
| Var | Why you'd set it |
|---|---|
| `KILO_SERVER_PASSWORD` | Enable Basic auth. Omit for auth-bypassed local testing. |
| `KILO_DB=":memory:"` | Skip on-disk SQLite — hermetic runs. |
| `KILO_DISABLE_DEFAULT_PLUGINS=true` | Don't auto-load bundled plugins. |
| `KILO_WORKSPACE_ID=<id>` | Single-workspace mode; disables control-plane routes. |
| `KILO_TELEMETRY_LEVEL=off` | Disable PostHog during tests. |
| `KILO_CONFIG_CONTENT='{…}'` | Inline JSON config without writing a file. |
| Var | Why you'd set it |
| ----------------------------------- | -------------------------------------------------------- |
| `KILO_SERVER_PASSWORD` | Enable Basic auth. Omit for auth-bypassed local testing. |
| `KILO_DB=":memory:"` | Skip on-disk SQLite — hermetic runs. |
| `KILO_DISABLE_DEFAULT_PLUGINS=true` | Don't auto-load bundled plugins. |
| `KILO_WORKSPACE_ID=<id>` | Single-workspace mode; disables control-plane routes. |
| `KILO_TELEMETRY_LEVEL=off` | Disable PostHog during tests. |
| `KILO_CONFIG_CONTENT='{…}'` | Inline JSON config without writing a file. |
## 8. Last resort: typed SDK via a throwaway script
@@ -209,9 +209,7 @@ import { createKiloClient } from "@kilocode/sdk/v2"
const port = process.env.PORT!
const pass = process.env.KILO_SERVER_PASSWORD
const headers = pass
? { Authorization: "Basic " + Buffer.from("kilo:" + pass).toString("base64") }
: undefined
const headers = pass ? { Authorization: "Basic " + Buffer.from("kilo:" + pass).toString("base64") } : undefined
const client = createKiloClient({
baseUrl: `http://127.0.0.1:${port}`,
+2 -4
View File
@@ -398,8 +398,7 @@ export const dict = {
"toast.session.unshare.failed.description": "Une erreur s'est produite lors de l'annulation du partage de la session",
"toast.session.listFailed.title": "Échec du chargement des sessions pour {{project}}",
"toast.update.title": "Mise à jour disponible",
"toast.update.description":
"Une nouvelle version d'Kilo ({{version}}) est maintenant disponible pour installation.",
"toast.update.description": "Une nouvelle version d'Kilo ({{version}}) est maintenant disponible pour installation.",
"toast.update.action.installRestart": "Installer et redémarrer",
"toast.update.action.notYet": "Pas encore",
"error.page.title": "Quelque chose s'est mal passé",
@@ -549,8 +548,7 @@ export const dict = {
"sidebar.workspaces.enable": "Activer les espaces de travail",
"sidebar.workspaces.disable": "Désactiver les espaces de travail",
"sidebar.gettingStarted.title": "Commencer",
"sidebar.gettingStarted.line1":
"Kilo inclut des modèles gratuits pour que vous puissiez commencer immédiatement.",
"sidebar.gettingStarted.line1": "Kilo inclut des modèles gratuits pour que vous puissiez commencer immédiatement.",
"sidebar.gettingStarted.line2":
"Connectez n'importe quel fournisseur pour utiliser des modèles, y compris Claude, GPT, Gemini etc.",
"sidebar.project.recentSessions": "Sessions récentes",
+1 -2
View File
@@ -149,8 +149,7 @@ export const dict = {
"provider.connect.oauth.code.invalid": "รหัสการอนุญาตไม่ถูกต้อง",
"provider.connect.oauth.auto.visit.prefix": "เยี่ยมชม ",
"provider.connect.oauth.auto.visit.link": "ลิงก์นี้",
"provider.connect.oauth.auto.visit.suffix":
" และป้อนรหัสด้านล่างเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน Kilo",
"provider.connect.oauth.auto.visit.suffix": " และป้อนรหัสด้านล่างเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน Kilo",
"provider.connect.oauth.auto.confirmationCode": "รหัสยืนยัน",
"provider.connect.toast.connected.title": "{{provider}} ที่เชื่อมต่อแล้ว",
"provider.connect.toast.connected.description": "โมเดล {{provider}} พร้อมใช้งานแล้ว",
+1 -2
View File
@@ -150,8 +150,7 @@ export const dict = {
"provider.connect.oauth.code.invalid": "授權碼無效",
"provider.connect.oauth.auto.visit.prefix": "造訪 ",
"provider.connect.oauth.auto.visit.link": "此連結",
"provider.connect.oauth.auto.visit.suffix":
" 並輸入以下程式碼,以連線你的帳戶並在 Kilo 中使用 {{provider}} 模型。",
"provider.connect.oauth.auto.visit.suffix": " 並輸入以下程式碼,以連線你的帳戶並在 Kilo 中使用 {{provider}} 模型。",
"provider.connect.oauth.auto.confirmationCode": "確認碼",
"provider.connect.toast.connected.title": "{{provider}} 已連線",
"provider.connect.toast.connected.description": "現在可以使用 {{provider}} 模型了。",
@@ -71,9 +71,7 @@ export const useSessionCommands = (actions: SessionCommandContext) => {
const activeFileTab = tabState.activeFileTab
const closableTab = tabState.closableTab
const shown = () =>
platform.platform !== "desktop" ||
import.meta.env.VITE_KILO_CHANNEL !== "beta" ||
settings.general.showFileTree()
platform.platform !== "desktop" || import.meta.env.VITE_KILO_CHANNEL !== "beta" || settings.general.showFileTree()
const idle = { type: "idle" as const }
const status = () => sync.data.session_status[params.id ?? ""] ?? idle
@@ -20,11 +20,11 @@ When you describe a task, the agent uses its tools — `read`, `grep`, `glob`, a
Type `@` in the chat input to get autocomplete suggestions. You can mention:
| Mention | Description | Example |
| ---------------- | ----------------------------------------------------- | --------------- |
| **File** | Attach a file's contents to your message | `@src/utils.ts` |
| **Terminal** | Include your active VS Code terminal output | `@terminal` |
| **Git Changes** | Attach uncommitted working-tree diffs and new files | `@git-changes` |
| Mention | Description | Example |
| --------------- | --------------------------------------------------- | --------------- |
| **File** | Attach a file's contents to your message | `@src/utils.ts` |
| **Terminal** | Include your active VS Code terminal output | `@terminal` |
| **Git Changes** | Attach uncommitted working-tree diffs and new files | `@git-changes` |
Selecting a suggestion inserts the mention and highlights it in the input. File contents, terminal output, and git changes are attached as context when you send the message.
@@ -587,7 +587,7 @@ Options:
--path directory path to generate the agent file [string]
--description what the agent should do [string]
--mode agent mode [string] [choices: "all", "primary", "subagent"]
--tools comma-separated list of tools to enable (default: all). Available: "bash, read, write, edit, list, glob, grep, webfetch, task, todowrite" [string]
--tools comma-separated list of tools to enable (default: all). Available: "bash, read, write, edit, glob, grep, webfetch, task, todowrite" [string]
-m, --model model to use in the format of provider/model [string]
```
@@ -472,12 +472,12 @@ Default legacy mode slugs (`code`, `build`, `architect`, `ask`, `debug`, `orches
The CLI reads legacy mode files from the following locations (in load order). When the same slug appears in multiple sources, the **last loaded source wins**:
| Load Order | Path | Format | Scope |
|------------|------|--------|-------|
| 1 | VSCode extension global storage `/settings/custom_modes.yaml` | YAML | Global |
| 2 | `~/.kilocode/cli/global/settings/custom_modes.yaml` | YAML | Global |
| 3 | `~/.kilocodemodes` | YAML | Global |
| 4 | `<project>/.kilocodemodes` | YAML | Project (wins on conflict) |
| Load Order | Path | Format | Scope |
| ---------- | ------------------------------------------------------------- | ------ | -------------------------- |
| 1 | VSCode extension global storage `/settings/custom_modes.yaml` | YAML | Global |
| 2 | `~/.kilocode/cli/global/settings/custom_modes.yaml` | YAML | Global |
| 3 | `~/.kilocodemodes` | YAML | Global |
| 4 | `<project>/.kilocodemodes` | YAML | Project (wins on conflict) |
{% callout type="info" %}
`~/.config/kilo/` is the XDG config directory for the new agent format — legacy `custom_modes.yaml` placed there will **not** be loaded. Use `~/.config/kilo/agent/*.md` or `~/.config/kilo/kilo.jsonc` for new agent definitions instead.
+1 -1
View File
@@ -32,7 +32,7 @@ export const GenerateCommand = {
}
}
const raw = JSON.stringify(specs, null, 2)
// kilocode_change start - replace upstream product name in all descriptions
// kilocode_change start - replace upstream product name in all descriptions
.replaceAll("OpenCode", "Kilo")
.replaceAll("opencode.local", "kilo.local")
.replaceAll("opencode serve", "kilo serve")
@@ -21,11 +21,12 @@ export function DialogSessionRename(props: DialogSessionRenameProps) {
title="Rename Session"
value={session()?.title ?? props.title} // kilocode_change
onConfirm={(value) => {
void sdk.client.session.update({
sessionID: props.session,
title: value,
})
.then(() => props.onConfirm?.()) // kilocode_change
void sdk.client.session
.update({
sessionID: props.session,
title: value,
})
.then(() => props.onConfirm?.()) // kilocode_change
dialog.clear()
}}
onCancel={() => dialog.clear()}
+2 -5
View File
@@ -19,8 +19,7 @@ function number(key: string) {
const KILO_EXPERIMENTAL = truthy("KILO_EXPERIMENTAL")
const KILO_DISABLE_CLAUDE_CODE = truthy("KILO_DISABLE_CLAUDE_CODE")
const KILO_DISABLE_CLAUDE_CODE_SKILLS =
KILO_DISABLE_CLAUDE_CODE || truthy("KILO_DISABLE_CLAUDE_CODE_SKILLS")
const KILO_DISABLE_CLAUDE_CODE_SKILLS = KILO_DISABLE_CLAUDE_CODE || truthy("KILO_DISABLE_CLAUDE_CODE_SKILLS")
const copy = process.env["KILO_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"]
export const Flag = {
@@ -55,9 +54,7 @@ export const Flag = {
// Experimental
KILO_EXPERIMENTAL,
KILO_EXPERIMENTAL_FILEWATCHER: Config.boolean("KILO_EXPERIMENTAL_FILEWATCHER").pipe(
Config.withDefault(false),
),
KILO_EXPERIMENTAL_FILEWATCHER: Config.boolean("KILO_EXPERIMENTAL_FILEWATCHER").pipe(Config.withDefault(false)),
KILO_EXPERIMENTAL_DISABLE_FILEWATCHER: Config.boolean("KILO_EXPERIMENTAL_DISABLE_FILEWATCHER").pipe(
Config.withDefault(false),
),
@@ -84,7 +84,10 @@ export namespace KilocodeConfigInjector {
* Merge permission configs, preserving order and handling duplicates.
* Incoming rules take precedence (kilocode patterns override).
*/
function mergePermissions(existing: ConfigPermission.Info | undefined, incoming: ConfigPermission.Info): ConfigPermission.Info {
function mergePermissions(
existing: ConfigPermission.Info | undefined,
incoming: ConfigPermission.Info,
): ConfigPermission.Info {
if (!existing) return incoming
const result: ConfigPermission.Info = { ...existing }
@@ -200,7 +200,10 @@ export namespace IgnoreMigrator {
* Load .kilocodeignore and return permission config.
* Handles all logging internally.
*/
export async function loadIgnoreConfig(projectDir: string, skipGlobalPaths?: boolean): Promise<ConfigPermission.Info> {
export async function loadIgnoreConfig(
projectDir: string,
skipGlobalPaths?: boolean,
): Promise<ConfigPermission.Info> {
try {
const result = await migrate({ projectDir, skipGlobalPaths })
File diff suppressed because one or more lines are too long
+1 -2
View File
@@ -1312,8 +1312,7 @@ const layer: Layer.Layer<
const providerID = ProviderID.make(id)
// kilocode_change start - keep OAuth plugin source when config and Codex auth coexist
const oauth =
auths[providerID]?.type === "oauth" &&
plugins.some((x) => x.auth?.provider === providerID && x.auth.loader)
auths[providerID]?.type === "oauth" && plugins.some((x) => x.auth?.provider === providerID && x.auth.loader)
const partial: Partial<Info> = oauth ? {} : { source: "config" }
if (provider.env) partial.env = provider.env
// kilocode_change end
+2 -1
View File
@@ -108,7 +108,8 @@ const app = (upgrade: UpgradeWebSocket) =>
const log = Log.Default.clone().tag("service", "server-proxy")
export async function http(url: string | URL, extra: HeadersInit | undefined, req: Request, workspaceID: WorkspaceID) {
if (!(await Workspace.isSyncing(workspaceID))) { // kilocode_change missing await
if (!(await Workspace.isSyncing(workspaceID))) {
// kilocode_change missing await
return new Response(`broken sync connection for workspace: ${workspaceID}`, {
status: 503,
headers: {
+2 -1
View File
@@ -83,7 +83,8 @@ export const layer = Layer.effect(
const skill = yield* Skill.Service
return Service.of({
environment(model, editorContext) { // kilocode_change
environment(model, editorContext) {
// kilocode_change
const project = Instance.project
return [
[
+1 -1
View File
@@ -338,4 +338,4 @@ export const write = <T>(key: string[], content: T) => runPromise((svc) => svc.w
export const remove = (key: string[]) => runPromise((svc) => svc.remove(key))
export const list = (prefix: string[]) => runPromise((svc) => svc.list(prefix))
export const update = <T>(key: string[], fn: (draft: T) => void) => runPromise((svc) => svc.update<T>(key, fn))
// kilocode_change end
// kilocode_change end
+2 -1
View File
@@ -56,7 +56,8 @@ export const Parameters = Schema.Struct({
workdir: Schema.optional(Schema.String).annotate({
description: `The working directory to run the command in. Defaults to the current directory. Use this instead of 'cd' commands.`,
}),
description: Schema.optional(Schema.String).annotate({ // kilocode_change
description: Schema.optional(Schema.String).annotate({
// kilocode_change
// kilocode_change start
description:
"Recommended: a clear, concise description of what this command does in 5-10 words. Examples:\nInput: ls\nOutput: Lists files in current directory\n\nInput: git status\nOutput: Shows working tree status\n\nInput: npm install\nOutput: Installs package dependencies\n\nInput: mkdir foo\nOutput: Creates directory 'foo'",
+76 -39
View File
@@ -467,45 +467,32 @@ export type EventCommandExecuted = {
}
}
export type SuggestionAction = {
/**
* Button or option label (1-5 words)
*/
label: string
/**
* Brief explanation of what this action does
*/
description?: string
/**
* Synthetic user prompt to inject when this action is accepted
*/
prompt: string
}
export type SuggestionRequest = {
id: string
sessionID: string
/**
* Suggestion text shown to the user
*/
text: string
/**
* Available actions the user can take
*/
actions: Array<SuggestionAction>
/**
* Whether this suggestion blocks prompt input. When unset, the TUI treats the suggestion as blocking for backwards compatibility; the built-in suggest tool always sets this to false.
*/
blocking?: boolean
tool?: {
messageID: string
callID: string
}
}
export type EventSuggestionShown = {
type: "suggestion.shown"
properties: SuggestionRequest
properties: {
id: string
sessionID: string
text: string
actions: Array<{
/**
* Button or option label (1-5 words)
*/
label: string
/**
* Brief explanation of what this action does
*/
description?: string
/**
* Synthetic user prompt to inject when this action is accepted
*/
prompt: string
}>
blocking?: boolean
tool?: {
messageID: string
callID: string
}
}
}
export type EventSuggestionAccepted = {
@@ -514,7 +501,20 @@ export type EventSuggestionAccepted = {
sessionID: string
requestID: string
index: number
action: SuggestionAction
action: {
/**
* Button or option label (1-5 words)
*/
label: string
/**
* Brief explanation of what this action does
*/
description?: string
/**
* Synthetic user prompt to inject when this action is accepted
*/
prompt: string
}
}
}
@@ -1828,7 +1828,8 @@ export type Config = {
*/
prompt?: string
}
/* Thresholds for truncating tool output. When output exceeds either limit, the full text is written to the truncation directory and a preview is returned.
/**
* Thresholds for truncating tool output. When output exceeds either limit, the full text is written to the truncation directory and a preview is returned.
*/
tool_output?: {
/**
@@ -2422,6 +2423,42 @@ export type FormatterStatus = {
enabled: boolean
}
export type SuggestionAction = {
/**
* Button or option label (1-5 words)
*/
label: string
/**
* Brief explanation of what this action does
*/
description?: string
/**
* Synthetic user prompt to inject when this action is accepted
*/
prompt: string
}
export type SuggestionRequest = {
id: string
sessionID: string
/**
* Suggestion text shown to the user
*/
text: string
/**
* Available actions the user can take
*/
actions: Array<SuggestionAction>
/**
* Whether this suggestion blocks prompt input. When unset, the TUI treats the suggestion as blocking for backwards compatibility; the built-in suggest tool always sets this to false.
*/
blocking?: boolean
tool?: {
messageID: string
callID: string
}
}
export type GlobalHealthData = {
body?: never
path?: never
+1377 -1005
View File
@@ -415,6 +415,391 @@
]
}
},
"/experimental/workspace/adaptor": {
"get": {
"operationId": "experimental.workspace.adaptor.list",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "List workspace adaptors",
"description": "List all available workspace adaptors for the current project.",
"responses": {
"200": {
"description": "Workspace adaptors",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": ["type", "name", "description"]
}
}
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.adaptor.list({\n ...\n})"
}
]
}
},
"/experimental/workspace": {
"post": {
"operationId": "experimental.workspace.create",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "Create workspace",
"description": "Create a workspace for the current project.",
"responses": {
"200": {
"description": "Workspace created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workspace"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^wrk.*"
},
"type": {
"type": "string"
},
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"extra": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"required": ["type", "branch", "extra"]
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.create({\n ...\n})"
}
]
},
"get": {
"operationId": "experimental.workspace.list",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "List workspaces",
"description": "List all workspaces.",
"responses": {
"200": {
"description": "Workspaces",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Workspace"
}
}
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.list({\n ...\n})"
}
]
}
},
"/experimental/workspace/status": {
"get": {
"operationId": "experimental.workspace.status",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "Workspace status",
"description": "Get connection status for workspaces in the current project.",
"responses": {
"200": {
"description": "Workspace status",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"workspaceID": {
"type": "string",
"pattern": "^wrk.*"
},
"status": {
"type": "string",
"enum": ["connected", "connecting", "disconnected", "error"]
}
},
"required": ["workspaceID", "status"]
}
}
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.status({\n ...\n})"
}
]
}
},
"/experimental/workspace/{id}": {
"delete": {
"operationId": "experimental.workspace.remove",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "id",
"schema": {
"type": "string",
"pattern": "^wrk.*"
},
"required": true
}
],
"summary": "Remove workspace",
"description": "Remove an existing workspace.",
"responses": {
"200": {
"description": "Workspace removed",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workspace"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.remove({\n ...\n})"
}
]
}
},
"/experimental/workspace/{id}/session-restore": {
"post": {
"operationId": "experimental.workspace.sessionRestore",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "id",
"schema": {
"type": "string",
"pattern": "^wrk.*"
},
"required": true
}
],
"summary": "Restore session into workspace",
"description": "Replay a session's sync events into the target workspace in batches.",
"responses": {
"200": {
"description": "Session replay started",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": ["total"]
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"sessionID": {
"type": "string",
"pattern": "^ses.*"
}
},
"required": ["sessionID"]
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.sessionRestore({\n ...\n})"
}
]
}
},
"/project": {
"get": {
"operationId": "project.list",
@@ -1278,24 +1663,7 @@
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"consoleManagedProviders": {
"type": "array",
"items": {
"type": "string"
}
},
"activeOrgName": {
"type": "string"
},
"switchableOrgCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": ["consoleManagedProviders", "switchableOrgCount"]
"$ref": "#/components/schemas/ConsoleState"
}
}
}
@@ -1557,310 +1925,6 @@
]
}
},
"/experimental/workspace/adaptor": {
"get": {
"operationId": "experimental.workspace.adaptor.list",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "List workspace adaptors",
"description": "List all available workspace adaptors for the current project.",
"responses": {
"200": {
"description": "Workspace adaptors",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": ["type", "name", "description"]
}
}
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.adaptor.list({\n ...\n})"
}
]
}
},
"/experimental/workspace": {
"post": {
"operationId": "experimental.workspace.create",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "Create workspace",
"description": "Create a workspace for the current project.",
"responses": {
"200": {
"description": "Workspace created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workspace"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^wrk.*"
},
"type": {
"type": "string"
},
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"extra": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"required": ["type", "branch", "extra"]
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.create({\n ...\n})"
}
]
},
"get": {
"operationId": "experimental.workspace.list",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "List workspaces",
"description": "List all workspaces.",
"responses": {
"200": {
"description": "Workspaces",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Workspace"
}
}
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.list({\n ...\n})"
}
]
}
},
"/experimental/workspace/status": {
"get": {
"operationId": "experimental.workspace.status",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "Workspace status",
"description": "Get connection status for workspaces in the current project.",
"responses": {
"200": {
"description": "Workspace status",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"workspaceID": {
"type": "string",
"pattern": "^wrk.*"
},
"status": {
"type": "string",
"enum": ["connected", "connecting", "disconnected", "error"]
},
"error": {
"type": "string"
}
},
"required": ["workspaceID", "status"]
}
}
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.status({\n ...\n})"
}
]
}
},
"/experimental/workspace/{id}": {
"delete": {
"operationId": "experimental.workspace.remove",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "id",
"schema": {
"type": "string",
"pattern": "^wrk.*"
},
"required": true
}
],
"summary": "Remove workspace",
"description": "Remove an existing workspace.",
"responses": {
"200": {
"description": "Workspace removed",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workspace"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.experimental.workspace.remove({\n ...\n})"
}
]
}
},
"/experimental/worktree": {
"post": {
"operationId": "worktree.create",
@@ -4430,34 +4494,30 @@
"parts": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^prt.*"
},
"type": {
"type": "string",
"const": "file"
},
"mime": {
"type": "string"
},
"filename": {
"type": "string"
},
"url": {
"type": "string"
},
"source": {
"$ref": "#/components/schemas/FilePartSource"
}
},
"required": ["type", "mime", "url"]
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^prt.*"
},
"type": {
"type": "string",
"const": "file"
},
"mime": {
"type": "string"
},
"filename": {
"type": "string"
},
"url": {
"type": "string"
},
"source": {
"$ref": "#/components/schemas/FilePartSource"
}
]
},
"required": ["type", "mime", "url"]
}
}
},
@@ -5620,6 +5680,243 @@
]
}
},
"/sync/start": {
"post": {
"operationId": "sync.start",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "Start workspace sync",
"description": "Start sync loops for workspaces in the current project that have active sessions.",
"responses": {
"200": {
"description": "Workspace sync started",
"content": {
"application/json": {
"schema": {
"type": "boolean"
}
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.sync.start({\n ...\n})"
}
]
}
},
"/sync/replay": {
"post": {
"operationId": "sync.replay",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "Replay sync events",
"description": "Validate and replay a complete sync event history.",
"responses": {
"200": {
"description": "Replayed sync events",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"sessionID": {
"type": "string"
}
},
"required": ["sessionID"]
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"directory": {
"type": "string"
},
"events": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"aggregateID": {
"type": "string"
},
"seq": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"type": {
"type": "string"
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": ["id", "aggregateID", "seq", "type", "data"]
}
}
},
"required": ["directory", "events"]
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.sync.replay({\n ...\n})"
}
]
}
},
"/sync/history": {
"post": {
"operationId": "sync.history.list",
"parameters": [
{
"in": "query",
"name": "directory",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "workspace",
"schema": {
"type": "string"
}
}
],
"summary": "List sync events",
"description": "List sync events for all aggregates. Keys are aggregate IDs the client already knows about, values are the last known sequence ID. Events with seq > value are returned for those aggregates. Aggregates not listed in the input get their full history.",
"responses": {
"200": {
"description": "Sync events",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"aggregate_id": {
"type": "string"
},
"seq": {
"type": "number"
},
"type": {
"type": "string"
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": ["id", "aggregate_id", "seq", "type", "data"]
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BadRequestError"
}
}
}
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
}
}
}
},
"x-codeSamples": [
{
"lang": "js",
"source": "import { createKiloClient } from \"@kilocode/sdk\n\nconst client = createKiloClient()\nawait client.sync.history.list({\n ...\n})"
}
]
}
},
"/find": {
"get": {
"operationId": "find.text",
@@ -6984,7 +7281,6 @@
},
"duration": {
"description": "Duration in milliseconds",
"default": 5000,
"type": "number"
}
},
@@ -7807,7 +8103,8 @@
"in": "path",
"name": "requestID",
"schema": {
"type": "string"
"type": "string",
"pattern": "^que.*"
},
"required": true
}
@@ -7876,7 +8173,8 @@
"in": "path",
"name": "requestID",
"schema": {
"type": "string"
"type": "string",
"pattern": "^que.*"
},
"required": true
}
@@ -9887,6 +10185,9 @@
"type": "string"
}
}
},
"text": {
"type": "string"
}
}
}
@@ -10563,44 +10864,6 @@
},
"required": ["type", "properties"]
},
"Event.installation.updated": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "installation.updated"
},
"properties": {
"type": "object",
"properties": {
"version": {
"type": "string"
}
},
"required": ["version"]
}
},
"required": ["type", "properties"]
},
"Event.installation.update-available": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "installation.update-available"
},
"properties": {
"type": "object",
"properties": {
"version": {
"type": "string"
}
},
"required": ["version"]
}
},
"required": ["type", "properties"]
},
"Event.server.connected": {
"type": "object",
"properties": {
@@ -10676,20 +10939,8 @@
"type": "string"
},
"event": {
"anyOf": [
{
"type": "string",
"const": "add"
},
{
"type": "string",
"const": "change"
},
{
"type": "string",
"const": "unlink"
}
]
"type": "string",
"enum": ["add", "change", "unlink"]
}
},
"required": ["file", "event"]
@@ -10733,6 +10984,44 @@
},
"required": ["type", "properties"]
},
"Event.installation.updated": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "installation.updated"
},
"properties": {
"type": "object",
"properties": {
"version": {
"type": "string"
}
},
"required": ["version"]
}
},
"required": ["type", "properties"]
},
"Event.installation.update-available": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "installation.update-available"
},
"properties": {
"type": "object",
"properties": {
"version": {
"type": "string"
}
},
"required": ["version"]
}
},
"required": ["type", "properties"]
},
"Event.tui.prompt.append": {
"type": "object",
"properties": {
@@ -10818,7 +11107,6 @@
},
"duration": {
"description": "Duration in milliseconds",
"default": 5000,
"type": "number"
}
},
@@ -10942,10 +11230,12 @@
"type": "object",
"properties": {
"sessionID": {
"type": "string"
"type": "string",
"pattern": "^ses.*"
},
"requestID": {
"type": "string"
"type": "string",
"pattern": "^que.*"
}
},
"required": ["sessionID", "requestID"]
@@ -10964,10 +11254,12 @@
"type": "object",
"properties": {
"sessionID": {
"type": "string"
"type": "string",
"pattern": "^ses.*"
},
"requestID": {
"type": "string"
"type": "string",
"pattern": "^que.*"
}
},
"required": ["sessionID", "requestID"]
@@ -10986,10 +11278,12 @@
"type": "object",
"properties": {
"sessionID": {
"type": "string"
"type": "string",
"pattern": "^ses.*"
},
"requestID": {
"type": "string"
"type": "string",
"pattern": "^que.*"
}
},
"required": ["sessionID", "requestID"]
@@ -11031,48 +11325,6 @@
},
"required": ["type", "properties"]
},
"Event.session.turn.open": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "session.turn.open"
},
"properties": {
"type": "object",
"properties": {
"sessionID": {
"type": "string"
}
},
"required": ["sessionID"]
}
},
"required": ["type", "properties"]
},
"Event.session.turn.close": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "session.turn.close"
},
"properties": {
"type": "object",
"properties": {
"sessionID": {
"type": "string"
},
"reason": {
"type": "string",
"enum": ["completed", "error", "interrupted"]
}
},
"required": ["sessionID", "reason"]
}
},
"required": ["type", "properties"]
},
"PermissionRequest": {
"type": "object",
"properties": {
@@ -11163,6 +11415,50 @@
},
"required": ["type", "properties"]
},
"Event.session.turn.open": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "session.turn.open"
},
"properties": {
"type": "object",
"properties": {
"sessionID": {
"type": "string",
"pattern": "^ses.*"
}
},
"required": ["sessionID"]
}
},
"required": ["type", "properties"]
},
"Event.session.turn.close": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "session.turn.close"
},
"properties": {
"type": "object",
"properties": {
"sessionID": {
"type": "string",
"pattern": "^ses.*"
},
"reason": {
"type": "string",
"enum": ["completed", "error", "interrupted"]
}
},
"required": ["sessionID", "reason"]
}
},
"required": ["type", "properties"]
},
"SnapshotFileDiff": {
"type": "object",
"properties": {
@@ -11482,7 +11778,8 @@
"type": "object",
"properties": {
"messageID": {
"type": "string"
"type": "string",
"pattern": "^msg.*"
},
"callID": {
"type": "string"
@@ -11494,10 +11791,12 @@
"type": "object",
"properties": {
"id": {
"type": "string"
"type": "string",
"pattern": "^que.*"
},
"sessionID": {
"type": "string"
"type": "string",
"pattern": "^ses.*"
},
"questions": {
"description": "Questions to ask",
@@ -11539,10 +11838,12 @@
"type": "object",
"properties": {
"sessionID": {
"type": "string"
"type": "string",
"pattern": "^ses.*"
},
"requestID": {
"type": "string"
"type": "string",
"pattern": "^que.*"
},
"answers": {
"type": "array",
@@ -11570,10 +11871,12 @@
"type": "object",
"properties": {
"sessionID": {
"type": "string"
"type": "string",
"pattern": "^ses.*"
},
"requestID": {
"type": "string"
"type": "string",
"pattern": "^que.*"
}
},
"required": ["sessionID", "requestID"]
@@ -11591,30 +11894,107 @@
},
"required": ["type", "properties"]
},
"Todo": {
"type": "object",
"properties": {
"content": {
"description": "Brief description of the task",
"type": "string"
},
"status": {
"description": "Current status of the task: pending, in_progress, completed, cancelled",
"type": "string"
},
"priority": {
"description": "Priority level of the task: high, medium, low",
"type": "string"
}
},
"required": ["content", "status", "priority"]
},
"Event.todo.updated": {
"Event.command.executed": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "todo.updated"
"const": "command.executed"
},
"properties": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"sessionID": {
"type": "string",
"pattern": "^ses.*"
},
"arguments": {
"type": "string"
},
"messageID": {
"type": "string",
"pattern": "^msg.*"
}
},
"required": ["name", "sessionID", "arguments", "messageID"]
}
},
"required": ["type", "properties"]
},
"Event.suggestion.shown": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "suggestion.shown"
},
"properties": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^sug.*"
},
"sessionID": {
"type": "string",
"pattern": "^ses.*"
},
"text": {
"type": "string"
},
"actions": {
"minItems": 1,
"maxItems": 2,
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"description": "Button or option label (1-5 words)",
"type": "string"
},
"description": {
"description": "Brief explanation of what this action does",
"type": "string"
},
"prompt": {
"description": "Synthetic user prompt to inject when this action is accepted",
"type": "string"
}
},
"required": ["label", "prompt"]
}
},
"blocking": {
"type": "boolean"
},
"tool": {
"type": "object",
"properties": {
"messageID": {
"type": "string"
},
"callID": {
"type": "string"
}
},
"required": ["messageID", "callID"]
}
},
"required": ["id", "sessionID", "text", "actions"]
}
},
"required": ["type", "properties"]
},
"Event.suggestion.accepted": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "suggestion.accepted"
},
"properties": {
"type": "object",
@@ -11623,14 +12003,59 @@
"type": "string",
"pattern": "^ses.*"
},
"todos": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Todo"
}
"requestID": {
"type": "string",
"pattern": "^sug.*"
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"action": {
"type": "object",
"properties": {
"label": {
"description": "Button or option label (1-5 words)",
"type": "string"
},
"description": {
"description": "Brief explanation of what this action does",
"type": "string"
},
"prompt": {
"description": "Synthetic user prompt to inject when this action is accepted",
"type": "string"
}
},
"required": ["label", "prompt"]
}
},
"required": ["sessionID", "todos"]
"required": ["sessionID", "requestID", "index", "action"]
}
},
"required": ["type", "properties"]
},
"Event.suggestion.dismissed": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "suggestion.dismissed"
},
"properties": {
"type": "object",
"properties": {
"sessionID": {
"type": "string",
"pattern": "^ses.*"
},
"requestID": {
"type": "string",
"pattern": "^sug.*"
}
},
"required": ["sessionID", "requestID"]
}
},
"required": ["type", "properties"]
@@ -11684,7 +12109,8 @@
"const": "offline"
},
"requestID": {
"type": "string"
"type": "string",
"pattern": "^que.*"
},
"message": {
"type": "string"
@@ -11737,128 +12163,64 @@
},
"required": ["type", "properties"]
},
"SuggestionAction": {
"Todo": {
"type": "object",
"properties": {
"label": {
"description": "Button or option label (1-5 words)",
"content": {
"description": "Brief description of the task",
"type": "string"
},
"description": {
"description": "Brief explanation of what this action does",
"status": {
"description": "Current status of the task: pending, in_progress, completed, cancelled",
"type": "string"
},
"prompt": {
"description": "Synthetic user prompt to inject when this action is accepted",
"priority": {
"description": "Priority level of the task: high, medium, low",
"type": "string"
}
},
"required": ["label", "prompt"]
"required": ["content", "status", "priority"]
},
"SuggestionRequest": {
"Event.todo.updated": {
"type": "object",
"properties": {
"id": {
"type": {
"type": "string",
"pattern": "^sug.*"
"const": "todo.updated"
},
"sessionID": {
"properties": {
"type": "object",
"properties": {
"sessionID": {
"type": "string",
"pattern": "^ses.*"
},
"todos": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Todo"
}
}
},
"required": ["sessionID", "todos"]
}
},
"required": ["type", "properties"]
},
"Event.vcs.branch.updated": {
"type": "object",
"properties": {
"type": {
"type": "string",
"pattern": "^ses.*"
"const": "vcs.branch.updated"
},
"text": {
"description": "Suggestion text shown to the user",
"type": "string"
},
"actions": {
"description": "Available actions the user can take",
"minItems": 1,
"maxItems": 2,
"type": "array",
"items": {
"$ref": "#/components/schemas/SuggestionAction"
"properties": {
"type": "object",
"properties": {
"branch": {
"type": "string"
}
}
},
"blocking": {
"description": "Whether this suggestion blocks prompt input. When unset, the TUI treats the suggestion as blocking for backwards compatibility; the built-in suggest tool always sets this to false.",
"type": "boolean"
},
"tool": {
"type": "object",
"properties": {
"messageID": {
"type": "string"
},
"callID": {
"type": "string"
}
},
"required": ["messageID", "callID"]
}
},
"required": ["id", "sessionID", "text", "actions"]
},
"Event.suggestion.shown": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "suggestion.shown"
},
"properties": {
"$ref": "#/components/schemas/SuggestionRequest"
}
},
"required": ["type", "properties"]
},
"Event.suggestion.accepted": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "suggestion.accepted"
},
"properties": {
"type": "object",
"properties": {
"sessionID": {
"type": "string"
},
"requestID": {
"type": "string"
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"action": {
"$ref": "#/components/schemas/SuggestionAction"
}
},
"required": ["sessionID", "requestID", "index", "action"]
}
},
"required": ["type", "properties"]
},
"Event.suggestion.dismissed": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "suggestion.dismissed"
},
"properties": {
"type": "object",
"properties": {
"sessionID": {
"type": "string"
},
"requestID": {
"type": "string"
}
},
"required": ["sessionID", "requestID"]
}
},
"required": ["type", "properties"]
@@ -11883,54 +12245,6 @@
},
"required": ["type", "properties"]
},
"Event.command.executed": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "command.executed"
},
"properties": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"sessionID": {
"type": "string",
"pattern": "^ses.*"
},
"arguments": {
"type": "string"
},
"messageID": {
"type": "string",
"pattern": "^msg.*"
}
},
"required": ["name", "sessionID", "arguments", "messageID"]
}
},
"required": ["type", "properties"]
},
"Event.vcs.branch.updated": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "vcs.branch.updated"
},
"properties": {
"type": "object",
"properties": {
"branch": {
"type": "string"
}
}
}
},
"required": ["type", "properties"]
},
"Event.kilo-sessions.remote-status-changed": {
"type": "object",
"properties": {
@@ -12145,6 +12459,40 @@
},
"required": ["type", "properties"]
},
"Event.workspace.restore": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "workspace.restore"
},
"properties": {
"type": "object",
"properties": {
"workspaceID": {
"type": "string",
"pattern": "^wrk.*"
},
"sessionID": {
"type": "string",
"pattern": "^ses.*"
},
"total": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"step": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": ["workspaceID", "sessionID", "total", "step"]
}
},
"required": ["type", "properties"]
},
"Event.workspace.status": {
"type": "object",
"properties": {
@@ -12162,9 +12510,6 @@
"status": {
"type": "string",
"enum": ["connected", "connecting", "disconnected", "error"]
},
"error": {
"type": "string"
}
},
"required": ["workspaceID", "status"]
@@ -13362,6 +13707,25 @@
},
"required": ["type", "properties"]
},
"SnapshotSummaryFileDiff": {
"type": "object",
"properties": {
"file": {
"type": "string"
},
"additions": {
"type": "number"
},
"deletions": {
"type": "number"
},
"status": {
"type": "string",
"enum": ["added", "deleted", "modified"]
}
},
"required": ["file", "additions", "deletions"]
},
"PermissionAction": {
"type": "string",
"enum": ["allow", "deny", "ask"]
@@ -13426,23 +13790,7 @@
"diffs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"file": {
"type": "string"
},
"additions": {
"type": "number"
},
"deletions": {
"type": "number"
},
"status": {
"type": "string",
"enum": ["added", "deleted", "modified"]
}
},
"required": ["file", "additions", "deletions"]
"$ref": "#/components/schemas/SnapshotSummaryFileDiff"
}
}
},
@@ -13881,23 +14229,7 @@
"diffs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"file": {
"type": "string"
},
"additions": {
"type": "number"
},
"deletions": {
"type": "number"
},
"status": {
"type": "string",
"enum": ["added", "deleted", "modified"]
}
},
"required": ["file", "additions", "deletions"]
"$ref": "#/components/schemas/SnapshotSummaryFileDiff"
}
}
},
@@ -13921,8 +14253,7 @@
}
]
}
},
"required": ["url"]
}
},
"title": {
"anyOf": [
@@ -13987,8 +14318,7 @@
}
]
}
},
"required": ["created", "updated", "compacting", "archived"]
}
},
"permission": {
"anyOf": [
@@ -14027,20 +14357,7 @@
}
]
}
},
"required": [
"id",
"slug",
"projectID",
"workspaceID",
"directory",
"parentID",
"summary",
"title",
"version",
"permission",
"revert"
]
}
}
},
"required": ["sessionID", "info"]
@@ -14105,12 +14422,6 @@
{
"$ref": "#/components/schemas/Event.server.instance.disposed"
},
{
"$ref": "#/components/schemas/Event.installation.updated"
},
{
"$ref": "#/components/schemas/Event.installation.update-available"
},
{
"$ref": "#/components/schemas/Event.server.connected"
},
@@ -14132,6 +14443,12 @@
{
"$ref": "#/components/schemas/Event.lsp.updated"
},
{
"$ref": "#/components/schemas/Event.installation.updated"
},
{
"$ref": "#/components/schemas/Event.installation.update-available"
},
{
"$ref": "#/components/schemas/Event.tui.prompt.append"
},
@@ -14165,18 +14482,18 @@
{
"$ref": "#/components/schemas/Event.message.part.delta"
},
{
"$ref": "#/components/schemas/Event.session.turn.open"
},
{
"$ref": "#/components/schemas/Event.session.turn.close"
},
{
"$ref": "#/components/schemas/Event.permission.asked"
},
{
"$ref": "#/components/schemas/Event.permission.replied"
},
{
"$ref": "#/components/schemas/Event.session.turn.open"
},
{
"$ref": "#/components/schemas/Event.session.turn.close"
},
{
"$ref": "#/components/schemas/Event.session.diff"
},
@@ -14193,13 +14510,7 @@
"$ref": "#/components/schemas/Event.question.rejected"
},
{
"$ref": "#/components/schemas/Event.todo.updated"
},
{
"$ref": "#/components/schemas/Event.session.status"
},
{
"$ref": "#/components/schemas/Event.session.idle"
"$ref": "#/components/schemas/Event.command.executed"
},
{
"$ref": "#/components/schemas/Event.suggestion.shown"
@@ -14211,14 +14522,20 @@
"$ref": "#/components/schemas/Event.suggestion.dismissed"
},
{
"$ref": "#/components/schemas/Event.session.compacted"
"$ref": "#/components/schemas/Event.session.status"
},
{
"$ref": "#/components/schemas/Event.command.executed"
"$ref": "#/components/schemas/Event.session.idle"
},
{
"$ref": "#/components/schemas/Event.todo.updated"
},
{
"$ref": "#/components/schemas/Event.vcs.branch.updated"
},
{
"$ref": "#/components/schemas/Event.session.compacted"
},
{
"$ref": "#/components/schemas/Event.kilo-sessions.remote-status-changed"
},
@@ -14246,6 +14563,9 @@
{
"$ref": "#/components/schemas/Event.workspace.failed"
},
{
"$ref": "#/components/schemas/Event.workspace.restore"
},
{
"$ref": "#/components/schemas/Event.workspace.status"
},
@@ -14330,8 +14650,7 @@
"type": "string"
}
}
},
"additionalProperties": false
}
},
"PermissionActionConfig": {
"anyOf": [
@@ -14566,16 +14885,14 @@
"type": "boolean"
},
"timeout": {
"description": "Timeout in milliseconds for requests to this provider. Default is 120000 (2 minutes). Set to false to disable timeout.",
"description": "Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout.",
"anyOf": [
{
"description": "Timeout in milliseconds for requests to this provider. Default is 120000 (2 minutes). Set to false to disable timeout.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"description": "Disable timeout for this provider entirely.",
"type": "boolean",
"const": false
}
@@ -14596,67 +14913,53 @@
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"family": {
"type": "string"
},
"release_date": {
"type": "string"
},
"attachment": {
"type": "boolean"
},
"reasoning": {
"type": "boolean"
},
"temperature": {
"type": "boolean"
},
"tool_call": {
"type": "boolean"
},
"interleaved": {
"anyOf": [
{
"type": "boolean",
"const": true
},
{
"type": "object",
"properties": {
"field": {
"type": "string",
"enum": ["reasoning_content", "reasoning_details"]
}
},
"required": ["field"],
"additionalProperties": false
}
]
},
"cost": {
"anyOf": [
{
"type": "object",
"properties": {
"input": {
"type": "number"
"id": {
"type": "string"
},
"output": {
"type": "number"
"name": {
"type": "string"
},
"cache_read": {
"type": "number"
"family": {
"type": "string"
},
"cache_write": {
"type": "number"
"release_date": {
"type": "string"
},
"context_over_200k": {
"attachment": {
"type": "boolean"
},
"reasoning": {
"type": "boolean"
},
"temperature": {
"type": "boolean"
},
"tool_call": {
"type": "boolean"
},
"interleaved": {
"anyOf": [
{
"type": "boolean",
"const": true
},
{
"type": "object",
"properties": {
"field": {
"type": "string",
"enum": ["reasoning_content", "reasoning_details"]
}
},
"required": ["field"]
}
]
},
"cost": {
"type": "object",
"properties": {
"input": {
@@ -14670,104 +14973,130 @@
},
"cache_write": {
"type": "number"
},
"context_over_200k": {
"type": "object",
"properties": {
"input": {
"type": "number"
},
"output": {
"type": "number"
},
"cache_read": {
"type": "number"
},
"cache_write": {
"type": "number"
}
},
"required": ["input", "output"]
}
},
"required": ["input", "output"]
}
},
"required": ["input", "output"]
},
"limit": {
"type": "object",
"properties": {
"context": {
"type": "number"
},
"input": {
"type": "number"
"limit": {
"type": "object",
"properties": {
"context": {
"type": "number"
},
"input": {
"type": "number"
},
"output": {
"type": "number"
}
},
"required": ["context", "output"]
},
"output": {
"type": "number"
}
},
"required": ["context", "output"]
},
"modalities": {
"type": "object",
"properties": {
"input": {
"type": "array",
"items": {
"type": "string",
"enum": ["text", "audio", "image", "video", "pdf"]
"modalities": {
"type": "object",
"properties": {
"input": {
"type": "array",
"items": {
"type": "string",
"enum": ["text", "audio", "image", "video", "pdf"]
}
},
"output": {
"type": "array",
"items": {
"type": "string",
"enum": ["text", "audio", "image", "video", "pdf"]
}
}
},
"required": ["input", "output"]
},
"experimental": {
"type": "boolean"
},
"status": {
"type": "string",
"enum": ["alpha", "beta", "deprecated"]
},
"provider": {
"type": "object",
"properties": {
"npm": {
"type": "string"
},
"api": {
"type": "string"
}
}
},
"output": {
"type": "array",
"items": {
"type": "string",
"enum": ["text", "audio", "image", "video", "pdf"]
}
}
},
"required": ["input", "output"]
},
"experimental": {
"type": "boolean"
},
"status": {
"type": "string",
"enum": ["alpha", "beta", "deprecated"]
},
"provider": {
"type": "object",
"properties": {
"npm": {
"type": "string"
"options": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"api": {
"type": "string"
"headers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"variants": {
"description": "Variant-specific configuration",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "object",
"properties": {
"disabled": {
"description": "Disable this variant for the model",
"type": "boolean"
}
},
"additionalProperties": {}
},
{
"type": "null"
}
]
}
}
}
},
"options": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"headers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"variants": {
"description": "Variant-specific configuration",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"disabled": {
"description": "Disable this variant for the model",
"type": "boolean"
}
},
"additionalProperties": {}
}
{
"type": "null"
}
}
]
}
}
},
"additionalProperties": false
}
},
"McpLocalConfig": {
"type": "object",
@@ -14800,13 +15129,10 @@
},
"timeout": {
"description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
"type": "number"
}
},
"required": ["type", "command"],
"additionalProperties": false
"required": ["type", "command"]
},
"McpOAuthConfig": {
"type": "object",
@@ -14827,8 +15153,7 @@
"description": "OAuth redirect URI (default: http://127.0.0.1:19876/mcp/oauth/callback).",
"type": "string"
}
},
"additionalProperties": false
}
},
"McpRemoteConfig": {
"type": "object",
@@ -14870,13 +15195,10 @@
},
"timeout": {
"description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
"type": "number"
}
},
"required": ["type", "url"],
"additionalProperties": false
"required": ["type", "url"]
},
"LayoutConfig": {
"description": "@deprecated Always uses stretch layout.",
@@ -14993,10 +15315,6 @@
"description": "@deprecated Use 'share' field instead. Share newly created sessions automatically",
"type": "boolean"
},
"remote_control": {
"description": "Enable remote control of sessions via Kilo Cloud. Equivalent to running /remote on startup.",
"type": "boolean"
},
"autoupdate": {
"description": "Automatically update to the latest version. Set to true to auto-update, false to disable, or 'notify' to show update notifications",
"anyOf": [
@@ -15023,6 +15341,10 @@
"type": "string"
}
},
"remote_control": {
"description": "Enable remote control of sessions via Kilo Cloud. Equivalent to running /remote on startup.",
"type": "boolean"
},
"model": {
"description": "Model to use in the format of provider/model, eg anthropic/claude-2",
"anyOf": [
@@ -15151,8 +15473,7 @@
"formatter": {
"anyOf": [
{
"type": "boolean",
"const": false
"type": "boolean"
},
{
"type": "object",
@@ -15194,8 +15515,7 @@
"lsp": {
"anyOf": [
{
"type": "boolean",
"const": false
"type": "boolean"
},
{
"type": "object",
@@ -15297,6 +15617,24 @@
}
}
},
"tool_output": {
"description": "Thresholds for truncating tool output. When output exceeds either limit, the full text is written to the truncation directory and a preview is returned.",
"type": "object",
"properties": {
"max_lines": {
"description": "Maximum lines of tool output before it is truncated and saved to disk (default: 2000)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"max_bytes": {
"description": "Maximum bytes of tool output before it is truncated and saved to disk (default: 51200)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
}
},
"compaction": {
"type": "object",
"properties": {
@@ -15466,6 +15804,53 @@
}
]
},
"Workspace": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^wrk.*"
},
"type": {
"type": "string"
},
"name": {
"type": "string"
},
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"extra": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"projectID": {
"type": "string"
}
},
"required": ["id", "type", "name", "branch", "directory", "extra", "projectID"]
},
"NotFoundError": {
"type": "object",
"properties": {
@@ -15761,6 +16146,24 @@
},
"required": ["id", "name", "source", "env", "options", "models"]
},
"ConsoleState": {
"type": "object",
"properties": {
"consoleManagedProviders": {
"type": "array",
"items": {
"type": "string"
}
},
"activeOrgName": {
"type": "string"
},
"switchableOrgCount": {
"type": "number"
}
},
"required": ["consoleManagedProviders", "switchableOrgCount"]
},
"ToolIDs": {
"type": "array",
"items": {
@@ -15786,53 +16189,6 @@
"$ref": "#/components/schemas/ToolListItem"
}
},
"Workspace": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^wrk.*"
},
"type": {
"type": "string"
},
"name": {
"type": "string"
},
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"directory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"extra": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"projectID": {
"type": "string"
}
},
"required": ["id", "type", "name", "branch", "directory", "extra", "projectID"]
},
"Worktree": {
"type": "object",
"properties": {
@@ -15983,23 +16339,7 @@
"diffs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"file": {
"type": "string"
},
"additions": {
"type": "number"
},
"deletions": {
"type": "number"
},
"status": {
"type": "string",
"enum": ["added", "deleted", "modified"]
}
},
"required": ["file", "additions", "deletions"]
"$ref": "#/components/schemas/SnapshotSummaryFileDiff"
}
}
},
@@ -16244,16 +16584,8 @@
"type": "object",
"properties": {
"type": {
"anyOf": [
{
"type": "string",
"const": "oauth"
},
{
"type": "string",
"const": "api"
}
]
"type": "string",
"enum": ["oauth", "api"]
},
"label": {
"type": "string"
@@ -16285,16 +16617,8 @@
"type": "string"
},
"op": {
"anyOf": [
{
"type": "string",
"const": "eq"
},
{
"type": "string",
"const": "neq"
}
]
"type": "string",
"enum": ["eq", "neq"]
},
"value": {
"type": "string"
@@ -16343,16 +16667,8 @@
"type": "string"
},
"op": {
"anyOf": [
{
"type": "string",
"const": "eq"
},
{
"type": "string",
"const": "neq"
}
]
"type": "string",
"enum": ["eq", "neq"]
},
"value": {
"type": "string"
@@ -16376,16 +16692,8 @@
"type": "string"
},
"method": {
"anyOf": [
{
"type": "string",
"const": "auto"
},
{
"type": "string",
"const": "code"
}
]
"type": "string",
"enum": ["auto", "code"]
},
"instructions": {
"type": "string"
@@ -16541,12 +16849,6 @@
{
"$ref": "#/components/schemas/Event.server.instance.disposed"
},
{
"$ref": "#/components/schemas/Event.installation.updated"
},
{
"$ref": "#/components/schemas/Event.installation.update-available"
},
{
"$ref": "#/components/schemas/Event.server.connected"
},
@@ -16568,6 +16870,12 @@
{
"$ref": "#/components/schemas/Event.lsp.updated"
},
{
"$ref": "#/components/schemas/Event.installation.updated"
},
{
"$ref": "#/components/schemas/Event.installation.update-available"
},
{
"$ref": "#/components/schemas/Event.tui.prompt.append"
},
@@ -16601,18 +16909,18 @@
{
"$ref": "#/components/schemas/Event.message.part.delta"
},
{
"$ref": "#/components/schemas/Event.session.turn.open"
},
{
"$ref": "#/components/schemas/Event.session.turn.close"
},
{
"$ref": "#/components/schemas/Event.permission.asked"
},
{
"$ref": "#/components/schemas/Event.permission.replied"
},
{
"$ref": "#/components/schemas/Event.session.turn.open"
},
{
"$ref": "#/components/schemas/Event.session.turn.close"
},
{
"$ref": "#/components/schemas/Event.session.diff"
},
@@ -16629,13 +16937,7 @@
"$ref": "#/components/schemas/Event.question.rejected"
},
{
"$ref": "#/components/schemas/Event.todo.updated"
},
{
"$ref": "#/components/schemas/Event.session.status"
},
{
"$ref": "#/components/schemas/Event.session.idle"
"$ref": "#/components/schemas/Event.command.executed"
},
{
"$ref": "#/components/schemas/Event.suggestion.shown"
@@ -16647,14 +16949,20 @@
"$ref": "#/components/schemas/Event.suggestion.dismissed"
},
{
"$ref": "#/components/schemas/Event.session.compacted"
"$ref": "#/components/schemas/Event.session.status"
},
{
"$ref": "#/components/schemas/Event.command.executed"
"$ref": "#/components/schemas/Event.session.idle"
},
{
"$ref": "#/components/schemas/Event.todo.updated"
},
{
"$ref": "#/components/schemas/Event.vcs.branch.updated"
},
{
"$ref": "#/components/schemas/Event.session.compacted"
},
{
"$ref": "#/components/schemas/Event.kilo-sessions.remote-status-changed"
},
@@ -16682,6 +16990,9 @@
{
"$ref": "#/components/schemas/Event.workspace.failed"
},
{
"$ref": "#/components/schemas/Event.workspace.restore"
},
{
"$ref": "#/components/schemas/Event.workspace.status"
},
@@ -16992,6 +17303,67 @@
}
},
"required": ["name", "extensions", "enabled"]
},
"SuggestionAction": {
"type": "object",
"properties": {
"label": {
"description": "Button or option label (1-5 words)",
"type": "string"
},
"description": {
"description": "Brief explanation of what this action does",
"type": "string"
},
"prompt": {
"description": "Synthetic user prompt to inject when this action is accepted",
"type": "string"
}
},
"required": ["label", "prompt"]
},
"SuggestionRequest": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^sug.*"
},
"sessionID": {
"type": "string",
"pattern": "^ses.*"
},
"text": {
"description": "Suggestion text shown to the user",
"type": "string"
},
"actions": {
"description": "Available actions the user can take",
"minItems": 1,
"maxItems": 2,
"type": "array",
"items": {
"$ref": "#/components/schemas/SuggestionAction"
}
},
"blocking": {
"description": "Whether this suggestion blocks prompt input. When unset, the TUI treats the suggestion as blocking for backwards compatibility; the built-in suggest tool always sets this to false.",
"type": "boolean"
},
"tool": {
"type": "object",
"properties": {
"messageID": {
"type": "string"
},
"callID": {
"type": "string"
}
},
"required": ["messageID", "callID"]
}
},
"required": ["id", "sessionID", "text", "actions"]
}
}
}
+1 -8
View File
@@ -1,12 +1,5 @@
import { NodeFileSystem } from "@effect/platform-node"
import {
dirname,
isAbsolute,
join,
relative,
resolve as pathResolve,
sep,
} from "path" // kilocode_change - harden containment checks
import { dirname, isAbsolute, join, relative, resolve as pathResolve, sep } from "path" // kilocode_change - harden containment checks
import { realpathSync } from "fs"
import * as NFS from "fs/promises"
import { lookup } from "mime-types"
+1 -1
View File
@@ -7,4 +7,4 @@
/// <reference path="../../sst-env.d.ts" />
import "sst"
export {}
export {}