mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-08-30 17:14:40 +08:00
refactor: merge dev
This commit is contained in:
@@ -811,7 +811,7 @@ model: "anthropic/claude-sonnet-4-5"
|
||||
modes/
|
||||
node_modules/
|
||||
openai/gpt-4.1
|
||||
opencode.ai/config.json
|
||||
app.kilo.ai/config.json
|
||||
opencode/<model-id>
|
||||
opencode/gpt-5.1-codex
|
||||
opencode/gpt-5.2-codex
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"$schema": "https://app.kilo.ai/config.json",
|
||||
// "enterprise": {
|
||||
// "url": "https://enterprise.dev.opencode.ai",
|
||||
// },
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Kilo Code
|
||||
Copyright (c) 2025 opencode
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"packages/app": {
|
||||
"name": "@opencode-ai/app",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"dependencies": {
|
||||
"@kilocode/kilo-i18n": "workspace:*",
|
||||
"@kilocode/kilo-ui": "workspace:*",
|
||||
@@ -75,7 +75,7 @@
|
||||
},
|
||||
"packages/desktop": {
|
||||
"name": "@opencode-ai/desktop",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"dependencies": {
|
||||
"@opencode-ai/app": "workspace:*",
|
||||
"@opencode-ai/ui": "workspace:*",
|
||||
@@ -108,7 +108,7 @@
|
||||
},
|
||||
"packages/kilo-gateway": {
|
||||
"name": "@kilocode/kilo-gateway",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"dependencies": {
|
||||
"@clack/prompts": "1.0.0-alpha.1",
|
||||
"@kilocode/plugin": "workspace:*",
|
||||
@@ -140,7 +140,7 @@
|
||||
},
|
||||
"packages/kilo-i18n": {
|
||||
"name": "@kilocode/kilo-i18n",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"devDependencies": {
|
||||
"@tsconfig/node22": "catalog:",
|
||||
"@types/bun": "catalog:",
|
||||
@@ -150,7 +150,7 @@
|
||||
},
|
||||
"packages/kilo-telemetry": {
|
||||
"name": "@kilocode/kilo-telemetry",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"dependencies": {
|
||||
"@kilocode/kilo-gateway": "workspace:*",
|
||||
"@opentelemetry/api": "1.9.0",
|
||||
@@ -170,7 +170,7 @@
|
||||
},
|
||||
"packages/kilo-ui": {
|
||||
"name": "@kilocode/kilo-ui",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"devDependencies": {
|
||||
"@tsconfig/node22": "catalog:",
|
||||
"@types/bun": "catalog:",
|
||||
@@ -183,7 +183,7 @@
|
||||
},
|
||||
"packages/kilo-vscode": {
|
||||
"name": "kilo-code",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"dependencies": {
|
||||
"@anthropic-ai/sdk": "^0.39.0",
|
||||
"@kilocode/kilo-i18n": "file:../kilo-i18n",
|
||||
@@ -224,7 +224,7 @@
|
||||
},
|
||||
"packages/opencode": {
|
||||
"name": "@kilocode/cli",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"bin": {
|
||||
"kilo": "./bin/kilo",
|
||||
"kilocode": "./bin/kilocode",
|
||||
@@ -333,7 +333,7 @@
|
||||
},
|
||||
"packages/plugin": {
|
||||
"name": "@kilocode/plugin",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"dependencies": {
|
||||
"@kilocode/sdk": "workspace:*",
|
||||
"zod": "catalog:",
|
||||
@@ -347,14 +347,14 @@
|
||||
},
|
||||
"packages/script": {
|
||||
"name": "@opencode-ai/script",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"devDependencies": {
|
||||
"@types/bun": "catalog:",
|
||||
},
|
||||
},
|
||||
"packages/sdk/js": {
|
||||
"name": "@kilocode/sdk",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"devDependencies": {
|
||||
"@hey-api/openapi-ts": "0.90.10",
|
||||
"@tsconfig/node22": "catalog:",
|
||||
@@ -365,7 +365,7 @@
|
||||
},
|
||||
"packages/ui": {
|
||||
"name": "@opencode-ai/ui",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"dependencies": {
|
||||
"@kilocode/sdk": "workspace:*",
|
||||
"@kobalte/core": "catalog:",
|
||||
@@ -407,7 +407,7 @@
|
||||
},
|
||||
"packages/util": {
|
||||
"name": "@opencode-ai/util",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"dependencies": {
|
||||
"zod": "catalog:",
|
||||
},
|
||||
|
||||
+1
-1
@@ -102,6 +102,6 @@
|
||||
"@standard-community/standard-openapi@0.2.9": "patches/@standard-community%2Fstandard-openapi@0.2.9.patch",
|
||||
"ghostty-web@0.3.0": "patches/ghostty-web@0.3.0.patch"
|
||||
},
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"peerDependencies": {}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/app",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"description": "",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@opencode-ai/desktop",
|
||||
"private": true,
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
id = "kilo"
|
||||
name = "Kilo"
|
||||
description = "The open source coding agent."
|
||||
version = "1.0.20"
|
||||
version = "1.0.21"
|
||||
schema_version = 1
|
||||
authors = ["Anomaly"]
|
||||
repository = "https://github.com/Kilo-Org/kilo"
|
||||
@@ -11,26 +11,26 @@ name = "Kilo"
|
||||
icon = "./icons/opencode.svg"
|
||||
|
||||
[agent_servers.opencode.targets.darwin-aarch64]
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.20/opencode-darwin-arm64.zip"
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.21/opencode-darwin-arm64.zip"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.darwin-x86_64]
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.20/opencode-darwin-x64.zip"
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.21/opencode-darwin-x64.zip"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.linux-aarch64]
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.20/opencode-linux-arm64.tar.gz"
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.21/opencode-linux-arm64.tar.gz"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.linux-x86_64]
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.20/opencode-linux-x64.tar.gz"
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.21/opencode-linux-x64.tar.gz"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.windows-x86_64]
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.20/opencode-windows-x64.zip"
|
||||
archive = "https://github.com/Kilo-Org/kilo/releases/download/v1.0.21/opencode-windows-x64.zip"
|
||||
cmd = "./opencode.exe"
|
||||
args = ["acp"]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@kilocode/kilo-gateway",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Unified Kilo Gateway package for OpenCode - authentication, provider, and API integration",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@kilocode/kilo-i18n",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Kilo-specific i18n translations and overrides",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@kilocode/kilo-telemetry",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"description": "Telemetry for Kilo CLI - PostHog analytics integration",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kilocode/kilo-ui",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"exports": {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "kilo-code",
|
||||
"displayName": "Kilo Code",
|
||||
"description": "Kilo Code AI Agent & Autocomplete",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"engines": {
|
||||
"vscode": "^1.109.0"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import * as vscode from "vscode"
|
||||
import { z } from "zod"
|
||||
import { type HttpClient, type SessionInfo, type SSEEvent, type KiloConnectionService } from "./services/cli-backend"
|
||||
import { handleChatCompletionRequest } from "./services/autocomplete/chat-autocomplete/handleChatCompletionRequest"
|
||||
import { handleChatCompletionAccepted } from "./services/autocomplete/chat-autocomplete/handleChatCompletionAccepted"
|
||||
@@ -152,15 +153,22 @@ export class KiloProvider implements vscode.WebviewViewProvider {
|
||||
this.isWebviewReady = true
|
||||
await this.syncWebviewState("webviewReady")
|
||||
break
|
||||
case "sendMessage":
|
||||
case "sendMessage": {
|
||||
const files = z
|
||||
.array(z.object({ mime: z.string(), url: z.string().startsWith("file://") }))
|
||||
.optional()
|
||||
.catch(undefined)
|
||||
.parse(message.files)
|
||||
await this.handleSendMessage(
|
||||
message.text,
|
||||
message.sessionID,
|
||||
message.providerID,
|
||||
message.modelID,
|
||||
message.agent,
|
||||
files,
|
||||
)
|
||||
break
|
||||
}
|
||||
case "abort":
|
||||
await this.handleAbort(message.sessionID)
|
||||
break
|
||||
@@ -718,6 +726,7 @@ export class KiloProvider implements vscode.WebviewViewProvider {
|
||||
providerID?: string,
|
||||
modelID?: string,
|
||||
agent?: string,
|
||||
files?: Array<{ mime: string; url: string }>,
|
||||
): Promise<void> {
|
||||
if (!this.httpClient) {
|
||||
this.postMessage({
|
||||
@@ -746,8 +755,29 @@ export class KiloProvider implements vscode.WebviewViewProvider {
|
||||
throw new Error("No session available")
|
||||
}
|
||||
|
||||
// Send message with text part, optional model selection, and optional agent/mode
|
||||
await this.httpClient.sendMessage(targetSessionID, [{ type: "text", text }], workspaceDir, {
|
||||
// Build parts array with file context and user text
|
||||
const parts: Array<{ type: "text"; text: string } | { type: "file"; mime: string; url: string }> = []
|
||||
|
||||
// Inject active editor file as context
|
||||
const editor = vscode.window.activeTextEditor
|
||||
if (editor && editor.document.uri.scheme === "file") {
|
||||
const url = editor.document.uri.toString()
|
||||
const already = files?.some((f) => f.url === url)
|
||||
if (!already) {
|
||||
parts.push({ type: "file", mime: "text/plain", url })
|
||||
}
|
||||
}
|
||||
|
||||
// Add any explicitly attached files from the webview
|
||||
if (files) {
|
||||
for (const f of files) {
|
||||
parts.push({ type: "file", mime: f.mime, url: f.url })
|
||||
}
|
||||
}
|
||||
|
||||
parts.push({ type: "text", text })
|
||||
|
||||
await this.httpClient.sendMessage(targetSessionID, parts, workspaceDir, {
|
||||
providerID,
|
||||
modelID,
|
||||
agent,
|
||||
|
||||
@@ -33,6 +33,7 @@ import type {
|
||||
ContextUsage,
|
||||
AgentInfo,
|
||||
ExtensionMessage,
|
||||
FileAttachment,
|
||||
} from "../types/messages"
|
||||
|
||||
// Store structure for messages and parts
|
||||
@@ -87,7 +88,7 @@ interface SessionContextValue {
|
||||
selectAgent: (name: string) => void
|
||||
|
||||
// Actions
|
||||
sendMessage: (text: string, providerID?: string, modelID?: string) => void
|
||||
sendMessage: (text: string, providerID?: string, modelID?: string, files?: FileAttachment[]) => void
|
||||
abort: () => void
|
||||
compact: () => void
|
||||
respondToPermission: (permissionId: string, response: "once" | "always" | "reject") => void
|
||||
@@ -491,7 +492,7 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
setSelectedAgentName(name)
|
||||
}
|
||||
|
||||
function sendMessage(text: string, providerID?: string, modelID?: string) {
|
||||
function sendMessage(text: string, providerID?: string, modelID?: string, files?: FileAttachment[]) {
|
||||
if (!server.isConnected()) {
|
||||
console.warn("[Kilo New] Cannot send message: not connected")
|
||||
return
|
||||
@@ -506,6 +507,7 @@ export const SessionProvider: ParentComponent = (props) => {
|
||||
providerID,
|
||||
modelID,
|
||||
agent,
|
||||
files,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -519,6 +519,11 @@ export type ExtensionMessage =
|
||||
// Messages FROM webview TO extension
|
||||
// ============================================
|
||||
|
||||
export interface FileAttachment {
|
||||
mime: string
|
||||
url: string
|
||||
}
|
||||
|
||||
export interface SendMessageRequest {
|
||||
type: "sendMessage"
|
||||
text: string
|
||||
@@ -526,6 +531,7 @@ export interface SendMessageRequest {
|
||||
providerID?: string
|
||||
modelID?: string
|
||||
agent?: string
|
||||
files?: FileAttachment[]
|
||||
}
|
||||
|
||||
export interface AbortRequest {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"name": "@kilocode/cli",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -12,7 +12,7 @@ test("agent color parsed from project config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
code: { color: "#FFA500" }, // kilocode_change
|
||||
plan: { color: "primary" },
|
||||
@@ -37,7 +37,7 @@ test("Agent.get includes color from config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
plan: { color: "#A855F7" },
|
||||
build: { color: "accent" },
|
||||
|
||||
@@ -39,7 +39,7 @@ test("loads JSON config file", async () => {
|
||||
await using tmp = await tmpdir({
|
||||
init: async (dir) => {
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
model: "test/model",
|
||||
username: "testuser",
|
||||
})
|
||||
@@ -62,7 +62,7 @@ test("loads JSONC config file", async () => {
|
||||
path.join(dir, "opencode.jsonc"),
|
||||
`{
|
||||
// This is a comment
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"$schema": "https://app.kilo.ai/config.json",
|
||||
"model": "test/model",
|
||||
"username": "testuser"
|
||||
}`,
|
||||
@@ -85,14 +85,14 @@ test("merges multiple config files with correct precedence", async () => {
|
||||
await writeConfig(
|
||||
dir,
|
||||
{
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
model: "base",
|
||||
username: "base",
|
||||
},
|
||||
"opencode.jsonc",
|
||||
)
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
model: "override",
|
||||
})
|
||||
},
|
||||
@@ -115,7 +115,7 @@ test("handles environment variable substitution", async () => {
|
||||
await using tmp = await tmpdir({
|
||||
init: async (dir) => {
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
theme: "{env:TEST_VAR}",
|
||||
})
|
||||
},
|
||||
@@ -179,7 +179,7 @@ test("handles file inclusion substitution", async () => {
|
||||
init: async (dir) => {
|
||||
await Bun.write(path.join(dir, "included.txt"), "test_theme")
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
theme: "{file:included.txt}",
|
||||
})
|
||||
},
|
||||
@@ -198,7 +198,7 @@ test("handles file inclusion with replacement tokens", async () => {
|
||||
init: async (dir) => {
|
||||
await Bun.write(path.join(dir, "included.md"), "const out = await Bun.$`echo hi`")
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
theme: "{file:included.md}",
|
||||
})
|
||||
},
|
||||
@@ -216,7 +216,7 @@ test("validates config schema and throws on invalid fields", async () => {
|
||||
await using tmp = await tmpdir({
|
||||
init: async (dir) => {
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
invalid_field: "should cause error",
|
||||
})
|
||||
},
|
||||
@@ -248,7 +248,7 @@ test("handles agent configuration", async () => {
|
||||
await using tmp = await tmpdir({
|
||||
init: async (dir) => {
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
test_agent: {
|
||||
model: "test/model",
|
||||
@@ -278,7 +278,7 @@ test("treats agent variant as model-scoped setting (not provider option)", async
|
||||
await using tmp = await tmpdir({
|
||||
init: async (dir) => {
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
test_agent: {
|
||||
model: "openai/gpt-5.2",
|
||||
@@ -309,7 +309,7 @@ test("handles command configuration", async () => {
|
||||
await using tmp = await tmpdir({
|
||||
init: async (dir) => {
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
command: {
|
||||
test_command: {
|
||||
template: "test template",
|
||||
@@ -339,7 +339,7 @@ test("migrates autoshare to share field", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
autoshare: true,
|
||||
}),
|
||||
)
|
||||
@@ -361,7 +361,7 @@ test("migrates mode field to agent field", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mode: {
|
||||
test_mode: {
|
||||
model: "test/model",
|
||||
@@ -676,7 +676,7 @@ test("resolves scoped npm plugins in config", async () => {
|
||||
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({ $schema: "https://opencode.ai/config.json", plugin: ["@scope/plugin"] }, null, 2),
|
||||
JSON.stringify({ $schema: "https://app.kilo.ai/config.json", plugin: ["@scope/plugin"] }, null, 2),
|
||||
)
|
||||
},
|
||||
})
|
||||
@@ -711,7 +711,7 @@ test("merges plugin arrays from global and local configs", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
plugin: ["global-plugin-1", "global-plugin-2"],
|
||||
}),
|
||||
)
|
||||
@@ -720,7 +720,7 @@ test("merges plugin arrays from global and local configs", async () => {
|
||||
await Bun.write(
|
||||
path.join(opencodeDir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
plugin: ["local-plugin-1"],
|
||||
}),
|
||||
)
|
||||
@@ -787,7 +787,7 @@ test("merges instructions arrays from global and local configs", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
instructions: ["global-instructions.md", "shared-rules.md"],
|
||||
}),
|
||||
)
|
||||
@@ -795,7 +795,7 @@ test("merges instructions arrays from global and local configs", async () => {
|
||||
await Bun.write(
|
||||
path.join(opencodeDir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
instructions: ["local-instructions.md"],
|
||||
}),
|
||||
)
|
||||
@@ -826,7 +826,7 @@ test("deduplicates duplicate instructions from global and local configs", async
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
instructions: ["duplicate.md", "global-only.md"],
|
||||
}),
|
||||
)
|
||||
@@ -834,7 +834,7 @@ test("deduplicates duplicate instructions from global and local configs", async
|
||||
await Bun.write(
|
||||
path.join(opencodeDir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
instructions: ["duplicate.md", "local-only.md"],
|
||||
}),
|
||||
)
|
||||
@@ -870,7 +870,7 @@ test("deduplicates duplicate plugins from global and local configs", async () =>
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
plugin: ["duplicate-plugin", "global-plugin-1"],
|
||||
}),
|
||||
)
|
||||
@@ -879,7 +879,7 @@ test("deduplicates duplicate plugins from global and local configs", async () =>
|
||||
await Bun.write(
|
||||
path.join(opencodeDir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
plugin: ["duplicate-plugin", "local-plugin-1"],
|
||||
}),
|
||||
)
|
||||
@@ -918,7 +918,7 @@ test("migrates legacy tools config to permissions - allow", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
test: {
|
||||
tools: {
|
||||
@@ -949,7 +949,7 @@ test("migrates legacy tools config to permissions - deny", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
test: {
|
||||
tools: {
|
||||
@@ -980,7 +980,7 @@ test("migrates legacy write tool to edit permission", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
test: {
|
||||
tools: {
|
||||
@@ -1010,7 +1010,7 @@ test("managed settings override user settings", async () => {
|
||||
await using tmp = await tmpdir({
|
||||
init: async (dir) => {
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
model: "user/model",
|
||||
share: "auto",
|
||||
username: "testuser",
|
||||
@@ -1019,7 +1019,7 @@ test("managed settings override user settings", async () => {
|
||||
})
|
||||
|
||||
await writeManagedSettings({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
model: "managed/model",
|
||||
share: "disabled",
|
||||
})
|
||||
@@ -1039,7 +1039,7 @@ test("managed settings override project settings", async () => {
|
||||
await using tmp = await tmpdir({
|
||||
init: async (dir) => {
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
autoupdate: true,
|
||||
disabled_providers: [],
|
||||
theme: "dark",
|
||||
@@ -1048,7 +1048,7 @@ test("managed settings override project settings", async () => {
|
||||
})
|
||||
|
||||
await writeManagedSettings({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
autoupdate: false,
|
||||
disabled_providers: ["openai"],
|
||||
})
|
||||
@@ -1068,7 +1068,7 @@ test("missing managed settings file is not an error", async () => {
|
||||
await using tmp = await tmpdir({
|
||||
init: async (dir) => {
|
||||
await writeConfig(dir, {
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
model: "user/model",
|
||||
})
|
||||
},
|
||||
@@ -1089,7 +1089,7 @@ test("migrates legacy edit tool to edit permission", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
test: {
|
||||
tools: {
|
||||
@@ -1118,7 +1118,7 @@ test("migrates legacy patch tool to edit permission", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
test: {
|
||||
tools: {
|
||||
@@ -1147,7 +1147,7 @@ test("migrates legacy multiedit tool to edit permission", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
test: {
|
||||
tools: {
|
||||
@@ -1176,7 +1176,7 @@ test("migrates mixed legacy tools config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
test: {
|
||||
tools: {
|
||||
@@ -1211,7 +1211,7 @@ test("merges legacy tools with existing permission config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
agent: {
|
||||
test: {
|
||||
permission: {
|
||||
@@ -1244,7 +1244,7 @@ test("permission config preserves key order", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
permission: {
|
||||
"*": "deny",
|
||||
edit: "ask",
|
||||
@@ -1292,7 +1292,7 @@ test("project config can override MCP server enabled status", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.jsonc"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
jira: {
|
||||
type: "remote",
|
||||
@@ -1311,7 +1311,7 @@ test("project config can override MCP server enabled status", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
jira: {
|
||||
type: "remote",
|
||||
@@ -1350,7 +1350,7 @@ test("MCP config deep merges preserving base config properties", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.jsonc"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
myserver: {
|
||||
type: "remote",
|
||||
@@ -1367,7 +1367,7 @@ test("MCP config deep merges preserving base config properties", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
myserver: {
|
||||
type: "remote",
|
||||
@@ -1402,7 +1402,7 @@ test("local .opencode config can override MCP from project config", async () =>
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
docs: {
|
||||
type: "remote",
|
||||
@@ -1418,7 +1418,7 @@ test("local .opencode config can override MCP from project config", async () =>
|
||||
await Bun.write(
|
||||
path.join(opencodeDir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
docs: {
|
||||
type: "remote",
|
||||
@@ -1486,7 +1486,7 @@ test("project config overrides remote well-known config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
jira: {
|
||||
type: "remote",
|
||||
@@ -1579,7 +1579,7 @@ describe("deduplicatePlugins", () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
plugin: ["my-plugin@1.0.0"],
|
||||
}),
|
||||
)
|
||||
@@ -1614,7 +1614,7 @@ describe("KILO_DISABLE_PROJECT_CONFIG", () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
model: "project/model",
|
||||
username: "project-user",
|
||||
}),
|
||||
@@ -1709,7 +1709,7 @@ describe("KILO_DISABLE_PROJECT_CONFIG", () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
instructions: ["./CUSTOM.md"],
|
||||
}),
|
||||
)
|
||||
@@ -1755,7 +1755,7 @@ describe("KILO_DISABLE_PROJECT_CONFIG", () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
model: "configdir/model",
|
||||
}),
|
||||
)
|
||||
@@ -1768,7 +1768,7 @@ describe("KILO_DISABLE_PROJECT_CONFIG", () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
model: "project/model",
|
||||
}),
|
||||
)
|
||||
|
||||
@@ -26,7 +26,7 @@ export async function tmpdir<T>(options?: TmpDirOptions<T>) {
|
||||
await Bun.write(
|
||||
path.join(dirpath, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
...options.config,
|
||||
}),
|
||||
)
|
||||
|
||||
@@ -55,7 +55,7 @@ test("model fetch uses accountId from OAuth auth as kilocodeOrganizationId", asy
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -94,7 +94,7 @@ test("model fetch without OAuth accountId does not set kilocodeOrganizationId",
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
|
||||
@@ -53,7 +53,7 @@ test("headers are passed to transports when oauth is enabled (default)", async (
|
||||
await Bun.write(
|
||||
`${dir}/opencode.json`,
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
"test-server": {
|
||||
type: "remote",
|
||||
|
||||
@@ -111,7 +111,7 @@ test("BrowserOpenFailed event is published when open() throws", async () => {
|
||||
await Bun.write(
|
||||
`${dir}/opencode.json`,
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
"test-oauth-server": {
|
||||
type: "remote",
|
||||
@@ -162,7 +162,7 @@ test("BrowserOpenFailed event is NOT published when open() succeeds", async () =
|
||||
await Bun.write(
|
||||
`${dir}/opencode.json`,
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
"test-oauth-server-2": {
|
||||
type: "remote",
|
||||
@@ -211,7 +211,7 @@ test("open() is called with the authorization URL", async () => {
|
||||
await Bun.write(
|
||||
`${dir}/opencode.json`,
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
mcp: {
|
||||
"test-oauth-server-3": {
|
||||
type: "remote",
|
||||
|
||||
@@ -14,7 +14,7 @@ test("Bedrock: config region takes precedence over AWS_REGION env var", async ()
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"amazon-bedrock": {
|
||||
options: {
|
||||
@@ -46,7 +46,7 @@ test("Bedrock: falls back to AWS_REGION env var when no config region", async ()
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -71,7 +71,7 @@ test("Bedrock: loads when bearer token from auth.json is present", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"amazon-bedrock": {
|
||||
options: {
|
||||
@@ -139,7 +139,7 @@ test("Bedrock: config profile takes precedence over AWS_PROFILE env var", async
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"amazon-bedrock": {
|
||||
options: {
|
||||
@@ -172,7 +172,7 @@ test("Bedrock: includes custom endpoint in options when specified", async () =>
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"amazon-bedrock": {
|
||||
options: {
|
||||
@@ -205,7 +205,7 @@ test("Bedrock: autoloads when AWS_WEB_IDENTITY_TOKEN_FILE is present", async ()
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"amazon-bedrock": {
|
||||
options: {
|
||||
@@ -243,7 +243,7 @@ test("Bedrock: model with us. prefix should not be double-prefixed", async () =>
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"amazon-bedrock": {
|
||||
options: {
|
||||
@@ -280,7 +280,7 @@ test("Bedrock: model with global. prefix should not be prefixed", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"amazon-bedrock": {
|
||||
options: {
|
||||
@@ -316,7 +316,7 @@ test("Bedrock: model with eu. prefix should not be double-prefixed", async () =>
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"amazon-bedrock": {
|
||||
options: {
|
||||
@@ -352,7 +352,7 @@ test("Bedrock: model without prefix in US region should get us. prefix added", a
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"amazon-bedrock": {
|
||||
options: {
|
||||
|
||||
@@ -13,7 +13,7 @@ test("GitLab Duo: loads provider with API key from environment", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -37,7 +37,7 @@ test("GitLab Duo: config instanceUrl option sets baseURL", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
gitlab: {
|
||||
options: {
|
||||
@@ -69,7 +69,7 @@ test("GitLab Duo: loads with OAuth token from auth.json", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -106,7 +106,7 @@ test("GitLab Duo: loads with Personal Access Token from auth.json", async () =>
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -142,7 +142,7 @@ test("GitLab Duo: supports self-hosted instance configuration", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
gitlab: {
|
||||
options: {
|
||||
@@ -174,7 +174,7 @@ test("GitLab Duo: config apiKey takes precedence over environment variable", asy
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
gitlab: {
|
||||
options: {
|
||||
@@ -204,7 +204,7 @@ test("GitLab Duo: supports feature flags configuration", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
gitlab: {
|
||||
options: {
|
||||
@@ -239,7 +239,7 @@ test("GitLab Duo: has multiple agentic chat models available", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
|
||||
@@ -12,7 +12,7 @@ test("provider loaded from env variable", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -39,7 +39,7 @@ test("provider loaded from config with apiKey option", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
options: {
|
||||
@@ -66,7 +66,7 @@ test("disabled_providers excludes provider", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
disabled_providers: ["anthropic"],
|
||||
}),
|
||||
)
|
||||
@@ -90,7 +90,7 @@ test("enabled_providers restricts to only listed providers", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
enabled_providers: ["anthropic"],
|
||||
}),
|
||||
)
|
||||
@@ -116,7 +116,7 @@ test("model whitelist filters models for provider", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
whitelist: ["claude-sonnet-4-20250514"],
|
||||
@@ -147,7 +147,7 @@ test("model blacklist excludes specific models", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
blacklist: ["claude-sonnet-4-20250514"],
|
||||
@@ -177,7 +177,7 @@ test("custom model alias via config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -212,7 +212,7 @@ test("custom provider with npm package", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"custom-provider": {
|
||||
name: "Custom Provider",
|
||||
@@ -255,7 +255,7 @@ test("env variable takes precedence, config merges options", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
options: {
|
||||
@@ -287,7 +287,7 @@ test("getModel returns model for valid provider/model", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -314,7 +314,7 @@ test("getModel throws ModelNotFoundError for invalid model", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -336,7 +336,7 @@ test("getModel throws ModelNotFoundError for invalid provider", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -367,7 +367,7 @@ test("defaultModel returns first available model when no config set", async () =
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -391,7 +391,7 @@ test("defaultModel respects config model setting", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
model: "anthropic/claude-sonnet-4-20250514",
|
||||
}),
|
||||
)
|
||||
@@ -416,7 +416,7 @@ test("provider with baseURL from config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"custom-openai": {
|
||||
name: "Custom OpenAI",
|
||||
@@ -455,7 +455,7 @@ test("model cost defaults to zero when not specified", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"test-provider": {
|
||||
name: "Test Provider",
|
||||
@@ -496,7 +496,7 @@ test("model options are merged from existing model", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -531,7 +531,7 @@ test("provider removed when all models filtered out", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
whitelist: ["nonexistent-model"],
|
||||
@@ -559,7 +559,7 @@ test("closest finds model by partial match", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -584,7 +584,7 @@ test("closest returns undefined for nonexistent provider", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -604,7 +604,7 @@ test("getModel uses realIdByKey for aliased models", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -642,7 +642,7 @@ test("provider api field sets model api.url", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"custom-api": {
|
||||
name: "Custom API",
|
||||
@@ -681,7 +681,7 @@ test("explicit baseURL overrides api field", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"custom-api": {
|
||||
name: "Custom API",
|
||||
@@ -720,7 +720,7 @@ test("model inherits properties from existing database model", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -756,7 +756,7 @@ test("disabled_providers prevents loading even with env var", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
disabled_providers: ["openai"],
|
||||
}),
|
||||
)
|
||||
@@ -780,7 +780,7 @@ test("enabled_providers with empty array allows no providers", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
enabled_providers: [],
|
||||
}),
|
||||
)
|
||||
@@ -805,7 +805,7 @@ test("whitelist and blacklist can be combined", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
whitelist: ["claude-sonnet-4-20250514", "claude-opus-4-20250514"],
|
||||
@@ -838,7 +838,7 @@ test("model modalities default correctly", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"test-provider": {
|
||||
name: "Test",
|
||||
@@ -875,7 +875,7 @@ test("model with custom cost values", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"test-provider": {
|
||||
name: "Test",
|
||||
@@ -920,7 +920,7 @@ test("getSmallModel returns appropriate small model", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -944,7 +944,7 @@ test("getSmallModel respects config small_model override", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
small_model: "anthropic/claude-sonnet-4-20250514",
|
||||
}),
|
||||
)
|
||||
@@ -985,7 +985,7 @@ test("multiple providers can be configured simultaneously", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
options: { timeout: 30000 },
|
||||
@@ -1020,7 +1020,7 @@ test("provider with custom npm package", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"local-llm": {
|
||||
name: "Local LLM",
|
||||
@@ -1062,7 +1062,7 @@ test("model alias name defaults to alias key when id differs", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -1095,7 +1095,7 @@ test("provider with multiple env var options only includes apiKey when single en
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"multi-env": {
|
||||
name: "Multi Env Provider",
|
||||
@@ -1137,7 +1137,7 @@ test("provider with single env var includes apiKey automatically", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"single-env": {
|
||||
name: "Single Env Provider",
|
||||
@@ -1179,7 +1179,7 @@ test("model cost overrides existing cost values", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -1216,7 +1216,7 @@ test("completely new provider not in database can be configured", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"brand-new-provider": {
|
||||
name: "Brand New",
|
||||
@@ -1266,7 +1266,7 @@ test("disabled_providers and enabled_providers interaction", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
// enabled_providers takes precedence - only these are considered
|
||||
enabled_providers: ["anthropic", "openai"],
|
||||
// Then disabled_providers filters from the enabled set
|
||||
@@ -1300,7 +1300,7 @@ test("model with tool_call false", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"no-tools": {
|
||||
name: "No Tools Provider",
|
||||
@@ -1335,7 +1335,7 @@ test("model defaults tool_call to true when not specified", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"default-tools": {
|
||||
name: "Default Tools Provider",
|
||||
@@ -1370,7 +1370,7 @@ test("model headers are preserved", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"headers-provider": {
|
||||
name: "Headers Provider",
|
||||
@@ -1413,7 +1413,7 @@ test("provider env fallback - second env var used if first missing", async () =>
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"fallback-env": {
|
||||
name: "Fallback Env Provider",
|
||||
@@ -1453,7 +1453,7 @@ test("getModel returns consistent results", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -1479,7 +1479,7 @@ test("provider name defaults to id when not in database", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"my-custom-id": {
|
||||
// no name specified
|
||||
@@ -1514,7 +1514,7 @@ test("ModelNotFoundError includes suggestions for typos", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -1542,7 +1542,7 @@ test("ModelNotFoundError for provider includes suggestions", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -1570,7 +1570,7 @@ test("getProvider returns undefined for nonexistent provider", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -1590,7 +1590,7 @@ test("getProvider returns provider info", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -1614,7 +1614,7 @@ test("closest returns undefined when no partial match found", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -1637,7 +1637,7 @@ test("closest checks multiple query terms in order", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -1662,7 +1662,7 @@ test("model limit defaults to zero when not specified", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"no-limit": {
|
||||
name: "No Limit Provider",
|
||||
@@ -1699,7 +1699,7 @@ test("provider options are deeply merged", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
options: {
|
||||
@@ -1736,7 +1736,7 @@ test("custom model inherits npm package from models.dev provider config", async
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
openai: {
|
||||
models: {
|
||||
@@ -1772,7 +1772,7 @@ test("custom model inherits api.url from models.dev provider", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
openrouter: {
|
||||
models: {
|
||||
@@ -1816,7 +1816,7 @@ test("model variants are generated for reasoning models", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
}),
|
||||
)
|
||||
},
|
||||
@@ -1843,7 +1843,7 @@ test("model variants can be disabled via config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -1881,7 +1881,7 @@ test("model variants can be customized via config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -1922,7 +1922,7 @@ test("disabled key is stripped from variant config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -1962,7 +1962,7 @@ test("all variants can be disabled via config", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -1999,7 +1999,7 @@ test("variant config merges with generated variants", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
anthropic: {
|
||||
models: {
|
||||
@@ -2039,7 +2039,7 @@ test("variants filtered in second pass for database models", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
openai: {
|
||||
models: {
|
||||
@@ -2077,7 +2077,7 @@ test("custom model with variants enabled and disabled", async () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
provider: {
|
||||
"custom-reasoning": {
|
||||
name: "Custom Reasoning Provider",
|
||||
|
||||
@@ -245,7 +245,7 @@ describe("session.llm.stream", () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
enabled_providers: [providerID],
|
||||
provider: {
|
||||
[providerID]: {
|
||||
@@ -369,7 +369,7 @@ describe("session.llm.stream", () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
enabled_providers: ["openai"],
|
||||
provider: {
|
||||
openai: {
|
||||
@@ -498,7 +498,7 @@ describe("session.llm.stream", () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
enabled_providers: [providerID],
|
||||
provider: {
|
||||
[providerID]: {
|
||||
@@ -599,7 +599,7 @@ describe("session.llm.stream", () => {
|
||||
await Bun.write(
|
||||
path.join(dir, "opencode.json"),
|
||||
JSON.stringify({
|
||||
$schema: "https://opencode.ai/config.json",
|
||||
$schema: "https://app.kilo.ai/config.json",
|
||||
enabled_providers: [providerID],
|
||||
provider: {
|
||||
[providerID]: {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@kilocode/plugin",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"exports": {
|
||||
".": "./src/index.ts"
|
||||
},
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"dependencies": {},
|
||||
"peerDependencies": {}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@kilocode/sdk",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/ui",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/util",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kilocode/upstream-merge",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"description": "Scripts for automating upstream opencode merges into Kilo",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "opencode",
|
||||
"displayName": "opencode",
|
||||
"description": "opencode for VS Code",
|
||||
"version": "1.0.20",
|
||||
"version": "1.0.21",
|
||||
"publisher": "sst-dev",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
Reference in New Issue
Block a user