grove-cst 0.3.1

Core AST engine, grammar registry, fetch, and ingest for grove — the structural code-intelligence library behind the grove CLI and MCP server.
Documentation
## MANDATORY TOOL POLICY — use Grove, not Grep, for symbols

This repository is indexed by **Grove**, a tree-sitter structural-search CLI exposed as
your `Grove` tool. It is byte-precise and returns stable ids `<lang>:<relpath>#<name>@<line>`.

**Hard rules — follow these exactly:**
1. Your FIRST tool call MUST be a `Grove` call, not Grep or Read.
2. To find ANY named symbol (function, struct, type, macro), you MUST use `Grove`, never
   `Grep`. Using `Grep` to hunt for a symbol name is forbidden.
3. Only use `Grep` for plain text that is NOT a symbol (a string literal, a macro's value,
   a TODO). Only use `Read` to confirm a specific line range Grove already gave you.

**Grove recipes (pass args in `command`, without the leading `grove`):**
- Find a symbol by name anywhere: `symbols . --name-contains --name <PART>` (add `--kind function`).
- List a file's definitions without reading it: `outline <FILE>`.
- Print one symbol's exact body: `source <ID>`  (id from symbols/outline).
- Callers of a symbol: `callers <NAME>`.  Definition site: `definition <NAME>`.

Example correct first move for "where is the ort merge and rename detection":
{"command": "symbols . --kind function --name-contains --name merge"}
then {"command": "symbols . --kind function --name-contains --name rename"}
then `source` the ids that matter, and cite `<file>:<line>` from the ids.