@nodesify/astria 1.1.0 → 1.2.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 (107) hide show
  1. package/README.md +2 -2
  2. package/dist/commands/add.js.map +1 -1
  3. package/dist/commands/affected.js.map +1 -1
  4. package/dist/commands/callflow.js.map +1 -1
  5. package/dist/commands/change-review.d.ts +73 -0
  6. package/dist/commands/change-review.d.ts.map +1 -0
  7. package/dist/commands/change-review.js +15 -0
  8. package/dist/commands/change-review.js.map +1 -0
  9. package/dist/commands/cluster.js.map +1 -1
  10. package/dist/commands/communities.js.map +1 -1
  11. package/dist/commands/diagnose.js.map +1 -1
  12. package/dist/commands/diff.js.map +1 -1
  13. package/dist/commands/digest.js.map +1 -1
  14. package/dist/commands/doctor.d.ts +6 -0
  15. package/dist/commands/doctor.d.ts.map +1 -0
  16. package/dist/commands/doctor.js +139 -0
  17. package/dist/commands/doctor.js.map +1 -0
  18. package/dist/commands/explain.js.map +1 -1
  19. package/dist/commands/export.js.map +1 -1
  20. package/dist/commands/feedback.js.map +1 -1
  21. package/dist/commands/global.d.ts.map +1 -1
  22. package/dist/commands/global.js +3 -1
  23. package/dist/commands/global.js.map +1 -1
  24. package/dist/commands/god-nodes.js.map +1 -1
  25. package/dist/commands/health.js.map +1 -1
  26. package/dist/commands/history.js.map +1 -1
  27. package/dist/commands/hook-guard.js.map +1 -1
  28. package/dist/commands/hook.js.map +1 -1
  29. package/dist/commands/indexing-profile.d.ts +14 -0
  30. package/dist/commands/indexing-profile.d.ts.map +1 -0
  31. package/dist/commands/indexing-profile.js +74 -0
  32. package/dist/commands/indexing-profile.js.map +1 -0
  33. package/dist/commands/install.d.ts.map +1 -1
  34. package/dist/commands/install.js +52 -53
  35. package/dist/commands/install.js.map +1 -1
  36. package/dist/commands/llm-summary.js.map +1 -1
  37. package/dist/commands/map.js.map +1 -1
  38. package/dist/commands/mcp.js.map +1 -1
  39. package/dist/commands/merge-driver.d.ts.map +1 -1
  40. package/dist/commands/merge-driver.js +23 -11
  41. package/dist/commands/merge-driver.js.map +1 -1
  42. package/dist/commands/merge-gate.d.ts.map +1 -1
  43. package/dist/commands/merge-gate.js +10 -7
  44. package/dist/commands/merge-gate.js.map +1 -1
  45. package/dist/commands/merge.js.map +1 -1
  46. package/dist/commands/neighbors.js.map +1 -1
  47. package/dist/commands/path.js.map +1 -1
  48. package/dist/commands/prs.d.ts.map +1 -1
  49. package/dist/commands/prs.js +139 -278
  50. package/dist/commands/prs.js.map +1 -1
  51. package/dist/commands/query.d.ts.map +1 -1
  52. package/dist/commands/query.js +13 -3
  53. package/dist/commands/query.js.map +1 -1
  54. package/dist/commands/risk.d.ts +2 -3
  55. package/dist/commands/risk.d.ts.map +1 -1
  56. package/dist/commands/risk.js +5 -12
  57. package/dist/commands/risk.js.map +1 -1
  58. package/dist/commands/run.d.ts.map +1 -1
  59. package/dist/commands/run.js +2 -9
  60. package/dist/commands/run.js.map +1 -1
  61. package/dist/commands/stats.js.map +1 -1
  62. package/dist/commands/status.d.ts.map +1 -1
  63. package/dist/commands/status.js +45 -100
  64. package/dist/commands/status.js.map +1 -1
  65. package/dist/commands/tree.js.map +1 -1
  66. package/dist/commands/update.d.ts +3 -1
  67. package/dist/commands/update.d.ts.map +1 -1
  68. package/dist/commands/update.js +3 -10
  69. package/dist/commands/update.js.map +1 -1
  70. package/dist/commands/watch.d.ts +1 -0
  71. package/dist/commands/watch.d.ts.map +1 -1
  72. package/dist/commands/watch.js +64 -21
  73. package/dist/commands/watch.js.map +1 -1
  74. package/dist/commands/wiki.js.map +1 -1
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +21 -4
  77. package/dist/index.js.map +1 -1
  78. package/dist/install/atomic.d.ts +3 -0
  79. package/dist/install/atomic.d.ts.map +1 -1
  80. package/dist/install/atomic.js +59 -20
  81. package/dist/install/atomic.js.map +1 -1
  82. package/dist/install/hooks.d.ts +3 -3
  83. package/dist/install/hooks.d.ts.map +1 -1
  84. package/dist/install/hooks.js +5 -3
  85. package/dist/install/hooks.js.map +1 -1
  86. package/dist/install/index.d.ts +5 -3
  87. package/dist/install/index.d.ts.map +1 -1
  88. package/dist/install/index.js +173 -222
  89. package/dist/install/index.js.map +1 -1
  90. package/dist/install/markdown-inject.js.map +1 -1
  91. package/dist/install/platforms.d.ts +2 -3
  92. package/dist/install/platforms.d.ts.map +1 -1
  93. package/dist/install/platforms.js +1 -4
  94. package/dist/install/platforms.js.map +1 -1
  95. package/dist/install/settings-inject.d.ts +11 -4
  96. package/dist/install/settings-inject.d.ts.map +1 -1
  97. package/dist/install/settings-inject.js +60 -37
  98. package/dist/install/settings-inject.js.map +1 -1
  99. package/dist/install/state.d.ts +12 -0
  100. package/dist/install/state.d.ts.map +1 -0
  101. package/dist/install/state.js +85 -0
  102. package/dist/install/state.js.map +1 -0
  103. package/dist/native.d.ts +3 -0
  104. package/dist/native.d.ts.map +1 -1
  105. package/dist/native.js +22 -18
  106. package/dist/native.js.map +1 -1
  107. package/package.json +23 -20
