1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! Reading a code graph back as answers.
//!
//! `ingest-git` writes a repository into the graph; this module reads it out
//! again, in the shapes a person or an assistant asks for. Each tool computes
//! a plain data structure and a renderer turns it into a short digest, so the
//! same answer serves a CLI, an HTTP response and an MCP tool without being
//! computed three ways.
//!
//! | Tool | Answers |
//! |---|---|
//! | [`repo_map`] | what is this repository, in one screen |
//! | [`context`] | everything known about one file or symbol |
//! | [`impact`] | what else the files in a diff reach |
//! | [`owners`] | who has written a file, and when |
//! | [`why`] | what links two things, with the evidence |
//! | [`recall::recall_digest`] | which nodes a topic is closest to |
//! | [`remember::remember`] | write a note the graph can later recall |
//! | [`stale_concepts`] | which learned concepts have drifted from their sources |
//!
//! [`rules`] holds the `about_<label>` and `concept_sources` rule
//! definitions both `structure::ensure_rules_and_fulltext` (CLI) and
//! [`remember::remember`] need, so the two cannot declare them differently.
//!
//! Two rules hold across every tool here. The output is **deterministic** for
//! the same store state and the same caller-supplied "now": collections are
//! sorted, ties break on the key, floats print at a fixed precision, and every
//! answer is decided by the graph. The one value that is not is how long ago
//! the store was synced, which is measured against the system clock unless the
//! caller pins the time — see [`MapOptions::now_ts`]. And every string that
//! came out of the graph passes through [`sanitize`](render::sanitize) before
//! it reaches a rendered line, so repository content cannot forge a header or a
//! line break in an assistant's context.
//!
//! [`context`] is the one tool that reads anything outside the graph: the
//! source it quotes comes from the working tree, so what it shows is what is on
//! disk now.
pub use stale_concepts;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;