Transactionally adds dependency to edva.ccl (auto-inferring alias from edva.cclname or repo/dir basename when omitted, supporting <spec>@<rev>, owner/repo, and host/owner/repo shorthand), resolves graph, and updates edva.lock.ccl (rolls back edva.ccl on failure)
E7021: rollback on fetch/resolve failure
edva rm
<alias> [dir] (alias remove)
Removes <alias> from edva.ccl and updates edva.lock.ccl and .edva/imports.ccl
Resolves dependencies, populates content store, writes edva.lock.ccl and .edva/imports.ccl
E7007: lockfile out of date (--locked)
edva update
[pkg_name] [dir]
Refreshes moving Git branches/tags in edva.lock.ccl (all or single <pkg_name>)
—
edva tree
[dir] (alias graph)
Prints ASCII dependency tree with provenance, duplicate versions, and cycle checks
—
edva vendor
[dir]
Materializes external dependencies into vendor/<id>/ + vendor/vendor.ccl for air-gapped --offline --locked builds
E7005: tree hash mismatch
edva cache
[dir \| ls \| clean] [--cache <d>]
Prints cache directory (default), lists cached .ll entries, or cleans cached IR artifacts
—
16.3 Formatter and Language Server (edva fmt, edva lsp)
Command
Arguments & Options
Behavior
edva fmt
[--check] [--stdout] [--stdin] [path...]
Canonical Edva source formatter. Normalizes block indentation, delimiter spacing, blank lines, and trailing whitespace while preserving intentional horizontal alignment and verifying AST equivalence via show::show_expr. Formats . recursively when no paths are given. --check exits 1 if any file differs; --stdin formats stdin to stdout
edva lsp
—
JSON-RPC 2.0 Language Server Protocol server over stdio (Content-Length framing). Provides live diagnostics (textDocument/publishDiagnostics), inferred-type hover (textDocument/hover), same-file and cross-module go-to-definition (textDocument/definition), document symbols (textDocument/documentSymbol), completion (textDocument/completion), and canonical formatting (textDocument/formatting)
16.3.1edva fmt formatting rules
Rule
Construct
Indentation / Behavior
Standard blocks (+3 spaces)
Function/lambda bodies (=>, !=>, | x =>), cycle bodies (@, @@, >--), [guard] arm bodies, choice arms relative to the choice head, and #type / #foreign / #public / #private blocks
Indented by +3 spaces relative to the enclosing statement or inline-started block opener (my_fn = a, b => first_line followed by second_line at +3 spaces)
Inline choice arm bodies (+2 spaces)
Choice arm starting on the same line as | or !| (| first_line)
Subsequent statements of the arm block indent by +2 spaces relative to |, aligning directly under first_line
Expression continuations (+2 spaces)
Multi-line expressions wrapped after a trailing binary or continuation operator (+, -, *, /, &&, ||, ,, $, etc.)
Indented by +2 spaces relative to the statement’s starting column
Horizontal alignment
Multi-space column alignment in [guard] tables, #type / #foreign declarations, and inline comments
Preserved intact
16.4 Package directory layout and edva.ccl manifest schema