src/bin — CLI 層

commander 子指令:install、init、index、sync、status、query、serve --mcp…
檔案:src/bin/codegraph.ts · uninstall.ts · node-version-check.ts

大方向

CLI 入口用 commander 定義全部子指令。每個指令只是「把參數整理好 → 呼叫 CodeGraph class / installer → 把結果排版印出」的薄殼。serve --mcp 啟動 MCP server。bin/codegraph.js(dist)被 chmod 0o755 當 binary。node-version-check.ts 在 Node <20 或 ≥25 時硬性退出。


commander 指令表 src/bin/codegraph.tsinstall / init / uninit / index / sync / status / unlock / query / explore / node / files / callers / callees / impact / affected / daemon / telemetry / upgrade / version。

每個子指令與 CLI 參考一一對應。查詢類(query/callers/callees/impact/files/status)都支援 --json,給腳本用;explorenode 直接輸出與 MCP 工具相同的內容——非 MCP harness 的對等介面。

serve --mcp src/bin/codegraph.ts啟動 MCP server(agent 透過 stdio 啟動它)。

讓 agent 能以 command: "codegraph", args: ["serve", "--mcp"] 啟動。server 內部再處理 daemon 共享、connect-time catch-up、staleness banner 等(見 mcp)。

uninstall.ts src/bin/反安裝器:從所有 agent 移除設定,可保留 CLI。

codegraph uninstall 走 installer 的反向:剝掉每個 agent 的 MCP config、instructions 段落與 permissions(--keep-cli 只移除設定);列出找到的每份安裝(standalone bundle / npm global / launcher link)再刪。codegraph uninit 是另一回事——只移除單一專案的 .codegraph/

node-version-check src/bin/Node 範圍強制:≥20 <25,否則硬退出。

package.json engines 是 >=20.0.0 <25.0.0,這裡在啟動時強制檢查。CLI/MCP 跑在 bundle runtime(不受影響);從 source 跑需要 Node ≥22.5(node:sqlite)。

看完這頁你應該能說出:CLI 是 CodeGraph class / installer 的薄殼、explore/node 與 MCP 工具輸出一致、uninstall 與 uninit 的差別、以及 Node 版本硬檢查的位置。