ochna 0.0.5

A structural code graph indexing and analysis CLI using Tree-sitter and SQLite
# AGENTS.md — ochna

Project-specific conventions. Cross-project defaults (commits, indentation, tooling) live in the global config and asobi `ToolPreferences`/`CodingStyle`; don't duplicate them here.

## What ochna is

A structural code-graph CLI: parses Rust/Go/Java with Tree-sitter, indexes symbols and call edges into SQLite, and serves `search` / `callers` / `node` / `explore` queries. Layout: `src/main.rs` (clap CLI), `src/commands.rs` (subcommand impls), `src/db.rs` (schema + queries), `src/parser.rs` (per-language AST traversal).

## Commands

- `make build` / `make test` — cargo build (release) / cargo test.
- `make check``fmt` (check) + `clippy -D warnings`. Runs before commits.
- `make install` — install to `~/.cargo/bin`. Run this to exercise the CLI.
- `make setup` — init submodules, uv venv, build, index the `clones/`.

## Using ochna itself

- Exercise the CLI as an **installed global** (`make install`, then `ochna <cmd>`) — not via the target-dir binary path.
- **ochna resolves its `.ochna/ochna.db` from the current working directory.** To investigate a project (e.g. a `clones/` submodule), `cd` into it once, then run `ochna` bare. There is no `--workspace` flag.
- Investigate flow: `ochna search <name>``ochna callers <name>``ochna node --symbol <name> --include-code` (or `ochna explore <query>` for the combined view). Prefer this over recursive `rg`/file reads for symbol lookups.
- Run command sequences plainly — no decorated echo banners around invocations.

## Test giants

`clones/tokio` (Rust), `clones/netty` (Java), `clones/kubernetes` (Go), `clones/linux` (C), and `clones/zig` (Zig/C/C++) are git submodules used as real-world index targets and benchmark baselines.
They intentionally stay as submodules; `.gitmodules` uses `ignore = dirty` so generated/untracked files inside the clones do not pollute parent `git status`, while recorded submodule commit changes still show up.