@nodesify/astria 1.1.1 → 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 +47 -5
- package/dist/commands/change-review.d.ts +73 -0
- package/dist/commands/change-review.d.ts.map +1 -0
- package/dist/commands/change-review.js +15 -0
- package/dist/commands/change-review.js.map +1 -0
- package/dist/commands/doctor.d.ts +6 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +139 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/global.d.ts.map +1 -1
- package/dist/commands/global.js +3 -1
- package/dist/commands/global.js.map +1 -1
- package/dist/commands/hook-guard.d.ts +20 -0
- package/dist/commands/hook-guard.d.ts.map +1 -1
- package/dist/commands/hook-guard.js +301 -6
- package/dist/commands/hook-guard.js.map +1 -1
- package/dist/commands/hook.js +1 -1
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/indexing-profile.d.ts +14 -0
- package/dist/commands/indexing-profile.d.ts.map +1 -0
- package/dist/commands/indexing-profile.js +74 -0
- package/dist/commands/indexing-profile.js.map +1 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +52 -53
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/merge-driver.d.ts.map +1 -1
- package/dist/commands/merge-driver.js +23 -11
- package/dist/commands/merge-driver.js.map +1 -1
- package/dist/commands/merge-gate.d.ts.map +1 -1
- package/dist/commands/merge-gate.js +10 -7
- package/dist/commands/merge-gate.js.map +1 -1
- package/dist/commands/prs.d.ts.map +1 -1
- package/dist/commands/prs.js +139 -278
- package/dist/commands/prs.js.map +1 -1
- package/dist/commands/query.d.ts +1 -0
- package/dist/commands/query.d.ts.map +1 -1
- package/dist/commands/query.js +17 -4
- package/dist/commands/query.js.map +1 -1
- package/dist/commands/risk.d.ts +2 -3
- package/dist/commands/risk.d.ts.map +1 -1
- package/dist/commands/risk.js +5 -12
- package/dist/commands/risk.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +2 -9
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +6 -0
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +45 -100
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update.d.ts +3 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +3 -10
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/watch.d.ts +1 -0
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +64 -21
- package/dist/commands/watch.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -4
- package/dist/index.js.map +1 -1
- package/dist/install/atomic.d.ts +3 -0
- package/dist/install/atomic.d.ts.map +1 -1
- package/dist/install/atomic.js +59 -20
- package/dist/install/atomic.js.map +1 -1
- package/dist/install/hooks.d.ts +2 -2
- package/dist/install/hooks.d.ts.map +1 -1
- package/dist/install/hooks.js +48 -3
- package/dist/install/hooks.js.map +1 -1
- package/dist/install/index.d.ts +5 -3
- package/dist/install/index.d.ts.map +1 -1
- package/dist/install/index.js +173 -222
- package/dist/install/index.js.map +1 -1
- package/dist/install/platforms.d.ts +2 -3
- package/dist/install/platforms.d.ts.map +1 -1
- package/dist/install/platforms.js +1 -4
- package/dist/install/platforms.js.map +1 -1
- package/dist/install/settings-inject.d.ts +11 -4
- package/dist/install/settings-inject.d.ts.map +1 -1
- package/dist/install/settings-inject.js +60 -37
- package/dist/install/settings-inject.js.map +1 -1
- package/dist/install/state.d.ts +12 -0
- package/dist/install/state.d.ts.map +1 -0
- package/dist/install/state.js +85 -0
- package/dist/install/state.js.map +1 -0
- package/dist/native.d.ts +3 -0
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js +22 -18
- package/dist/native.js.map +1 -1
- package/package.json +11 -8
- package/skills/skill.md +19 -3
|
@@ -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.
|
|
6
|
-
//
|
|
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
|
|
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 =
|
|
109
|
-
const graphMtime =
|
|
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":"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"}
|
package/dist/commands/hook.js
CHANGED
|
@@ -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-
|
|
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,
|
|
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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface IndexingOptions {
|
|
2
|
+
dedup?: boolean;
|
|
3
|
+
backend?: string;
|
|
4
|
+
judge?: string;
|
|
5
|
+
model?: string;
|
|
6
|
+
embed?: boolean;
|
|
7
|
+
labelCommunities?: boolean;
|
|
8
|
+
deep?: boolean;
|
|
9
|
+
refreshPolicy?: boolean;
|
|
10
|
+
llmBudget?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Updates reuse the project's policy, including an explicitly disabled backend. */
|
|
13
|
+
export declare function indexingOptions(root: string, opts: IndexingOptions, update: boolean): IndexingOptions;
|
|
14
|
+
//# sourceMappingURL=indexing-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexing-profile.d.ts","sourceRoot":"","sources":["../../src/commands/indexing-profile.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7C;AAQD,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,GAAG,eAAe,CAkDrG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.indexingOptions = indexingOptions;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const KEYS = ['LLM_BACKEND', 'LLM_MODEL', 'LLM_BASE_URL', 'LLM_JUDGE', 'KIMI_BASE_URL',
|
|
7
|
+
'AZURE_ENDPOINT', 'AZURE_DEPLOYMENT', 'AZURE_API_VERSION', 'AWS_REGION', 'LLM_BUDGET'];
|
|
8
|
+
/** Updates reuse the project's policy, including an explicitly disabled backend. */
|
|
9
|
+
function indexingOptions(root, opts, update) {
|
|
10
|
+
if (opts.refreshPolicy)
|
|
11
|
+
process.env.ASTRIA_REFRESH_POLICY = '1';
|
|
12
|
+
else
|
|
13
|
+
delete process.env.ASTRIA_REFRESH_POLICY;
|
|
14
|
+
const filename = (0, path_1.join)(root, '.astria', 'indexing-profile.json');
|
|
15
|
+
const profile = update && (0, fs_1.existsSync)(filename)
|
|
16
|
+
? JSON.parse((0, fs_1.readFileSync)(filename, 'utf8')) : undefined;
|
|
17
|
+
if (profile && profile.version !== 1)
|
|
18
|
+
throw new Error('Unsupported indexing profile version; rebuild with an explicit policy');
|
|
19
|
+
const incoming = Object.fromEntries(KEYS.map(k => [`ASTRIA_${k}`, process.env[`ASTRIA_${k}`]]));
|
|
20
|
+
if (profile) {
|
|
21
|
+
for (const key of KEYS) {
|
|
22
|
+
const name = `ASTRIA_${key}`;
|
|
23
|
+
if (profile.environment[name] !== undefined)
|
|
24
|
+
process.env[name] = profile.environment[name];
|
|
25
|
+
else
|
|
26
|
+
delete process.env[name];
|
|
27
|
+
}
|
|
28
|
+
// Only an explicit refresh opts into new shell-level routing settings.
|
|
29
|
+
if (opts.refreshPolicy)
|
|
30
|
+
for (const [key, value] of Object.entries(incoming)) {
|
|
31
|
+
if (value !== undefined)
|
|
32
|
+
process.env[key] = value;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else if (update && !opts.backend) {
|
|
36
|
+
process.env.ASTRIA_LLM_BACKEND = 'none';
|
|
37
|
+
delete process.env.ASTRIA_LLM_JUDGE;
|
|
38
|
+
}
|
|
39
|
+
if (opts.backend)
|
|
40
|
+
process.env.ASTRIA_LLM_BACKEND = opts.backend;
|
|
41
|
+
if (opts.backend?.trim().toLowerCase() === 'none')
|
|
42
|
+
delete process.env.ASTRIA_LLM_JUDGE;
|
|
43
|
+
if (opts.judge)
|
|
44
|
+
process.env.ASTRIA_LLM_JUDGE = opts.judge;
|
|
45
|
+
if (opts.model)
|
|
46
|
+
process.env.ASTRIA_LLM_MODEL = opts.model;
|
|
47
|
+
if (opts.llmBudget !== undefined) {
|
|
48
|
+
if (!/^[1-9]\d*$/.test(opts.llmBudget))
|
|
49
|
+
throw new Error('--llm-budget must be a positive integer');
|
|
50
|
+
process.env.ASTRIA_LLM_BUDGET = opts.llmBudget;
|
|
51
|
+
}
|
|
52
|
+
const effective = {
|
|
53
|
+
...opts,
|
|
54
|
+
dedup: opts.dedup ?? profile?.dedup ?? true,
|
|
55
|
+
embed: opts.embed ?? profile?.embed ?? false,
|
|
56
|
+
labelCommunities: opts.labelCommunities ?? (opts.backend?.trim().toLowerCase() === 'none' ? false : profile?.label_communities) ?? false,
|
|
57
|
+
deep: opts.deep ?? (opts.backend?.trim().toLowerCase() === 'none' ? false : profile?.deep) ?? false,
|
|
58
|
+
};
|
|
59
|
+
const backend = process.env.ASTRIA_LLM_BACKEND?.trim().toLowerCase();
|
|
60
|
+
const paid = Boolean(backend && backend !== 'none');
|
|
61
|
+
const changed = profile && (KEYS.filter(k => k !== 'LLM_BUDGET').some(k => profile.environment[`ASTRIA_${k}`] !== process.env[`ASTRIA_${k}`]) ||
|
|
62
|
+
profile.label_communities !== effective.labelCommunities || profile.deep !== effective.deep);
|
|
63
|
+
const previousPaid = profile && profile.environment.ASTRIA_LLM_BACKEND !== 'none';
|
|
64
|
+
if (update && (paid || previousPaid) && (changed || !profile || opts.refreshPolicy)) {
|
|
65
|
+
if (!opts.refreshPolicy)
|
|
66
|
+
throw new Error('Changing indexing policy requires --refresh-policy');
|
|
67
|
+
if (paid && !opts.llmBudget)
|
|
68
|
+
throw new Error('Changing paid indexing policy requires --llm-budget <positive tokens>');
|
|
69
|
+
}
|
|
70
|
+
if (opts.refreshPolicy && !opts.llmBudget && paid)
|
|
71
|
+
throw new Error('Paid refresh requires --llm-budget <positive tokens>');
|
|
72
|
+
return effective;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=indexing-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexing-profile.js","sourceRoot":"","sources":["../../src/commands/indexing-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAwCtD"}
|