feat: add streamd lsp subcommand with LSP server
Implements a full Language Server Protocol server accessible via `streamd lsp`. The server communicates over stdin/stdout and auto- detects the workspace root from the LSP initialize request. Features implemented: - Passive mode when no .streamd.toml exists in workspace root - Workspace-root-based config loading (bypasses R22/R23 global config) - .streamd.toml file watcher (config reloads without restart) - textDocument/completion with @ trigger, conditional suggestions (if_with relationships), and temporal date/time snippets (R16) - textDocument/publishDiagnostics: R15 file-name format + R18 timesheet violations (overlapping timecards, unclosed days) - textDocument/documentSymbol: shard tree exposed as nested symbols - textDocument/codeAction: "Mark task as done" quickfix for @Task - workspace/symbol: cross-file shard search - textDocument/references: find all @Marker occurrences - textDocument/rename: rename @Marker across all files Dependencies added: tower-lsp 0.20, tokio, dashmap, serde_json
This commit is contained in:
parent
dfd21cb1f7
commit
448cf31b39
6 changed files with 1769 additions and 4 deletions
|
|
@ -11,6 +11,7 @@ repository = "https://github.com/konstantinfickel/streamd"
|
|||
clap = { version = "4", features = ["derive", "env"] }
|
||||
clap_complete = "4"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
toml = "1.0"
|
||||
thiserror = "2"
|
||||
miette = { version = "7", features = ["fancy"] }
|
||||
|
|
@ -23,6 +24,9 @@ walkdir = "2"
|
|||
indexmap = { version = "2", features = ["serde"] }
|
||||
itertools = "0.14"
|
||||
directories = "6"
|
||||
tower-lsp = "0.20"
|
||||
tokio = { version = "1", features = ["rt-multi-thread", "io-std"] }
|
||||
dashmap = "6"
|
||||
|
||||
[dev-dependencies]
|
||||
pretty_assertions = "=1.4.1"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue