@nodesify/astria 1.0.10 → 1.0.12

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/dist/commands/cluster.d.ts +7 -1
  2. package/dist/commands/cluster.d.ts.map +1 -1
  3. package/dist/commands/cluster.js +9 -2
  4. package/dist/commands/cluster.js.map +1 -1
  5. package/dist/commands/digest.d.ts +7 -0
  6. package/dist/commands/digest.d.ts.map +1 -0
  7. package/dist/commands/digest.js +161 -0
  8. package/dist/commands/digest.js.map +1 -0
  9. package/dist/commands/install.d.ts.map +1 -1
  10. package/dist/commands/install.js +11 -1
  11. package/dist/commands/install.js.map +1 -1
  12. package/dist/commands/map.d.ts.map +1 -1
  13. package/dist/commands/map.js +2 -1
  14. package/dist/commands/map.js.map +1 -1
  15. package/dist/commands/mcp.d.ts +17 -2
  16. package/dist/commands/mcp.d.ts.map +1 -1
  17. package/dist/commands/mcp.js +16 -0
  18. package/dist/commands/mcp.js.map +1 -1
  19. package/dist/commands/merge-driver.d.ts +7 -0
  20. package/dist/commands/merge-driver.d.ts.map +1 -0
  21. package/dist/commands/merge-driver.js +186 -0
  22. package/dist/commands/merge-driver.js.map +1 -0
  23. package/dist/commands/merge-gate.d.ts +14 -0
  24. package/dist/commands/merge-gate.d.ts.map +1 -0
  25. package/dist/commands/merge-gate.js +200 -0
  26. package/dist/commands/merge-gate.js.map +1 -0
  27. package/dist/commands/merge.d.ts +4 -1
  28. package/dist/commands/merge.d.ts.map +1 -1
  29. package/dist/commands/merge.js +4 -3
  30. package/dist/commands/merge.js.map +1 -1
  31. package/dist/commands/prs.d.ts +3 -0
  32. package/dist/commands/prs.d.ts.map +1 -1
  33. package/dist/commands/prs.js +188 -13
  34. package/dist/commands/prs.js.map +1 -1
  35. package/dist/commands/query.d.ts.map +1 -1
  36. package/dist/commands/query.js +2 -1
  37. package/dist/commands/query.js.map +1 -1
  38. package/dist/commands/stats.d.ts.map +1 -1
  39. package/dist/commands/stats.js +1 -0
  40. package/dist/commands/stats.js.map +1 -1
  41. package/dist/commands/watch.d.ts.map +1 -1
  42. package/dist/commands/watch.js +83 -49
  43. package/dist/commands/watch.js.map +1 -1
  44. package/dist/defaults.d.ts +2 -0
  45. package/dist/defaults.d.ts.map +1 -0
  46. package/dist/defaults.js +7 -0
  47. package/dist/defaults.js.map +1 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +84 -14
  50. package/dist/index.js.map +1 -1
  51. package/dist/install/atomic.d.ts +2 -0
  52. package/dist/install/atomic.d.ts.map +1 -0
  53. package/dist/install/atomic.js +70 -0
  54. package/dist/install/atomic.js.map +1 -0
  55. package/dist/install/hooks.d.ts.map +1 -1
  56. package/dist/install/hooks.js +21 -6
  57. package/dist/install/hooks.js.map +1 -1
  58. package/dist/install/index.d.ts +1 -0
  59. package/dist/install/index.d.ts.map +1 -1
  60. package/dist/install/index.js +122 -47
  61. package/dist/install/index.js.map +1 -1
  62. package/dist/install/markdown-inject.d.ts.map +1 -1
  63. package/dist/install/markdown-inject.js +24 -14
  64. package/dist/install/markdown-inject.js.map +1 -1
  65. package/dist/install/platforms.d.ts +3 -0
  66. package/dist/install/platforms.d.ts.map +1 -1
  67. package/dist/install/platforms.js +6 -0
  68. package/dist/install/platforms.js.map +1 -1
  69. package/dist/install/settings-inject.d.ts.map +1 -1
  70. package/dist/install/settings-inject.js +128 -35
  71. package/dist/install/settings-inject.js.map +1 -1
  72. package/dist/native.d.ts +42 -40
  73. package/dist/native.d.ts.map +1 -1
  74. package/dist/native.js +94 -53
  75. package/dist/native.js.map +1 -1
  76. package/package.json +10 -8
  77. package/dist/commands/migrate.d.ts +0 -4
  78. package/dist/commands/migrate.d.ts.map +0 -1
  79. package/dist/commands/migrate.js +0 -75
  80. package/dist/commands/migrate.js.map +0 -1
package/dist/native.js CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ingestPostgres = exports.ingestScip = exports.globalPath = exports.globalList = exports.globalRemove = exports.globalAdd = exports.reflectGraph = exports.saveQueryResult = exports.diagnoseGraph = exports.saveTranscript = exports.ingestUrl = exports.exportObsidian = exports.exportWiki = exports.exportTree = exports.runMcpServer = exports.affectedNode = exports.graphHistory = exports.diffGraphs = exports.mergeGraphs = exports.clusterOnly = exports.findPath = exports.repoMap = exports.callflowMermaid = exports.queryGraph = exports.tokenBenchmark = exports.riskReport = exports.healthReport = exports.neo4jPushCmd = exports.exportSvgCmd = exports.exportCypherCmd = exports.exportGraphmlCmd = exports.exportHtmlCmd = exports.exportJsonCmd = exports.explainNode = exports.listCommunities = exports.godNodes = exports.graphBuildInfo = exports.graphStats = exports.updatePipeline = exports.runPipeline = void 0;
3
+ exports.ingestPostgres = exports.ingestScip = exports.globalPath = exports.globalList = exports.globalRemove = exports.globalAdd = exports.reflectGraph = exports.saveQueryResult = exports.diagnoseGraph = exports.saveTranscript = exports.ingestUrl = exports.exportObsidian = exports.exportWiki = exports.exportTree = exports.runMcpHttpServer = exports.runMcpServer = exports.affectedNode = exports.graphHistory = exports.diffGraphs = exports.mergeGraphs = exports.clusterOnly = exports.findPath = exports.repoMap = exports.callflowMermaid = exports.queryGraph = exports.tokenBenchmark = exports.riskReport = exports.healthReport = exports.neo4jPushCmd = exports.exportSvgCmd = exports.exportCypherCmd = exports.exportGraphmlCmd = exports.exportHtmlCmd = exports.exportJsonCmd = exports.explainNode = exports.listCommunities = exports.godNodes = exports.verifySourceCommit = exports.graphBuildInfo = exports.graphStats = exports.updatePipeline = exports.runPipeline = void 0;
4
4
  const path_1 = require("path");
5
5
  const fs_1 = require("fs");
