Skip to content

Add IDE integration: VS Code extension, LSP design and prototype - #10

Merged
godofecht merged 1 commit into
mainfrom
feat/ide-integration
Jul 30, 2026
Merged

Add IDE integration: VS Code extension, LSP design and prototype#10
godofecht merged 1 commit into
mainfrom
feat/ide-integration

Conversation

@godofecht

Copy link
Copy Markdown
Owner

What

First increment of IDE tooling for authoring azazel project.cue, in a new ide/ directory.

VS Code extension (ide/vscode/, plain JS, no npm deps):

  • CUE syntax grammar highlighting #Module fields (kind, root, deps, profile, link) and their enum values.
  • Inline diagnostics: runs cue export -e build on open and save, surfaces errors inline (bad enums, wrong types, unknown/missing fields). Missing-field errors cue can only pin to schema.cue are re-homed onto the edited file.
  • Commands: "Azazel: Generate build_spec", "Azazel: Validate project.cue". Settings for cue path, validate-on-save, gen script.

Language server (ide/DESIGN.md + ide/server/):

  • DESIGN.md specifies completion from schema.cue, hover docs, go-to-definition for deps, and the two graph cross-checks (a deps naming an unknown module; a module absent from export.cue's _modules).
  • A dependency-free stdio LSP prototype that publishes cue diagnostics, sharing the exact diagnostic engine with the extension so they never drift.

Verification

  • node --check on all JS, JSON.parse on all manifests: pass.
  • LSP prototype runs end to end (initialize, validate a clean package, publish diagnostics).
  • Manual VS Code test (F5 Extension Development Host) documented in ide/vscode/README.md.

Follow-ups

Implement completion/hover/go-to-definition per DESIGN.md; add the graph cross-checks; optionally wire the extension to the LSP via vscode-languageclient once those exist.

🤖 Generated with Claude Code

A VS Code extension for authoring azazel project.cue: a CUE syntax grammar that
highlights the #Module fields and their enum values, inline diagnostics that run
`cue export -e build` (the same command gen_build_spec.sh uses) on open and save
and surface errors inline, and an "Azazel: Generate build_spec" command. Plain
JavaScript, no npm dependencies.

Plus ide/DESIGN.md for a language server (completion, hover, go-to-definition,
and the two graph cross-checks cue cannot do), and a dependency-free stdio LSP
prototype in ide/server that publishes cue diagnostics over JSON-RPC.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@godofecht
godofecht merged commit 67d72f4 into main Jul 30, 2026
3 checks passed
@godofecht
godofecht deleted the feat/ide-integration branch July 30, 2026 16:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant