@zoisythe/codex-codeintel 0.0.0-stage → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "codex-codeintel",
3
+ "version": "0.10.0",
4
+ "description": "Nine compact MCP tools for checks, navigation, context and previewed edits; apply is the only source writer.",
5
+ "author": {
6
+ "name": "zoisythe",
7
+ "url": "https://github.com/zoisythe"
8
+ },
9
+ "homepage": "https://github.com/zoisythe/codex-codeintel",
10
+ "repository": "https://github.com/zoisythe/codex-codeintel",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "codex",
14
+ "codex-plugin",
15
+ "lsp",
16
+ "language-server-protocol",
17
+ "mcp",
18
+ "diagnostics"
19
+ ],
20
+ "hooks": "./hooks/hooks.json",
21
+ "mcpServers": "./.mcp.json",
22
+ "interface": {
23
+ "displayName": "Codex CodeIntel",
24
+ "shortDescription": "Code intelligence and previewed lint/LSP fixes",
25
+ "longDescription": "Codex CodeIntel shares local LSP and CLI checks across MCP and optional nonblocking Hooks. Nine tools provide diagnostics, navigation, context and edit previews. Only apply writes source files; plans are single-use. Use setupLSP to configure project tools.",
26
+ "developerName": "zoisythe",
27
+ "category": "Developer Tools",
28
+ "capabilities": [
29
+ "Hooks",
30
+ "MCP Tools",
31
+ "Code Intelligence"
32
+ ],
33
+ "websiteURL": "https://github.com/zoisythe/codex-codeintel",
34
+ "privacyPolicyURL": "https://github.com/zoisythe/codex-codeintel#privacy",
35
+ "termsOfServiceURL": "https://github.com/zoisythe/codex-codeintel#license",
36
+ "defaultPrompt": [
37
+ "Run diagnostics on the files I just edited.",
38
+ "Use inspect to understand the affected symbols and candidate tests.",
39
+ "Preview formatting with format, then apply the plan to the authorized files."
40
+ ],
41
+ "brandColor": "#0F766E",
42
+ "screenshots": []
43
+ },
44
+ "skills": "./skills/"
45
+ }
package/.mcp.json ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "mcpServers": {
3
+ "lsp": {
4
+ "type": "stdio",
5
+ "command": "node",
6
+ "args": ["./dist/cli.js", "mcp"],
7
+ "cwd": "."
8
+ }
9
+ }
10
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,134 @@
1
+ # Changelog
2
+
3
+ ## 0.10.0
4
+
5
+ - Breaking: expose exactly check, diagnostics, status, navigate, rename, format, inspect, actions and apply. Old names return migration guidance without executing.
6
+ - Make rename and format read-only previews. Unify text edits into bounded, single-use plans with workspace/config/tool/environment binding, full preflight, sequential apply, conflict checks and complete partial-write reporting. Only apply writes source.
7
+ - Require native async Codex Hooks. Register exactly SessionStart, PostToolUse, Stop, SubagentStop, SessionEnd and Interrupt; match canonical Bash/apply_patch/mcp__lsp__apply, skip compact and remove high-frequency status messages and old event special cases.
8
+ - Isolate explicit subagent waits/deliveries/turns while sharing workspace diagnostics; unknown ownership is shared. Only the main Stop may use the optional global gate. Ordinary ending feedback waits at most 300 ms within a 1.5-second budget.
9
+ - Persist epoch/actor/tool-use identities, coalesce writes, add internal read-only long polling, preserve uncertain pending ranges through cancellation/restarts and prevent late startup checks from manufacturing pre-edit baselines. Reuse fresh apply diagnostics.
10
+ - Bound automatic output to five diagnostics, 2 KiB per message and 8 KiB per actor/turn. Preserve snapshot-bound delivery IDs and stdout ACK retries; UI summaries and ACKs do not promise model receipt. Upgrade metadata without migrating old deliveries; re-review /hooks and start a new session, preserving user settings and trust.
11
+ - Add symbol paths, unique @@ anchors, compact outlines and recoverable paging; add declarations, call/type hierarchy, completions, symbol exploration and bounded impact analysis with candidate test links.
12
+ - Preserve lint rule/fix metadata internally; add filtered diagnostics, summaries, rule explanations and previewed Ruff/Biome/ESLint and LSP text actions. Vendor-safe bulk selection stays distinct from unknown/unsafe/suggestions; command/resource actions do not execute.
13
+ - Expand Go support with gopls and go vet JSON project checks scoped by go list. Normalize Windows Path/PATH across IPC, preserve cancellation and nonblocking Hook behavior.
14
+ - Update Skills/docs and delivered-bundle/real-tool acceptance. Retain Linux/macOS/Windows coverage and local Go/Ruff/ty/clangd feature tests. Keep Rust acceptance separate from default local tests.
15
+ - Add an independent Linux/Windows Rust CI with a pinned matching toolchain, offline Cargo fixtures, delivered-bundle navigation/edit/check acceptance and retained failure evidence; ordinary local tests require no Rust.
16
+
17
+ ## 0.9.0
18
+
19
+ - Remove plugin directory-trust checks and the published PreToolUse edit gate; compatibility calls always pass. Keep workspace boundaries, symlink and conflict checks, complete modifiedPaths, and CODEX_HOME isolation.
20
+ - Default both automatic feedback modes to off. All six MCP tools remain explicitly callable; editing, shell operations, rename and formatting require no diagnostic baseline.
21
+ - Report current diagnostics without reliable baselines as unattributed. Track reliability by checker and actual coverage, retaining useful feedback after partial failures.
22
+ - Make Stop/SubagentStop feedback-only unless the user globally opts into stopGate=introduced-errors. Confirm fresh introduced errors against the same project checker; block at most once per turn. Project gate settings, pending, failed, uncovered and stale results cannot block.
23
+ - Expose configuration sources/issues and per-capability availability without starting/downloading tools. Keep status/cache reads after malformed configuration and degrade localized errors independently. Legacy trust fields/variables only produce migration notes.
24
+ - Invalidate work/baselines/deliveries when configuration, tool identity or ending policy changes. Return post-write diagnostic failures as supplementary status rather than replayable write failures.
25
+ - Add discoverable setupLSP ($setup-lsp), UI metadata and language/configuration references; route setup requests from code-intelligence. Reuse local tools, respect project conventions and verify actual capabilities; continue other languages after installation failures.
26
+ - Upgrade: existing stop=errors now means feedback. Ending gates require an explicit global stopGate; setup never enables one. Restart sessions and re-review the changed Hook definitions.
27
+
28
+ ## 0.8.0 (2026-10-02)
29
+
30
+ - Let all shell commands and reads pass PreToolUse immediately; retain reliable baseline gates for explicit file edits and MCP writes.
31
+ - Bound foreground Hook waits independently of service startup and background analysis. Persist late diagnostic deliveries with content/generation/session binding, stable delivery IDs and acknowledgement retries.
32
+ - Separate discovery from analysis waits, cancel superseded/session-ended work, and preserve pending or uncertain diagnostic states.
33
+ - Delay limited local LSP warmup, cool down repeated initialization failures, and extend actual service/LSP idle reuse to five minutes.
34
+ - Hide Windows subprocess consoles for Git, checkers, LSP, service startup and cleanup; make taskkill asynchronous with a bounded timeout. Fix Windows directory-scoped diagnostic path filtering.
35
+ - Add three focused end-to-end regression scenarios for cold startup, delayed delivery and Windows process handling.
36
+
37
+ ## 0.7.0
38
+
39
+ - Consolidate current usage and configuration examples; keep phase engineering records locally under ignored `docs/history/` and exclude common local settings/caches from Git.
40
+
41
+ - Add project CLI checks and reliable pre-edit baselines; deny uncovered or failed-checker source writes while permitting reads and checker configuration repair.
42
+ - Compare diagnostic multisets after edits; report introduced findings and repairs, and request one Stop continuation for confirmed unresolved introduced errors.
43
+ - Vendor the pinned MIT LSP dependency closure, remove submodule/bootstrap/legacy-peer-deps, and pass explicit subprocess environments.
44
+ - Preserve hot clients on cancellation/timeouts, classify configuration impacts precisely, batch lint and use a workspace stat index with shared session snapshots.
45
+ - Support Node >=22.12.0, add Linux/macOS/Windows Node 22.12/24 CI, shorten user guidance and publish only user documentation.
46
+
47
+ - Rename the repository, marketplace and plugin to `codex-codeintel`, the package and CLI to `@zoisythe/codex-codeintel` / `codex-codeintel`, and the `lsp` Skill to `code-intelligence`. Update MCP server identity, Hook feedback and installation guidance; preserve source attribution and Git history. See [upgrading](docs/usage.md#upgrade).
48
+ - Keep existing MCP tool names, configuration paths, environment variables and cache/IPC locations compatible across the rename.
49
+
50
+ ## 0.6.0
51
+
52
+ - Document the original codex-lsp, pi-lsp-client and lsp-tools-mcp sources and independent maintenance by zoisythe; retain existing names, Git history and MIT attribution.
53
+ - Share one authenticated local workspace service, Engine, diagnostic cache and LspManager across Hooks and MCP. Initialize/status/cached reads remain lazy; inactive services exit after two minutes.
54
+ - Automatically run LSP plus independent lint after edits (delta) and at Stop (full). Configure each event as delta/full/off; a missing baseline starts with full scope. Stop never blocks.
55
+ - Keep short Hook waits independent from five-minute background jobs; serialize workspace operations, yield between 50-file batches, merge pending edits and cancel superseded/session-ended tasks.
56
+ - Isolate by canonical workspace, user, CODEX_HOME, bundle hash and protocol; include each request's execution environment in tool/client identity. Automatic execution requires trust and never downloads tools.
57
+ - Share automatic findings with cached MCP queries, track per-channel pending state in metadata v6, deduplicate feedback and confirm error clearing once. Invalidate changed content/configuration/tools and remove deleted diagnostics.
58
+ - Add bundle concurrency/recovery/full-scope acceptance, actual automatic Python/legacy and native TypeScript/C/C++/Rust checks, and a live Codex Hook session. Phase migration and validation records are kept locally in the ignored `docs/history/` directory.
59
+
60
+
61
+ ## 0.5.0 follow-up (2026-09-30, 386d1b1)
62
+
63
+ - Read workspace trust directly from Codex's user config.toml; match the selected directory without parent inheritance, ignore legacy plugin trust lists, and invalidate cached analysis when trust changes.
64
+ - Keep Hook scope at the session cwd instead of promoting it to the Git root; expose the trust file and effective level in status and cover parent/child workspaces and live revocation through real MCP/Hook subprocesses.
65
+
66
+ ## 0.5.0 follow-up (2026-09-30, cbe16cb)
67
+
68
+ - Support native TypeScript 7 through the `tsc` built-in (`tsc --lsp --stdio`) with local-first resolution and a pinned temporary recipe; add a local-only `tsgo` preview built-in while preserving the legacy TypeScript default.
69
+ - Send object parameters with the LSP `initialized` notification so native TypeScript completes initialization; cover real MCP diagnostics, dependency updates, navigation, rename and formatting.
70
+
71
+ ## 0.5.0
72
+
73
+ - Breaking: schemaVersion 1, fixed global/project paths, global-only workspace trust and language-keyed server replacement; removed environment overrides and priority competition.
74
+ - Local project/PATH tools precede registered ecosystem launchers; Python defaults to ty plus Ruff CLI, including .pyi and no-config Ruff. No clangd/Rust toolchain auto-installation.
75
+ - Five MCP tools: unified scope/source/run diagnostics, lazy status, read-only expanded navigation, independent rename and explicit formatting. Opaque cursors replace legacy modes and offsets.
76
+ - Capability-aware pull/push diagnostics, quiet windows, pending analysis updates, initialization failure recovery, write preflight and conflict reporting.
77
+ - Two active content inventories, one cached inventory, no redundant PreToolUse baseline scan; bounded local timing statistics.
78
+ - Updated bundle, Skill, migration guide, real Python/C/C++/Rust subprocess acceptance and performance measurements.
79
+
80
+ Phase migration and validation records are kept locally in the ignored `docs/history/` directory.
81
+
82
+ ## 0.4.0
83
+
84
+ - Normalize Windows diagnostic URI drive letters and escaping so TypeScript push diagnostics are not left permanently pending; cover canonicalized server URIs in native subprocess tests.
85
+
86
+ - Ship a concise `lsp` Skill covering tool purposes, scope/session selection, revision/refresh, and write-call conventions.
87
+
88
+ - Replace shared worker IPC with process-local MCP Engines and independent lint-only Hooks. Release idle LSP clients after two minutes without closing MCP stdio.
89
+ - Add versioned, atomic session metadata, short Hook budgets, cancellation cleanup, pending retries and fresh lint-only Stop blocking with fingerprint deduplication.
90
+ - Add `lint.javascript`, `lint.python`, `exclude`, unified trust/config paths, configuration-aware cache validation and explicit diagnostics `refresh`.
91
+ - Apply directory budgets within the requested scope; require content/config-bound `revision` for nonzero `start`/`offset`, including all/delta output pages.
92
+ - Report LSP/lint channels and partial write outcomes separately; preserve explicit-only formatting/rename and bounded local error logs.
93
+ - Extend dependency-free delivery subprocess tests to all three CI platforms. Phase validation records are kept locally in `docs/history/`; workflow configuration is not a remote pass.
94
+
95
+
96
+ ## 0.3.0
97
+
98
+ Released from 50138d8 (2026-09-08). Earlier packaging/toolchain changes below preceded this release.
99
+
100
+ - Ship a self-contained `dist/cli.js` bundle so clean installs no longer need submodule contents or runtime `node_modules`.
101
+ - Replace the upstream MCP tool surface with four static tools: `check_diagnostics`, `lsp_diagnostics`, `lsp_navigation`, and `lsp_format`.
102
+ - Add a workspace-shared worker, inventory-based PostToolUse/Bash change tracking, SessionStart baseline, and SessionEnd cleanup.
103
+ - Remove Skills from the plugin package and run the bundle from Codex's plugin-relative MCP cwd.
104
+ - Keep Biome/ESLint/Ruff as trusted, check-only runners; formatting remains an explicit tool. Disable Ruff cache writes to avoid self-triggered Hook feedback.
105
+ - Validate MCP arguments, content-check explicitly ignored files before cache reuse, retain over-budget changed paths as pending, and recheck rename targets.
106
+ - Add source/bundle drift checking and a dependency-free delivery CI job on Linux, macOS and Windows.
107
+
108
+ - Restore `.codex-plugin/plugin.json` so this repository is a standalone Codex plugin again.
109
+ - Point package, plugin, and marketplace metadata at [`zoisythe/codex-lsp-standalone`](https://github.com/zoisythe/codex-lsp-standalone).
110
+ - Disable npm lifecycle scripts during install so native optional packages cannot run install hooks.
111
+ - Historical development updates: Biome 2.5.12, Vitest 5.0.0, Node types 26.4.1 and legacy peer handling for the former submodule.
112
+ - Point the `packages/lsp-tools-mcp` submodule at [`zoisythe/lsp-tools-mcp`](https://github.com/zoisythe/lsp-tools-mcp) and pin `main` at `9cc6f75`.
113
+ - Install `smol-toml` as an optional dependency so Cargo workspace parsing works after a parent `npm install`.
114
+ - Require Node.js 24.20.0 LTS (Krypton).
115
+
116
+ ## 0.2.0
117
+
118
+ - Extracted the LSP runtime and MCP server into [`@code-yeongyu/lsp-tools-mcp`](https://github.com/code-yeongyu/lsp-tools-mcp).
119
+ - codex-lsp now consumes that runtime as a git submodule at `packages/lsp-tools-mcp`.
120
+ - Kept the Codex-specific PostToolUse hook in this package and routed MCP serving through the upstream CLI.
121
+
122
+ - Extract LSP runtime to `lsp-tools-mcp` upstream and consume it via git submodule at `packages/lsp-tools-mcp`.
123
+ - Renamed the MCP server namespace to `lsp` and exposed shorter tool names such as `lsp.diagnostics`.
124
+ - Use portable Codex hook interpolation and add package smoke coverage for hook/MCP entrypoints.
125
+ - Spawn language servers without shell mode; Windows `.cmd` and `.bat` shims are routed through `cmd.exe` with explicit arguments.
126
+ - Cap directory diagnostics file traversal and run CI on Windows in addition to Ubuntu and macOS.
127
+ - Replace the external JSON-RPC runtime dependency with an internal LSP framing layer so clean Codex plugin installs run without `node_modules`.
128
+
129
+ ## 0.1.0
130
+
131
+ - Ported the standalone LSP client, server resolution, diagnostics aggregation, and workspace edit runtime from `pi-lsp-client`.
132
+ - Added Codex `PostToolUse` diagnostics for edit-style tools.
133
+ - Added MCP tools for status, diagnostics, definitions, references, symbols, prepare rename, and rename.
134
+ - Added Codex plugin metadata, skill docs, CI, and release automation.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yeongyu Kim
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/NOTICE ADDED
@@ -0,0 +1,41 @@
1
+ Codex CodeIntel is independently maintained by zoisythe at
2
+ https://github.com/zoisythe/codex-codeintel.
3
+
4
+ The project originated from code-yeongyu/codex-lsp:
5
+ https://github.com/code-yeongyu/codex-lsp
6
+ It includes adapted LSP runtime code originally developed for pi-lsp-client:
7
+ https://github.com/code-yeongyu/pi-lsp-client
8
+ and extracted into lsp-tools-mcp:
9
+ https://github.com/code-yeongyu/lsp-tools-mcp
10
+
11
+ src/lsp contains the dependency closure of lsp-tools-mcp at commit
12
+ 9cc6f753d04834c148d08bbca72e3b483d6301b2 from
13
+ https://github.com/zoisythe/lsp-tools-mcp (MIT). Copyright (c) 2026 Yeongyu Kim.
14
+ The MIT license is reproduced below and in src/lsp/LICENSE.
15
+
16
+ MIT License
17
+
18
+ Copyright (c) 2026 Yeongyu Kim
19
+
20
+ Permission is hereby granted, free of charge, to any person obtaining a copy
21
+ of this software and associated documentation files (the "Software"), to deal
22
+ in the Software without restriction, including without limitation the rights
23
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
24
+ copies of the Software, and to permit persons to whom the Software is
25
+ furnished to do so, subject to the following conditions:
26
+
27
+ The above copyright notice and this permission notice shall be included in all
28
+ copies or substantial portions of the Software.
29
+
30
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
33
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
35
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
36
+ SOFTWARE.
37
+
38
+
39
+ Original Git history, author attribution and MIT copyright/license notices
40
+ are retained. Independent maintenance does not imply endorsement by the
41
+ original authors. See LICENSE and src/lsp/LICENSE.
package/README.md CHANGED
@@ -1,3 +1,96 @@
1
- # Temporary Holding Version
1
+ # Codex CodeIntel
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Standalone Codex plugin for local code intelligence. **Node.js >=22.12.0**, nine MCP tools, optional Hooks, and a self-contained bundle with no runtime dependency installation.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ codex plugin marketplace add https://github.com/zoisythe/codex-codeintel
9
+ codex plugin add codex-codeintel@codex-codeintel
10
+ ```
11
+
12
+ Start a new session and review Hook definitions through `/hooks`. Use **setupLSP** (`$setup-lsp`) to configure or repair the current project's tools.
13
+
14
+ **0.10 is a breaking upgrade:** old MCP names no longer execute. `rename` and `format` now return previews; **only `apply` writes source files**.
15
+
16
+ ## Tools
17
+
18
+ | Tool | Purpose |
19
+ | --- | --- |
20
+ | `check` | Start/read project CLI checks; follow `next` until finished. |
21
+ | `diagnostics` | LSP/lint for explicit paths or turn/session scope; optional rule/severity filters and cached reads. |
22
+ | `status` | Configuration, local tools, capabilities and failures without starting servers or downloading tools. |
23
+ | `navigate` | Symbols, definitions, references, hover, signatures, declarations, call/type relationships and completion. |
24
+ | `rename` | Preview a cross-file rename and return a plan. |
25
+ | `format` | Preview explicitly scoped formatting and return a plan. |
26
+ | `inspect` | Explore a symbol or analyze affected files, callers and candidate tests. |
27
+ | `actions` | List, explain or preview Ruff/Biome/ESLint and LSP text fixes. |
28
+ | `apply` | Apply one existing plan once; returns complete `modifiedPaths`, continuing pages when necessary. |
29
+
30
+ Use the absolute project as `workspace`. Positions use 1-based UTF-16 columns. Choose line/column, a symbol path such as `Class.method`, or a text anchor such as `function @@greet`. Ambiguous targets return candidates.
31
+
32
+ ```json
33
+ {"workspace":"/project","path":"src/main.ts","symbol":"greet","newName":"welcome"}
34
+ ```
35
+
36
+ Call `rename` with those arguments, inspect the returned plan/diff, then call `apply` with `{"workspace":"/project","plan":"returned-id"}`. An already-authorized edit needs no additional manual approval.
37
+
38
+ Plans bind source snapshots, configurations, tools and request environments. Conflicts reject before writes; concurrent changes or cancellation can still interrupt multi-file application. Inspect every `modifiedPaths` result. Plans are consumed when application begins and cannot be replayed. Follow-up diagnostic failure does not undo completed writes.
39
+
40
+ Responses use compact summaries and bounded pages. Follow the returned `next` arguments. Large nested values use field-path fragments and ordered text parts; no GCF or raw LSP payload dump is required.
41
+
42
+ ## Configure
43
+
44
+ Configuration: `$CODEX_HOME/lsp-client.json` (default `~/.codex/lsp-client.json`) and `<workspace>/.codex/lsp-client.json`. Built-ins < global < project; arrays replace wholesale.
45
+
46
+ ```json
47
+ {
48
+ "schemaVersion": 1,
49
+ "projectChecks": "auto",
50
+ "lsp": {"python":"ty","typescript":"typescript","go":"gopls","cpp":"clangd","rust":"rust"},
51
+ "lint": {"javascript":"auto","python":"auto"},
52
+ "automaticDiagnostics": {"postToolUse":"off","stop":"off"}
53
+ }
54
+ ```
55
+
56
+ Local tools resolve from the nearest project environment, then PATH. Native TypeScript 7 can select `"typescript":"tsc"`; the traditional TypeScript server remains the default. Python ty and Ruff work independently. Go uses local gopls, with automatic `go vet` project checking scoped by `go list` inputs. Multi-package and custom setups should provide explicit checker definitions.
57
+
58
+ Project checks accept `tsc`, `ty`, `go`, `cargo`, `ruff`, `eslint`, `biome`, `sarif` and custom `json` output. Commands must check without modifying source or installing dependencies. Automatic work never downloads tools or applies fixes.
59
+
60
+ Automatic diagnostics default to off. The six Hooks require a current Codex host supporting native asynchronous command Hooks and Interrupt. SessionStart captures a pre-edit snapshot and registers background baseline work; compact does not restart it. PostToolUse runs natively async for Bash, apply_patch and mcp__lsp__apply, leaving the original tool result intact. Known shell reads only collect completed feedback.
61
+
62
+ Subagents receive independent informational feedback; only the main Stop can use the explicitly configured global `stopGate="introduced-errors"` for one repair pass per turn. Ordinary Stop waits at most 300 ms for background work. Pending, failed, uncovered or stale checks never block; findings without reliable pre-edit baselines remain unattributed. Hooks never apply plans, format source or fix lint automatically.
63
+
64
+ Feedback is limited to five diagnostics and 2 KiB per message, with an 8 KiB per-agent/turn budget. Query cached diagnostics for details. Delivery IDs acknowledge successful stdout writes, not model receipt; an acknowledgement failure may repeat the same ID. After upgrading, review the changed definitions using `/hooks` and use a new session; the plugin does not change trust records or existing user settings. See the [host acceptance procedure](docs/testing/hooks-host.md).
65
+
66
+ See the [usage guide](docs/usage.md), [configuration examples](docs/examples/), [CHANGELOG](CHANGELOG.md), and [NOTICE](NOTICE).
67
+
68
+ ## Development
69
+
70
+ ```sh
71
+ npm ci --ignore-scripts
72
+ npm run check
73
+ npm test
74
+ CODEX_LSP_REAL_TOOLS=1 npm run test:features
75
+ git diff --check
76
+ ```
77
+
78
+ The feature script prepares a separately pinned TypeScript 5 fixture under test/fixtures so its executable cannot replace the native TypeScript 7 compiler. This preparation is test-only.
79
+
80
+ Default tests include delivered MCP behavior, native TypeScript, traditional TypeScript, Biome and ESLint. Real feature acceptance additionally covers Ruff, ty, clangd and Go/gopls.
81
+
82
+ The independent [Rust workflow](.github/workflows/rust.yml) runs on Linux and Windows with Rust 1.99.1 and matching rust-analyzer, rust-src and rustfmt. It tests the committed bundle without npm dependencies, using an offline Cargo workspace with local path dependencies. `npm run test:rust` explicitly runs this suite on a prepared Rust host; missing tools fail rather than skip. It is separate from `npm test` and requires no Rust installation on ordinary development machines. CI saves tool versions, test logs and fixture/MCP traces as `rust-<os>` artifacts for 14 days. Legacy mixed-language tests retain the `CODEX_LSP_TEST_RUST=1` opt-in.
83
+
84
+ CI retains Linux/macOS/Windows and Node 22.12/24 delivery coverage. Local engineering evidence is kept under ignored `docs/history/`.
85
+
86
+ <a id="privacy"></a>
87
+ <a id="license"></a>
88
+ ## Privacy and license
89
+
90
+ No telemetry. Source, diagnostic baselines and unresolved findings stay in private local caches. Plans and action payloads stay in bounded service memory and expire on service restart. Request environments use authenticated local IPC. Logs use fixed categories, not source or credentials.
91
+
92
+ MIT. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
93
+
94
+ ## Project origin
95
+
96
+ Codex CodeIntel originated from [code-yeongyu/codex-lsp](https://github.com/code-yeongyu/codex-lsp) and is independently maintained by zoisythe. The adapted LSP runtime was originally developed for [pi-lsp-client](https://github.com/code-yeongyu/pi-lsp-client) and extracted into [lsp-tools-mcp](https://github.com/code-yeongyu/lsp-tools-mcp). Original authorship and MIT copyright/license notices are retained in [NOTICE](NOTICE).