gdscript-ide — the public, engine-/protocol-neutral analysis API.
Modeled on rust-analyzer's ide::AnalysisHost / ide::Analysis
(plans/01-ARCHITECTURE.md §2). [AnalysisHost] is the single mutable owner of the
input world; [Analysis] is a cheap, cloneable, Send snapshot whose queries take
byte offsets and return plain serde result structs from gdscript-base — never
lsp-types. Each client (LSP server, the guitkx adapter, the CLI, the WASM
playground) maps these POD results to its own protocol.
Phase 3 (M0) swaps the engine behind these types from a plain VFS map to a salsa
query graph in [gdscript_db]: the input world is now FileText salsa inputs, mutated
through apply_change; [Analysis] is a cloned database handle (salsa handles are
Clone + Send, replacing the old Arc<map> snapshot). Cancellation is now real —
a concurrent apply_change cancels in-flight reads on outstanding handles, which unwind
into Err(Cancelled) at the query boundary (see [catch]). The public API shape is
unchanged. The crate stays wasm32-safe (CI guards this).