From d971836962a72d9c1075eccfa9b2d6973e7f6248 Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Sat, 3 Jan 2026 15:02:50 +0200 Subject: [PATCH] fix: switch to jsonc-parser for config file parsing in vscode extension --- bun.lock | 9 +++++---- packages/vscode/package.json | 1 + packages/vscode/src/opencodeConfig.ts | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/bun.lock b/bun.lock index 563ea443..64915208 100644 --- a/bun.lock +++ b/bun.lock @@ -74,7 +74,7 @@ }, "packages/desktop": { "name": "@openchamber/desktop", - "version": "1.4.0", + "version": "1.4.2", "dependencies": { "@openchamber/ui": "workspace:*", "@tauri-apps/plugin-notification": "^2.3.3", @@ -97,7 +97,7 @@ }, "packages/ui": { "name": "@openchamber/ui", - "version": "1.4.0", + "version": "1.4.2", "dependencies": { "@fontsource/ibm-plex-mono": "^5.2.7", "@fontsource/ibm-plex-sans": "^5.1.1", @@ -164,10 +164,11 @@ }, "packages/vscode": { "name": "openchamber", - "version": "1.4.0", + "version": "1.4.2", "dependencies": { "@openchamber/ui": "workspace:*", "@opencode-ai/sdk": "^1.0.209", + "jsonc-parser": "^3.3.1", "react": "^19.1.1", "react-dom": "^19.1.1", "yaml": "^2.8.1", @@ -184,7 +185,7 @@ }, "packages/web": { "name": "@openchamber/web", - "version": "1.4.0", + "version": "1.4.2", "bin": { "openchamber": "./bin/cli.js", }, diff --git a/packages/vscode/package.json b/packages/vscode/package.json index d7cb8f6b..f583fb47 100644 --- a/packages/vscode/package.json +++ b/packages/vscode/package.json @@ -175,6 +175,7 @@ "dependencies": { "@openchamber/ui": "workspace:*", "@opencode-ai/sdk": "^1.0.209", + "jsonc-parser": "^3.3.1", "react": "^19.1.1", "react-dom": "^19.1.1", "yaml": "^2.8.1" diff --git a/packages/vscode/src/opencodeConfig.ts b/packages/vscode/src/opencodeConfig.ts index 6b04e0af..f1e1911e 100644 --- a/packages/vscode/src/opencodeConfig.ts +++ b/packages/vscode/src/opencodeConfig.ts @@ -2,7 +2,7 @@ import fs from 'node:fs'; import path from 'node:path'; import os from 'node:os'; import yaml from 'yaml'; -import stripJsonComments from 'strip-json-comments'; +import { parse as parseJsonc } from 'jsonc-parser'; const OPENCODE_CONFIG_DIR = path.join(os.homedir(), '.config', 'opencode'); const AGENT_DIR = path.join(OPENCODE_CONFIG_DIR, 'agent'); @@ -186,9 +186,9 @@ const getConfigPaths = (workingDirectory?: string) => ({ const readConfigFile = (filePath?: string | null): Record => { if (!filePath || !fs.existsSync(filePath)) return {}; const content = fs.readFileSync(filePath, 'utf8'); - const normalized = stripJsonComments(content).trim(); + const normalized = content.trim(); if (!normalized) return {}; - return JSON.parse(normalized) as Record; + return parseJsonc(normalized, [], { allowTrailingComma: true }) as Record; }; const isPlainObject = (value: unknown): value is Record =>