@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.
Files changed (92) hide show
  1. package/README.md +47 -5
  2. package/dist/commands/change-review.d.ts +73 -0
  3. package/dist/commands/change-review.d.ts.map +1 -0
  4. package/dist/commands/change-review.js +15 -0
  5. package/dist/commands/change-review.js.map +1 -0
  6. package/dist/commands/doctor.d.ts +6 -0
  7. package/dist/commands/doctor.d.ts.map +1 -0
  8. package/dist/commands/doctor.js +139 -0
  9. package/dist/commands/doctor.js.map +1 -0
  10. package/dist/commands/global.d.ts.map +1 -1
  11. package/dist/commands/global.js +3 -1
  12. package/dist/commands/global.js.map +1 -1
  13. package/dist/commands/hook-guard.d.ts +20 -0
  14. package/dist/commands/hook-guard.d.ts.map +1 -1
  15. package/dist/commands/hook-guard.js +301 -6
  16. package/dist/commands/hook-guard.js.map +1 -1
  17. package/dist/commands/hook.js +1 -1
  18. package/dist/commands/hook.js.map +1 -1
  19. package/dist/commands/indexing-profile.d.ts +14 -0
  20. package/dist/commands/indexing-profile.d.ts.map +1 -0
  21. package/dist/commands/indexing-profile.js +74 -0
  22. package/dist/commands/indexing-profile.js.map +1 -0
  23. package/dist/commands/install.d.ts.map +1 -1
  24. package/dist/commands/install.js +52 -53
  25. package/dist/commands/install.js.map +1 -1
  26. package/dist/commands/merge-driver.d.ts.map +1 -1
  27. package/dist/commands/merge-driver.js +23 -11
  28. package/dist/commands/merge-driver.js.map +1 -1
  29. package/dist/commands/merge-gate.d.ts.map +1 -1
  30. package/dist/commands/merge-gate.js +10 -7
  31. package/dist/commands/merge-gate.js.map +1 -1
  32. package/dist/commands/prs.d.ts.map +1 -1
  33. package/dist/commands/prs.js +139 -278
  34. package/dist/commands/prs.js.map +1 -1
  35. package/dist/commands/query.d.ts +1 -0
  36. package/dist/commands/query.d.ts.map +1 -1
  37. package/dist/commands/query.js +17 -4
  38. package/dist/commands/query.js.map +1 -1
  39. package/dist/commands/risk.d.ts +2 -3
  40. package/dist/commands/risk.d.ts.map +1 -1
  41. package/dist/commands/risk.js +5 -12
  42. package/dist/commands/risk.js.map +1 -1
  43. package/dist/commands/run.d.ts.map +1 -1
  44. package/dist/commands/run.js +2 -9
  45. package/dist/commands/run.js.map +1 -1
  46. package/dist/commands/stats.d.ts.map +1 -1
  47. package/dist/commands/stats.js +6 -0
  48. package/dist/commands/stats.js.map +1 -1
  49. package/dist/commands/status.d.ts.map +1 -1
  50. package/dist/commands/status.js +45 -100
  51. package/dist/commands/status.js.map +1 -1
  52. package/dist/commands/update.d.ts +3 -1
  53. package/dist/commands/update.d.ts.map +1 -1
  54. package/dist/commands/update.js +3 -10
  55. package/dist/commands/update.js.map +1 -1
  56. package/dist/commands/watch.d.ts +1 -0
  57. package/dist/commands/watch.d.ts.map +1 -1
  58. package/dist/commands/watch.js +64 -21
  59. package/dist/commands/watch.js.map +1 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +22 -4
  62. package/dist/index.js.map +1 -1
  63. package/dist/install/atomic.d.ts +3 -0
  64. package/dist/install/atomic.d.ts.map +1 -1
  65. package/dist/install/atomic.js +59 -20
  66. package/dist/install/atomic.js.map +1 -1
  67. package/dist/install/hooks.d.ts +2 -2
  68. package/dist/install/hooks.d.ts.map +1 -1
  69. package/dist/install/hooks.js +48 -3
  70. package/dist/install/hooks.js.map +1 -1
  71. package/dist/install/index.d.ts +5 -3
  72. package/dist/install/index.d.ts.map +1 -1
  73. package/dist/install/index.js +173 -222
  74. package/dist/install/index.js.map +1 -1
  75. package/dist/install/platforms.d.ts +2 -3
  76. package/dist/install/platforms.d.ts.map +1 -1
  77. package/dist/install/platforms.js +1 -4
  78. package/dist/install/platforms.js.map +1 -1
  79. package/dist/install/settings-inject.d.ts +11 -4
  80. package/dist/install/settings-inject.d.ts.map +1 -1
  81. package/dist/install/settings-inject.js +60 -37
  82. package/dist/install/settings-inject.js.map +1 -1
  83. package/dist/install/state.d.ts +12 -0
  84. package/dist/install/state.d.ts.map +1 -0
  85. package/dist/install/state.js +85 -0
  86. package/dist/install/state.js.map +1 -0
  87. package/dist/native.d.ts +3 -0
  88. package/dist/native.d.ts.map +1 -1
  89. package/dist/native.js +22 -18
  90. package/dist/native.js.map +1 -1
  91. package/package.json +11 -8
  92. 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. 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":"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"}
@@ -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"}
@@ -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;AAIpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAkEtD"}
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"}