@nodesify/astria 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  Turn any folder into a queryable knowledge graph.
4
4
 
5
+ ## Measured results (October 2026, release candidate)
6
+
7
+ Head-to-head against the original Python [Graphify](https://github.com/safishamsi/graphify) on identical corpora, pinned commits, one shared `o200k_base` tokenizer — structural pipeline only, no LLM:
8
+
9
+ | Measurement | astria | Graphify |
10
+ |---|---|---|
11
+ | Token reduction (17 MB corpus, 4.59M tokens) | **2,875×** | 2,575× |
12
+ | Avg tokens per answer (same questions, same budget) | **1,597** | 1,783 |
13
+ | Retrieval suites won or tied (file recall@5, 10 held-out/frozen suites) | **10 / 10** | — |
14
+ | Exact-declaration recall@5 | **40–100%** | ~0% |
15
+ | Over-budget answers | **0** | 6 of 10 suites |
16
+ | LoCoMo conversational-memory recall@5 (full 1,977-question set) | **83.6%** | — |
17
+
18
+ Self-corpus retrieval gate: hit@5 0.800, recall@5 0.743, zero failures, zero budget violations. Version-over-version performance (v1.2.0 → candidate): no regressions; queries 9–22% faster, explain 37% faster. Full methodology, tables, and reproduction commands: [Benchmarks and evidence](https://nodesify.github.io/astria/docs/explanation/benchmarks) and [RESULTS-2026-10-16.md](https://github.com/Nodesify/astria/blob/develop/RESULTS-2026-10-16.md).
19
+
5
20
  ## Install
6
21
 
7
22
  ```bash
@@ -17,15 +32,17 @@ astria run <path> # Full pipeline: detect → extract
17
32
  astria update <path> # Reuse cached extraction; reconcile current corpus
18
33
  astria watch <path> [--debounce 3000] # Watch for file changes, auto-rebuild
19
34
  astria explain <node> [--graph .] # Explain a node and its connections
20
- astria query <question> [--dfs] [--depth 2] [--budget 2000] [--graph .] # BFS/DFS traversal
35
+ astria query <question> [--seed <symbol>]... [--dfs] [--depth 2] [--budget 2000] [--graph .] # BFS/DFS traversal from explicit symbols
21
36
  astria path <A> <B> [--graph .] # Shortest path between two concepts
22
- astria stats [--graph .] # Node/edge/community counts
37
+ astria stats [--graph .] # Node/edge/community counts + extraction completeness
38
+ astria save-result <question> [--answer <text>|--answer-file <path>] [--outcome useful|dead_end|corrected] [--correction <text>] [--nodes <ids>] # Curate a memory
39
+ astria reflect [--graph .] # Aggregate memories into actionable LESSONS.md
23
40
  astria export [--graph .] [--out graph.json] [--format json|html|graphml] [--mode standard|large] # Export graph; HTML defaults to standard
24
41
  astria merge <pathA> <pathB> <outPath> # Merge two graphs
25
42
  astria diff <pathA> <pathB> # Compare two graphs
26
43
  astria history [--limit 20] [--graph .] # Show recent query history
27
44
  astria install [--platform claude] # Install skill files for AI coding assistants
28
- astria hook install # Install git post-commit/post-checkout hooks
45
+ astria hook install # Install git post-commit/post-checkout/post-merge hooks
29
46
  ```
30
47
 
31
48
  Running `astria run .` creates `.astria/` with:
@@ -33,15 +50,40 @@ Running `astria run .` creates `.astria/` with:
33
50
  - `db.sqlite` — the graph database
34
51
  - `graph.json` — full graph export
35
52
  - `graph_report.md` — report with hub nodes, communities, surprising connections
53
+ - `memory/` + `reflections/LESSONS.md` — the curated memory loop (see below)
54
+
55
+ ### Explicit query seeds
56
+
57
+ `astria query "..." --seed <symbol>` (repeatable; also a `seeds` argument on the MCP `query_graph` tool) anchors the traversal at known symbols instead of keyword ranking — node id, label, bare name, or a unique source path all resolve. Unresolved seeds are reported (`unresolvedSeeds` in JSON, a header line in text), and when every supplied seed fails to resolve the query returns an explicit miss rather than silently falling back to keyword search.
36
58
 
37
59
  ### Retrieval and upgrades
38
60
 
39
61
  Scoped code definitions survive semantic deduplication. JS/TS assigned functions retain binding names and bodies; Python implementations take precedence over overload declarations. Queries favor complete identifiers while honoring explicit requests for tests or documentation. Static receiver matching does not infer runtime types or aliases.
40
62
 
63
+ TypeScript member calls resolve through declared types — constructor parameter properties, typed fields, locals, and `new` initializers — including inherited members; ambiguous receivers stay unresolved, and these bindings are name/type-derived (`RESOLVED`), never compiler-proven. Interfaces are extracted with their members and dispatch to every implementing class via `dispatch` edges, marked INFERRED: possible implementations, not proven runtime calls. Member calls whose receiver type is known but whose member lives in another repository retain `receiver::type::<T>::<m>` evidence that the cross-repo global resolver links on a unique name+member match.
64
+
41
65
  `query --budget N` caps the full query text using `o200k_base`, including metadata. CLI and MCP share that text budget; MCP transport JSON is excluded. Budgets must fit metadata and the next complete record or the query returns an error. Use the returned `--cursor N` for the next page of node and edge records.
42
66
 
67
+ Extraction completeness is tracked per file — complete, partial (with the first parser-error lines), unsupported, skipped, or suspicious-empty — and surfaced by `astria stats`, `astria diagnose`, and the MCP `graph_stats` tool, so a missing relationship is distinguishable from an incompletely-understood file. Community detection weights edges by their stored evidence (EXTRACTED > RESOLVED > INFERRED > SEMANTIC) so weak links cannot outvote strong structure, and query-usage `learned` edges never shape module boundaries.
68
+
43
69
  After upgrading, run `astria update .` to refresh extraction and restore definitions removed by older deduplication. Discard old pagination cursors after an upgrade or graph rebuild.
44
70
 
71
+ ### Project configuration (`.astria.toml`)
72
+
73
+ ```toml
74
+ [languages]
75
+ ".inc" = "PHP" # remap an ambiguous suffix to a registered language
76
+ ".tpl" = "TypeScript"
77
+ ```
78
+
79
+ Remapped suffixes flow consistently through discovery, parser selection, watch, and cache identity; invalid entries warn and are skipped, and changing a mapping re-extracts exactly the affected files.
80
+
81
+ ### Memory loop: save-result and reflect
82
+
83
+ `astria save-result` records a Q/A verdict (useful / dead_end / corrected, optionally a correction and cited node ids) into `.astria/memory/`. `astria reflect` aggregates those memories into `.astria/reflections/LESSONS.md` as actionable output: preferred sources (corroborated by multiple useful memories, most recent first), corrections to apply, known dead ends, contested evidence, and tentative findings awaiting verification — with citations of deleted nodes discarded automatically.
84
+
85
+ Verdicts also gate the learned-edge loop: a node pair promoted from repeated queries must be backed by at least one question that was not judged a dead end or correction, so repeated unsuccessful exploration never becomes an authoritative edge. Lessons stay experiential — they never merge into the structural graph facts.
86
+
45
87
  ### HTML visualization modes
46
88
 
47
89
  HTML export defaults to `--mode standard`, matching the original Graphify viewer's 5,000-node safety limit. Graphs above that limit require an explicit large-graph export:
@@ -1,2 +1,22 @@
1
+ export interface SymbolEntry {
2
+ /** Node id. */
3
+ i: string;
4
+ /** Display label, e.g. `hookGuard()`. */
5
+ l: string;
6
+ /** Source file as stored in the graph (absolute, forward slashes). */
7
+ f: string;
8
+ /** Source line. */
9
+ n: number;
10
+ /** Graph degree (edge endpoint count) — used to rank hubs first. */
11
+ d: number;
12
+ }
13
+ export declare function symbolIndex(gdir: string): SymbolEntry[] | null;
14
+ export declare function contextAlreadyEmitted(gdir: string, key: string, ttlSeconds: number): boolean;
15
+ export declare function markContextEmitted(gdir: string, key: string, ttlSeconds: number): void;
16
+ export declare function extractSearchPattern(command: string): string | null;
17
+ export declare function matchSymbols(index: SymbolEntry[], pattern: string, limit: number): SymbolEntry[];
18
+ export declare function symbolsInFile(index: SymbolEntry[], root: string, absPath: string): SymbolEntry[];
19
+ export declare function displayPath(root: string, f: string): string;
20
+ export declare function formatSymbolList(entries: SymbolEntry[], root: string, limit: number): string;
1
21
  export declare function hookGuard(mode: string, _args: string[]): void;
2
22
  //# sourceMappingURL=hook-guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook-guard.d.ts","sourceRoot":"","sources":["../../src/commands/hook-guard.ts"],"names":[],"mappings":"AAiFA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAmF7D"}
1
+ {"version":3,"file":"hook-guard.d.ts","sourceRoot":"","sources":["../../src/commands/hook-guard.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,WAAW;IAC1B,eAAe;IACf,CAAC,EAAE,MAAM,CAAC;IACV,yCAAyC;IACzC,CAAC,EAAE,MAAM,CAAC;IACV,sEAAsE;IACtE,CAAC,EAAE,MAAM,CAAC;IACV,mBAAmB;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,oEAAoE;IACpE,CAAC,EAAE,MAAM,CAAC;CACX;AAiGD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,IAAI,CAkD9D;AAUD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAQ5F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAsBtF;AAYD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyBnE;AAKD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAwBhG;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAahG;AAID,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3D;AAcD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM5F;AAOD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAgI7D"}
@@ -2,18 +2,42 @@
2
2
  // hook-guard: editor PreToolUse guards (port of upstream hook-guard). Reads
3
3
  // the tool-call JSON from stdin, nudges agents toward graph queries, and —
4
4
  // in strict mode — denies ONE un-indexed read per session until the agent
5
- // orients via query/explain/path. Fails open on any error: a wedged guard
6
- // must never break a tool call.
5
+ // orients via query/explain/path. When the graph offers concrete evidence
6
+ // (symbols matching the search pattern, or symbols defined in the file
7
+ // being read), the generic nudge is replaced with those symbols, their
8
+ // file:line locations, and a ready-to-run command. Fails open on any
9
+ // error: a wedged guard must never break a tool call.
7
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.symbolIndex = symbolIndex;
12
+ exports.contextAlreadyEmitted = contextAlreadyEmitted;
13
+ exports.markContextEmitted = markContextEmitted;
14
+ exports.extractSearchPattern = extractSearchPattern;
15
+ exports.matchSymbols = matchSymbols;
16
+ exports.symbolsInFile = symbolsInFile;
17
+ exports.displayPath = displayPath;
18
+ exports.formatSymbolList = formatSymbolList;
8
19
  exports.hookGuard = hookGuard;
9
20
  const fs_1 = require("fs");
10
21
  const path_1 = require("path");
22
+ const atomic_1 = require("../install/atomic");
11
23
  const SOURCE_EXTS = new Set([
12
24
  '.py', '.ts', '.tsx', '.js', '.jsx', '.rs', '.go', '.java', '.c', '.cpp',
13
25
  '.h', '.hpp', '.rb', '.php', '.swift', '.kt', '.scala', '.cs', '.lua',
14
26
  '.ex', '.exs', '.hs', '.sh', '.dart', '.zig', '.md', '.toml', '.yaml', '.yml',
15
27
  ]);
16
28
  const SEARCH_COMMANDS = new Set(['grep', 'rg', 'ag', 'git']);
29
+ const SEARCH_TOOLS = new Set(['grep', 'rg', 'ag']);
30
+ // Contextual-guidance bounds: at most this many symbols per nudge, each
31
+ // nudge repeated at most once per key within the TTL, and the underlying
32
+ // graph.json parse refused beyond this size (a 20 MB graph parses in
33
+ // ~120 ms once; the derived index then serves every later call).
34
+ const CONTEXT_SYMBOL_LIMIT = 5;
35
+ const CONTEXT_DEFAULT_TTL_SECONDS = 1800;
36
+ const CONTEXT_MAX_GRAPH_BYTES = 200 * 1024 * 1024;
37
+ // Index cap for pathological repos: keeping the highest-degree symbols
38
+ // bounds the per-tool-call index parse to a few milliseconds.
39
+ const CONTEXT_MAX_INDEX_SYMBOLS = 50_000;
40
+ const CONTEXT_MESSAGE_LIMIT = 1200;
17
41
  function readStdinJson() {
18
42
  try {
19
43
  const raw = (0, fs_1.readFileSync)(0, 'utf-8');
@@ -23,9 +47,11 @@ function readStdinJson() {
23
47
  return null;
24
48
  }
25
49
  }
50
+ function projectRootDir() {
51
+ return process.env.CLAUDE_PROJECT_DIR || process.cwd();
52
+ }
26
53
  function graphDir() {
27
- const cwd = process.env.CLAUDE_PROJECT_DIR || process.cwd();
28
- const g = (0, path_1.join)(cwd, '.astria');
54
+ const g = (0, path_1.join)(projectRootDir(), '.astria');
29
55
  return (0, fs_1.existsSync)((0, path_1.join)(g, 'graph.json')) ? g : null;
30
56
  }
31
57
  /// Reads `ASTRIA_<name>`, falling back to the deprecated `GRAPHIFY_<name>`.
@@ -63,6 +89,234 @@ function emitDeny(reason) {
63
89
  },
64
90
  }));
65
91
  }
92
+ // ---- contextual guidance: symbol index ----
93
+ function indexCachePath(gdir) {
94
+ return (0, path_1.join)(gdir, 'cache', 'hook-index.json');
95
+ }
96
+ /// Compact symbol index derived from graph.json: only located code/test
97
+ /// symbols make useful guidance, and a ~250 KB cache file parses in a few
98
+ /// milliseconds where the full 20+ MB graph takes ~100+. Rebuilt whenever
99
+ /// the graph is newer than the index. Any failure yields null and callers
100
+ /// fall back to the generic nudge (fail-open).
101
+ function symbolIndex(gdir) {
102
+ try {
103
+ const graphPath = (0, path_1.join)(gdir, 'graph.json');
104
+ const cachePath = indexCachePath(gdir);
105
+ // No existsSync probes: reads go through try/catch so a file removed
106
+ // between check and use is just a miss (and the checker sees no
107
+ // check-then-use race).
108
+ try {
109
+ const cached = JSON.parse((0, fs_1.readFileSync)(cachePath, 'utf8'));
110
+ if (cached && Array.isArray(cached.symbols) && (0, fs_1.statSync)(cachePath).mtimeMs >= (0, fs_1.statSync)(graphPath).mtimeMs) {
111
+ return cached.symbols;
112
+ }
113
+ }
114
+ catch {
115
+ // Missing or corrupt cache — fall through to a rebuild.
116
+ }
117
+ // Single read, then size-check the bytes: no existsSync/stat race, and
118
+ // oversized graphs are rejected before JSON parsing burns memory.
119
+ const graphBytes = (0, fs_1.readFileSync)(graphPath);
120
+ if (graphBytes.byteLength > CONTEXT_MAX_GRAPH_BYTES)
121
+ return null;
122
+ const raw = JSON.parse(graphBytes.toString('utf8'));
123
+ const degree = new Map();
124
+ for (const e of raw.edges || []) {
125
+ degree.set(e.source, (degree.get(e.source) || 0) + 1);
126
+ degree.set(e.target, (degree.get(e.target) || 0) + 1);
127
+ }
128
+ const symbols = [];
129
+ for (const node of raw.nodes || []) {
130
+ if (!node.source_file || typeof node.source_line !== 'number')
131
+ continue;
132
+ if (node.file_type !== 'code' && node.file_type !== 'test')
133
+ continue;
134
+ const label = typeof node.label === 'string' ? node.label : '';
135
+ // Anonymous closures and yaml/document chunks read as noise, and file
136
+ // nodes (no '::' in the id) have no location their label doesn't show.
137
+ if (!label || label.startsWith('{') || !String(node.id || '').includes('::'))
138
+ continue;
139
+ symbols.push({ i: node.id, l: label, f: node.source_file, n: node.source_line, d: degree.get(node.id) || 0 });
140
+ }
141
+ if (symbols.length > CONTEXT_MAX_INDEX_SYMBOLS) {
142
+ symbols.sort((a, b) => b.d - a.d || (a.i < b.i ? -1 : 1));
143
+ symbols.length = CONTEXT_MAX_INDEX_SYMBOLS;
144
+ }
145
+ try {
146
+ (0, fs_1.mkdirSync)((0, path_1.join)(gdir, 'cache'), { recursive: true });
147
+ (0, atomic_1.writeTextAtomic)(cachePath, JSON.stringify({ v: 1, symbols }));
148
+ }
149
+ catch {
150
+ // The cache write is best-effort; the in-memory index still serves.
151
+ }
152
+ return symbols;
153
+ }
154
+ catch {
155
+ return null;
156
+ }
157
+ }
158
+ // ---- contextual guidance: once-per-key emission ----
159
+ function contextStatePath(gdir) {
160
+ return (0, path_1.join)(gdir, 'cache', 'hook-context-emitted.json');
161
+ }
162
+ /// One contextual nudge per key (search pattern or file) per TTL — the same
163
+ /// evidence repeated on every tool call is noise, not guidance.
164
+ function contextAlreadyEmitted(gdir, key, ttlSeconds) {
165
+ try {
166
+ const state = JSON.parse((0, fs_1.readFileSync)(contextStatePath(gdir), 'utf8'));
167
+ const ts = Number(state[key]);
168
+ return Number.isFinite(ts) && Date.now() / 1000 - ts < ttlSeconds;
169
+ }
170
+ catch {
171
+ return false;
172
+ }
173
+ }
174
+ function markContextEmitted(gdir, key, ttlSeconds) {
175
+ try {
176
+ let state = {};
177
+ try {
178
+ state = JSON.parse((0, fs_1.readFileSync)(contextStatePath(gdir), 'utf8'));
179
+ }
180
+ catch {
181
+ // Fresh state file.
182
+ }
183
+ const cutoff = Date.now() / 1000 - ttlSeconds * 2;
184
+ for (const k of Object.keys(state)) {
185
+ if (!Number.isFinite(state[k]) || state[k] < cutoff)
186
+ delete state[k];
187
+ }
188
+ state[key] = Date.now() / 1000;
189
+ const keys = Object.keys(state);
190
+ if (keys.length > 500) {
191
+ for (const k of keys.slice(0, keys.length - 500))
192
+ delete state[k];
193
+ }
194
+ (0, fs_1.mkdirSync)((0, path_1.join)(gdir, 'cache'), { recursive: true });
195
+ (0, atomic_1.writeTextAtomic)(contextStatePath(gdir), JSON.stringify(state));
196
+ }
197
+ catch {
198
+ // Dedupe bookkeeping is best-effort; worst case the nudge repeats.
199
+ }
200
+ }
201
+ // ---- contextual guidance: matching and formatting ----
202
+ function normalizeForMatch(p) {
203
+ return p.replace(/\\/g, '/').toLowerCase();
204
+ }
205
+ /// Best-effort pattern extraction from a search command line: grep/rg/ag
206
+ /// take the first non-option argument as the pattern, `git grep` the first
207
+ /// after the subcommand. Quoted patterns are rejoined. Returns null when
208
+ /// nothing recognizable remains — callers then keep the generic nudge.
209
+ function extractSearchPattern(command) {
210
+ const tokens = command.trim().split(/\s+/).filter(Boolean);
211
+ if (tokens[0] === 'git') {
212
+ const grepIdx = tokens.indexOf('grep');
213
+ if (grepIdx === -1)
214
+ return null;
215
+ tokens.splice(0, grepIdx + 1);
216
+ }
217
+ else if (SEARCH_TOOLS.has(tokens[0])) {
218
+ tokens.shift();
219
+ }
220
+ else {
221
+ return null;
222
+ }
223
+ const idx = tokens.findIndex((t) => !t.startsWith('-'));
224
+ if (idx === -1)
225
+ return null;
226
+ let pattern = tokens[idx];
227
+ const quote = pattern[0];
228
+ if ((quote === '"' || quote === "'") && !pattern.endsWith(quote)) {
229
+ const parts = [pattern];
230
+ for (let j = idx + 1; j < tokens.length; j++) {
231
+ parts.push(tokens[j]);
232
+ if (tokens[j].endsWith(quote))
233
+ break;
234
+ }
235
+ pattern = parts.join(' ');
236
+ }
237
+ if (quote === '"' || quote === "'")
238
+ pattern = pattern.slice(1, -1);
239
+ return pattern || null;
240
+ }
241
+ /// Ranks symbols against a search pattern: exact label beats prefix beats
242
+ /// substring beats a shared identifier token; graph degree breaks ties so
243
+ /// the real `foo()` outranks a same-named test helper.
244
+ function matchSymbols(index, pattern, limit) {
245
+ const needle = pattern.toLowerCase();
246
+ const tokens = needle.match(/[a-z_][a-z0-9_]{2,}/g) || [];
247
+ const scored = [];
248
+ for (const e of index) {
249
+ const l = e.l.toLowerCase();
250
+ let s = 0;
251
+ if (l === needle)
252
+ s = 4;
253
+ else if (l.startsWith(needle))
254
+ s = 3;
255
+ else if (l.includes(needle))
256
+ s = 2;
257
+ else {
258
+ for (const t of tokens) {
259
+ if (l.includes(t)) {
260
+ s = 1;
261
+ break;
262
+ }
263
+ }
264
+ }
265
+ if (s > 0)
266
+ scored.push({ e, s });
267
+ }
268
+ scored.sort((a, b) => b.s - a.s || b.e.d - a.e.d || a.e.l.length - b.e.l.length || (a.e.i < b.e.i ? -1 : 1));
269
+ return scored.slice(0, limit).map((x) => x.e);
270
+ }
271
+ /// Symbols defined in the file being read. Paths are compared normalized
272
+ /// (the graph stores absolute forward-slash paths; reads arrive in the
273
+ /// host's native shape), with a defensive relative-path branch for graphs
274
+ /// built before absolute loci.
275
+ function symbolsInFile(index, root, absPath) {
276
+ const target = normalizeForMatch(absPath);
277
+ const rootNorm = normalizeForMatch(root);
278
+ const hits = index.filter((e) => {
279
+ const f = normalizeForMatch(e.f);
280
+ if (f === target)
281
+ return true;
282
+ if (!f.startsWith('/') && !/^[a-z]:/.test(f)) {
283
+ return rootNorm && normalizeForMatch((0, path_1.join)(root, e.f)) === target;
284
+ }
285
+ return false;
286
+ });
287
+ hits.sort((a, b) => b.d - a.d || a.n - b.n || (a.i < b.i ? -1 : 1));
288
+ return hits;
289
+ }
290
+ /// Repo-relative display path (falls back to the stored path when the
291
+ /// prefix does not match, e.g. for graphs built elsewhere).
292
+ function displayPath(root, f) {
293
+ const fn = normalizeForMatch(f);
294
+ const rootNorm = normalizeForMatch(root);
295
+ if (rootNorm && fn.startsWith(rootNorm + '/'))
296
+ return f.slice(rootNorm.length + 1);
297
+ return f;
298
+ }
299
+ function truncateLabel(label) {
300
+ return label.length > 48 ? label.slice(0, 45) + '…' : label;
301
+ }
302
+ /// Suggested commands are embedded in double quotes; strip characters that
303
+ /// would break out of them. The suggestion is advisory, not executed.
304
+ function suggestable(s) {
305
+ return s.replace(/["`$\\]/g, '');
306
+ }
307
+ /// `label (path:line)` entries for a search nudge; the list shrinks until
308
+ /// the whole message fits the bound.
309
+ function formatSymbolList(entries, root, limit) {
310
+ let parts = entries.map((e) => `${truncateLabel(e.l)} (${displayPath(root, e.f)}:${e.n})`);
311
+ while (parts.length > 1 && parts.join(', ').length > limit) {
312
+ parts = parts.slice(0, -1);
313
+ }
314
+ return parts.join(', ');
315
+ }
316
+ function contextTtlSeconds() {
317
+ const ttl = Number(envVar('HOOK_CONTEXT_TTL'));
318
+ return Number.isFinite(ttl) && ttl >= 0 ? ttl : CONTEXT_DEFAULT_TTL_SECONDS;
319
+ }
66
320
  function hookGuard(mode, _args) {
67
321
  try {
68
322
  if (!mode || mode === 'gemini') {
@@ -78,6 +332,7 @@ function hookGuard(mode, _args) {
78
332
  return;
79
333
  const strict = envVar('HOOK_STRICT') === '1' ||
80
334
  (envVar('HOOK_STRICT') !== '0' && _args.includes('--strict'));
335
+ const contextEnabled = envVar('HOOK_CONTEXT') !== '0';
81
336
  if (mode === 'search') {
82
337
  const ti = input.tool_input || {};
83
338
  const isGrepTool = Boolean(ti.pattern);
@@ -87,6 +342,24 @@ function hookGuard(mode, _args) {
87
342
  ? cmd.split(/\s+/)[1] === 'grep'
88
343
  : SEARCH_COMMANDS.has(first);
89
344
  if (isGrepTool || isSearchBash) {
345
+ const pattern = ((ti.pattern || '').trim() || extractSearchPattern(cmd) || '').trim();
346
+ const index = contextEnabled && pattern ? symbolIndex(gdir) : null;
347
+ const hits = index ? matchSymbols(index, pattern, CONTEXT_SYMBOL_LIMIT) : [];
348
+ if (hits.length > 0) {
349
+ const key = 'search:' + pattern.toLowerCase();
350
+ const ttl = contextTtlSeconds();
351
+ if (!contextAlreadyEmitted(gdir, key, ttl)) {
352
+ markContextEmitted(gdir, key, ttl);
353
+ const seed = suggestable(truncateLabel(hits[0].l));
354
+ const needle = suggestable(pattern) || pattern;
355
+ const list = formatSymbolList(hits, projectRootDir(), 700);
356
+ emitNudge(`GRAPH-FIRST: ${hits.length === 1 ? 'a graph symbol already matches' : `${hits.length} graph symbols already match`} ` +
357
+ `"${needle}": ${list}. ` +
358
+ `Try \`astria query --seed "${seed}" "${needle}"\` or \`astria explain "${seed}"\` ` +
359
+ 'for structured answers with file:line provenance instead of grep.');
360
+ }
361
+ return;
362
+ }
90
363
  emitNudge('MANDATORY: Before searching with grep, check the knowledge graph first: ' +
91
364
  '`astria query "<question>"` returns structured answers with ' +
92
365
  'file:line provenance in one call. The graph is already built for this repo.');
@@ -105,8 +378,8 @@ function hookGuard(mode, _args) {
105
378
  return;
106
379
  // Staleness: file newer than the graph?
107
380
  try {
108
- const fileMtime = require('fs').statSync(resolved).mtimeMs;
109
- const graphMtime = require('fs').statSync((0, path_1.join)(gdir, 'db.sqlite')).mtimeMs;
381
+ const fileMtime = (0, fs_1.statSync)(resolved).mtimeMs;
382
+ const graphMtime = (0, fs_1.statSync)((0, path_1.join)(gdir, 'db.sqlite')).mtimeMs;
110
383
  if (fileMtime > graphMtime) {
111
384
  emitNudge(`STALE GRAPH: ${filePath} changed after the last graph build. ` +
112
385
  'Run `astria update .` before trusting graph answers.');
@@ -134,6 +407,28 @@ function hookGuard(mode, _args) {
134
407
  catch {
135
408
  // Marker exists: already denied once this session — allow.
136
409
  }
410
+ return;
411
+ }
412
+ // Contextual guidance: name the symbols the graph knows in this file
413
+ // (hub-first) once per file per TTL.
414
+ if (contextEnabled) {
415
+ const index = symbolIndex(gdir);
416
+ const hits = index ? symbolsInFile(index, projectRootDir(), resolved).slice(0, CONTEXT_SYMBOL_LIMIT) : [];
417
+ if (hits.length > 0) {
418
+ const key = 'read:' + normalizeForMatch(resolved);
419
+ const ttl = contextTtlSeconds();
420
+ if (!contextAlreadyEmitted(gdir, key, ttl)) {
421
+ markContextEmitted(gdir, key, ttl);
422
+ const hub = suggestable(truncateLabel(hits[0].l));
423
+ const parts = hits.map((e) => `${truncateLabel(e.l)} (line ${e.n})`);
424
+ while (parts.length > 1 && parts.join(', ').length > 700) {
425
+ parts.length = parts.length - 1;
426
+ }
427
+ emitNudge(`GRAPH CONTEXT: the knowledge graph indexes ${hits.length === 1 ? 'a symbol' : `${hits.length} symbols`} in ` +
428
+ `${displayPath(projectRootDir(), hits[0].f)}: ${parts.join(', ')}. ` +
429
+ `Start with \`astria explain "${hub}"\` for their connections instead of reading line by line.`);
430
+ }
431
+ }
137
432
  }
138
433
  return;
139
434
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hook-guard.js","sourceRoot":"","sources":["../../src/commands/hook-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-guard.js","sourceRoot":"","sources":["../../src/commands/hook-guard.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,0EAA0E;AAC1E,uEAAuE;AACvE,uEAAuE;AACvE,qEAAqE;AACrE,sDAAsD;;;;;;;;;;;AAEtD,2BAAkF;AAClF,+BAA8C;AAC9C,8CAAoD;AAoBpD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;IACxE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM;IACrE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;CAC9E,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAE7D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEnD,wEAAwE;AACxE,yEAAyE;AACzE,qEAAqE;AACrE,iEAAiE;AACjE,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,2BAA2B,GAAG,IAAI,CAAC;AACzC,MAAM,uBAAuB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAClD,uEAAuE;AACvE,8DAA8D;AAC9D,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,CAAC,GAAG,IAAA,WAAI,EAAC,cAAc,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5C,OAAO,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,4EAA4E;AAC5E,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QAC/B,SAAS,CACV,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7E,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;QACb,kBAAkB,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,iBAAiB,EAAE,IAAI;SACxB;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;QACb,kBAAkB,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,kBAAkB,EAAE,MAAM;YAC1B,wBAAwB,EAAE,MAAM;SACjC;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,8CAA8C;AAE9C,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAChD,CAAC;AAED,wEAAwE;AACxE,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,+CAA+C;AAC/C,qBAA4B,IAAY;IACtC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACvC,qEAAqE;QACrE,gEAAgE;QAChE,wBAAwB;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;YAC3D,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAA,aAAQ,EAAC,SAAS,CAAC,CAAC,OAAO,IAAI,IAAA,aAAQ,EAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC1G,OAAO,MAAM,CAAC,OAAwB,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;QAED,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,UAAU,GAAG,IAAA,iBAAY,EAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,UAAU,CAAC,UAAU,GAAG,uBAAuB;YAAE,OAAO,IAAI,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBAAE,SAAS;YACxE,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM;gBAAE,SAAS;YACrE,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,sEAAsE;YACtE,uEAAuE;YACvE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,SAAS;YACvF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,yBAAyB,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,MAAM,GAAG,yBAAyB,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC;YACH,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,IAAA,wBAAe,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;QACtE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,uDAAuD;AAEvD,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC;AAC1D,CAAC;AAED,4EAA4E;AAC5E,gEAAgE;AAChE,+BAAsC,IAAY,EAAE,GAAW,EAAE,UAAkB;IACjF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACvE,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,UAAU,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,4BAAmC,IAAY,EAAE,GAAW,EAAE,UAAkB;IAC9E,IAAI,CAAC;QACH,IAAI,KAAK,GAA2B,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACtB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,IAAA,wBAAe,EAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;AACH,CAAC;AAED,yDAAyD;AAEzD,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C,CAAC;AAED,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,8BAAqC,OAAe;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,MAAM;QACvC,CAAC;QACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED,0EAA0E;AAC1E,0EAA0E;AAC1E,uDAAuD;AACvD,sBAA6B,KAAoB,EAAE,OAAe,EAAE,KAAa;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAyC,EAAE,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,KAAK,MAAM;YAAE,CAAC,GAAG,CAAC,CAAC;aACnB,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC;aAChC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC;aAC9B,CAAC;YACJ,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClB,CAAC,GAAG,CAAC,CAAC;oBACN,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACnB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACtF,CAAC;IACF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,yEAAyE;AACzE,uEAAuE;AACvE,0EAA0E;AAC1E,+BAA+B;AAC/B,uBAA8B,KAAoB,EAAE,IAAY,EAAE,OAAe;IAC/E,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9B,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,OAAO,QAAQ,IAAI,iBAAiB,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;QACnE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sEAAsE;AACtE,4DAA4D;AAC5D,qBAA4B,IAAY,EAAE,CAAS;IACjD,MAAM,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,QAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9D,CAAC;AAED,2EAA2E;AAC3E,sEAAsE;AACtE,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,0EAA0E;AAC1E,qCAAqC;AACrC,0BAAiC,OAAsB,EAAE,IAAY,EAAE,KAAa;IAClF,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3F,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QAC3D,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,2BAA2B,CAAC;AAC9E,CAAC;AAED,mBAA0B,IAAY,EAAE,KAAe;IACrD,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,wDAAwD;YACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,MAAM,GACV,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG;YAC7B,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC;QAEtD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,YAAY,GAChB,KAAK,KAAK,KAAK;gBACb,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM;gBAChC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtF,MAAM,KAAK,GAAG,cAAc,IAAI,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACnE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,MAAM,GAAG,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;oBAC9C,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;oBAChC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;wBAC3C,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACnC,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACnD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;wBAC/C,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;wBAC3D,SAAS,CACP,gBAAgB,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,8BAA8B,GAAG;4BACpH,IAAI,MAAM,MAAM,IAAI,IAAI;4BACxB,8BAA8B,IAAI,MAAM,MAAM,4BAA4B,IAAI,MAAM;4BACpF,mEAAmE,CACtE,CAAC;oBACJ,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,SAAS,CACP,0EAA0E;oBACxE,8DAA8D;oBAC9D,6EAA6E,CAChF,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC;YAC7C,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,OAAO;YACzC,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO;YACzC,wCAAwC;YACxC,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC7C,MAAM,UAAU,GAAG,IAAA,aAAQ,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC7D,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;oBAC3B,SAAS,CACP,gBAAgB,QAAQ,uCAAuC;wBAC7D,sDAAsD,CACzD,CAAC;oBACF,OAAO;gBACT,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,uCAAuC;YACzC,CAAC;YACD,+DAA+D;YAC/D,IAAI,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,kEAAkE;gBAClE,gDAAgD;gBAChD,MAAM,OAAO,GACX,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAC;qBACzC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;qBAC9B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;gBAC/B,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,SAAS,CAAC,CAAC;gBACzE,IAAI,CAAC;oBACH,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACrE,IAAA,kBAAa,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,QAAQ,CACN,+DAA+D;wBAC7D,2DAA2D;wBAC3D,iEAAiE,CACpE,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,2DAA2D;gBAC7D,CAAC;gBACD,OAAO;YACT,CAAC;YACD,qEAAqE;YACrE,qCAAqC;YACrC,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1G,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,MAAM,GAAG,GAAG,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBAClD,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;oBAChC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;wBAC3C,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACnC,MAAM,GAAG,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBACrE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;4BACzD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;wBAClC,CAAC;wBACD,SAAS,CACP,8CAA8C,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,UAAU,MAAM;4BAC3G,GAAG,WAAW,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;4BACpE,gCAAgC,GAAG,4DAA4D,CAClG,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;AACH,CAAC"}
@@ -6,7 +6,7 @@ function registerHookCommand(program) {
6
6
  const hook = program.command('hook').description('Manage git hooks for auto-rebuild');
7
7
  hook
8
8
  .command('install')
9
- .description('Install post-commit and post-checkout hooks')
9
+ .description('Install post-commit, post-checkout, and post-merge hooks')
10
10
  .action(() => {
11
11
  try {
12
12
  const results = (0, hooks_1.installGitHooks)('.');
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":";;;AACA,4CAAsF;AAEtF,6BAAoC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;IAEtF,IAAI;SACD,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC;YACrC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,yBAAiB,EAAC,GAAG,CAAC,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,sBAAc,EAAC,GAAG,CAAC,CAAC;YACpC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":";;;AACA,4CAAsF;AAEtF,6BAAoC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;IAEtF,IAAI;SACD,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC;YACrC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,yBAAiB,EAAC,GAAG,CAAC,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,sBAAc,EAAC,GAAG,CAAC,CAAC;YACpC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -7,6 +7,7 @@ export declare function queryCommand(question: string, opts: {
7
7
  detail?: string;
8
8
  cursor?: string;
9
9
  noEmbed?: boolean;
10
+ seed?: string[];
10
11
  json?: boolean;
11
12
  }): Promise<void>;
12
13
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,iBAwDA"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,iBA4DA"}
@@ -16,7 +16,8 @@ async function queryCommand(question, opts) {
16
16
  // same switch so CLI and MCP callers get identical behavior.
17
17
  if (opts.noEmbed)
18
18
  process.env.ASTRIA_EMBED = 'off';
19
- const result = (0, native_1.queryGraph)(opts.graph, question, mode, depth, budget, opts.directed ?? false, opts.detail, cursor);
19
+ const seeds = (opts.seed ?? []).map((s) => s.trim()).filter((s) => s.length > 0);
20
+ const result = (0, native_1.queryGraph)(opts.graph, question, mode, depth, budget, opts.directed ?? false, opts.detail, cursor, seeds.length > 0 ? seeds : null);
20
21
  if (opts.json) {
21
22
  console.log(JSON.stringify({
22
23
  question,
@@ -24,6 +25,7 @@ async function queryCommand(question, opts) {
24
25
  depth,
25
26
  budget,
26
27
  directed: opts.directed ?? false,
28
+ seeds,
27
29
  nodeCount: result.nodeCount,
28
30
  edgeCount: result.edgeCount,
29
31
  // Present when the node list was truncated; pass back as --cursor.
@@ -36,6 +38,7 @@ async function queryCommand(question, opts) {
36
38
  renderedTokens: result.renderedTokens,
37
39
  elapsedMilliseconds: result.elapsedMilliseconds,
38
40
  snapshotEstimatedBytes: result.snapshotEstimatedBytes,
41
+ unresolvedSeeds: result.unresolvedSeeds ?? [],
39
42
  text: result.text,
40
43
  }, null, 2));
41
44
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":";;;AAAA,sCAAuC;AACvC,0CAAmD;AAE5C,KAAK,uBAAuB,QAAgB,EAAE,IAUpD;IACC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,+BAAoB,CAAC,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACrG,CAAC;QACD,yEAAyE;QACzE,6DAA6D;QAC7D,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,mBAAU,EACvB,IAAI,CAAC,KAAK,EACV,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,MAAM,EACN,IAAI,CAAC,QAAQ,IAAI,KAAK,EACtB,IAAI,CAAC,MAAM,EACX,MAAM,CACP,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;gBACE,QAAQ;gBACR,IAAI;gBACJ,KAAK;gBACL,MAAM;gBACN,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;gBAChC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,mEAAmE;gBACnE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;gBACrC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;gBACzC,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;gBAC/C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;gBACnC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;gBAC/C,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;gBACrD,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAuBzE"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBA4BzE"}
@@ -20,6 +20,12 @@ async function statsCommand(opts) {
20
20
  .join(' | ');
21
21
  if (types)
22
22
  console.log(`Node types: ${types}`);
23
+ const extraction = Object.entries((stats.extraction ?? {}))
24
+ .sort((a, b) => b[1] - a[1])
25
+ .map(([s, n]) => `${s}: ${n}`)
26
+ .join(' | ');
27
+ if (extraction)
28
+ console.log(`Extraction completeness: ${extraction}`);
23
29
  }
24
30
  catch (e) {
25
31
  console.error(`Error: ${e.message || e}`);
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":";;;AAAA,sCAAuC;AAEhC,KAAK,uBAAuB,IAAuC;IACxE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CACT,eAAe,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,6BAA6B,EAAE,CACzF,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAA2B,CAAC;aAC7E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;aAC7B,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":";;;AAAA,sCAAuC;AAEhC,KAAK,uBAAuB,IAAuC;IACxE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CACT,eAAe,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,6BAA6B,EAAE,CACzF,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAA2B,CAAC;aAC7E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;aAC7B,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAA2B,CAAC;aAClF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;aAC7B,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,IAAI,UAAU;YAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA4Z9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA6Z9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -108,6 +108,7 @@ program
108
108
  .option('--detail <level>', 'Fidelity tier: "high" keeps only EXTRACTED/DECLARED facts')
109
109
  .option('--cursor <n>', 'Continuation token from a previous truncated query', '0')
110
110
  .option('--no-embed', 'Skip auto-merged embedding seeds even when the graph has vectors')
111
+ .option('--seed <symbol>', 'Explicit seed node (repeatable): id, label, or source path. The traversal starts from these instead of keyword ranking; unresolved seeds are reported', (value, previous) => [...previous, value], [])
111
112
  .option('--json', 'Emit machine-readable JSON')
112
113
  .action(query_1.queryCommand);
113
114
  program
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/install/hooks.ts"],"names":[],"mappings":"AAiGA,QAAA,MAAM,oBAAoB;;;;;;IAGzB,CAAC;AA0MF,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CA4B3D;AAID,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAkE;AAC/H,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAoE"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/install/hooks.ts"],"names":[],"mappings":"AAoIA,QAAA,MAAM,oBAAoB;;;;;;IAGzB,CAAC;AAmNF,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CA4B3D;AAID,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAkE;AAC/H,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAoE"}
@@ -118,6 +118,40 @@ try {
118
118
  } catch {}
119
119
  // astria-checkout-hook-end
120
120
  `;
121
+ // post-merge runs after `git merge` — including the merge commits `git pull`
122
+ // creates when it cannot fast-forward. Fast-forward pulls reach no hook at
123
+ // all (replayed remote commits do not fire post-commit), so staleness
124
+ // surfacing (the hook-guard read guard, `astria status`) covers those;
125
+ // squash merges end in an ordinary commit handled by post-commit.
126
+ const POST_MERGE_SCRIPT = `// astria-merge-hook-start
127
+ const { execSync } = require('child_process');
128
+ const { existsSync } = require('fs');
129
+ const path = require('path');
130
+ ${UPDATE_HELPER}
131
+ if (!existsSync('.astria')) process.exit(0);
132
+
133
+ try {
134
+ // No shell redirects — see the note in the post-commit script.
135
+ const gitDir = execSync('git rev-parse --git-dir', { encoding: 'utf-8' }).trim();
136
+ if (existsSync(path.join(gitDir, 'rebase-merge')) || existsSync(path.join(gitDir, 'rebase-apply'))) process.exit(0);
137
+
138
+ // The first-parent diff is what the merge brought in relative to the
139
+ // pre-merge branch state (post-merge only fires on true merges, so HEAD
140
+ // always has a second parent by the time this runs). HEAD~1 is used over
141
+ // the equivalent HEAD^1: execSync spawns cmd.exe on Windows, where ^ is
142
+ // an escape character and would silently mangle the revision.
143
+ const changed = execSync('git diff --name-only HEAD~1 HEAD || git diff --name-only HEAD', { encoding: 'utf-8' }).trim();
144
+ if (!changed) process.exit(0);
145
+
146
+ const codeExts = new Set(['.py', '.js', '.ts', '.tsx', '.jsx', '.rs', '.go', '.java', '.c', '.h', '.cpp', '.cc', '.cxx', '.hpp']);
147
+ const hasCode = changed.split(/\\r?\\n/).some(f => codeExts.has(path.extname(f)));
148
+ if (hasCode) {
149
+ console.log('[astria] Merge completed - refreshing knowledge graph...');
150
+ runAstriaUpdate();
151
+ }
152
+ } catch {}
153
+ // astria-merge-hook-end
154
+ `;
121
155
  const LEGACY_HOOK_PREFIXES = [
122
156
  { js: 'nodesify-graphify' }, // 0.3–0.9 JS-format hooks
123
157
  { shell: 'nodesify-graphify' }, // pre-0.3 shell-format hooks
@@ -144,6 +178,15 @@ const HOOK_DEFS = [
144
178
  { startMarker: '# nodesify-graphify-checkout-hook-start', endMarker: '# nodesify-graphify-checkout-hook-end' },
145
179
  ],
146
180
  },
181
+ {
182
+ hookName: 'post-merge',
183
+ script: POST_MERGE_SCRIPT,
184
+ startMarker: '// astria-merge-hook-start',
185
+ endMarker: '// astria-merge-hook-end',
186
+ // No legacy release ever shipped a post-merge hook, so there is no
187
+ // earlier marker family to recognize or replace here.
188
+ legacyMarkers: [],
189
+ },
147
190
  ];
148
191
  const SHEBANGS = ['#!/bin/sh', '#!/bin/bash', '#!/usr/bin/env node'];
149
192
  function escapeRegExp(s) {
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/install/hooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAY,EAAE,+BAAW;AACzB,MAAY,IAAI,iCAAa;AAC7B,iDAAyC;AACzC,qCAA4D;AAE5D,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BrB,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;EAIzB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;CAwBd,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;EAI3B,aAAa;;;;;;;;;;;;;;CAcd,CAAC;AAcF,MAAM,oBAAoB,GAAG;IAC3B,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,0BAA0B;IACvD,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,6BAA6B;CAC9D,CAAC;QA0OO,oBAAoB;AAxO7B,MAAM,SAAS,GAAc;IAC3B;QACE,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,kBAAkB;QAC1B,WAAW,EAAE,sBAAsB;QACnC,SAAS,EAAE,oBAAoB;QAC/B,aAAa,EAAE;YACb,EAAE,WAAW,EAAE,iCAAiC,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC9F,EAAE,WAAW,EAAE,gCAAgC,EAAE,SAAS,EAAE,8BAA8B,EAAE;SAC7F;KACF;IACD;QACE,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,oBAAoB;QAC5B,WAAW,EAAE,+BAA+B;QAC5C,SAAS,EAAE,6BAA6B;QACxC,aAAa,EAAE;YACb,EAAE,WAAW,EAAE,0CAA0C,EAAE,SAAS,EAAE,wCAAwC,EAAE;YAChH,EAAE,WAAW,EAAE,yCAAyC,EAAE,SAAS,EAAE,uCAAuC,EAAE;SAC/G;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;AAErE,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe,EAAE,WAAmB,EAAE,SAAiB;IACjF,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,MAAM,EACpF,GAAG,CACJ,CAAC;IACF,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe,EAAE,GAAY;IAC3D,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACvC,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,GAAY;IACpD,OAAO,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,OAAO,KAAK,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,yEAAyE;AACzE,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,UAAU,CAAC,UAAkB;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,+BAA+B,EAAE;YACvD,GAAG,EAAE,UAAU;YACf,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,wBAAQ,EAAC,2BAA2B,EAAE;YACvD,GAAG,EAAE,OAAO;YACZ,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;IACzB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,0EAA0E;AAC1E,4EAA4E;AAC5E,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,QAAgB;IACxD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,GAAY;IACjD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ;QAAE,OAAO,GAAG,GAAG,CAAC,QAAQ,8BAA8B,CAAC;IACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,2EAA2E;YAC3E,IAAA,wBAAe,EAAC,QAAQ,EAAE,yBAAyB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YAClE,OAAO,SAAS;gBACd,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,0CAA0C;gBAC3D,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,aAAa,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,gEAAgE;YAChE,gEAAgE;YAChE,uDAAuD;YACvD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;gBACnD,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;gBACtE,MAAM,SAAS,GACb,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACxD,CAAC,CAAC,yBAAyB,GAAG,GAAG,CAAC,MAAM;oBACxC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC9C,IAAA,wBAAe,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACrC,OAAO,GAAG,GAAG,CAAC,QAAQ,qCAAqC,CAAC;YAC9D,CAAC;YACD,IAAI,SAAS,EAAE,CAAC;gBACd,IAAA,wBAAe,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnC,OAAO,GAAG,GAAG,CAAC,QAAQ,oDAAoD,CAAC;YAC7E,CAAC;YACD,OAAO,GAAG,GAAG,CAAC,QAAQ,qBAAqB,CAAC;QAC9C,CAAC;QAED,sEAAsE;QACtE,mEAAmE;QACnE,kEAAkE;QAClE,yDAAyD;QACzD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,GAAG,CAAC,QAAQ,8IAA8I,CAAC;QACvK,CAAC;QAED,IAAA,wBAAe,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACnE,OAAO,SAAS;YACd,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,uDAAuD;YACxE,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,6BAA6B,CAAC;IACnD,CAAC;IAED,IAAA,wBAAe,EAAC,QAAQ,EAAE,yBAAyB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC;QAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IAC9D,OAAO,GAAG,GAAG,CAAC,QAAQ,aAAa,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,GAAY;IACnD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ;QAAE,OAAO,GAAG,GAAG,CAAC,QAAQ,8BAA8B,CAAC;IACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,GAAG,CAAC,QAAQ,aAAa,CAAC;IACtC,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;QACzE,OAAO,GAAG,GAAG,CAAC,QAAQ,iBAAiB,CAAC;IAC1C,CAAC;IAED,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACtE,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE/C,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,GAAG,GAAG,CAAC,QAAQ,gCAAgC,CAAC;IACzD,CAAC;IAED,IAAA,wBAAe,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,GAAG,GAAG,CAAC,QAAQ,WAAW,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,wBAA+B,UAAkB;IAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,8BAA8B,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QACD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,aAAa,CAAC,CAAC;YAC7C,CAAC;iBAAM,IAAI,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,2DAA2D,CAAC,CAAC;YAC3F,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,iBAAiB,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,iBAAiB,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAMD,yBAAgC,UAAkB,IAAc,OAAO,IAAA,wBAAe,EAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/H,2BAAkC,UAAkB,IAAc,OAAO,IAAA,wBAAe,EAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/install/hooks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nodesify/astria",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Turn any folder into a queryable knowledge graph",
5
5
  "mcpName": "io.github.Nodesify/astria",
6
6
  "main": "dist/index.js",
@@ -24,7 +24,7 @@
24
24
  "napi:dev": "node ../../scripts/build-native.mjs --debug",
25
25
  "napi:artifacts": "napi artifacts",
26
26
  "prepublishOnly": "napi prepublish -t npm",
27
- "test": "npx tsx src/__tests__/cli.test.ts && npx tsx src/__tests__/install.test.ts && npx tsx src/__tests__/hooks.test.ts && npx tsx src/__tests__/merge-driver.test.ts && npx tsx src/__tests__/e2e.test.ts"
27
+ "test": "npx tsx src/__tests__/cli.test.ts && npx tsx src/__tests__/install.test.ts && npx tsx src/__tests__/hooks.test.ts && npx tsx src/__tests__/hook-guard.test.ts && npx tsx src/__tests__/merge-driver.test.ts && npx tsx src/__tests__/e2e.test.ts"
28
28
  },
29
29
  "keywords": [
30
30
  "knowledge-graph",
@@ -67,12 +67,12 @@
67
67
  ]
68
68
  },
69
69
  "optionalDependencies": {
70
- "@nodesify/astria-win32-x64-msvc": "1.2.0",
71
- "@nodesify/astria-darwin-x64": "1.2.0",
72
- "@nodesify/astria-linux-x64-gnu": "1.2.0",
73
- "@nodesify/astria-darwin-arm64": "1.2.0",
74
- "@nodesify/astria-linux-arm64-gnu": "1.2.0",
75
- "@nodesify/astria-linux-x64-musl": "1.2.0",
76
- "@nodesify/astria-win32-arm64-msvc": "1.2.0"
70
+ "@nodesify/astria-win32-x64-msvc": "1.3.0",
71
+ "@nodesify/astria-darwin-x64": "1.3.0",
72
+ "@nodesify/astria-linux-x64-gnu": "1.3.0",
73
+ "@nodesify/astria-darwin-arm64": "1.3.0",
74
+ "@nodesify/astria-linux-arm64-gnu": "1.3.0",
75
+ "@nodesify/astria-linux-x64-musl": "1.3.0",
76
+ "@nodesify/astria-win32-arm64-msvc": "1.3.0"
77
77
  }
78
78
  }
package/skills/skill.md CHANGED
@@ -103,6 +103,12 @@ Use Grep/Glob/file reads first for:
103
103
  - **Natural-language discovery**: the graph anchors on symbol names.
104
104
  `query` handles typos and partial matches, but if you don't know any
105
105
  symbol name yet, a broad grep for a distinctive string is often faster.
106
+ - **Known symbols**: when you already hold a symbol (from a stack trace,
107
+ an import, a previous answer), pass it with `astria query "<question>"
108
+ --seed <symbol>` (repeatable). Seeds resolve by node id, label, bare
109
+ name, or unique source path; the traversal starts there instead of
110
+ keyword ranking, unresolved seeds are reported, and all-unresolved
111
+ seeds return an explicit miss — never a silent keyword fallback.
106
112
 
107
113
  Rule of thumb: use the graph to identify WHICH files matter (blast radius,
108
114
  architecture, cross-module dependencies), then read those files directly
@@ -118,7 +124,17 @@ you can jump straight from a node or edge to the source.
118
124
  - Edge evidence tiers: `EXTRACTED` (verified in source), `RESOLVED` (a call
119
125
  expression from source whose name binds to exactly one definition —
120
126
  trustworthy for impact analysis), `INFERRED` (reconstructed or unbindable
121
- — weaker evidence, marked with a legend in `affected` output).
127
+ — weaker evidence, marked with a legend in `affected` output). TypeScript
128
+ member calls on typed receivers (`this.service.save()` through declared
129
+ fields, constructor parameter properties, typed locals) resolve the same
130
+ `RESOLVED` way; ambiguous receivers stay `INFERRED`.
131
+ - `dispatch` edges connect an interface member to every implementing
132
+ class's same-named member — possible implementations for
133
+ dependency-injection flows, NOT proven runtime calls.
134
+ - `graph_stats` (and `astria stats`) disclose extraction completeness per
135
+ file (`complete`, `partial`, `suspicious_empty`, `unsupported`,
136
+ `skipped`): before concluding "no relationship exists", check that the
137
+ files involved were fully extracted.
122
138
  - `explain`/`neighbors` arrows show real edge direction: `-->` the node
123
139
  calls/imports the neighbor, `<--` the neighbor calls/imports the node.
124
140
  - Identifier-shaped string literals (env vars like `PLANE_URL`, snake_case
@@ -249,7 +265,7 @@ Repeated queries leave a trace: node pairs that keep coming up across distinct q
249
265
 
250
266
  ### Git hooks
251
267
 
252
- `astria hook install|uninstall|status` — per-machine git hooks that run a quiet, freshness-throttled `astria update .` after every code commit and branch switch, so the graph stays current without anyone remembering to run `update`. Skips during rebase/merge; re-run `astria hook install` after upgrading astria to refresh the installed template. `astria hook-guard <mode>` installs the editor PreToolUse guard (`search | read | gemini`).
268
+ `astria hook install|uninstall|status` — per-machine git hooks that run a quiet, freshness-throttled `astria update .` after every code commit, branch switch, and merge (including the merges `git pull` creates), so the graph stays current without anyone remembering to run `update`. Skips while a rebase is in progress; re-run `astria hook install` after upgrading astria to refresh the installed template. `astria hook-guard <mode>` installs the editor PreToolUse guard (`search | read | gemini`); when the graph has evidence for the tool call, the guard names matching symbols with their `file:line` locations and a ready-to-run query instead of a generic reminder (disable with `ASTRIA_HOOK_CONTEXT=0`).
253
269
 
254
270
 
255
271
  ### `astria stats [options]`
@@ -287,7 +303,7 @@ astria wiki --format obsidian --out my-vault # Obsidian vault + canvas
287
303
 
288
304
  ## Post-Edit Protocol
289
305
 
290
- With git hooks installed (`astria hook install`), the graph refreshes itself after every commit — nothing to do.
306
+ With git hooks installed (`astria hook install`), the graph refreshes itself after every commit and merge — nothing to do.
291
307
 
292
308
  After modifying code files in a session with an active graph (no hooks):
293
309