6
6
  const PLATFORM_SUFFIX = {
7
7
  'win32-x64': 'win32-x64-msvc',
8
+ 'win32-arm64': 'win32-arm64-msvc',
8
9
  'darwin-x64': 'darwin-x64',
9
10
  'darwin-arm64': 'darwin-arm64',
10
11
  'linux-x64': 'linux-x64-gnu',
@@ -29,23 +30,40 @@ function getPlatformSuffix() {
29
30
  }
30
31
  /// Require the fallback platform package for a suffix. Module names are
31
32
  /// literal strings in the switch arms — nothing is constructed at runtime —
32
- /// so require() only ever sees fixed, known package names.
33
+ /// so require() only ever sees fixed, known package names. Every arm is
34
+ /// guarded: when optionalDependencies did not install the package (npm
35
+ /// --omit=optional, a registry hiccup, pnpm/yarn quirks) the require throws
36
+ /// MODULE_NOT_FOUND, which surfaces as undefined here instead of crashing
37
+ /// the process with a raw stack — letting loadNativeBinding's diagnostic
38
+ /// below actually run for its target scenario.
33
39
  function requirePlatformPackage(suffix) {
40
+ const attempt = (name) => {
41
+ try {
42
+ return require(name);
43
+ }
44
+ catch {
45
+ return undefined;
46
+ }
47
+ };
34
48
  switch (suffix) {
35
49
  case 'win32-x64-msvc':
36
- return require('@nodesify/astria-win32-x64-msvc');
50
+ return attempt('@nodesify/astria-win32-x64-msvc');
51
+ case 'win32-arm64-msvc':
52
+ return attempt('@nodesify/astria-win32-arm64-msvc');
37
53
  case 'darwin-x64':
38
- return require('@nodesify/astria-darwin-x64');
54
+ return attempt('@nodesify/astria-darwin-x64');
39
55
  case 'darwin-arm64':
40
- return require('@nodesify/astria-darwin-arm64');
56
+ return attempt('@nodesify/astria-darwin-arm64');
41
57
  case 'linux-x64-gnu':
42
- return require('@nodesify/astria-linux-x64-gnu');
58
+ return attempt('@nodesify/astria-linux-x64-gnu');
43
59
  case 'linux-arm64-gnu':
44
- return require('@nodesify/astria-linux-arm64-gnu');
60
+ return attempt('@nodesify/astria-linux-arm64-gnu');
61
+ // Musl targets are recognized so the error below can say exactly what
62
+ // is missing; no musl platform package is published yet.
45
63
  case 'linux-x64-musl':
46
- return require('@nodesify/astria-linux-x64-musl');
64
+ return attempt('@nodesify/astria-linux-x64-musl');
47
65
  case 'linux-arm64-musl':
48
- return require('@nodesify/astria-linux-arm64-musl');
66
+ return attempt('@nodesify/astria-linux-arm64-musl');
49
67
  default:
50
68
  return undefined;
51
69
  }
@@ -84,49 +102,72 @@ function loadNativeBinding() {
84
102
  if (platformBinding) {
85
103
  return platformBinding;
86
104
  }
87
- throw new Error(`@nodesify/astria: failed to load native module for ${process.platform}-${process.arch}.\n` +
88
- `Tried: local astria.node and the platform fallback package\n` +
89
- `Ensure the correct platform package is installed.`);
105
+ throw new Error(`@nodesify/astria: failed to load native module for ${process.platform}-${process.arch} ` +
106
+ `(resolved target: ${getPlatformSuffix()}).\n` +
107
+ `Tried: local astria.node and the platform fallback package.\n` +
108
+ `If the platform package is missing, reinstall without --omit=optional ` +
109
+ `(npm install @nodesify/astria --force). ` +
110
+ `Note: musl and windows-arm64 builds ship without the local embedding ` +
111
+ `runtime (no prebuilt ONNX there) — everything else works.`);
112
+ }
113
+ // The binding loads lazily on first native call, not at import time: pure-JS
114
+ // commands (`astria install`, `astria uninstall`, `--version`) must work on a
115
+ // machine where the binary is missing — uninstall is the repair path.
116
+ let cachedBinding;
117
+ function binding() {
118
+ if (cachedBinding === undefined) {
119
+ cachedBinding = loadNativeBinding();
120
+ }
121
+ return cachedBinding;
122
+ }
123
+ // Every wrapper defers to binding() at call time (a missing binary throws
124
+ // one clear diagnostic when a native command actually runs, never at module
125
+ // load) while keeping the declared signature: the cast is checked against
126
+ // the generated declaration, so a drift between wrapper and native surface
127
+ // is a compile error here, not a runtime surprise.
128
+ function fn(name) {
129
+ return ((...args) => binding()[name](...args));
90
130
  }
91
- const binding = loadNativeBinding();
92
- exports.runPipeline = binding.runPipeline;
93
- exports.updatePipeline = binding.updatePipeline;
94
- exports.graphStats = binding.graphStats;
95
- exports.graphBuildInfo = binding.graphBuildInfo;
96
- exports.godNodes = binding.godNodes;
97
- exports.listCommunities = binding.listCommunities;
98
- exports.explainNode = binding.explainNode;
99
- exports.exportJsonCmd = binding.exportJsonCmd;
100
- exports.exportHtmlCmd = binding.exportHtmlCmd;
101
- exports.exportGraphmlCmd = binding.exportGraphmlCmd;
102
- exports.exportCypherCmd = binding.exportCypherCmd;
103
- exports.exportSvgCmd = binding.exportSvgCmd;
104
- exports.neo4jPushCmd = binding.neo4jPushCmd;
105
- exports.healthReport = binding.healthReport;
106
- exports.riskReport = binding.riskReport;
107
- exports.tokenBenchmark = binding.tokenBenchmark;
108
- exports.queryGraph = binding.queryGraph;
109
- exports.callflowMermaid = binding.callflowMermaid;
110
- exports.repoMap = binding.repoMap;
111
- exports.findPath = binding.findPath;
112
- exports.clusterOnly = binding.clusterOnly;
113
- exports.mergeGraphs = binding.mergeGraphs;
114
- exports.diffGraphs = binding.diffGraphs;
115
- exports.graphHistory = binding.graphHistory;
116
- exports.affectedNode = binding.affectedNode;
117
- exports.runMcpServer = binding.runMcpServer;
118
- exports.exportTree = binding.exportTree;
119
- exports.exportWiki = binding.exportWiki;
120
- exports.exportObsidian = binding.exportObsidian;
121
- exports.ingestUrl = binding.ingestUrl;
122
- exports.saveTranscript = binding.saveTranscript;
123
- exports.diagnoseGraph = binding.diagnoseGraph;
124
- exports.saveQueryResult = binding.saveQueryResult;
125
- exports.reflectGraph = binding.reflect;
126
- exports.globalAdd = binding.globalAdd;
127
- exports.globalRemove = binding.globalRemove;
128
- exports.globalList = binding.globalList;
129
- exports.globalPath = binding.globalPath;
130
- exports.ingestScip = binding.ingestScip;
131
- exports.ingestPostgres = binding.ingestPostgres;
131
+ exports.runPipeline = fn('runPipeline');
132
+ exports.updatePipeline = fn('updatePipeline');
133
+ exports.graphStats = fn('graphStats');
134
+ exports.graphBuildInfo = fn('graphBuildInfo');
135
+ exports.verifySourceCommit = fn('verifySourceCommit');
136
+ exports.godNodes = fn('godNodes');
137
+ exports.listCommunities = fn('listCommunities');
138
+ exports.explainNode = fn('explainNode');
139
+ exports.exportJsonCmd = fn('exportJsonCmd');
140
+ exports.exportHtmlCmd = fn('exportHtmlCmd');
141
+ exports.exportGraphmlCmd = fn('exportGraphmlCmd');
142
+ exports.exportCypherCmd = fn('exportCypherCmd');
143
+ exports.exportSvgCmd = fn('exportSvgCmd');
144
+ exports.neo4jPushCmd = fn('neo4jPushCmd');
145
+ exports.healthReport = fn('healthReport');
146
+ exports.riskReport = fn('riskReport');
147
+ exports.tokenBenchmark = fn('tokenBenchmark');
148
+ exports.queryGraph = fn('queryGraph');
149
+ exports.callflowMermaid = fn('callflowMermaid');
150
+ exports.repoMap = fn('repoMap');
151
+ exports.findPath = fn('findPath');
152
+ exports.clusterOnly = fn('clusterOnly');
153
+ exports.mergeGraphs = fn('mergeGraphs');
154
+ exports.diffGraphs = fn('diffGraphs');
155
+ exports.graphHistory = fn('graphHistory');
156
+ exports.affectedNode = fn('affectedNode');
157
+ exports.runMcpServer = fn('runMcpServer');
158
+ exports.runMcpHttpServer = fn('runMcpHttpServer');
159
+ exports.exportTree = fn('exportTree');
160
+ exports.exportWiki = fn('exportWiki');
161
+ exports.exportObsidian = fn('exportObsidian');
162
+ exports.ingestUrl = fn('ingestUrl');
163
+ exports.saveTranscript = fn('saveTranscript');
164
+ exports.diagnoseGraph = fn('diagnoseGraph');
165
+ exports.saveQueryResult = fn('saveQueryResult');
166
+ exports.reflectGraph = fn('reflect');
167
+ exports.globalAdd = fn('globalAdd');
168
+ exports.globalRemove = fn('globalRemove');
169
+ exports.globalList = fn('globalList');
170
+ exports.globalPath = fn('globalPath');
171
+ exports.ingestScip = fn('ingestScip');
172
+ exports.ingestPostgres = fn('ingestPostgres');
132
173
  //# sourceMappingURL=native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nodesify/astria",
3
- "version": "1.0.10",
3
+ "version": "1.0.12",
4
4
  "description": "Turn any folder into a queryable knowledge graph",
5
5
  "mcpName": "io.github.Nodesify/astria",
6
6
  "main": "dist/index.js",
@@ -23,7 +23,7 @@
23
23
  "napi:dev": "node ../../scripts/build-native.mjs --debug",
24
24
  "napi:artifacts": "napi artifacts",
25
25
  "prepublishOnly": "napi prepublish -t npm",
26
- "test": "npx tsx src/__tests__/cli.test.ts && npx tsx src/__tests__/install.test.ts && npx tsx src/__tests__/hooks.test.ts && npx tsx src/__tests__/e2e.test.ts"
26
+ "test": "npx tsx src/__tests__/cli.test.ts && npx tsx src/__tests__/install.test.ts && npx tsx src/__tests__/hooks.test.ts && npx tsx src/__tests__/merge-driver.test.ts && npx tsx src/__tests__/e2e.test.ts"
27
27
  },
28
28
  "keywords": [
29
29
  "knowledge-graph",
@@ -59,15 +59,17 @@
59
59
  "defaults": true,
60
60
  "additional": [
61
61
  "aarch64-apple-darwin",
62
- "aarch64-unknown-linux-gnu"
62
+ "aarch64-unknown-linux-gnu",
63
+ "x86_64-unknown-linux-musl",
64
+ "aarch64-pc-windows-msvc"
63
65
  ]
64
66
  }
65
67
  },