@@ -38,19 +38,15 @@ const pathMod = __importStar(require("path"));
38
38
  const native_1 = require("../native");
39
39
  const llm_summary_1 = require("./llm-summary");
40
40
  const version_1 = require("../version");
41
+ const indexing_profile_1 = require("./indexing-profile");
41
42
  async function runCommand(path, opts) {
42
43
  if (opts.judge && !opts.backend) {
43
44
  console.error('Error: --judge requires --backend (the judge wraps an engine; it cannot generate extractions)');
44
45
  process.exitCode = 1;
45
46
  return;
46
47
  }
47
- if (opts.backend)
48
- process.env.ASTRIA_LLM_BACKEND = opts.backend;
49
- if (opts.judge)
50
- process.env.ASTRIA_LLM_JUDGE = opts.judge;
51
- if (opts.model)
52
- process.env.ASTRIA_LLM_MODEL = opts.model;
53
48
  try {
49
+ opts = (0, indexing_profile_1.indexingOptions)(path, opts, false);
54
50
  console.log(`Running astria pipeline on: ${path}`);
55
51
  const result = (0, native_1.runPipeline)(path, opts.dedup === false, opts.embed === true, opts.labelCommunities === true, opts.deep === true, version_1.VERSION);
56
52
  console.log(`Nodes added: ${result.nodesAdded}`);
@@ -67,9 +63,6 @@ async function runCommand(path, opts) {
67
63
  const merged = (0, native_1.globalAdd)(path, opts.as);
68
64
  console.log(`Global graph: repo '${merged.tag}' merged (${merged.nodesAdded} nodes, ${merged.edgesAdded} edges, ${merged.sameTypeEdges} same_type_as, ${merged.crossRepoCallEdges} cross-repo calls)`);
69
65
  }
70
- const benchmark = (0, native_1.tokenBenchmark)(path);
71
- if (benchmark)
72
- console.log(benchmark);
73
66
  }
74
67
  catch (e) {
75
68
  console.error(`Error: ${e.message || e}`);
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,gCAmCC;AAxCD,8CAAgC;AAChC,sCAA+E;AAC/E,+CAAgD;AAChD,wCAAqC;AAE9B,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,IAAuL;IAEvL,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAC;QAC/G,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC;IAChE,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1D,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,iBAAO,CAAC,CAAC;QACzI,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,IAAA,6BAAe,EAAC,MAAM,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAA,mBAAU,EAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,gBAAgB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,IAAA,kBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,GAAG,aAAa,MAAM,CAAC,UAAU,WAAW,MAAM,CAAC,UAAU,WAAW,MAAM,CAAC,aAAa,kBAAkB,MAAM,CAAC,kBAAkB,oBAAoB,CAAC,CAAC;QACzM,CAAC;QACD,MAAM,SAAS,GAAG,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC;QACvC,IAAI,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,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":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAY,OAAO,iCAAa;AAChC,sCAA+D;AAC/D,+CAAgD;AAChD,wCAAqC;AACrC,yDAAqD;AAE9C,KAAK,qBACV,IAAY,EACZ,IAAuL;IAEvL,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAC;QAC/G,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,IAAI,GAAG,IAAA,kCAAe,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,iBAAO,CAAC,CAAC;QACzI,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,IAAA,6BAAe,EAAC,MAAM,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAA,mBAAU,EAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,gBAAgB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,IAAA,kBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,GAAG,aAAa,MAAM,CAAC,UAAU,WAAW,MAAM,CAAC,UAAU,WAAW,MAAM,CAAC,aAAa,kBAAkB,MAAM,CAAC,kBAAkB,oBAAoB,CAAC,CAAC;QACzM,CAAC;IACH,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":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":";;AAEA,oCAuBC;AAzBD,sCAAuC;AAEhC,KAAK,UAAU,YAAY,CAAC,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;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 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAMA,wBAAsB,aAAa,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAsH1E"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAyC1E"}
@@ -2,112 +2,57 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.statusCommand = statusCommand;
4
4
  const fs_1 = require("fs");
5
+ const path_1 = require("path");
5
6
  const native_1 = require("../native");
6
- const STALE_THRESHOLD = 30;
7
- const VERY_STALE_THRESHOLD = 120;
8
7
  async function statusCommand(opts) {
9
- const dbPath = `${opts.graph}/.astria/db.sqlite`;
10
- const graphJsonPath = `${opts.graph}/.astria/graph.json`;
11
- if (!(0, fs_1.existsSync)(dbPath)) {
12
- if (opts.json) {
13
- console.log(JSON.stringify({ status: 'missing' }, null, 2));
14
- }
15
- else {
16
- console.log('Status: no graph found');
17
- console.log('Run `astria run .` to build the graph');
18
- }
19
- return;
20
- }
21
- let stats;
22
- try {
23
- stats = (0, native_1.graphStats)(opts.graph);
24
- }
25
- catch (e) {
26
- console.log('Status: error reading graph database');
27
- console.log(e.message || String(e));
28
- process.exitCode = 1;
29
- return;
30
- }
31
- if (stats.nodeCount === 0) {
32
- if (opts.json) {
33
- console.log(JSON.stringify({ status: 'empty', nodes: 0 }, null, 2));
34
- }
35
- else {
36
- console.log('Status: empty graph (0 nodes)');
37
- console.log('Run `astria run .` to populate the graph');
38
- }
39
- return;
40
- }
41
- // Build provenance (which astria and extraction rules built the graph);
42
- // graphs from before stamping simply report nulls.
43
- let build;
44
8
  try {
45
- build = (0, native_1.graphBuildInfo)(opts.graph);
46
- }
47
- catch {
48
- build = undefined;
49
- }
50
- if (!(0, fs_1.existsSync)(graphJsonPath)) {
51
- if (opts.json) {
52
- console.log(JSON.stringify({ status: 'incomplete', nodes: stats.nodeCount, edges: stats.edgeCount }, null, 2));
9
+ if (!(0, fs_1.existsSync)((0, path_1.join)(opts.graph, '.astria', 'db.sqlite'))) {
10
+ console.log(opts.json ? JSON.stringify({ status: 'missing' }) : 'Status: missing — run `astria run .`');
11
+ return;
53
12
  }
13
+ const stats = (0, native_1.graphStats)(opts.graph);
14
+ const build = (0, native_1.graphBuildInfo)(opts.graph);
15
+ const freshness = (0, native_1.graphFreshness)(opts.graph);
16
+ const published = Number(freshness.graphBuiltAt);
17
+ const ageMinutes = freshness.graphBuiltAt && Number.isFinite(published)
18
+ ? Math.max(0, (Date.now() / 1000 - published) / 60) : null;
19
+ const result = {
20
+ ...freshness,
21
+ status: stats.nodeCount === 0 ? 'empty' : freshness.status,
22
+ ageMinutes,
23
+ nodes: stats.nodeCount, edges: stats.edgeCount, communities: stats.communityCount, files: stats.fileCount,
24
+ builtAt: freshness.graphBuiltAt,
25
+ astriaVersion: build.astriaVersion,
26
+ extractionHashVersion: build.extractionHashVersion,
27
+ currentExtractionHashVersion: build.currentExtractionHashVersion,
28
+ };
29
+ if (opts.json)
30
+ console.log(JSON.stringify(result, null, 2));
54
31
  else {
55
- console.log(`Status: incomplete (db has ${stats.nodeCount} nodes but no graph.json)`);
56
- console.log('Run `astria run .` to complete the build');
32
+ console.log(`Status: ${result.status}`);
33
+ console.log(`Source changes: ${freshness.added} added, ${freshness.modified} modified, ${freshness.deleted} deleted`);
34
+ console.log(`Graph age: ${ageMinutes === null ? 'unknown' : `${Math.round(ageMinutes)} min`}`);
35
+ console.log(`Nodes: ${stats.nodeCount}; edges: ${stats.edgeCount}; communities: ${stats.communityCount}; files: ${stats.fileCount}`);
36
+ console.log(`Artifacts: ${freshness.artifactsConsistent ? 'consistent' : 'incomplete or mismatched'}`);
37
+ console.log(`Source check: ${freshness.filesChecked} files, ${freshness.checkMilliseconds} ms (content hashes)`);
38
+ if (freshness.extractionOutdated)
39
+ console.log('Extraction rules changed; run `astria update .`');
40
+ if (freshness.staleExternalIndexes.length)
41
+ console.log(`Compiler indexes need reimport: ${freshness.staleExternalIndexes.join(', ')}`);
42
+ if (freshness.error)
43
+ console.log(`Freshness unavailable: ${freshness.error}`);
44
+ if (result.status !== 'fresh')
45
+ console.log('Recommendation: run `astria update .`');
57
46
  }
58
- return;
59
- }
60
- const mtime = (0, fs_1.statSync)(graphJsonPath).mtimeMs;
61
- const ageMinutes = Math.round((Date.now() - mtime) / 60000);
62
- let staleness;
63
- if (ageMinutes <= STALE_THRESHOLD) {
64
- staleness = 'fresh';
65
- }
66
- else if (ageMinutes <= VERY_STALE_THRESHOLD) {
67
- staleness = 'stale';
68
- }
69
- else {
70
- staleness = 'very_stale';
71
- }
72
- // A graph extracted by older rules needs re-extraction even when the file
73
- // manifest is unchanged; the mismatch is the true freshness signal.
74
- const extractionOutdated = build?.extractionHashVersion != null &&
75
- build.extractionHashVersion !== build.currentExtractionHashVersion;
76
- if (opts.json) {
77
- console.log(JSON.stringify({
78
- status: staleness,
79
- ageMinutes,
80
- nodes: stats.nodeCount,
81
- edges: stats.edgeCount,
82
- communities: stats.communityCount,
83
- files: stats.fileCount,
84
- builtAt: build?.graphPublishedAt ?? null,
85
- astriaVersion: build?.astriaVersion ?? null,
86
- extractionHashVersion: build?.extractionHashVersion ?? null,
87
- currentExtractionHashVersion: build?.currentExtractionHashVersion ?? null,
88
- extractionOutdated,
89
- }, null, 2));
90
- return;
91
- }
92
- console.log(`Status: ${staleness} (${ageMinutes} min ago)`);
93
- console.log(`Nodes: ${stats.nodeCount}`);
94
- console.log(`Edges: ${stats.edgeCount}`);
95
- console.log(`Communities: ${stats.communityCount}`);
96
- console.log(`Files tracked: ${stats.fileCount}`);
97
- if (build?.graphPublishedAt) {
98
- // Stored as unix seconds; render ISO so humans can read it.
99
- const when = new Date(Number(build.graphPublishedAt) * 1000);
100
- const builtAt = Number.isFinite(when.getTime()) ? when.toISOString() : build.graphPublishedAt;
101
- const by = build.astriaVersion ? ` by astria ${build.astriaVersion}` : '';
102
- const extraction = build.extractionHashVersion ? ` (extraction ${build.extractionHashVersion})` : '';
103
- console.log(`Built: ${builtAt}${by}${extraction}`);
104
- }
105
- if (extractionOutdated) {
106
- console.log(`Warning: graph was built with extraction ${build?.extractionHashVersion}; this astria uses ${build?.currentExtractionHashVersion} — re-extract with \`astria update .\``);
107
- return;
108
- }
109
- if (staleness === 'stale' || staleness === 'very_stale') {
110
- console.log(`Recommendation: run \`astria update .\` to refresh`);
47
+ if (freshness.error)
48
+ process.exitCode = 1;
49
+ }
50
+ catch (error) {
51
+ if (opts.json)
52
+ console.log(JSON.stringify({ status: 'unknown', error: error.message || String(error) }));
53
+ else
54
+ console.error(`Error reading graph status: ${error.message || error}`);
55
+ process.exitCode = 1;
111
56
  }
112
57
  }
113
58
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/commands/tree.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,kCAgBC;AAnBD,2CAA6B;AAC7B,sCAAuC;AAEhC,KAAK,UAAU,WAAW,CAAC,IAIjC;IACC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,GAAG;YACV,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,eAAe,QAAQ,EAAE,CAAC,CAAC;IAChE,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":"tree.js","sourceRoot":"","sources":["../../src/commands/tree.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAY,IAAI,iCAAa;AAC7B,sCAAuC;AAEhC,KAAK,sBAAsB,IAIjC;IACC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,GAAG;YACV,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,eAAe,QAAQ,EAAE,CAAC,CAAC;IAChE,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,4 +1,6 @@
1
1
  export interface UpdateOptions {
2
+ refreshPolicy?: boolean;
3
+ llmBudget?: string;
2
4
  dedup?: boolean;
3
5
  backend?: string;
4
6
  judge?: string;
@@ -6,7 +8,7 @@ export interface UpdateOptions {
6
8
  embed?: boolean;
7
9
  labelCommunities?: boolean;
8
10
  deep?: boolean;
9
- /** Suppress progress lines and the token benchmark (used by git hooks). */
11
+ /** Suppress progress lines (used by git hooks). */
10
12
  quiet?: boolean;
11
13
  /** Skip when the graph was published less than N minutes ago (used by git hooks). */
12
14
  ifStale?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2EAA2E;IAC3E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiBD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,iBAoCzE"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiBD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,iBAgCzE"}
@@ -39,6 +39,7 @@ const fs_1 = require("fs");
39
39
  const native_1 = require("../native");
40
40
  const llm_summary_1 = require("./llm-summary");
41
41
  const version_1 = require("../version");
42
+ const indexing_profile_1 = require("./indexing-profile");
42
43
  /// Age of the published graph in minutes, or null when there is nothing to
43
44
  /// measure (missing database, or a graph built before provenance stamping).
44
45
  /// Hook-driven rebuilds use this to skip runs that would change nothing.
@@ -62,16 +63,11 @@ async function updateCommand(path, opts = {}) {
62
63
  process.exitCode = 1;
63
64
  return;
64
65
  }
65
- if (opts.backend)
66
- process.env.ASTRIA_LLM_BACKEND = opts.backend;
67
- if (opts.judge)
68
- process.env.ASTRIA_LLM_JUDGE = opts.judge;
69
- if (opts.model)
70
- process.env.ASTRIA_LLM_MODEL = opts.model;
71
66
  try {
67
+ opts = (0, indexing_profile_1.indexingOptions)(path, opts, true);
72
68
  if (opts.ifStale && opts.ifStale > 0) {
73
69
  const age = pipelineAgeMinutes(path);
74
- if (age !== null && age < opts.ifStale) {
70
+ if (age !== null && age < opts.ifStale && (0, native_1.graphFreshness)(path).status === 'fresh') {
75
71
  if (!opts.quiet)
76
72
  console.log(`Graph is fresh (${age} min old), skipping incremental rebuild`);
77
73
  return;
@@ -94,9 +90,6 @@ async function updateCommand(path, opts = {}) {
94
90
  if (!opts.quiet)
95
91
  console.log(`Wiki regenerated: ${articles} articles -> ${pathMod.join(wikiDir, 'index.md')}`);
96
92
  }
97
- const benchmark = (0, native_1.tokenBenchmark)(path);
98
- if (benchmark && !opts.quiet)
99
- console.log(benchmark);
100
93
  }
101
94
  catch (e) {
102
95
  console.error(`Error: ${e.message || e}`);
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare function watchCommand(watchPath: string, opts: {
2
2
  debounce: string;
3
+ maxWait?: string;
3
4
  }): Promise<void>;
4
5
  //# sourceMappingURL=watch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAoBA,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,iBAmG/E"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAoBA,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,iBAkIjG"}
@@ -59,6 +59,12 @@ async function watchCommand(watchPath, opts) {
59
59
  process.exitCode = 1;
60
60
  return;
61
61
  }
62
+ const maxWaitMs = Number(opts.maxWait ?? Math.max(debounceMs, Math.min(debounceMs * 5, 30_000)));
63
+ if (!Number.isFinite(maxWaitMs) || maxWaitMs <= 0) {
64
+ console.error('Error: --max-wait must be a positive number of milliseconds');
65
+ process.exitCode = 1;
66
+ return;
67
+ }
62
68
  const resolved = path.resolve(watchPath);
63
69
  if (!fs.existsSync(resolved) || !fs.statSync(resolved).isDirectory()) {
64
70
  console.error(`Error: "${resolved}" is not a valid directory`);
@@ -72,7 +78,20 @@ async function watchCommand(watchPath, opts) {
72
78
  // it inline would freeze the watcher for the whole build).
73
79
  let rebuildInFlight = false;
74
80
  let rebuildQueued = false;
81
+ let activeChild = null;
82
+ let stopped = false;
83
+ let maxWaitTimer = null;
84
+ const clearTimers = () => {
85
+ if (debounceTimer)
86
+ clearTimeout(debounceTimer);
87
+ if (maxWaitTimer)
88
+ clearTimeout(maxWaitTimer);
89
+ debounceTimer = maxWaitTimer = null;
90
+ };
75
91
  const runRebuild = () => {
92
+ clearTimers();
93
+ if (stopped)
94
+ return;
76
95
  if (rebuildInFlight) {
77
96
  rebuildQueued = true;
78
97
  return;
@@ -80,25 +99,39 @@ async function watchCommand(watchPath, opts) {
80
99
  rebuildInFlight = true;
81
100
  console.log(`\n[astria] ${pendingEvents.size} change event(s), rebuilding...`);
82
101
  pendingEvents.clear();
83
- const child = (0, child_process_1.spawn)(process.execPath, [process.argv[1], 'update', resolved], { stdio: 'inherit' });
84
- child.on('error', (err) => {
85
- console.error('[astria] Rebuild could not start:', err.message);
86
- });
87
- child.on('exit', (code) => {
88
- if (code !== 0) {
89
- console.error(`[astria] Rebuild exited with code ${code}`);
90
- }
102
+ let finished = false;
103
+ const complete = (code, error) => {
104
+ if (finished)
105
+ return;
106
+ finished = true;
107
+ activeChild = null;
91
108
  rebuildInFlight = false;
92
- if (rebuildQueued) {
109
+ if (error)
110
+ console.error('[astria] Rebuild could not start:', error.message);
111
+ else if (code !== 0 && !stopped)
112
+ console.error(`[astria] Rebuild exited with code ${code}`);
113
+ if (!stopped && rebuildQueued) {
93
114
  rebuildQueued = false;
94
115
  runRebuild();
95
116
  }
96
- });
117
+ };
118
+ try {
119
+ const child = (0, child_process_1.spawn)(process.execPath, [process.argv[1], 'update', resolved], { stdio: 'inherit' });
120
+ activeChild = child;
121
+ child.once('error', err => complete(null, err));
122
+ child.once('exit', code => complete(code));
123
+ }
124
+ catch (err) {
125
+ complete(null, err instanceof Error ? err : new Error(String(err)));
126
+ }
97
127
  };
98
128
  const scheduleRebuild = () => {
99
129
  if (debounceTimer)
100
130
  clearTimeout(debounceTimer);
101
131
  debounceTimer = setTimeout(runRebuild, debounceMs);
132
+ // Continuous edits cannot postpone reconciliation indefinitely.
133
+ if (!maxWaitTimer)
134
+ maxWaitTimer = setTimeout(runRebuild, maxWaitMs);
102
135
  };
103
136
  let watcher;
104
137
  try {
@@ -120,8 +153,7 @@ async function watchCommand(watchPath, opts) {
120
153
  watcher.on('error', (err) => {
121
154
  console.error(`[astria] Watcher failed:`, err.message || err);
122
155
  console.error('[astria] Stopping; restart the watcher to continue.');
123
- watcher.close();
124
- process.exitCode = 1;
156
+ stop(1);
125
157
  });
126
158
  }
127
159
  catch (err) {
@@ -131,19 +163,30 @@ async function watchCommand(watchPath, opts) {
131
163
  }
132
164
  console.log(`[astria] Watching ${resolved} (debounce: ${debounceMs}ms)`);
133
165
  console.log('[astria] Press Ctrl+C to stop');
134
- const stop = () => {
135
- console.log('\n[astria] Stopped.');
166
+ const stop = (exitCode = 0) => {
167
+ if (stopped)
168
+ return;
169
+ stopped = true;
170
+ clearTimers();
171
+ rebuildQueued = false;
172
+ pendingEvents.clear();
136
173
  watcher.close();
137
- process.exit(0);
174
+ process.exitCode = exitCode;
175
+ // This child belongs to this watcher; never terminate process categories.
176
+ activeChild?.kill('SIGTERM');
177
+ rl?.close();
178
+ console.log('\n[astria] Stopped.');
138
179
  };
180
+ let rl;
181
+ process.once('SIGINT', () => stop());
182
+ process.once('SIGTERM', () => stop());
139
183
  if (process.platform === 'win32') {
140
184
  const readline = require('readline');
141
- const rl = readline.createInterface({ input: process.stdin });
142
- rl.on('SIGINT', stop);
143
- }
144
- else {
145
- process.on('SIGINT', stop);
146
- process.on('SIGTERM', stop);
185
+ rl = readline.createInterface({ input: process.stdin });
186
+ rl.on('SIGINT', () => stop());
147
187
  }
188
+ // Install the watcher first so edits during startup are queued too.
189
+ pendingEvents.add('(startup reconciliation)');
190
+ runRebuild();
148
191
  }
149
192
  //# sourceMappingURL=watch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../src/commands/wiki.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,kCA0BC;AA7BD,2CAA6B;AAC7B,sCAAuD;AAEhD,KAAK,UAAU,WAAW,CAAC,IAKjC;IACC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,GAAG;YACV,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAA,uBAAc,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,aAAa,QAAQ,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,kDAAkD,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9D,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":"wiki.js","sourceRoot":"","sources":["../../src/commands/wiki.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAY,IAAI,iCAAa;AAC7B,sCAAuD;AAEhD,KAAK,sBAAsB,IAKjC;IACC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,GAAG;YACV,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAA,uBAAc,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,aAAa,QAAQ,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,kDAAkD,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9D,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;AAsCpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA4Y9B,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;AA4Z9B,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -35,6 +35,7 @@ const diff_1 = require("./commands/diff");
35
35
  const history_1 = require("./commands/history");
36
36
  const status_1 = require("./commands/status");
37
37
  const install_1 = require("./commands/install");
38
+ const doctor_1 = require("./commands/doctor");
38
39
  const hook_1 = require("./commands/hook");
39
40
  const merge_driver_1 = require("./commands/merge-driver");
40
41
  const digest_1 = require("./commands/digest");
@@ -62,23 +63,31 @@ program
62
63
  .action((path, opts) => (0, run_1.runCommand)(path, { ...opts, global: opts.global, as: opts.as }));
63
64
  program
64
65
  .command('update')
65
- .description('Run incremental AST-only rebuild')
66
+ .description('Refresh the graph using its saved indexing policy')
66
67
  .argument('<path>', 'Directory to update')
67
68
  .option('--no-dedup', 'Skip near-duplicate node merging')
69
+ .option('--dedup', 'Enable near-duplicate merging in the saved policy')
68
70
  .option('--backend <name>', 'Semantic LLM backend: claude, openai (any OpenAI-compatible), azure (Azure OpenAI), bedrock (AWS SigV4), kimi (Moonshot), or gemini')
69
71
  .option('--judge <name>', 'Decision layer over the backend: jev (TypeSafe System One — gates trivial files, re-judges relations/node types, adds calibrated edge confidence)')
70
72
  .option('--model <name>', 'Semantic LLM model name (backend-specific)')
71
73
  .option('--embed', 'Compute local embeddings: similar_to edges + semantic query recall (one-time ~615 MB local model download, then offline)')
74
+ .option('--no-embed', 'Disable local embeddings and remove their vectors and similarity edges')
72
75
  .option('--label-communities', 'Name communities thematically with one LLM call per changed community (requires a semantic backend)')
76
+ .option('--no-label-communities', 'Disable community naming in the saved policy')
73
77
  .option('--deep', 'Second extraction tier: LLM-linked cross-file concept edges, cached per file (requires a semantic backend)')
74
- .option('--quiet', 'Suppress progress lines and the token benchmark')
78
+ .option('--no-deep', 'Disable concept linking in the saved policy')
79
+ .option('--quiet', 'Suppress progress lines')
75
80
  .option('--if-stale <minutes>', 'Skip when the graph was updated less than N minutes ago')
76
- .action((path, opts) => (0, update_1.updateCommand)(path, { ...opts, ifStale: opts.ifStale ? Number(opts.ifStale) : undefined }));
81
+ .option('--refresh-policy', 'Explicitly replace the saved indexing policy with the supplied options')
82
+ .option('--llm-budget <n>', 'Maximum LLM tokens for an explicitly selected paid indexing policy')
83
+ .action((path, opts, command) => (0, update_1.updateCommand)(path, { ...opts, dedup: command.getOptionValueSource('dedup') === 'cli' ? opts.dedup : undefined,
84
+ ifStale: opts.ifStale ? Number(opts.ifStale) : undefined }));
77
85
  program
78
86
  .command('watch')
79
87
  .description('Watch for file changes and auto-rebuild')
80
88
  .argument('<path>', 'Directory to watch')
81
89
  .option('--debounce <ms>', 'Debounce interval in milliseconds', '3000')
90
+ .option('--max-wait <ms>', 'Maximum delay before indexing continuous edits', '15000')
82
91
  .action(watch_1.watchCommand);
83
92
  program
84
93
  .command('explain')
@@ -166,6 +175,8 @@ program
166
175
  .description('Blast radius of the current git diff: impacted symbols and communities, with a heuristic risk score for PRs')
167
176
  .option('--graph <path>', 'Path to project root', '.')
168
177
  .option('--staged', 'Only staged changes (git diff --cached) instead of the whole working tree')
178
+ .option('--base <ref>', 'Review changes from the merge base with this Git reference')
179
+ .option('--head <ref>', 'Review this Git revision instead of the working tree')
169
180
  .option('--json', 'Emit machine-readable JSON')
170
181
  .action(risk_1.riskCommand);
171
182
  program
@@ -248,7 +259,7 @@ program
248
259
  .description('Map open pull requests onto the knowledge graph: CI state, review status, worktree mapping, ranked review queue, merge-order risk')
249
260
  .argument('[count]', 'Number of PRs to analyze', '20')
250
261
  .option('--graph <path>', 'Path to project root', '.')
251
- .option('--conflicts', 'Flag PRs sharing communities (merge-order risk)')
262
+ .option('--conflicts', 'Flag shared changed/affected symbols for review coordination')
252
263
  .option('--triage', 'Compact per-PR triage lines instead of the full dashboard')
253
264
  .option('--queue', 'Print only the ranked review queue')
254
265
  .option('--json', 'Emit machine-readable JSON (ranked queue with all signals)')
@@ -271,6 +282,12 @@ program
271
282
  .option('--json', 'Emit machine-readable JSON')
272
283
  .action(status_1.statusCommand);
273
284
  (0, install_1.registerInstallCommand)(program);
285
+ program.command('doctor')
286
+ .description('Check installation, native runtime, integrations, permissions and graph compatibility without changing setup')
287
+ .option('--graph <path>', 'Project root', '.')
288
+ .option('--scope <scope>', 'project or user', 'project')
289
+ .option('--json', 'Machine-readable report; exit 1 on errors')
290
+ .action(doctor_1.doctorCommand);
274
291
  (0, hook_1.registerHookCommand)(program);
275
292
  const mergeDriverCmd = program
276
293
  .command('merge-driver')