@nodesify/astria 1.0.5 → 1.0.7

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 (80) hide show
  1. package/README.md +1 -1
  2. package/dist/commands/affected.d.ts +1 -0
  3. package/dist/commands/affected.d.ts.map +1 -1
  4. package/dist/commands/affected.js +9 -0
  5. package/dist/commands/affected.js.map +1 -1
  6. package/dist/commands/communities.d.ts +5 -0
  7. package/dist/commands/communities.d.ts.map +1 -0
  8. package/dist/commands/communities.js +31 -0
  9. package/dist/commands/communities.js.map +1 -0
  10. package/dist/commands/explain.d.ts +1 -0
  11. package/dist/commands/explain.d.ts.map +1 -1
  12. package/dist/commands/explain.js +4 -0
  13. package/dist/commands/explain.js.map +1 -1
  14. package/dist/commands/god-nodes.d.ts +5 -0
  15. package/dist/commands/god-nodes.d.ts.map +1 -0
  16. package/dist/commands/god-nodes.js +26 -0
  17. package/dist/commands/god-nodes.js.map +1 -0
  18. package/dist/commands/llm-summary.d.ts +1 -0
  19. package/dist/commands/llm-summary.d.ts.map +1 -1
  20. package/dist/commands/llm-summary.js +3 -2
  21. package/dist/commands/llm-summary.js.map +1 -1
  22. package/dist/commands/map.d.ts +1 -0
  23. package/dist/commands/map.d.ts.map +1 -1
  24. package/dist/commands/map.js +4 -0
  25. package/dist/commands/map.js.map +1 -1
  26. package/dist/commands/neighbors.d.ts +6 -0
  27. package/dist/commands/neighbors.d.ts.map +1 -0
  28. package/dist/commands/neighbors.js +42 -0
  29. package/dist/commands/neighbors.js.map +1 -0
  30. package/dist/commands/path.d.ts +1 -0
  31. package/dist/commands/path.d.ts.map +1 -1
  32. package/dist/commands/path.js +2 -2
  33. package/dist/commands/path.js.map +1 -1
  34. package/dist/commands/query.d.ts +2 -0
  35. package/dist/commands/query.d.ts.map +1 -1
  36. package/dist/commands/query.js +20 -0
  37. package/dist/commands/query.js.map +1 -1
  38. package/dist/commands/run.d.ts +1 -0
  39. package/dist/commands/run.d.ts.map +1 -1
  40. package/dist/commands/run.js +9 -1
  41. package/dist/commands/run.js.map +1 -1
  42. package/dist/commands/stats.d.ts +1 -0
  43. package/dist/commands/stats.d.ts.map +1 -1
  44. package/dist/commands/stats.js +4 -0
  45. package/dist/commands/stats.js.map +1 -1
  46. package/dist/commands/status.d.ts +1 -0
  47. package/dist/commands/status.d.ts.map +1 -1
  48. package/dist/commands/status.js +62 -6
  49. package/dist/commands/status.js.map +1 -1
  50. package/dist/commands/update.d.ts +8 -2
  51. package/dist/commands/update.d.ts.map +1 -1
  52. package/dist/commands/update.js +46 -8
  53. package/dist/commands/update.js.map +1 -1
  54. package/dist/commands/watch.d.ts.map +1 -1
  55. package/dist/commands/watch.js +2 -1
  56. package/dist/commands/watch.js.map +1 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +37 -2
  59. package/dist/index.js.map +1 -1
  60. package/dist/install/hooks.d.ts.map +1 -1
  61. package/dist/install/hooks.js +22 -10
  62. package/dist/install/hooks.js.map +1 -1
  63. package/dist/native.d.ts +3 -0
  64. package/dist/native.d.ts.map +1 -1
  65. package/dist/native.js +22 -3
  66. package/dist/native.js.map +1 -1
  67. package/dist/version.d.ts +2 -0
  68. package/dist/version.d.ts.map +1 -0
  69. package/dist/version.js +7 -0
  70. package/dist/version.js.map +1 -0
  71. package/package.json +8 -8
  72. package/skills/skill-aider.md +1 -1
  73. package/skills/skill-codex.md +3 -1
  74. package/skills/skill-copilot.md +3 -1
  75. package/skills/skill-cursor.md +3 -1
  76. package/skills/skill-gemini.md +3 -1
  77. package/skills/skill-kiro.md +3 -1
  78. package/skills/skill-opencode.md +3 -1
  79. package/skills/skill-trae.md +3 -1
  80. package/skills/skill.md +30 -4