66
68
  "optionalDependencies": {
67
- "@nodesify/astria-win32-x64-msvc": "1.0.10",
68
- "@nodesify/astria-darwin-x64": "1.0.10",
69
- "@nodesify/astria-linux-x64-gnu": "1.0.10",
70
- "@nodesify/astria-darwin-arm64": "1.0.10",
71
- "@nodesify/astria-linux-arm64-gnu": "1.0.10"
69
+ "@nodesify/astria-win32-x64-msvc": "1.0.12",
70
+ "@nodesify/astria-darwin-x64": "1.0.12",
71
+ "@nodesify/astria-linux-x64-gnu": "1.0.12",
72
+ "@nodesify/astria-darwin-arm64": "1.0.12",
73
+ "@nodesify/astria-linux-arm64-gnu": "1.0.12"
72
74
  }
73
75
  }
@@ -1,4 +0,0 @@
1
- export declare function migrateCommand(opts: {
2
- graph: string;
3
- }): void;
4
- //# sourceMappingURL=migrate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAkCA,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,QAqCrD"}
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.migrateCommand = migrateCommand;
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- function homeDir() {
7
- return process.env.USERPROFILE || process.env.HOME || '.';
8
- }
9
- function moveOrReport(from, to, label) {
10
- if (!(0, fs_1.existsSync)(from))
11
- return 'absent';
12
- if ((0, fs_1.existsSync)(to)) {
13
- console.log(`[migrate] ${label}: ${to} already exists — left ${from} untouched. Remove it manually once verified.`);
14
- return 'target-exists';
15
- }
16
- try {
17
- (0, fs_1.renameSync)(from, to);
18
- }
19
- catch (err) {
20
- if (err && (err.code === 'EPERM' || err.code === 'EBUSY' || err.code === 'ENOTEMPTY')) {
21
- console.error(`[migrate] ${label}: ${from} is locked by another process (editor MCP server, watcher, or a running query).\n` +
22
- `Close it and re-run \`astria migrate\`.`);
23
- return 'locked';
24
- }
25
- throw err;
26
- }
27
- console.log(`[migrate] ${label}: ${from} -> ${to}`);
28
- return 'moved';
29
- }
30
- /// One-time migration from the pre-1.0 nodesify-graphify layout. 1.0 reads
31
- /// only `.astria/`, so this is the escape hatch for existing graphs: the
32
- /// data folder, ignore file, and home-dir global store are renamed in place.
33
- function migrateCommand(opts) {
34
- const root = opts.graph;
35
- if (!(0, fs_1.existsSync)(root)) {
36
- throw new Error(`path not found: ${root}`);
37
- }
38
- let moved = 0;
39
- let locked = 0;
40
- const results = [
41
- moveOrReport((0, path_1.join)(root, '.graphify'), (0, path_1.join)(root, '.astria'), 'data folder'),
42
- moveOrReport((0, path_1.join)(root, '.graphifyignore'), (0, path_1.join)(root, '.astriaignore'), 'ignore file'),
43
- ];
44
- for (const r of results) {
45
- if (r === 'moved')
46
- moved += 1;
47
- if (r === 'locked')
48
- locked += 1;
49
- }
50
- const globalFrom = (0, path_1.join)(homeDir(), '.nodesify-graphify', 'global.db');
51
- const globalTo = (0, path_1.join)(homeDir(), '.astria', 'global.db');
52
- if ((0, fs_1.existsSync)(globalFrom)) {
53
- if ((0, fs_1.existsSync)(globalTo)) {
54
- console.log(`[migrate] global store: ${globalTo} already exists — left ${globalFrom} untouched.`);
55
- }
56
- else {
57
- const r = moveOrReport(globalFrom, globalTo, 'global store');
58
- if (r === 'moved')
59
- moved += 1;
60
- if (r === 'locked')
61
- locked += 1;
62
- }
63
- }
64
- if (locked > 0) {
65
- console.log(`[migrate] ${locked} item(s) still locked — close the locking process and re-run \`astria migrate\`.`);
66
- process.exitCode = 1;
67
- }
68
- else if (moved === 0) {
69
- console.log('[migrate] nothing to migrate (no pre-1.0 layout found).');
70
- }
71
- else {
72
- console.log(`[migrate] done — ${moved} item(s) moved. Run \`astria update ${root}\` to refresh.`);
73
- }
74
- }
75
- //# sourceMappingURL=migrate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}