streamd/Cargo.toml
Konstantin Fickel 448cf31b39
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
2026-04-19 21:02:44 +02:00

45 lines
1 KiB
TOML

[package]
name = "streamd"
version = "0.2.4"
edition = "2021"
description = "Personal knowledge management and time-tracking CLI using @Tag annotations"
license = "AGPL-3.0-only"
authors = ["Konstantin Fickel"]
repository = "https://github.com/konstantinfickel/streamd"
[dependencies]
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"] }
pulldown-cmark = "0.13"
regex = "1"
once_cell = "1"
chrono = { version = "0.4", features = ["serde"] }
chrono-tz = "0.10"
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"
tempfile = "=3.27.0"
[[bin]]
name = "streamd"
path = "src/main.rs"
[lib]
name = "streamd"
path = "src/lib.rs"
[profile.release]
lto = true
strip = true