Vault query and index
State: open/building · Kind: subsystem · Audience: system
Summary
Section titled “Summary”- The query plane is
packages/ts/obsidian-basesoverpackages/ts/obsidian-vault’s scan index: composable filters, formulas, and named views in the ergonomic shape of Obsidian Bases, without claiming compatibility with that proprietary format. - The notes experience (
solutions/determined/experiences/notes) is its consumer. .basefiles are a supported input where practical; the query engine is our own.
Statement
Section titled “Statement”Search, graph, stats, agenda, and digest features each independently walked and parsed
the vault until fsindex amortized it for the determined suite. The query plane is
obsidian-bases, which runs boolean filter composition over frontmatter and file
properties, computed formulas, summaries, and named views against the scan index in
obsidian-vault. Obsidian Bases supplies the ergonomic reference; the engine, grammar,
and index are independent. vault-graph’s TS selector DSL and the determined-index
walk are separate paths that have not moved onto it.
What it provides
Section titled “What it provides”- Incremental index: frontmatter values, link graph, structural facts (sections, anchors, tags), watched and invalidated on file change.
- Query API: filters (boolean composition, property predicates,
hasTag/hasLink/inFolder-class helpers), formulas, sorting, named views. - Best-effort
.basefile reading mapped onto the native query model. - CLI verbs (
packages/ts/obsidian-bases/src/cli.ts). The plane is TypeScript; no Rust query surface or WASM binding exists for it (C-X2PB-wasm-ts-surface).
Underlying implementation
Section titled “Underlying implementation”Two TypeScript packages, packages/ts/obsidian-bases (query engine) and
packages/ts/obsidian-vault (scan index); extended by
M-N2HG-query-and-index-plane. solutions/determined/crates/determined-notes/src/fsindex.rs
is a separate, private incremental cache used only inside determined-notes. Other
inputs: vault-graph selector DSL (TS migration source), determined-notes::event
(recurrence/agenda queries as the hardest existing consumer), Obsidian Bases syntax as
ergonomic prior art.
Locations
Section titled “Locations”packages/ts/obsidian-bases/src/packages/ts/obsidian-bases/src/cli.tssolutions/determined/crates/determined-notes/src/fsindex.rspackages/ts/obsidian-vault/src/