package/README.md CHANGED
@@ -56,7 +56,7 @@ Large mode uses precomputed positions and disabled physics, starts with key node
56
56
 
57
57
  ## Supported languages
58
58
 
59
- Python, JavaScript, TypeScript, Rust, Go, Java, C, C++, Ruby, Swift, Scala, PHP, C#, Lua, Haskell, Elixir, Bash, Dart, Zig, CSS.
59
+ Python, JavaScript, TypeScript, Rust, Go, Java, C, C++, Ruby, Swift, Kotlin, Scala, PHP, C#, Lua, Haskell, Elixir, Bash, Dart, Zig, CSS, Terraform/HCL, PowerShell, Verilog/SystemVerilog, and Metal. See the [generated language table](https://nodesify.github.io/astria/docs/reference/language-support) for extensions and extraction details.
60
60
 
61
61
  ## AI platform integration
62
62
 
@@ -2,5 +2,6 @@ export declare function affectedCommand(node: string, opts: {
2
2
  graph: string;
3
3
  depth: string;
4
4
  relation?: string;
5
+ json?: boolean;
5
6
  }): Promise<void>;
6
7
  //# sourceMappingURL=affected.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"affected.d.ts","sourceRoot":"","sources":["../../src/commands/affected.ts"],"names":[],"mappings":"AAEA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,iBAuBA"}
