@zoisythe/codex-codeintel 0.0.0-stage → 0.10.1
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.
- package/.codex-plugin/plugin.json +45 -0
- package/.mcp.json +10 -0
- package/CHANGELOG.md +151 -0
- package/LICENSE +21 -0
- package/NOTICE +41 -0
- package/README.md +105 -2
- package/dist/cli.js +11442 -0
- package/docs/examples/lsp-client.automatic-off.json +4 -0
- package/docs/examples/lsp-client.custom-server.json +13 -0
- package/docs/examples/lsp-client.default.json +9 -0
- package/docs/examples/lsp-client.project-checks.json +33 -0
- package/docs/examples/lsp-client.stop-gate.global.json +5 -0
- package/docs/testing/hooks-host.md +13 -0
- package/docs/testing/local-lsp.md +81 -0
- package/docs/usage.md +272 -0
- package/hooks/hooks.json +63 -0
- package/package.json +74 -5
- package/skills/code-intelligence/SKILL.md +35 -0
- package/skills/setup-lsp/SKILL.md +15 -0
- package/skills/setup-lsp/agents/openai.yaml +4 -0
- package/skills/setup-lsp/references/configuration.md +35 -0
- package/skills/setup-lsp/references/languages.md +40 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "codex-codeintel",
|
|
3
|
+
"version": "0.10.1",
|
|
4
|
+
"description": "Ten 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. Ten 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
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.10.1 (2026-11-03)
|
|
4
|
+
|
|
5
|
+
- Persist completed pre-edit Hook baselines before reporting completion so diagnostic attribution survives service restarts. Guard late baseline writes after session cancellation and configuration changes.
|
|
6
|
+
- Stabilize Hook acceptance with a pinned, isolated TypeScript fixture, retained fixture services and bounded cleanup retries; run automatic feedback regression without spawning npm inside the test on Windows. Clarify navigate and inspect arguments.
|
|
7
|
+
- Standardize Skills and their usage, configuration and acceptance references in English. Update plugin metadata to describe all ten tools.
|
|
8
|
+
|
|
9
|
+
- Support custom LSP settings, language IDs and workspace-folder requests for MATLAB, preserving the default Objective-C mapping for `.m` files.
|
|
10
|
+
- Add delivered-bundle MATLAB acceptance and portable Rust fixtures, including both suites in `npm test` behind `REAL_TOOLS=1`. Add individual/local suite commands, configurable MATLAB paths and optional MCP traces; locate rustfmt in the selected toolchain and keep Rust references independent of standard-library macro expansion.
|
|
11
|
+
- Rename the real-tool switch to `REAL_TOOLS` across tests, scripts and CI; enable it in Rust CI. Add `npm run ci` for local type checking, lint, build and tests with the same switch.
|
|
12
|
+
- Breaking: require Node 24.20+ on 24.x or 26.13+ on 26.x; develop and deliver with Node 26 and npm 12.2.1. Rename the npm CLI to codeintel without a legacy alias.
|
|
13
|
+
- Add warmup as the tenth MCP tool and CLI command. Initialize installed local servers independently of automatic feedback, with no diagnostics baseline or temporary downloads.
|
|
14
|
+
- Give memory plans a fixed 30-minute lifetime and bounded service keepalive, expose expiry metadata and precise planFailure reasons, retaining single-use and conflict checks.
|
|
15
|
+
- Validate plans with local ty/Ruff, native/traditional TypeScript and checked JavaScript, Biome/ESLint, gopls and clangd. Add explicit validationPaths for unchanged callers, per-provider checks and unknown aggregate counts when incomplete. Keep source and Hook baselines isolated without adding an apply gate.
|
|
16
|
+
- Use bounded disposable project snapshots for Biome reports and clangd header dependencies, preserving local compilation paths and generated headers; limit validation to 20 changed + 20 additional files / 2 MiB, 30 seconds total and four concurrent groups.
|
|
17
|
+
- Type-check all JavaScript test harnesses under strict checkJs, retaining both runners and the real ESLint integration dependency.
|
|
18
|
+
- Add pinned Linux/Windows real-tool CI, fail skipped acceptance, and retain versions/reports/fixture traces.
|
|
19
|
+
|
|
20
|
+
## 0.10.0
|
|
21
|
+
|
|
22
|
+
- Breaking: expose exactly check, diagnostics, status, navigate, rename, format, inspect, actions and apply. Old names return migration guidance without executing.
|
|
23
|
+
- 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.
|
|
24
|
+
- 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.
|
|
25
|
+
- 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.
|
|
26
|
+
- 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.
|
|
27
|
+
- 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.
|
|
28
|
+
- 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.
|
|
29
|
+
- 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.
|
|
30
|
+
- 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.
|
|
31
|
+
- 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.
|
|
32
|
+
- 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.
|
|
33
|
+
|
|
34
|
+
## 0.9.0
|
|
35
|
+
|
|
36
|
+
- 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.
|
|
37
|
+
- Default both automatic feedback modes to off. All six MCP tools remain explicitly callable; editing, shell operations, rename and formatting require no diagnostic baseline.
|
|
38
|
+
- Report current diagnostics without reliable baselines as unattributed. Track reliability by checker and actual coverage, retaining useful feedback after partial failures.
|
|
39
|
+
- 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.
|
|
40
|
+
- 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.
|
|
41
|
+
- 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.
|
|
42
|
+
- 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.
|
|
43
|
+
- 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.
|
|
44
|
+
|
|
45
|
+
## 0.8.0 (2026-10-02)
|
|
46
|
+
|
|
47
|
+
- Let all shell commands and reads pass PreToolUse immediately; retain reliable baseline gates for explicit file edits and MCP writes.
|
|
48
|
+
- 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.
|
|
49
|
+
- Separate discovery from analysis waits, cancel superseded/session-ended work, and preserve pending or uncertain diagnostic states.
|
|
50
|
+
- Delay limited local LSP warmup, cool down repeated initialization failures, and extend actual service/LSP idle reuse to five minutes.
|
|
51
|
+
- 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.
|
|
52
|
+
- Add three focused end-to-end regression scenarios for cold startup, delayed delivery and Windows process handling.
|
|
53
|
+
|
|
54
|
+
## 0.7.0
|
|
55
|
+
|
|
56
|
+
- Consolidate current usage and configuration examples; keep phase engineering records locally under ignored `docs/history/` and exclude common local settings/caches from Git.
|
|
57
|
+
|
|
58
|
+
- Add project CLI checks and reliable pre-edit baselines; deny uncovered or failed-checker source writes while permitting reads and checker configuration repair.
|
|
59
|
+
- Compare diagnostic multisets after edits; report introduced findings and repairs, and request one Stop continuation for confirmed unresolved introduced errors.
|
|
60
|
+
- Vendor the pinned MIT LSP dependency closure, remove submodule/bootstrap/legacy-peer-deps, and pass explicit subprocess environments.
|
|
61
|
+
- Preserve hot clients on cancellation/timeouts, classify configuration impacts precisely, batch lint and use a workspace stat index with shared session snapshots.
|
|
62
|
+
- Support Node >=22.12.0, add Linux/macOS/Windows Node 22.12/24 CI, shorten user guidance and publish only user documentation.
|
|
63
|
+
|
|
64
|
+
- 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).
|
|
65
|
+
- Keep existing MCP tool names, configuration paths, environment variables and cache/IPC locations compatible across the rename.
|
|
66
|
+
|
|
67
|
+
## 0.6.0
|
|
68
|
+
|
|
69
|
+
- 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.
|
|
70
|
+
- 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.
|
|
71
|
+
- 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.
|
|
72
|
+
- 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.
|
|
73
|
+
- 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.
|
|
74
|
+
- 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.
|
|
75
|
+
- 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.
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## 0.5.0 follow-up (2026-09-30, 386d1b1)
|
|
79
|
+
|
|
80
|
+
- 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.
|
|
81
|
+
- 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.
|
|
82
|
+
|
|
83
|
+
## 0.5.0 follow-up (2026-09-30, cbe16cb)
|
|
84
|
+
|
|
85
|
+
- 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.
|
|
86
|
+
- Send object parameters with the LSP `initialized` notification so native TypeScript completes initialization; cover real MCP diagnostics, dependency updates, navigation, rename and formatting.
|
|
87
|
+
|
|
88
|
+
## 0.5.0
|
|
89
|
+
|
|
90
|
+
- Breaking: schemaVersion 1, fixed global/project paths, global-only workspace trust and language-keyed server replacement; removed environment overrides and priority competition.
|
|
91
|
+
- 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.
|
|
92
|
+
- 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.
|
|
93
|
+
- Capability-aware pull/push diagnostics, quiet windows, pending analysis updates, initialization failure recovery, write preflight and conflict reporting.
|
|
94
|
+
- Two active content inventories, one cached inventory, no redundant PreToolUse baseline scan; bounded local timing statistics.
|
|
95
|
+
- Updated bundle, Skill, migration guide, real Python/C/C++/Rust subprocess acceptance and performance measurements.
|
|
96
|
+
|
|
97
|
+
Phase migration and validation records are kept locally in the ignored `docs/history/` directory.
|
|
98
|
+
|
|
99
|
+
## 0.4.0
|
|
100
|
+
|
|
101
|
+
- 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.
|
|
102
|
+
|
|
103
|
+
- Ship a concise `lsp` Skill covering tool purposes, scope/session selection, revision/refresh, and write-call conventions.
|
|
104
|
+
|
|
105
|
+
- 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.
|
|
106
|
+
- Add versioned, atomic session metadata, short Hook budgets, cancellation cleanup, pending retries and fresh lint-only Stop blocking with fingerprint deduplication.
|
|
107
|
+
- Add `lint.javascript`, `lint.python`, `exclude`, unified trust/config paths, configuration-aware cache validation and explicit diagnostics `refresh`.
|
|
108
|
+
- Apply directory budgets within the requested scope; require content/config-bound `revision` for nonzero `start`/`offset`, including all/delta output pages.
|
|
109
|
+
- Report LSP/lint channels and partial write outcomes separately; preserve explicit-only formatting/rename and bounded local error logs.
|
|
110
|
+
- 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.
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
## 0.3.0
|
|
114
|
+
|
|
115
|
+
Released from 50138d8 (2026-09-08). Earlier packaging/toolchain changes below preceded this release.
|
|
116
|
+
|
|
117
|
+
- Ship a self-contained `dist/cli.js` bundle so clean installs no longer need submodule contents or runtime `node_modules`.
|
|
118
|
+
- Replace the upstream MCP tool surface with four static tools: `check_diagnostics`, `lsp_diagnostics`, `lsp_navigation`, and `lsp_format`.
|
|
119
|
+
- Add a workspace-shared worker, inventory-based PostToolUse/Bash change tracking, SessionStart baseline, and SessionEnd cleanup.
|
|
120
|
+
- Remove Skills from the plugin package and run the bundle from Codex's plugin-relative MCP cwd.
|
|
121
|
+
- Keep Biome/ESLint/Ruff as trusted, check-only runners; formatting remains an explicit tool. Disable Ruff cache writes to avoid self-triggered Hook feedback.
|
|
122
|
+
- Validate MCP arguments, content-check explicitly ignored files before cache reuse, retain over-budget changed paths as pending, and recheck rename targets.
|
|
123
|
+
- Add source/bundle drift checking and a dependency-free delivery CI job on Linux, macOS and Windows.
|
|
124
|
+
|
|
125
|
+
- Restore `.codex-plugin/plugin.json` so this repository is a standalone Codex plugin again.
|
|
126
|
+
- Point package, plugin, and marketplace metadata at [`zoisythe/codex-lsp-standalone`](https://github.com/zoisythe/codex-lsp-standalone).
|
|
127
|
+
- Disable npm lifecycle scripts during install so native optional packages cannot run install hooks.
|
|
128
|
+
- Historical development updates: Biome 2.5.12, Vitest 5.0.0, Node types 26.4.1 and legacy peer handling for the former submodule.
|
|
129
|
+
- Point the `packages/lsp-tools-mcp` submodule at [`zoisythe/lsp-tools-mcp`](https://github.com/zoisythe/lsp-tools-mcp) and pin `main` at `9cc6f75`.
|
|
130
|
+
- Install `smol-toml` as an optional dependency so Cargo workspace parsing works after a parent `npm install`.
|
|
131
|
+
- Require Node.js 24.20.0 LTS (Krypton).
|
|
132
|
+
|
|
133
|
+
## 0.2.0
|
|
134
|
+
|
|
135
|
+
- Extracted the LSP runtime and MCP server into [`@code-yeongyu/lsp-tools-mcp`](https://github.com/code-yeongyu/lsp-tools-mcp).
|
|
136
|
+
- codex-lsp now consumes that runtime as a git submodule at `packages/lsp-tools-mcp`.
|
|
137
|
+
- Kept the Codex-specific PostToolUse hook in this package and routed MCP serving through the upstream CLI.
|
|
138
|
+
|
|
139
|
+
- Extract LSP runtime to `lsp-tools-mcp` upstream and consume it via git submodule at `packages/lsp-tools-mcp`.
|
|
140
|
+
- Renamed the MCP server namespace to `lsp` and exposed shorter tool names such as `lsp.diagnostics`.
|
|
141
|
+
- Use portable Codex hook interpolation and add package smoke coverage for hook/MCP entrypoints.
|
|
142
|
+
- Spawn language servers without shell mode; Windows `.cmd` and `.bat` shims are routed through `cmd.exe` with explicit arguments.
|
|
143
|
+
- Cap directory diagnostics file traversal and run CI on Windows in addition to Ubuntu and macOS.
|
|
144
|
+
- Replace the external JSON-RPC runtime dependency with an internal LSP framing layer so clean Codex plugin installs run without `node_modules`.
|
|
145
|
+
|
|
146
|
+
## 0.1.0
|
|
147
|
+
|
|
148
|
+
- Ported the standalone LSP client, server resolution, diagnostics aggregation, and workspace edit runtime from `pi-lsp-client`.
|
|
149
|
+
- Added Codex `PostToolUse` diagnostics for edit-style tools.
|
|
150
|
+
- Added MCP tools for status, diagnostics, definitions, references, symbols, prepare rename, and rename.
|
|
151
|
+
- 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,106 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Codex CodeIntel
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Standalone Codex plugin for local code intelligence. **Node.js 24.20+ (24.x) or 26.13+ (26.x)**, ten 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
|
+
| `warmup` | Initialize local servers for explicit files or two representative languages; no diagnostics or downloads. |
|
|
24
|
+
| `navigate` | Symbols, definitions, references, hover, signatures, declarations, call/type relationships and completion. |
|
|
25
|
+
| `rename` | Preview a cross-file rename and return a plan. |
|
|
26
|
+
| `format` | Preview explicitly scoped formatting and return a plan. |
|
|
27
|
+
| `inspect` | Explore a symbol or analyze affected files, callers and candidate tests. |
|
|
28
|
+
| `actions` | List, explain or preview Ruff/Biome/ESLint and LSP text fixes. |
|
|
29
|
+
| `apply` | Apply one existing plan once; returns complete `modifiedPaths`, continuing pages when necessary. |
|
|
30
|
+
|
|
31
|
+
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.
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{"workspace":"/project","path":"src/main.ts","symbol":"greet","newName":"welcome"}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
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.
|
|
38
|
+
|
|
39
|
+
Plans have a fixed 30-minute lifetime, retain at most 16 entries / 32 MiB, and bind source snapshots, configurations, tools and request environments. Nonempty pending plans keep the service alive beyond its normal idle timeout; restart and capacity eviction can invalidate them earlier. Preview responses include `createdAt`, `expiresAt` and `storage="memory"`. 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.
|
|
40
|
+
|
|
41
|
+
Plans validate by default with the configured local tools: Python ty/Ruff, native or traditional TypeScript (including checked JavaScript), Biome/ESLint, Go gopls and C/C++ clangd. Use `validationPaths` to include up to 20 additional existing files, such as unchanged callers. The scope is bounded to 20 changed files and 2 MiB of before/after content including additional files. Per-provider `checks` preserve coverage, introduced/resolved findings and completeness; incomplete aggregate counts are unknown. Counts describe provider observations and can overlap. Zero net errors is not a safety guarantee. Validation does not block applying the text plan; `validate=false` skips it.
|
|
42
|
+
|
|
43
|
+
Type services use separate processes. Biome and clangd use temporary local project snapshots so lint rules and header dependencies see all proposed contents; snapshots are bounded to 2,000 discovered files / 32 MiB of copies, reuse installed dependencies and are removed on completion, cancellation or failure. Validation has a 30-second total budget, a 10-second budget per LSP group and at most four concurrent groups. Builds, runtime behavior and unselected dependents remain outside its scope.
|
|
44
|
+
|
|
45
|
+
The npm CLI is `codeintel`, with no legacy bin alias: `codeintel check /project` and `codeintel warmup /project --path src/main.py`. Development uses Node 26 LTS and npm 12.2.1.
|
|
46
|
+
|
|
47
|
+
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.
|
|
48
|
+
|
|
49
|
+
## Configure
|
|
50
|
+
|
|
51
|
+
Configuration: `$CODEX_HOME/lsp-client.json` (default `~/.codex/lsp-client.json`) and `<workspace>/.codex/lsp-client.json`. Built-ins < global < project; arrays replace wholesale.
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"schemaVersion": 1,
|
|
56
|
+
"projectChecks": "auto",
|
|
57
|
+
"lsp": {"python":"ty","typescript":"typescript","go":"gopls","cpp":"clangd","rust":"rust"},
|
|
58
|
+
"lint": {"javascript":"auto","python":"auto"},
|
|
59
|
+
"automaticDiagnostics": {"postToolUse":"off","stop":"off"}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
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.
|
|
64
|
+
|
|
65
|
+
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.
|
|
66
|
+
|
|
67
|
+
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.
|
|
68
|
+
|
|
69
|
+
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.
|
|
70
|
+
|
|
71
|
+
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).
|
|
72
|
+
|
|
73
|
+
See the [usage guide](docs/usage.md), [configuration examples](docs/examples/), [CHANGELOG](CHANGELOG.md), and [NOTICE](NOTICE).
|
|
74
|
+
|
|
75
|
+
## Development
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
npm ci --ignore-scripts
|
|
79
|
+
npm run ci
|
|
80
|
+
REAL_TOOLS=1 npm run test:features
|
|
81
|
+
git diff --check
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
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.
|
|
85
|
+
|
|
86
|
+
`npm run ci` runs strict type checks, Biome, the build and `npm test` on the current host and Node version. Set `REAL_TOOLS=1` to include the real-tool cases, including Rust and MATLAB; they are skipped by default. Use `npm ci` to install locked dependencies and `npm run ci` to run validation.
|
|
87
|
+
|
|
88
|
+
Default tests include delivered MCP behavior, native TypeScript, traditional TypeScript, Biome and ESLint. Real-tool cases require `REAL_TOOLS=1`; Ruff, ty, clangd, Go/gopls, Rust and MATLAB acceptance are skipped by default.
|
|
89
|
+
|
|
90
|
+
`npm test` includes the gated Rust and MATLAB suites through `test:local`, running them sequentially. Use `REAL_TOOLS=1 npm run test:local` to run only these two suites, or select `test:rust` / `test:matlab` with the same environment variable. MATLAB acceptance discovers the MathWorks VS Code extension and MATLAB on PATH, or accepts explicit server and installation paths. It starts a local MATLAB analysis process and requires a working license. Missing prerequisites fail an enabled suite. See [local LSP acceptance](docs/testing/local-lsp.md) for configuration, coverage and trace capture.
|
|
91
|
+
|
|
92
|
+
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 sets `REAL_TOOLS=1` and tests the committed bundle without npm dependencies, using an offline Cargo workspace with local path dependencies. Default local runs skip the suite and require no Rust installation. CI saves tool versions, test logs and fixture/MCP traces as `rust-<os>` artifacts for 14 days. Legacy mixed-language tests retain the additional `CODEX_LSP_TEST_RUST=1` opt-in.
|
|
93
|
+
|
|
94
|
+
Core CI targets Linux/macOS/Windows with Node 24.20.0 and 26.13.0; dependency-free delivery uses Node 26.13.0. The [real-tools workflow](.github/workflows/real-tools.yml) adds Linux/Windows acceptance with pinned Go/gopls, Ruff 0.17.3, ty 0.0.95 and LLVM/clangd 23.1.4, checks for skipped acceptance cases, and retains versions, reports and fixture/MCP traces for 14 days. Local engineering evidence is kept under ignored `docs/history/`.
|
|
95
|
+
|
|
96
|
+
<a id="privacy"></a>
|
|
97
|
+
<a id="license"></a>
|
|
98
|
+
## Privacy and license
|
|
99
|
+
|
|
100
|
+
No telemetry. Source, diagnostic baselines and unresolved findings stay in private local caches. Plans stay in bounded service memory for at most 30 minutes and can expire earlier on service restart/capacity eviction. Biome/clangd validation temporarily copies scoped source and project context to the system temporary directory and removes its private snapshot in cleanup; an abrupt process/system failure can interrupt cleanup. Action payloads also stay in bounded service memory and are cleared on service restart or configuration invalidation. Request environments use authenticated local IPC. Logs use fixed categories, not source or credentials.
|
|
101
|
+
|
|
102
|
+
MIT. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
|
|
103
|
+
|
|
104
|
+
## Project origin
|
|
105
|
+
|
|
106
|
+
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).
|