Bundle the official OpenCode CLI into Electron desktop builds instead of relying on whichever opencode executable happens to be first on PATH. Pin @opencode-ai/sdk to an exact version and use that version as the source of truth for the downloaded CLI artifact. Add an Electron prepare script that maps the current platform/arch to the official OpenCode release artifact, downloads it from GitHub releases, caches the archive under packages/electron/.cache, stages the binary under resources/opencode-cli, verifies opencode --version, and skips work when the staged binary already matches. Prefer explicit OpenCode binary overrides first, then the bundled Electron CLI, then PATH/system installs. Keep rejecting the Windows OpenCode desktop app executable as a CLI candidate and add resolver tests for bundled priority, explicit override priority, resourcesPath lookup, and desktop-app rejection. Suppress OpenCode CLI update prompts when the active CLI source is bundled. The server now reports upgrade-status as unavailable for bundled CLI while still returning the current OpenCode version for About, and rejects direct upgrade attempts with a 409 instead of trying to mutate the bundled binary. Update desktop release, smoke, and manual macOS DMG workflows to prepare and verify the bundled CLI before packaging, verify the packaged app contains the expected CLI, cache downloads by OS/arch/OpenCode version, and align the Windows smoke runner with production windows-2022. Document desktop bundling behavior, ignore generated CLI/cache files, add oc-dev helpers, and keep Web/VS Code behavior dependent on installed OpenCode CLI rather than desktop bundled resources.
179 lines
7.1 KiB
JSON
179 lines
7.1 KiB
JSON
{
|
|
"name": "openchamber-monorepo",
|
|
"version": "1.13.8",
|
|
"description": "OpenChamber monorepo workspace for web, ui, and desktop runtimes",
|
|
"private": true,
|
|
"type": "module",
|
|
"packageManager": "bun@1.3.14",
|
|
"workspaces": [
|
|
"packages/*"
|
|
],
|
|
"engines": {
|
|
"node": ">=22.0.0"
|
|
},
|
|
"keywords": [
|
|
"opencode",
|
|
"ai",
|
|
"coding",
|
|
"openchamber",
|
|
"cli"
|
|
],
|
|
"author": "Bohdan Triapitsyn",
|
|
"license": "MIT",
|
|
"scripts": {
|
|
"dev": "node ./scripts/dev-web-hmr.mjs",
|
|
"oc-dev": "node scripts/oc-dev.mjs",
|
|
"build": "bun run --filter '*' build",
|
|
"build:web": "bun run --cwd packages/web build",
|
|
"build:ui": "bun run --cwd packages/ui build",
|
|
"build:electron": "bun run --cwd packages/electron build",
|
|
"build:mobile": "bun run --cwd packages/mobile build",
|
|
"type-check": "bun run --filter '*' type-check",
|
|
"type-check:web": "bun run --cwd packages/web type-check",
|
|
"type-check:ui": "bun run --cwd packages/ui type-check",
|
|
"type-check:electron": "bun run --cwd packages/electron type-check",
|
|
"type-check:mobile": "bun run --cwd packages/mobile type-check",
|
|
"lint": "bun run --filter '*' lint",
|
|
"lint:web": "bun run --cwd packages/web lint",
|
|
"lint:ui": "bun run --cwd packages/ui lint",
|
|
"lint:electron": "bun run --cwd packages/electron lint",
|
|
"lint:mobile": "bun run --cwd packages/mobile lint",
|
|
"clean": "bun run --filter '*' clean",
|
|
"changelog-card": "node scripts/changelog-card/generate.mjs",
|
|
"postinstall": "node ./fix-deprecation.js && patch-package",
|
|
"dev:web": "bun run --cwd packages/web build:watch",
|
|
"dev:web:server": "bun run --cwd packages/web dev:server:watch",
|
|
"dev:web:full": "node ./scripts/dev-web-full.mjs",
|
|
"dev:web:hmr": "node ./scripts/dev-web-hmr.mjs",
|
|
"start:web": "bun run --cwd packages/web start",
|
|
"pack:web": "bun pm pack --cwd packages/web",
|
|
"electron:dev": "node ./packages/electron/scripts/electron-dev.mjs",
|
|
"electron:dev:bundled": "OPENCHAMBER_ELECTRON_USE_BUNDLED_UI=1 node ./packages/electron/scripts/electron-dev.mjs",
|
|
"electron:build": "bun run --cwd packages/electron package",
|
|
"mobile:build": "bun run --cwd packages/mobile build",
|
|
"mobile:sync": "bun run --cwd packages/mobile sync",
|
|
"mobile:add:ios": "bun run --cwd packages/mobile add:ios",
|
|
"mobile:add:android": "bun run --cwd packages/mobile add:android",
|
|
"mobile:build:android:debug": "bun run --cwd packages/mobile build:android:debug",
|
|
"mobile:build:ios:simulator": "bun run --cwd packages/mobile build:ios:simulator",
|
|
"mobile:sim:boot": "bun run --cwd packages/mobile sim:boot",
|
|
"mobile:sim:install": "bun run --cwd packages/mobile sim:install",
|
|
"mobile:sim:launch": "bun run --cwd packages/mobile sim:launch",
|
|
"mobile:sim:run": "bun run --cwd packages/mobile sim:run",
|
|
"mobile:sim:serve": "bun run --cwd packages/mobile sim:serve",
|
|
"mobile:sim:list": "bun run --cwd packages/mobile sim:list",
|
|
"mobile:sim:kill": "bun run --cwd packages/mobile sim:kill",
|
|
"mobile:open:ios": "bun run --cwd packages/mobile open:ios",
|
|
"mobile:open:android": "bun run --cwd packages/mobile open:android",
|
|
"vscode:dev": "node ./scripts/dev-vscode.mjs",
|
|
"vscode:build": "bun run --cwd packages/vscode build",
|
|
"vscode:package": "bun run --cwd packages/vscode package",
|
|
"vscode:type-check": "bun run --cwd packages/vscode type-check",
|
|
"docs:validate": "node scripts/docs/validate-docs.mjs",
|
|
"dead-code": "bunx knip@5.80.0 --no-exit-code --include files,exports,nsExports,types,nsTypes,enumMembers,duplicates",
|
|
"doctor": "node scripts/react-doctor.mjs",
|
|
"icons:sprite": "node scripts/generate-file-type-sprite.mjs",
|
|
"icons:generate": "bun run scripts/generate-icon-sprite.mjs",
|
|
"themes:port:opencode": "tsx scripts/port-opencode-theme.ts",
|
|
"version:bump": "node scripts/bump-version.mjs",
|
|
"release:prepare": "bun run build && bun run type-check && bun run lint",
|
|
"release:test": "./scripts/test-release-build.sh",
|
|
"release:test:intel": "./scripts/test-release-build.sh x86_64",
|
|
"release:test:arm": "./scripts/test-release-build.sh aarch64"
|
|
},
|
|
"dependencies": {
|
|
"@base-ui/react": "^1.4.0",
|
|
"@codemirror/autocomplete": "^6.20.0",
|
|
"@codemirror/commands": "^6.10.1",
|
|
"@codemirror/lang-cpp": "^6.0.3",
|
|
"@codemirror/lang-css": "^6.3.1",
|
|
"@codemirror/lang-go": "^6.0.1",
|
|
"@codemirror/lang-html": "^6.4.11",
|
|
"@codemirror/lang-javascript": "^6.2.4",
|
|
"@codemirror/lang-json": "^6.0.2",
|
|
"@codemirror/lang-markdown": "^6.5.0",
|
|
"@codemirror/lang-python": "^6.2.1",
|
|
"@codemirror/lang-rust": "^6.0.2",
|
|
"@codemirror/lang-sql": "^6.10.0",
|
|
"@codemirror/lang-xml": "^6.1.0",
|
|
"@codemirror/lang-yaml": "^6.1.2",
|
|
"@codemirror/language": "6.12.2",
|
|
"@codemirror/lint": "^6.9.2",
|
|
"@codemirror/search": "^6.6.0",
|
|
"@codemirror/state": "^6.5.4",
|
|
"@codemirror/view": "6.39.13",
|
|
"@heroui/scroll-shadow": "^2.3.18",
|
|
"@heroui/system": "^2.4.23",
|
|
"@heroui/theme": "^2.4.23",
|
|
"@lezer/highlight": "^1.2.3",
|
|
"@octokit/rest": "^22.0.1",
|
|
"@opencode-ai/sdk": "1.17.12",
|
|
"@radix-ui/react-collapsible": "^1.1.12",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-separator": "^1.1.7",
|
|
"@radix-ui/react-slot": "^1.2.3",
|
|
"@radix-ui/react-toggle": "^1.1.10",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@types/react-syntax-highlighter": "^15.5.13",
|
|
"@xenova/transformers": "^2.17.2",
|
|
"@zumer/snapdom": "^2.12.8",
|
|
"bun-pty": "^0.4.5",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"express": "^5.1.0",
|
|
"ghostty-web": "0.4.0",
|
|
"http-proxy-middleware": "^3.0.5",
|
|
"next-themes": "^0.4.6",
|
|
"node-pty": "1.2.0-beta.12",
|
|
"react": "^19.1.1",
|
|
"react-dom": "^19.1.1",
|
|
"react-markdown": "^10.1.0",
|
|
"react-syntax-highlighter": "^15.6.6",
|
|
"remark-gfm": "^4.0.1",
|
|
"simple-git": "^3.28.0",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.3.1",
|
|
"yaml": "^2.8.1",
|
|
"zod": "^4.3.6",
|
|
"zustand": "^5.0.8"
|
|
},
|
|
"overrides": {
|
|
"@codemirror/language": "6.12.2",
|
|
"@codemirror/view": "6.39.13"
|
|
},
|
|
"devDependencies": {
|
|
"@clack/prompts": "^1.1.0",
|
|
"@eslint/js": "^9.33.0",
|
|
"@tailwindcss/postcss": "^4.0.0",
|
|
"@types/dom-speech-recognition": "^0.0.12",
|
|
"@types/node": "^24.3.1",
|
|
"@types/react": "^19.1.10",
|
|
"@types/react-dom": "^19.1.7",
|
|
"@vitejs/plugin-react": "^5.0.0",
|
|
"autoprefixer": "^10.4.21",
|
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
"concurrently": "^9.2.1",
|
|
"cors": "^2.8.5",
|
|
"cross-env": "^7.0.3",
|
|
"eslint": "^9.33.0",
|
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
"eslint-plugin-react-refresh": "^0.5.0",
|
|
"globals": "^16.3.0",
|
|
"node-addon-api": "7.1.1",
|
|
"nodemon": "^3.1.7",
|
|
"patch-package": "^8.0.0",
|
|
"@remixicon/react": "^4.7.0",
|
|
"sharp": "^0.35.0",
|
|
"tailwindcss": "^4.0.0",
|
|
"tsx": "^4.20.6",
|
|
"tw-animate-css": "^1.3.8",
|
|
"typescript": "~5.9.0",
|
|
"typescript-eslint": "^8.39.1",
|
|
"vite": "^7.1.2"
|
|
}
|
|
}
|