Extension development¶
Guide for contributors working on the Strixonomy VS Code extension (extension/). End-user extension docs: VS Code extension overview.
Repository layout¶
| Path | Role |
|---|---|
extension/src/ | Extension host — activation, commands, tree views, LSP client |
extension/webview-ui/ | OntoUI React app (Vite) — inspector, graph, query workbench, etc. |
extension/server/<platform>/ | Bundled strixonomy-lsp binary (populated by build scripts) |
crates/strixonomy-lsp/ | Language server implementation (Rust) |
Design specs live under docs/design/ and docs/ui/ (not at repo root).
Prerequisites¶
- Rust 1.88+, Node 20, npm
- VS Code 1.85+ for F5 debugging
See Contributing for full workspace setup.
Build and test¶
# Rust LSP binary
cargo build -p strixonomy-lsp --bins
# Extension + webviews
cd extension
npm ci
npm run compile # builds webview-ui + esbuild bundle
STRIXONOMY_LSP_BIN="../target/debug/strixonomy-lsp" npm test
Press F5 in VS Code with the extension/ folder open (or use Run Extension launch config) after npm run compile.
npm run watch does not rebuild webviews
npm run watch runs esbuild only (extension host). After editing React under webview-ui/, run npm run build:webview or npm run compile before F5 — otherwise the Extension Development Host will show a stale UI.
Key docs¶
| Topic | Doc |
|---|---|
| Contributor workflow | contributing.md |
| LSP / webview debugging | debugging.md |
| Host ↔ React messages | webview-protocol.md |
| Custom LSP methods | lsp-api.md |
| OntoUI platform | platform/OVERVIEW.md |
| UI specs | ui/README.md |
Pre-PR checks¶
Run extension-related CI locally:
cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo build -p strixonomy-lsp --bins
cd extension/webview-ui && npm ci && npm test
cd extension && STRIXONOMY_LSP_BIN=../target/debug/strixonomy-lsp npm ci && npm run compile && npm test
./scripts/check-doc-versions.sh
For full CI parity (Rust, docs, packaging, VS Code e2e): ./scripts/run-ci-local.sh — see Contributing.
Plugin UI work: see Capability providers and extension/webview-ui/src/capabilities/.
Related¶
- LSP hello world — minimal stdio client
- Internals — contributor hub and role-based paths