mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-09-01 04:46:43 +08:00
Merge pull request #10933 from Kilo-Org/fix/mcp-json-strict-output
fix(cli): write strict JSON for MCP config
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@kilocode/cli": patch
|
||||
---
|
||||
|
||||
Write strict JSON when adding MCP servers to `kilo.json` configuration files.
|
||||
@@ -17,6 +17,7 @@ import { InstallationVersion } from "@opencode-ai/core/installation/version"
|
||||
import path from "path"
|
||||
import { Global } from "@opencode-ai/core/global"
|
||||
import { modify, applyEdits } from "jsonc-parser"
|
||||
import { KilocodeMcpConfig } from "@/kilocode/cli/cmd/mcp" // kilocode_change
|
||||
import { Filesystem } from "@/util/filesystem"
|
||||
import { Bus } from "../../bus"
|
||||
import { Effect } from "effect"
|
||||
@@ -438,7 +439,7 @@ async function addMcpToConfig(name: string, mcpConfig: ConfigMCP.Info, configPat
|
||||
const edits = modify(text, ["mcp", name], mcpConfig, {
|
||||
formattingOptions: { tabSize: 2, insertSpaces: true },
|
||||
})
|
||||
const result = applyEdits(text, edits)
|
||||
const result = KilocodeMcpConfig.format(configPath, applyEdits(text, edits)) // kilocode_change
|
||||
|
||||
await Filesystem.write(configPath, result)
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import { ConfigParse } from "@/config/parse"
|
||||
|
||||
export namespace KilocodeMcpConfig {
|
||||
export function format(file: string, input: string) {
|
||||
if (file.endsWith(".jsonc")) return input
|
||||
return JSON.stringify(ConfigParse.jsonc(input, file), null, 2)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
import { describe, expect, test } from "bun:test"
|
||||
import { KilocodeMcpConfig } from "@/kilocode/cli/cmd/mcp"
|
||||
|
||||
const added = `{
|
||||
"permission": {
|
||||
"bash": "allow"
|
||||
},
|
||||
"mcp": {
|
||||
"linear": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.linear.app/mcp",
|
||||
"oauth": {}
|
||||
}
|
||||
},
|
||||
}`
|
||||
|
||||
describe("KilocodeMcpConfig.format", () => {
|
||||
test("writes strict JSON for kilo.json", () => {
|
||||
const output = KilocodeMcpConfig.format("/tmp/kilo.json", added)
|
||||
|
||||
expect(JSON.parse(output)).toEqual({
|
||||
permission: { bash: "allow" },
|
||||
mcp: {
|
||||
linear: {
|
||||
type: "remote",
|
||||
url: "https://mcp.linear.app/mcp",
|
||||
oauth: {},
|
||||
},
|
||||
},
|
||||
})
|
||||
expect(output).not.toEndWith(",\n}")
|
||||
})
|
||||
|
||||
test("preserves JSONC formatting for kilo.jsonc", () => {
|
||||
expect(KilocodeMcpConfig.format("/tmp/kilo.jsonc", added)).toBe(added)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user