Documentation
¶
Overview ¶
Package query answers questions against a built graph.json without rebuilding: find nodes by name, explain a node and its neighbours, and find the shortest dependency path between two nodes. These back the CLI commands the Claude skill uses instead of grepping the source tree.
Index ¶
- func Ask(g *Graph, question string, dfs bool, depth, tokenBudget int) string
- func Merge(currentPath, otherPath string) error
- func Validate(path string) (issues []string, nodes, links int, err error)
- type AffectedResult
- type DiffEdge
- type DiffNode
- type DiffResult
- type Explanation
- type Graph
- type Link
- type Match
- type Neighbor
- type Node
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Ask ¶ added in v0.6.0
Ask answers a natural-language question against the graph using deterministic TF-IDF retrieval (no LLM, no network): it scores nodes against the question, picks seed nodes, runs a bounded BFS (or DFS when dfs is true) to the given depth, and renders the resulting subgraph as a token-budgeted text block.
This mirrors upstream graphify's flagship `query` command (serve.py's _query_graph_text). The Go graph carries no edge `context` data, so upstream's context-filter machinery is intentionally omitted.
func Merge ¶ added in v0.6.0
Merge resolves a graph.json merge conflict by writing the node/edge union of currentPath and otherPath back to currentPath. Nodes dedupe by id (current wins), edges by direction-aware (source, target, relation). It returns an error on corrupt or oversized input (per-file byte cap, merged-node cap) so the caller can fail the git merge instead of accepting a poisoned graph.
func Validate ¶ added in v0.3.0
Validate reads graph.json at path and reports structural problems: links that reference a missing node (dangling endpoints), duplicate node IDs, and nodes with an empty ID. It returns the issues (empty when the graph is sound) plus node and edge counts for a summary. Reading directly (rather than via Load) lets it catch duplicate IDs, which Load's id map would otherwise collapse.
Types ¶
type AffectedResult ¶ added in v0.3.0
AffectedResult separates the symbols defined in the changed files from the symbols transitively impacted by them.
func Affected ¶ added in v0.3.0
func Affected(g *Graph, changedFiles []string) AffectedResult
Affected returns the graph nodes defined in changedFiles ("changed") and every node that transitively depends on them ("impacted") — the blast radius of a change. Impact propagates backwards along dependency edges: a changed callee reaches its callers, a changed file reaches its importers.
type DiffEdge ¶ added in v0.6.0
type DiffEdge struct {
Source string `json:"source"`
Target string `json:"target"`
Relation string `json:"relation"`
}
DiffEdge identifies an edge added or removed between two snapshots.
type DiffResult ¶ added in v0.6.0
type DiffResult struct {
NewNodes []DiffNode `json:"new_nodes"`
RemovedNodes []DiffNode `json:"removed_nodes"`
NewEdges []DiffEdge `json:"new_edges"`
RemovedEdges []DiffEdge `json:"removed_edges"`
Summary string `json:"summary"`
}
DiffResult is the realized node/edge delta between two graph snapshots: the before/after complement to Affected's predicted blast radius.
func Diff ¶ added in v0.6.0
func Diff(old, new *Graph) DiffResult
Diff compares two loaded graph snapshots and returns the nodes and edges added or removed going from old to new. The graph is directed, so edges are compared by a direction-aware key (source, target, relation): reversing an edge counts as one removed and one added.
type Explanation ¶
Explanation is a node plus its grouped neighbours.
type Graph ¶
type Graph struct {
Nodes []Node `json:"nodes"`
Links []Link `json:"links"`
// contains filtered or unexported fields
}
Graph is a loaded graph.json.
type Link ¶
type Link struct {
Source string `json:"source"`
Target string `json:"target"`
Relation string `json:"relation"`
Confidence string `json:"confidence"`
}
Link mirrors a graph.json edge.
type Neighbor ¶
type Neighbor struct {
ID, Label, Relation, Direction, Location string
}
Neighbor is an adjacent node in a given direction.
type Node ¶
type Node struct {
ID string `json:"id"`
Label string `json:"label"`
FileType string `json:"file_type"`
SourceFile string `json:"source_file"`
SourceLocation string `json:"source_location"`
Community *int `json:"community"`
NormLabel string `json:"norm_label"`
ComputedName string `json:"computed_name"`
}
Node mirrors a graph.json node.