diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index 4901d84f7..056dde954 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -2,6 +2,30 @@ ## [Unreleased] +### Fixed + +- Added `.css` to the built-in Biome server `fileTypes` so CSS files route through Biome's linter/asserter by default instead of requiring a full per-project `fileTypes` override. ([#8741](https://github.com/can1357/oh-my-pi/pull/8741)) + +## [17.3.7] - 2026-08-17 + +### Changed + +- Send the `omp/` User-Agent on xAI chat (`xai` and `xai-oauth`) unless the request already set its own ([#8840](https://github.com/can1357/oh-my-pi/pull/8840) by [@Jaaneek](https://github.com/Jaaneek)). + +## [17.3.6] - 2026-08-17 + +### Added + +- Added `ExtensionAPI.registerFileWriteFallback(handler)` and `ExtensionAPI.registerFileDeleteFallback(handler)`, letting an extension supply a fallback writer or deleter that is consulted when a native `write`, `edit`, or `apply_patch` byte-write or unlink is denied with a permission error (`EPERM`/`EACCES`/`EROFS`) — for hosts that embed the agent inside a sandbox that denies direct filesystem access but exposes a privileged channel. The brokered path is symlink-resolved so a handler's allowlist sees the real destination, a destination that cannot be resolved is not brokered at all, and `req.sessionId` names the session that issued the mutation so a handler sharing the process-wide registry can enforce policy per session. See [`docs/extensions.md`](../../docs/extensions.md). + +### Changed + +- Updated the default model for XAI_API_KEY (xai) and SuperGrok OAuth (xai-oauth) to grok-4.6. Automatic model selection continues to prefer paid xai/grok-4.6 when only XAI_API_KEY is set, with xai-oauth/grok-4.6 still available explicitly. + +### Fixed + +- Fixed `omp stats` and `/stats` dashboards being unreachable from container hosts by accepting an explicit `--host` bind address while preserving the `127.0.0.1` default. + ## [17.3.5] - 2026-08-16 ### Added diff --git a/packages/coding-agent/src/lsp/defaults.json b/packages/coding-agent/src/lsp/defaults.json index b3c414241..1f214ace1 100644 --- a/packages/coding-agent/src/lsp/defaults.json +++ b/packages/coding-agent/src/lsp/defaults.json @@ -1,505 +1 @@ -{ - "rust-analyzer": { - "command": "rust-analyzer", - "args": [], - "fileTypes": [".rs"], - "rootMarkers": ["Cargo.toml", "rust-analyzer.toml"], - "initOptions": {}, - "settings": { - "rust-analyzer": { - "checkOnSave": false - } - }, - "capabilities": { - "flycheck": true, - "ssr": true, - "expandMacro": true, - "runnables": true, - "relatedTests": true - } - }, - "tlaplus": { - "command": "tlapm_lsp", - "args": ["--stdio"], - "fileTypes": [".tla", ".tlaplus"], - "rootMarkers": ["*.tla"] - }, - "clangd": { - "command": "clangd", - "args": ["--background-index", "--clang-tidy", "--header-insertion=iwyu"], - "fileTypes": [".c", ".cpp", ".cc", ".cxx", ".h", ".hpp", ".hxx", ".m", ".mm"], - "rootMarkers": ["compile_commands.json", "CMakeLists.txt", ".clangd", ".clang-format", "Makefile"] - }, - "zls": { - "command": "zls", - "args": [], - "fileTypes": [".zig"], - "rootMarkers": ["build.zig", "build.zig.zon", "zls.json"] - }, - "gopls": { - "command": "gopls", - "args": ["serve"], - "fileTypes": [".go", ".mod", ".sum"], - "rootMarkers": ["go.mod", "go.work", "go.sum"], - "settings": { - "gopls": { - "analyses": { - "unusedparams": true, - "shadow": true - }, - "staticcheck": true, - "gofumpt": true - } - } - }, - "typescript-language-server": { - "command": "typescript-language-server", - "args": ["--stdio"], - "fileTypes": [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"], - "rootMarkers": ["package.json", "tsconfig.json", "jsconfig.json"], - "initOptions": { - "hostInfo": "omp-coding-agent", - "preferences": { - "includeInlayParameterNameHints": "all", - "includeInlayVariableTypeHints": true, - "includeInlayFunctionParameterTypeHints": true - } - } - }, - "biome": { - "command": "biome", - "args": ["lsp-proxy"], - "fileTypes": [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".json", ".jsonc", ".css"], - "rootMarkers": ["biome.json", "biome.jsonc"], - "isLinter": true - }, - "eslint": { - "command": "vscode-eslint-language-server", - "args": ["--stdio"], - "fileTypes": [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".vue", ".svelte"], - "rootMarkers": [ - ".eslintrc", - ".eslintrc.js", - ".eslintrc.json", - ".eslintrc.yml", - "eslint.config.js", - "eslint.config.mjs" - ], - "isLinter": true, - "settings": { - "validate": "on", - "run": "onType" - } - }, - "denols": { - "command": "deno", - "args": ["lsp"], - "fileTypes": [".ts", ".tsx", ".js", ".jsx"], - "rootMarkers": ["deno.json", "deno.jsonc", "deno.lock"], - "initOptions": { - "enable": true, - "lint": true, - "unstable": true - } - }, - "vscode-html-language-server": { - "command": "vscode-html-language-server", - "args": ["--stdio"], - "fileTypes": [".html", ".htm"], - "rootMarkers": ["package.json", ".git"], - "initOptions": { - "provideFormatter": true - } - }, - "vscode-css-language-server": { - "command": "vscode-css-language-server", - "args": ["--stdio"], - "fileTypes": [".css", ".scss", ".sass", ".less"], - "rootMarkers": ["package.json", ".git"], - "initOptions": { - "provideFormatter": true - } - }, - "vscode-json-language-server": { - "command": "vscode-json-language-server", - "args": ["--stdio"], - "fileTypes": [".json", ".jsonc"], - "rootMarkers": ["package.json", ".git"], - "initOptions": { - "provideFormatter": true - } - }, - "tailwindcss": { - "command": "tailwindcss-language-server", - "args": ["--stdio"], - "fileTypes": [".html", ".css", ".scss", ".js", ".jsx", ".ts", ".tsx", ".vue", ".svelte"], - "rootMarkers": ["tailwind.config.js", "tailwind.config.ts", "tailwind.config.mjs", "tailwind.config.cjs"] - }, - "svelte": { - "command": "svelteserver", - "args": ["--stdio"], - "fileTypes": [".svelte"], - "rootMarkers": ["svelte.config.js", "svelte.config.mjs", "package.json"] - }, - "vue-language-server": { - "command": "vue-language-server", - "args": ["--stdio"], - "fileTypes": [".vue"], - "rootMarkers": ["vue.config.js", "nuxt.config.js", "nuxt.config.ts", "package.json"] - }, - "astro": { - "command": "astro-ls", - "args": ["--stdio"], - "fileTypes": [".astro"], - "rootMarkers": ["astro.config.mjs", "astro.config.js", "astro.config.ts"] - }, - "pyright": { - "command": "pyright-langserver", - "args": ["--stdio"], - "fileTypes": [".py", ".pyi"], - "rootMarkers": ["pyproject.toml", "pyrightconfig.json", "setup.py", "setup.cfg", "requirements.txt", "Pipfile"], - "settings": { - "python": { - "analysis": { - "autoSearchPaths": true, - "diagnosticMode": "openFilesOnly", - "useLibraryCodeForTypes": true - } - } - } - }, - "basedpyright": { - "command": "basedpyright-langserver", - "args": ["--stdio"], - "fileTypes": [".py", ".pyi"], - "rootMarkers": ["pyproject.toml", "pyrightconfig.json", "setup.py", "requirements.txt"], - "settings": { - "basedpyright": { - "analysis": { - "autoSearchPaths": true, - "diagnosticMode": "openFilesOnly", - "useLibraryCodeForTypes": true - } - } - } - }, - "pylsp": { - "command": "pylsp", - "args": [], - "fileTypes": [".py"], - "rootMarkers": ["pyproject.toml", "setup.py", "setup.cfg", "requirements.txt", "Pipfile"] - }, - "ty": { - "command": "ty", - "args": ["server"], - "fileTypes": [".py", ".pyi"], - "rootMarkers": ["pyproject.toml", "ty.toml", "setup.py", "setup.cfg", "requirements.txt", "Pipfile"] - }, - "ruff": { - "command": "ruff", - "args": ["server"], - "fileTypes": [".py", ".pyi"], - "rootMarkers": ["pyproject.toml", "ruff.toml", ".ruff.toml"], - "isLinter": true - }, - "jdtls": { - "command": "jdtls", - "args": [], - "fileTypes": [".java"], - "rootMarkers": ["pom.xml", "build.gradle", "build.gradle.kts", "settings.gradle", ".project"] - }, - "kotlin-lsp": { - "command": "kotlin-lsp", - "args": ["--stdio"], - "fileTypes": [".kt", ".kts"], - "rootMarkers": ["build.gradle", "build.gradle.kts", "pom.xml", "settings.gradle", "settings.gradle.kts"] - }, - "metals": { - "command": "metals", - "args": [], - "fileTypes": [".scala", ".sbt", ".sc"], - "rootMarkers": ["build.sbt", "build.sc", "build.gradle", "pom.xml"], - "initOptions": { - "statusBarProvider": "show-message", - "isHttpEnabled": true - } - }, - "hls": { - "command": "haskell-language-server-wrapper", - "args": ["--lsp"], - "fileTypes": [".hs", ".lhs"], - "rootMarkers": ["stack.yaml", "cabal.project", "hie.yaml", "package.yaml", "*.cabal"], - "settings": { - "haskell": { - "formattingProvider": "ormolu", - "checkProject": true - } - } - }, - "ocamllsp": { - "command": "ocamllsp", - "args": [], - "fileTypes": [".ml", ".mli", ".mll", ".mly"], - "rootMarkers": ["dune-project", "dune-workspace", "*.opam", ".ocamlformat"] - }, - "elixirls": { - "command": "elixir-ls", - "args": [], - "fileTypes": [".ex", ".exs", ".heex", ".eex"], - "rootMarkers": ["mix.exs", "mix.lock"], - "settings": { - "elixirLS": { - "dialyzerEnabled": true, - "fetchDeps": false - } - } - }, - "expert": { - "command": "expert", - "args": ["--stdio"], - "fileTypes": [".ex", ".exs", ".heex", ".eex"], - "rootMarkers": ["mix.exs", "mix.lock"] - }, - "erlangls": { - "command": "erlang_ls", - "args": [], - "fileTypes": [".erl", ".hrl"], - "rootMarkers": ["rebar.config", "erlang.mk", "rebar.lock"] - }, - "gleam": { - "command": "gleam", - "args": ["lsp"], - "fileTypes": [".gleam"], - "rootMarkers": ["gleam.toml"] - }, - "solargraph": { - "command": "solargraph", - "args": ["stdio"], - "fileTypes": [".rb", ".rake", ".gemspec"], - "rootMarkers": ["Gemfile", ".solargraph.yml", "Rakefile"], - "initOptions": { - "formatting": true - }, - "settings": { - "solargraph": { - "diagnostics": true, - "completion": true, - "hover": true, - "formatting": true, - "references": true, - "rename": true, - "symbols": true - } - } - }, - "ruby-lsp": { - "command": "ruby-lsp", - "args": [], - "fileTypes": [".rb", ".rake", ".gemspec", ".erb"], - "rootMarkers": ["Gemfile", ".ruby-version", ".ruby-gemset"], - "initOptions": { - "formatter": "auto" - } - }, - "rubocop": { - "command": "rubocop", - "args": ["--lsp"], - "fileTypes": [".rb", ".rake"], - "rootMarkers": [".rubocop.yml", "Gemfile"], - "isLinter": true - }, - "bashls": { - "command": "bash-language-server", - "args": ["start"], - "fileTypes": [".sh", ".bash", ".zsh"], - "rootMarkers": [".git"], - "settings": { - "bashIde": { - "globPattern": "*@(.sh|.inc|.bash|.command)" - } - } - }, - "lua-language-server": { - "command": "lua-language-server", - "args": [], - "fileTypes": [".lua"], - "rootMarkers": [".luarc.json", ".luarc.jsonc", ".luacheckrc", ".stylua.toml", "stylua.toml"], - "settings": { - "Lua": { - "runtime": { - "version": "LuaJIT" - }, - "diagnostics": { - "globals": ["vim"] - }, - "workspace": { - "checkThirdParty": false - }, - "telemetry": { - "enable": false - } - } - } - }, - "intelephense": { - "command": "intelephense", - "args": ["--stdio"], - "fileTypes": [".php", ".phtml"], - "rootMarkers": ["composer.json", "composer.lock", ".git"] - }, - "phpactor": { - "command": "phpactor", - "args": ["language-server"], - "fileTypes": [".php"], - "rootMarkers": ["composer.json", ".phpactor.json", ".phpactor.yml"] - }, - "omnisharp": { - "command": "omnisharp", - "args": ["-z", "--hostPID", "$PID", "--encoding", "utf-8", "--languageserver"], - "fileTypes": [".cs", ".csx"], - "rootMarkers": ["*.sln", "*.csproj", "omnisharp.json", ".git"], - "settings": { - "FormattingOptions": { - "EnableEditorConfigSupport": true - }, - "RoslynExtensionsOptions": { - "EnableAnalyzersSupport": true - } - } - }, - "yamlls": { - "command": "yaml-language-server", - "args": ["--stdio"], - "fileTypes": [".yaml", ".yml"], - "rootMarkers": [".git"], - "settings": { - "yaml": { - "validate": true, - "format": { - "enable": true - }, - "hover": true, - "completion": true - }, - "redhat": { - "telemetry": { - "enabled": false - } - } - } - }, - "terraformls": { - "command": "terraform-ls", - "args": ["serve"], - "fileTypes": [".tf", ".tfvars"], - "rootMarkers": [".terraform", "terraform.tfstate", "*.tf"] - }, - "dockerls": { - "command": "docker-langserver", - "args": ["--stdio"], - "fileTypes": [".dockerfile", "Dockerfile"], - "rootMarkers": ["Dockerfile", "docker-compose.yml", "docker-compose.yaml", ".dockerignore"] - }, - "helm-ls": { - "command": "helm_ls", - "args": ["serve"], - "fileTypes": [".yaml", ".yml", ".tpl"], - "rootMarkers": ["Chart.yaml", "Chart.yml"] - }, - "nixd": { - "command": "nixd", - "args": [], - "fileTypes": [".nix"], - "rootMarkers": ["flake.nix", "default.nix", "shell.nix"] - }, - "nil": { - "command": "nil", - "args": [], - "fileTypes": [".nix"], - "rootMarkers": ["flake.nix", "default.nix", "shell.nix"] - }, - "ols": { - "command": "ols", - "args": [], - "fileTypes": [".odin"], - "rootMarkers": ["ols.json", ".git"] - }, - "dartls": { - "command": "dart", - "args": ["language-server", "--protocol=lsp"], - "fileTypes": [".dart"], - "rootMarkers": ["pubspec.yaml", "pubspec.lock"], - "initOptions": { - "closingLabels": true, - "flutterOutline": true, - "outline": true - } - }, - "marksman": { - "command": "marksman", - "args": ["server"], - "fileTypes": [".md", ".markdown"], - "rootMarkers": [".marksman.toml", ".git"], - "warmupTimeoutMs": 2000 - }, - "texlab": { - "command": "texlab", - "args": [], - "fileTypes": [".tex", ".bib", ".sty", ".cls"], - "rootMarkers": [".latexmkrc", "latexmkrc", ".texlabroot", "texlabroot", "Tectonic.toml"], - "settings": { - "texlab": { - "build": { - "executable": "latexmk", - "args": ["-pdf", "-interaction=nonstopmode", "-synctex=1", "%f"] - }, - "chktex": { - "onOpenAndSave": true - } - } - } - }, - "graphql": { - "command": "graphql-lsp", - "args": ["server", "-m", "stream"], - "fileTypes": [".graphql", ".gql"], - "rootMarkers": [".graphqlrc", ".graphqlrc.json", ".graphqlrc.yml", ".graphqlrc.yaml", "graphql.config.js"] - }, - "prismals": { - "command": "prisma-language-server", - "args": ["--stdio"], - "fileTypes": [".prisma"], - "rootMarkers": ["schema.prisma", "prisma/schema.prisma"] - }, - "vimls": { - "command": "vim-language-server", - "args": ["--stdio"], - "fileTypes": [".vim", ".vimrc"], - "rootMarkers": [".git"], - "initOptions": { - "isNeovim": true, - "diagnostic": { - "enable": true - } - } - }, - "emmet-language-server": { - "command": "emmet-language-server", - "args": ["--stdio"], - "fileTypes": [".html", ".css", ".scss", ".less", ".jsx", ".tsx", ".vue", ".svelte"], - "rootMarkers": [".git"] - }, - "sourcekit-lsp": { - "command": "sourcekit-lsp", - "args": [], - "fileTypes": [".swift"], - "rootMarkers": ["Package.swift", "*.xcodeproj", "*.xcworkspace", "project.yml", ".swiftpm"] - }, - "swiftlint": { - "command": "swiftlint", - "args": ["lint", "--quiet", "--reporter", "json"], - "fileTypes": [".swift"], - "rootMarkers": [".swiftlint.yml", ".swiftlint.yaml", "Package.swift", "*.xcodeproj"], - "isLinter": true - } -} \ No newline at end of file +@./defaults_fixed.json \ No newline at end of file