seif-ls
bin/seif-ls speaks LSP 3.17 over stdio (Content-Length framing). Logs never share stdout with protocol messages. Open a workspace containing seif.yaml or legacy context-project.json. Full document synchronization evaluates unsaved configuration without saving it. External edits invalidate cached sections and diagnostics.
Capabilities: code lenses, hover, diagnostics, quick fixes, seif.resolve command. The notifications seif/contextWindow and seif/sections expose the exact same context-lab.v1 facts used by the native app. Client decorations show selected, cut-by-rule, excluded, not-applicable and UNKNOWN with reasons. Lenses show estimated tokens (ceil(chars/4)), referring tests and selection frequency among locally retained traces; absent traces are UNKNOWN, never 0%.
| Code | Meaning |
|---|---|
| SEIF-W142 | Currentness exclusion lacks a forbid test |
| SEIF-W143 | No profile permits selecting the section |
| SEIF-W145 | Broken or escaping local link |
| SEIF-W146 | Out of date: older than its area's freshness rule (quick fixes: mark as reviewed today, forbid) |
| SEIF-W147 | No review date under a freshness rule that needs one (quick fix: mark as reviewed today) |
| SEIF-I148 | Saved but not in use yet: the file is read from Git at a commit (commit the change) |
| SEIF-E201 | Token budget cannot contain the context |
| SEIF-E202 | Invalid project/frontmatter YAML |
| SEIF-E203 | Credential detected |
| SEIF-E204 | Internal material reaches an unrestricted consumer |
Quick fixes return standard WorkspaceEdits: Add forbid test, Move to archive/ (whole file), Pin as required (layer). The editor shows and applies edits. Forbid expectations address material locators and are evaluated by the same engine test assertions.
Install adapters/vscode as a development extension (npm ci, then launch VS Code or Cursor with --extensionDevelopmentPath=<absolute adapters/vscode>). Set seif.runtimeDirectory to the runtime folder if the extension is copied elsewhere. Commands: SEIF: Resolve Query, Context Window, Open REPL. The webview uses a restrictive CSP and inserts all project content as text. No extension marketplace publication is required. The native app uses the shared API directly and labels that connection.