1
+ {"version":3,"file":"affected.d.ts","sourceRoot":"","sources":["../../src/commands/affected.ts"],"names":[],"mappings":"AAEA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,iBAsCA"}
@@ -6,6 +6,15 @@ async function affectedCommand(node, opts) {
6
6
  try {
7
7
  const depth = parseInt(opts.depth, 10) || 2;
8
8
  const result = (0, native_1.affectedNode)(opts.graph, node, depth, opts.relation);
9
+ if (opts.json) {
10
+ console.log(JSON.stringify({
11
+ seed: result.seed,
12
+ seedLabel: result.seedLabel,
13
+ total: result.total,
14
+ hits: result.hits,
15
+ }, null, 2));
16
+ return;
17
+ }
9
18
  if (result.total === 0) {
10
19
  console.log(`Nothing references "${result.seedLabel}" — no blast radius.`);
11
20
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"affected.js","sourceRoot":"","sources":["../../src/commands/affected.ts"],"names":[],"mappings":";;AAEA,0CA2BC;AA7BD,sCAAyC;AAElC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,IAInD;IACC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,SAAS,sBAAsB,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,SAAS,cAAc,KAAK,MAAM,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC5B,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1D,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
+ {"version":3,"file":"affected.js","sourceRoot":"","sources":["../../src/commands/affected.ts"],"names":[],"mappings":";;AAEA,0CA2CC;AA7CD,sCAAyC;AAElC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,IAKnD;IACC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;gBACE,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,SAAS,sBAAsB,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,SAAS,cAAc,KAAK,MAAM,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC5B,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1D,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"}
@@ -0,0 +1,5 @@
1
+ export declare function communitiesCommand(opts: {
2
+ graph: string;
3
+ json?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=communities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"communities.d.ts","sourceRoot":"","sources":["../../src/commands/communities.ts"],"names":[],"mappings":"AAEA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAwB/E"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.communitiesCommand = communitiesCommand;
4
+ const native_1 = require("../native");
5
+ async function communitiesCommand(opts) {
6
+ try {
7
+ const result = (0, native_1.listCommunities)(opts.graph);
8
+ if (opts.json) {
9
+ console.log(JSON.stringify(result, null, 2));
10
+ return;
11
+ }
12
+ const modularity = result.modularity != null ? ` (modularity ${result.modularity.toFixed(3)})` : '';
13
+ const llmNamed = result.communities.filter((c) => c.labelSource === 'llm').length;
14
+ console.log(`${result.communities.length} communities${modularity}:`);
15
+ for (const c of result.communities) {
16
+ // An LLM label is a summary of the code; a hub label is a fact about it.
17
+ const sourceTag = c.labelSource === 'llm' ? '' : ' [hub]';
18
+ const summary = c.summary ? ` — ${c.summary}` : '';
19
+ const cohesion = c.cohesion != null ? c.cohesion.toFixed(2) : '-';
20
+ console.log(` [${c.id}] ${c.label}${sourceTag} - ${c.size} nodes, cohesion ${cohesion}${summary}`);
21
+ }
22
+ if (llmNamed > 0) {
23
+ console.log(`\n${llmNamed} communities carry LLM thematic labels (astria run --label-communities).`);
24
+ }
25
+ }
26
+ catch (e) {
27
+ console.error(`Error: ${e.message || e}`);
28
+ process.exitCode = 1;
29
+ }
30
+ }
31
+ //# sourceMappingURL=communities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"communities.js","sourceRoot":"","sources":["../../src/commands/communities.ts"],"names":[],"mappings":";;AAEA,gDAwBC;AA1BD,sCAA4C;AAErC,KAAK,UAAU,kBAAkB,CAAC,IAAuC;IAC9E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,wBAAe,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,eAAe,UAAU,GAAG,CAAC,CAAC;QACtE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,yEAAyE;YACzE,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC1D,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,GAAG,SAAS,MAAM,CAAC,CAAC,IAAI,oBAAoB,QAAQ,GAAG,OAAO,EAAE,CAAC,CAAC;QACtG,CAAC;QACD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,0EAA0E,CAAC,CAAC;QACvG,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,4 +1,5 @@
1
1
  export declare function explainCommand(node: string, opts: {
2
2
  graph: string;
3
+ json?: boolean;
3
4
  }): Promise<void>;
4
5
  //# sourceMappingURL=explain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../src/commands/explain.ts"],"names":[],"mappings":"AAEA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,iBAkCzE"}
1
+ {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../src/commands/explain.ts"],"names":[],"mappings":"AAEA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAsCzF"}
@@ -9,6 +9,10 @@ async function explainCommand(node, opts) {
9
9
  console.log(`Node "${node}" not found`);
10
10
  return;
11
11
  }
12
+ if (opts.json) {
13
+ console.log(JSON.stringify(result, null, 2));
14
+ return;
15
+ }
12
16
  console.log(`Node: ${result.label}`);
13
17
  console.log(` ID: ${result.id}`);
14
18
  console.log(` File: ${result.sourceFile}${result.sourceLine != null ? `:${result.sourceLine}` : ''}`);
@@ -1 +1 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/commands/explain.ts"],"names":[],"mappings":";;AAEA,wCAkCC;AApCD,sCAAwC;AAEjC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAuB;IACxE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,aAAa,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CACT,WAAW,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1F,CAAC;QACF,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;YACxD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACnD,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,OAAO,CAAC,CAAC;YAC7C,CAAC;QACH,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
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/commands/explain.ts"],"names":[],"mappings":";;AAEA,wCAsCC;AAxCD,sCAAwC;AAEjC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAuC;IACxF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,aAAa,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CACT,WAAW,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1F,CAAC;QACF,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;YACxD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACnD,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,OAAO,CAAC,CAAC;YAC7C,CAAC;QACH,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"}
@@ -0,0 +1,5 @@
1
+ export declare function godNodesCommand(opts: {
2
+ graph: string;
3
+ json?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=god-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"god-nodes.d.ts","sourceRoot":"","sources":["../../src/commands/god-nodes.ts"],"names":[],"mappings":"AAEA,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAmB5E"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.godNodesCommand = godNodesCommand;
4
+ const native_1 = require("../native");
5
+ async function godNodesCommand(opts) {
6
+ try {
7
+ const nodes = (0, native_1.godNodes)(opts.graph);
8
+ if (opts.json) {
9
+ console.log(JSON.stringify(nodes, null, 2));
10
+ return;
11
+ }
12
+ if (nodes.length === 0) {
13
+ console.log('No hub nodes found');
14
+ return;
15
+ }
16
+ console.log('Top hubs:');
17
+ for (const n of nodes) {
18
+ console.log(` ${n.label} (degree ${n.degree}, community ${n.community ?? '-'})`);
19
+ }
20
+ }
21
+ catch (e) {
22
+ console.error(`Error: ${e.message || e}`);
23
+ process.exitCode = 1;
24
+ }
25
+ }
26
+ //# sourceMappingURL=god-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"god-nodes.js","sourceRoot":"","sources":["../../src/commands/god-nodes.ts"],"names":[],"mappings":";;AAEA,0CAmBC;AArBD,sCAAqC;AAE9B,KAAK,UAAU,eAAe,CAAC,IAAuC;IAC3E,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,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,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,SAAS,IAAI,GAAG,GAAG,CAAC,CAAC;QACpF,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,5 +1,6 @@
1
1
  interface PipelineResultSummary {
2
2
  semanticCached: number;
3
+ semanticGated: number;
3
4
  llmInputTokens: number;
4
5
  llmOutputTokens: number;
5
6
  llmApiCalls: number;
@@ -1 +1 @@
1
- {"version":3,"file":"llm-summary.d.ts","sourceRoot":"","sources":["../../src/commands/llm-summary.ts"],"names":[],"mappings":"AAGA,UAAU,qBAAqB;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAenE"}
1
+ {"version":3,"file":"llm-summary.d.ts","sourceRoot":"","sources":["../../src/commands/llm-summary.ts"],"names":[],"mappings":"AAGA,UAAU,qBAAqB;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAgBnE"}
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.printLlmSummary = printLlmSummary;
4
4
  function printLlmSummary(result) {
5
- if (result.llmApiCalls > 0) {
5
+ if (result.llmApiCalls > 0 || result.semanticGated > 0) {
6
6
  const cached = result.semanticCached > 0 ? `, ${result.semanticCached} files from cache` : '';
7
- console.log(`LLM usage: ${result.llmApiCalls} API calls, ${result.llmInputTokens} in / ${result.llmOutputTokens} out tokens${cached}`);
7
+ const gated = result.semanticGated > 0 ? `, ${result.semanticGated} files gated by Jev` : '';
8
+ console.log(`LLM usage: ${result.llmApiCalls} API calls, ${result.llmInputTokens} in / ${result.llmOutputTokens} out tokens${cached}${gated}`);
8
9
  }
9
10
  if (result.communitiesLabeled >= 0) {
10
11
  const reused = result.communitiesReused > 0 ? `, ${result.communitiesReused} unchanged` : '';
@@ -1 +1 @@
1
- {"version":3,"file":"llm-summary.js","sourceRoot":"","sources":["../../src/commands/llm-summary.ts"],"names":[],"mappings":";;AAcA,0CAeC;AAfD,SAAgB,eAAe,CAAC,MAA6B;IAC3D,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,cAAc,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,OAAO,CAAC,GAAG,CACT,cAAc,MAAM,CAAC,WAAW,eAAe,MAAM,CAAC,cAAc,SAAS,MAAM,CAAC,eAAe,cAAc,MAAM,EAAE,CAC1H,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,iBAAiB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,iBAAiB,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3G,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,kBAAkB,GAAG,MAAM,GAAG,MAAM,wBAAwB,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,SAAS,WAAW,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"llm-summary.js","sourceRoot":"","sources":["../../src/commands/llm-summary.ts"],"names":[],"mappings":";;AAeA,0CAgBC;AAhBD,SAAgB,eAAe,CAAC,MAA6B;IAC3D,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,cAAc,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,aAAa,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,OAAO,CAAC,GAAG,CACT,cAAc,MAAM,CAAC,WAAW,eAAe,MAAM,CAAC,cAAc,SAAS,MAAM,CAAC,eAAe,cAAc,MAAM,GAAG,KAAK,EAAE,CAClI,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,iBAAiB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,iBAAiB,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3G,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,kBAAkB,GAAG,MAAM,GAAG,MAAM,wBAAwB,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,SAAS,WAAW,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
@@ -2,5 +2,6 @@ export declare function mapCommand(opts: {
2
2
  graph: string;
3
3
  budget: string;
4
4
  detail?: string;
5
+ json?: boolean;
5
6
  }): Promise<void>;
6
7
  //# sourceMappingURL=map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/commands/map.ts"],"names":[],"mappings":"AAEA,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,iBASA"}
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/commands/map.ts"],"names":[],"mappings":"AAEA,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,iBAaA"}
@@ -6,6 +6,10 @@ async function mapCommand(opts) {
6
6
  try {
7
7
  const budget = parseInt(opts.budget || '2000', 10);
8
8
  const result = (0, native_1.repoMap)(opts.graph, budget, opts.detail);
9
+ if (opts.json) {
10
+ console.log(JSON.stringify({ filesShown: result.filesShown, text: result.text }, null, 2));
11
+ return;
12
+ }
9
13
  console.log(result.text);
10
14
  }
11
15
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/commands/map.ts"],"names":[],"mappings":";;AAEA,gCAaC;AAfD,sCAAoC;AAE7B,KAAK,UAAU,UAAU,CAAC,IAIhC;IACC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,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":"map.js","sourceRoot":"","sources":["../../src/commands/map.ts"],"names":[],"mappings":";;AAEA,gCAkBC;AApBD,sCAAoC;AAE7B,KAAK,UAAU,UAAU,CAAC,IAKhC;IACC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3F,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,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"}
@@ -0,0 +1,6 @@
1
+ export declare function neighborsCommand(node: string, opts: {
2
+ graph: string;
3
+ relation?: string;
4
+ json?: boolean;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=neighbors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neighbors.d.ts","sourceRoot":"","sources":["../../src/commands/neighbors.ts"],"names":[],"mappings":"AAEA,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBA0C3D"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.neighborsCommand = neighborsCommand;
4
+ const native_1 = require("../native");
5
+ async function neighborsCommand(node, opts) {
6
+ try {
7
+ const result = (0, native_1.explainNode)(opts.graph, node);
8
+ if (!result) {
9
+ console.error(`Node not found: ${node}`);
10
+ process.exitCode = 1;
11
+ return;
12
+ }
13
+ const neighbors = opts.relation
14
+ ? result.neighbors.filter((n) => n.relation === opts.relation)
15
+ : result.neighbors;
16
+ if (opts.json) {
17
+ console.log(JSON.stringify({ node: result.label, id: result.id, file: result.sourceFile, neighbors }, null, 2));
18
+ return;
19
+ }
20
+ const filter = opts.relation ? ` via ${opts.relation}` : '';
21
+ console.log(`Neighbors of ${result.label} (${neighbors.length}${filter}):`);
22
+ if (neighbors.length === 0) {
23
+ console.log(' (no matching neighbors)');
24
+ return;
25
+ }
26
+ for (const n of neighbors) {
27
+ const loc = n.neighborLine != null ? ` (${n.neighborFile}:${n.neighborLine})` : '';
28
+ console.log(` ${n.neighborLabel} [${n.relation}]${loc}`);
29
+ }
30
+ // The native layer caps the returned list; only the unfiltered view
31
+ // hides entries.
32
+ if (!opts.relation && result.neighborCount > result.neighbors.length) {
33
+ const remaining = result.neighborCount - result.neighbors.length;
34
+ console.log(` ... and ${remaining} more`);
35
+ }
36
+ }
37
+ catch (e) {
38
+ console.error(`Error: ${e.message || e}`);
39
+ process.exitCode = 1;
40
+ }
41
+ }
42
+ //# sourceMappingURL=neighbors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neighbors.js","sourceRoot":"","sources":["../../src/commands/neighbors.ts"],"names":[],"mappings":";;AAEA,4CA4CC;AA9CD,sCAAwC;AAEjC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,IAA0D;IAE1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ;YAC7B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC;YACnE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,EACzE,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;QAC5E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,oEAAoE;QACpE,iBAAiB;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACrE,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,OAAO,CAAC,CAAC;QAC7C,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"}
@@ -2,5 +2,6 @@ export declare function pathCommand(source: string, target: string, opts: {
2
2
  graph: string;
3
3
  directed?: boolean;
4
4
  detail?: string;
5
+ json?: boolean;
5
6
  }): Promise<void>;
6
7
  //# sourceMappingURL=path.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/commands/path.ts"],"names":[],"mappings":"AAEA,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,iBAYA"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/commands/path.ts"],"names":[],"mappings":"AAEA,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,iBAkBA"}
@@ -5,8 +5,8 @@ const native_1 = require("../native");
5
5
  async function pathCommand(source, target, opts) {
6
6
  try {
7
7
  const result = (0, native_1.findPath)(opts.graph, source, target, opts.directed ?? false, opts.detail);
8
- if (!result.found) {
9
- console.log(result.text);
8
+ if (opts.json) {
9
+ console.log(JSON.stringify({ source, target, found: result.found, hops: result.hops, text: result.text }, null, 2));
10
10
  return;
11
11
  }
12
12
  console.log(result.text);
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/commands/path.ts"],"names":[],"mappings":";;AAEA,kCAgBC;AAlBD,sCAAqC;AAE9B,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,MAAc,EAAE,IAIjE;IACC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,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":"path.js","sourceRoot":"","sources":["../../src/commands/path.ts"],"names":[],"mappings":";;AAEA,kCAuBC;AAzBD,sCAAqC;AAE9B,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,MAAc,EAAE,IAKjE;IACC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAC7E,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,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"}
@@ -6,5 +6,7 @@ export declare function queryCommand(question: string, opts: {
6
6
  directed?: boolean;
7
7
  detail?: string;
8
8
  cursor?: string;
9
+ noEmbed?: boolean;
10
+ json?: boolean;
9
11
  }): Promise<void>;
10
12
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,iBAqBA"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,iBA8CA"}
@@ -8,7 +8,27 @@ async function queryCommand(question, opts) {
8
8
  const depth = parseInt(opts.depth || '2', 10);
9
9
  const budget = parseInt(opts.budget || '2000', 10);
10
10
  const cursor = parseInt(opts.cursor || '0', 10) || 0;
11
+ // The native layer reads ASTRIA_EMBED at query time; the flag shares the
12
+ // same switch so CLI and MCP callers get identical behavior.
13
+ if (opts.noEmbed)
14
+ process.env.ASTRIA_EMBED = 'off';
11
15
  const result = (0, native_1.queryGraph)(opts.graph, question, mode, depth, budget, opts.directed ?? false, opts.detail, cursor);
16
+ if (opts.json) {
17
+ console.log(JSON.stringify({
18
+ question,
19
+ mode,
20
+ depth,
21
+ budget,
22
+ directed: opts.directed ?? false,
23
+ nodeCount: result.nodeCount,
24
+ edgeCount: result.edgeCount,
25
+ // Present when the node list was truncated; pass back as --cursor.
26
+ nextCursor: result.nextCursor ?? null,
27
+ graphBuiltAt: result.graphBuiltAt ?? null,
28
+ text: result.text,
29
+ }, null, 2));
30
+ return;
31
+ }
12
32
  process.stdout.write(result.text);
13
33
  }
14
34
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":";;AAEA,oCA6BC;AA/BD,sCAAuC;AAEhC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,IAQpD;IACC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAA,mBAAU,EACvB,IAAI,CAAC,KAAK,EACV,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,MAAM,EACN,IAAI,CAAC,QAAQ,IAAI,KAAK,EACtB,IAAI,CAAC,MAAM,EACX,MAAM,CACP,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":";;AAEA,oCAwDC;AA1DD,sCAAuC;AAEhC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,IAUpD;IACC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACrD,yEAAyE;QACzE,6DAA6D;QAC7D,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,mBAAU,EACvB,IAAI,CAAC,KAAK,EACV,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,MAAM,EACN,IAAI,CAAC,QAAQ,IAAI,KAAK,EACtB,IAAI,CAAC,MAAM,EACX,MAAM,CACP,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;gBACE,QAAQ;gBACR,IAAI;gBACJ,KAAK;gBACL,MAAM;gBACN,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;gBAChC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,mEAAmE;gBACnE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;gBACrC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;gBACzC,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export declare function runCommand(path: string, opts: {
2
2
  dedup?: boolean;
3
3
  backend?: string;
4
+ judge?: string;
4
5
  model?: string;
5
6
  wiki?: boolean;
6
7
  embed?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,iBA2BxK"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAKA,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,iBAiCxL"}
@@ -37,14 +37,22 @@ exports.runCommand = runCommand;
37
37
  const pathMod = __importStar(require("path"));
38
38
  const native_1 = require("../native");
39
39
  const llm_summary_1 = require("./llm-summary");
40
+ const version_1 = require("../version");
40
41
  async function runCommand(path, opts) {
42
+ if (opts.judge && !opts.backend) {
43
+ console.error('Error: --judge requires --backend (the judge wraps an engine; it cannot generate extractions)');
44
+ process.exitCode = 1;
45
+ return;
46
+ }
41
47
  if (opts.backend)
42
48
  process.env.ASTRIA_LLM_BACKEND = opts.backend;
49
+ if (opts.judge)
50
+ process.env.ASTRIA_LLM_JUDGE = opts.judge;
43
51
  if (opts.model)
44
52
  process.env.ASTRIA_LLM_MODEL = opts.model;
45
53
  try {
46
54
  console.log(`Running astria pipeline on: ${path}`);
47
- const result = (0, native_1.runPipeline)(path, opts.dedup === false, opts.embed === true, opts.labelCommunities === true, opts.deep === true);
55
+ const result = (0, native_1.runPipeline)(path, opts.dedup === false, opts.embed === true, opts.labelCommunities === true, opts.deep === true, version_1.VERSION);
48
56
  console.log(`Nodes added: ${result.nodesAdded}`);
49
57
  console.log(`Edges added: ${result.edgesAdded}`);
50
58
  console.log(`Communities: ${result.communities}`);
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,gCA6BC;AAjCD,8CAAgC;AAChC,sCAA+E;AAC/E,+CAAgD;AAEzC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,IAAuK;IAEvK,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,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,CAAC,CAAC;QAChI,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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,4 +1,5 @@
1
1
  export declare function statsCommand(opts: {
2
2
  graph: string;
3
+ json?: boolean;
3
4
  }): Promise<void>;
4
5
  //# sourceMappingURL=stats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,iBAgBzD"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAoBzE"}
@@ -5,6 +5,10 @@ const native_1 = require("../native");
5
5
  async function statsCommand(opts) {
6
6
  try {
7
7
  const stats = (0, native_1.graphStats)(opts.graph);
8
+ if (opts.json) {
9
+ console.log(JSON.stringify(stats, null, 2));
10
+ return;
11
+ }
8
12
  console.log(`Nodes: ${stats.nodeCount}`);
9
13
  console.log(`Edges: ${stats.edgeCount}`);
10
14
  console.log(`Communities: ${stats.communityCount}`);
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":";;AAEA,oCAgBC;AAlBD,sCAAuC;AAEhC,KAAK,UAAU,YAAY,CAAC,IAAuB;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,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,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":";;AAEA,oCAoBC;AAtBD,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,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,4 +1,5 @@
1
1
  export declare function statusCommand(opts: {
2
2
  graph: string;
3
+ json?: boolean;
3
4
  }): Promise<void>;
4
5
  //# sourceMappingURL=status.d.ts.map
@@ -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,CAAA;CAAE,iBAqD1D"}
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"}
@@ -9,8 +9,13 @@ async function statusCommand(opts) {
9
9
  const dbPath = `${opts.graph}/.astria/db.sqlite`;
10
10
  const graphJsonPath = `${opts.graph}/.astria/graph.json`;
11
11
  if (!(0, fs_1.existsSync)(dbPath)) {
12
- console.log('Status: no graph found');
13
- console.log('Run `astria run .` to build the graph');
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
+ }
14
19
  return;
15
20
  }
16
21
  let stats;
@@ -24,13 +29,32 @@ async function statusCommand(opts) {
24
29
  return;
25
30
  }
26
31
  if (stats.nodeCount === 0) {
27
- console.log('Status: empty graph (0 nodes)');
28
- console.log('Run `astria run .` to populate the graph');
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
+ }
29
39
  return;
30
40
  }
41
+ // Build provenance (which astria and extraction rules built the graph);
42
+ // graphs from before stamping simply report nulls.
43
+ let build;
44
+ try {
45
+ build = (0, native_1.graphBuildInfo)(opts.graph);
46
+ }
47
+ catch {
48
+ build = undefined;
49
+ }
31
50
  if (!(0, fs_1.existsSync)(graphJsonPath)) {
32
- console.log(`Status: incomplete (db has ${stats.nodeCount} nodes but no graph.json)`);
33
- console.log('Run `astria run .` to complete the build');
51
+ if (opts.json) {
52
+ console.log(JSON.stringify({ status: 'incomplete', nodes: stats.nodeCount, edges: stats.edgeCount }, null, 2));
53
+ }
54
+ 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');
57
+ }
34
58
  return;
35
59
  }
36
60
  const mtime = (0, fs_1.statSync)(graphJsonPath).mtimeMs;
@@ -45,11 +69,43 @@ async function statusCommand(opts) {
45
69
  else {
46
70
  staleness = 'very_stale';
47
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
+ }
48
92
  console.log(`Status: ${staleness} (${ageMinutes} min ago)`);
49
93
  console.log(`Nodes: ${stats.nodeCount}`);
50
94
  console.log(`Edges: ${stats.edgeCount}`);
51
95
  console.log(`Communities: ${stats.communityCount}`);
52
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
+ }
53
109
  if (staleness === 'stale' || staleness === 'very_stale') {
54
110
  console.log(`Recommendation: run \`astria update .\` to refresh`);
55
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":";;AAMA,sCAqDC;AA3DD,2BAA0C;AAC1C,sCAAuC;AAEvC,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAE1B,KAAK,UAAU,aAAa,CAAC,IAAuB;IACzD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,oBAAoB,CAAC;IACjD,MAAM,aAAa,GAAG,GAAG,IAAI,CAAC,KAAK,qBAAqB,CAAC;IAEzD,IAAI,CAAC,IAAA,eAAU,EAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,IAAA,eAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,8BAA8B,KAAK,CAAC,SAAS,2BAA2B,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,aAAQ,EAAC,aAAa,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;IAE5D,IAAI,SAAiB,CAAC;IACtB,IAAI,UAAU,IAAI,eAAe,EAAE,CAAC;QAClC,SAAS,GAAG,OAAO,CAAC;IACtB,CAAC;SAAM,IAAI,UAAU,IAAI,oBAAoB,EAAE,CAAC;QAC9C,SAAS,GAAG,OAAO,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,YAAY,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,KAAK,UAAU,WAAW,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAEjD,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}