@nodesify/astria 1.0.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 (149) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/dist/commands/add.d.ts +8 -0
  4. package/dist/commands/add.d.ts.map +1 -0
  5. package/dist/commands/add.js +34 -0
  6. package/dist/commands/add.js.map +1 -0
  7. package/dist/commands/affected.d.ts +6 -0
  8. package/dist/commands/affected.d.ts.map +1 -0
  9. package/dist/commands/affected.js +30 -0
  10. package/dist/commands/affected.js.map +1 -0
  11. package/dist/commands/cluster.d.ts +2 -0
  12. package/dist/commands/cluster.d.ts.map +1 -0
  13. package/dist/commands/cluster.js +51 -0
  14. package/dist/commands/cluster.js.map +1 -0
  15. package/dist/commands/diagnose.d.ts +5 -0
  16. package/dist/commands/diagnose.d.ts.map +1 -0
  17. package/dist/commands/diagnose.js +20 -0
  18. package/dist/commands/diagnose.js.map +1 -0
  19. package/dist/commands/diff.d.ts +2 -0
  20. package/dist/commands/diff.d.ts.map +1 -0
  21. package/dist/commands/diff.js +36 -0
  22. package/dist/commands/diff.js.map +1 -0
  23. package/dist/commands/explain.d.ts +4 -0
  24. package/dist/commands/explain.d.ts.map +1 -0
  25. package/dist/commands/explain.js +38 -0
  26. package/dist/commands/explain.js.map +1 -0
  27. package/dist/commands/export.d.ts +7 -0
  28. package/dist/commands/export.d.ts.map +1 -0
  29. package/dist/commands/export.js +33 -0
  30. package/dist/commands/export.js.map +1 -0
  31. package/dist/commands/feedback.d.ts +12 -0
  32. package/dist/commands/feedback.d.ts.map +1 -0
  33. package/dist/commands/feedback.js +41 -0
  34. package/dist/commands/feedback.js.map +1 -0
  35. package/dist/commands/global.d.ts +7 -0
  36. package/dist/commands/global.d.ts.map +1 -0
  37. package/dist/commands/global.js +61 -0
  38. package/dist/commands/global.js.map +1 -0
  39. package/dist/commands/history.d.ts +5 -0
  40. package/dist/commands/history.d.ts.map +1 -0
  41. package/dist/commands/history.js +28 -0
  42. package/dist/commands/history.js.map +1 -0
  43. package/dist/commands/hook-guard.d.ts +2 -0
  44. package/dist/commands/hook-guard.d.ts.map +1 -0
  45. package/dist/commands/hook-guard.js +145 -0
  46. package/dist/commands/hook-guard.js.map +1 -0
  47. package/dist/commands/hook.d.ts +3 -0
  48. package/dist/commands/hook.d.ts.map +1 -0
  49. package/dist/commands/hook.js +53 -0
  50. package/dist/commands/hook.js.map +1 -0
  51. package/dist/commands/install.d.ts +3 -0
  52. package/dist/commands/install.d.ts.map +1 -0
  53. package/dist/commands/install.js +40 -0
  54. package/dist/commands/install.js.map +1 -0
  55. package/dist/commands/map.d.ts +6 -0
  56. package/dist/commands/map.d.ts.map +1 -0
  57. package/dist/commands/map.js +16 -0
  58. package/dist/commands/map.js.map +1 -0
  59. package/dist/commands/mcp.d.ts +4 -0
  60. package/dist/commands/mcp.d.ts.map +1 -0
  61. package/dist/commands/mcp.js +15 -0
  62. package/dist/commands/mcp.js.map +1 -0
  63. package/dist/commands/merge.d.ts +2 -0
  64. package/dist/commands/merge.d.ts.map +1 -0
  65. package/dist/commands/merge.js +51 -0
  66. package/dist/commands/merge.js.map +1 -0
  67. package/dist/commands/migrate.d.ts +4 -0
  68. package/dist/commands/migrate.d.ts.map +1 -0
  69. package/dist/commands/migrate.js +75 -0
  70. package/dist/commands/migrate.js.map +1 -0
  71. package/dist/commands/path.d.ts +6 -0
  72. package/dist/commands/path.d.ts.map +1 -0
  73. package/dist/commands/path.js +19 -0
  74. package/dist/commands/path.js.map +1 -0
  75. package/dist/commands/prs.d.ts +5 -0
  76. package/dist/commands/prs.d.ts.map +1 -0
  77. package/dist/commands/prs.js +133 -0
  78. package/dist/commands/prs.js.map +1 -0
  79. package/dist/commands/query.d.ts +10 -0
  80. package/dist/commands/query.d.ts.map +1 -0
  81. package/dist/commands/query.js +22 -0
  82. package/dist/commands/query.js.map +1 -0
  83. package/dist/commands/run.d.ts +10 -0
  84. package/dist/commands/run.d.ts.map +1 -0
  85. package/dist/commands/run.js +69 -0
  86. package/dist/commands/run.js.map +1 -0
  87. package/dist/commands/stats.d.ts +4 -0
  88. package/dist/commands/stats.d.ts.map +1 -0
  89. package/dist/commands/stats.js +18 -0
  90. package/dist/commands/stats.js.map +1 -0
  91. package/dist/commands/status.d.ts +4 -0
  92. package/dist/commands/status.d.ts.map +1 -0
  93. package/dist/commands/status.js +57 -0
  94. package/dist/commands/status.js.map +1 -0
  95. package/dist/commands/tree.d.ts +6 -0
  96. package/dist/commands/tree.d.ts.map +1 -0
  97. package/dist/commands/tree.js +53 -0
  98. package/dist/commands/tree.js.map +1 -0
  99. package/dist/commands/update.d.ts +7 -0
  100. package/dist/commands/update.d.ts.map +1 -0
  101. package/dist/commands/update.js +66 -0
  102. package/dist/commands/update.js.map +1 -0
  103. package/dist/commands/watch.d.ts +4 -0
  104. package/dist/commands/watch.d.ts.map +1 -0
  105. package/dist/commands/watch.js +114 -0
  106. package/dist/commands/watch.js.map +1 -0
  107. package/dist/commands/wiki.d.ts +7 -0
  108. package/dist/commands/wiki.d.ts.map +1 -0
  109. package/dist/commands/wiki.js +60 -0
  110. package/dist/commands/wiki.js.map +1 -0
  111. package/dist/graphify.node +4 -0
  112. package/dist/index.d.ts +5 -0
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.js +251 -0
  115. package/dist/index.js.map +1 -0
  116. package/dist/install/hooks.d.ts +12 -0
  117. package/dist/install/hooks.d.ts.map +1 -0
  118. package/dist/install/hooks.js +307 -0
  119. package/dist/install/hooks.js.map +1 -0
  120. package/dist/install/index.d.ts +3 -0
  121. package/dist/install/index.d.ts.map +1 -0
  122. package/dist/install/index.js +362 -0
  123. package/dist/install/index.js.map +1 -0
  124. package/dist/install/markdown-inject.d.ts +7 -0
  125. package/dist/install/markdown-inject.d.ts.map +1 -0
  126. package/dist/install/markdown-inject.js +178 -0
  127. package/dist/install/markdown-inject.js.map +1 -0
  128. package/dist/install/platforms.d.ts +13 -0
  129. package/dist/install/platforms.d.ts.map +1 -0
  130. package/dist/install/platforms.js +130 -0
  131. package/dist/install/platforms.js.map +1 -0
  132. package/dist/install/settings-inject.d.ts +18 -0
  133. package/dist/install/settings-inject.d.ts.map +1 -0
  134. package/dist/install/settings-inject.js +425 -0
  135. package/dist/install/settings-inject.js.map +1 -0
  136. package/dist/native.d.ts +32 -0
  137. package/dist/native.d.ts.map +1 -0
  138. package/dist/native.js +107 -0
  139. package/dist/native.js.map +1 -0
  140. package/package.json +72 -0
  141. package/skills/skill-aider.md +40 -0
  142. package/skills/skill-codex.md +46 -0
  143. package/skills/skill-copilot.md +46 -0
  144. package/skills/skill-cursor.md +39 -0
  145. package/skills/skill-gemini.md +46 -0
  146. package/skills/skill-kiro.md +39 -0
  147. package/skills/skill-opencode.md +44 -0
  148. package/skills/skill-trae.md +46 -0
  149. package/skills/skill.md +266 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":";;AAEA,wCAqBC;AAvBD,sCAAyC;AAElC,KAAK,UAAU,cAAc,CAAC,IAAsC;IACzE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAA,qBAAY,EAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,2BAA2B,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;QAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,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,2 @@
1
+ export declare function hookGuard(mode: string, _args: string[]): void;
2
+ //# sourceMappingURL=hook-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-guard.d.ts","sourceRoot":"","sources":["../../src/commands/hook-guard.ts"],"names":[],"mappings":"AAiFA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAmF7D"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ // hook-guard: editor PreToolUse guards (port of upstream hook-guard). Reads
3
+ // the tool-call JSON from stdin, nudges agents toward graph queries, and —
4
+ // in strict mode — denies ONE un-indexed read per session until the agent
5
+ // orients via query/explain/path. Fails open on any error: a wedged guard
6
+ // must never break a tool call.
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.hookGuard = hookGuard;
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ const SOURCE_EXTS = new Set([
12
+ '.py', '.ts', '.tsx', '.js', '.jsx', '.rs', '.go', '.java', '.c', '.cpp',
13
+ '.h', '.hpp', '.rb', '.php', '.swift', '.kt', '.scala', '.cs', '.lua',
14
+ '.ex', '.exs', '.hs', '.sh', '.dart', '.zig', '.md', '.toml', '.yaml', '.yml',
15
+ ]);
16
+ const SEARCH_COMMANDS = new Set(['grep', 'rg', 'ag', 'git']);
17
+ function readStdinJson() {
18
+ try {
19
+ const raw = (0, fs_1.readFileSync)(0, 'utf-8');
20
+ return JSON.parse(raw);
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ function graphDir() {
27
+ const cwd = process.env.CLAUDE_PROJECT_DIR || process.cwd();
28
+ const g = (0, path_1.join)(cwd, '.astria');
29
+ return (0, fs_1.existsSync)((0, path_1.join)(g, 'graph.json')) ? g : null;
30
+ }
31
+ /// Reads `ASTRIA_<name>`, falling back to the deprecated `GRAPHIFY_<name>`.
32
+ function envVar(name) {
33
+ return (process.env[`ASTRIA_${name}`] ||
34
+ process.env[`GRAPHIFY_${name}`] ||
35
+ undefined);
36
+ }
37
+ function orientedRecently(gdir) {
38
+ try {
39
+ const stamp = (0, fs_1.readFileSync)((0, path_1.join)(gdir, 'cache', 'last_query_stamp'), 'utf-8');
40
+ const ts = Number(stamp.split('\t')[0]);
41
+ const age = Date.now() / 1000 - ts;
42
+ const ttl = Number(envVar('HOOK_STRICT_TTL') || 1800);
43
+ return Number.isFinite(ts) && age < ttl;
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ }
49
+ function emitNudge(text) {
50
+ console.log(JSON.stringify({
51
+ hookSpecificOutput: {
52
+ hookEventName: 'PreToolUse',
53
+ additionalContext: text,
54
+ },
55
+ }));
56
+ }
57
+ function emitDeny(reason) {
58
+ console.log(JSON.stringify({
59
+ hookSpecificOutput: {
60
+ hookEventName: 'PreToolUse',
61
+ permissionDecision: 'deny',
62
+ permissionDecisionReason: reason,
63
+ },
64
+ }));
65
+ }
66
+ function hookGuard(mode, _args) {
67
+ try {
68
+ if (!mode || mode === 'gemini') {
69
+ // Gemini's BeforeTool only understands allow decisions.
70
+ console.log(JSON.stringify({ decision: 'allow' }));
71
+ return;
72
+ }
73
+ const input = readStdinJson();
74
+ if (!input)
75
+ return;
76
+ const gdir = graphDir();
77
+ if (!gdir)
78
+ return;
79
+ const strict = envVar('HOOK_STRICT') === '1' ||
80
+ (envVar('HOOK_STRICT') !== '0' && _args.includes('--strict'));
81
+ if (mode === 'search') {
82
+ const ti = input.tool_input || {};
83
+ const isGrepTool = Boolean(ti.pattern);
84
+ const cmd = (ti.command || '').trim();
85
+ const first = cmd.split(/\s+/)[0];
86
+ const isSearchBash = first === 'git'
87
+ ? cmd.split(/\s+/)[1] === 'grep'
88
+ : SEARCH_COMMANDS.has(first);
89
+ if (isGrepTool || isSearchBash) {
90
+ emitNudge('MANDATORY: Before searching with grep, check the knowledge graph first: ' +
91
+ '`astria query "<question>"` returns structured answers with ' +
92
+ 'file:line provenance in one call. The graph is already built for this repo.');
93
+ }
94
+ return;
95
+ }
96
+ if (mode === 'read') {
97
+ const filePath = input.tool_input?.file_path;
98
+ if (!filePath)
99
+ return;
100
+ const resolved = (0, path_1.resolve)(filePath);
101
+ if (resolved.includes('.astria'))
102
+ return;
103
+ const ext = (0, path_1.extname)(resolved).toLowerCase();
104
+ if (ext && !SOURCE_EXTS.has(ext))
105
+ return;
106
+ // Staleness: file newer than the graph?
107
+ try {
108
+ const fileMtime = require('fs').statSync(resolved).mtimeMs;
109
+ const graphMtime = require('fs').statSync((0, path_1.join)(gdir, 'db.sqlite')).mtimeMs;
110
+ if (fileMtime > graphMtime) {
111
+ emitNudge(`STALE GRAPH: ${filePath} changed after the last graph build. ` +
112
+ 'Run `astria update .` before trusting graph answers.');
113
+ return;
114
+ }
115
+ }
116
+ catch {
117
+ // stat failures are not guard failures
118
+ }
119
+ // Strict: deny one un-indexed read per session until oriented.
120
+ if (strict && input.tool_name === 'Read' && !orientedRecently(gdir)) {
121
+ // Session ids become filenames; strip anything that could carry a
122
+ // path separator or traversal before using one.
123
+ const session = (process.env.CLAUDE_SESSION_ID || 'default')
124
+ .replace(/[^A-Za-z0-9_-]/g, '')
125
+ .slice(0, 64) || 'default';
126
+ const marker = (0, path_1.join)(gdir, 'cache', 'hook_sessions', `${session}.denied`);
127
+ try {
128
+ (0, fs_1.mkdirSync)((0, path_1.join)(gdir, 'cache', 'hook_sessions'), { recursive: true });
129
+ (0, fs_1.writeFileSync)(marker, String(Date.now()), { flag: 'wx' });
130
+ emitDeny('ORIENT FIRST: this read is not yet covered by a graph query. ' +
131
+ 'Run `astria query "<question>"` (or explain/path) once — ' +
132
+ 'further reads then proceed without interruption for 30 minutes.');
133
+ }
134
+ catch {
135
+ // Marker exists: already denied once this session — allow.
136
+ }
137
+ }
138
+ return;
139
+ }
140
+ }
141
+ catch {
142
+ // Fail open: never break a tool call.
143
+ }
144
+ }
145
+ //# sourceMappingURL=hook-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-guard.js","sourceRoot":"","sources":["../../src/commands/hook-guard.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,0EAA0E;AAC1E,gCAAgC;;AA6EhC,8BAmFC;AA9JD,2BAAwE;AACxE,+BAA8C;AAO9C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;IACxE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM;IACrE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;CAC9E,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAE7D,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5D,MAAM,CAAC,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,OAAO,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,4EAA4E;AAC5E,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QAC/B,SAAS,CACV,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7E,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;QACb,kBAAkB,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,iBAAiB,EAAE,IAAI;SACxB;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;QACb,kBAAkB,EAAE;YAClB,aAAa,EAAE,YAAY;YAC3B,kBAAkB,EAAE,MAAM;YAC1B,wBAAwB,EAAE,MAAM;SACjC;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAe;IACrD,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,wDAAwD;YACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,MAAM,GACV,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG;YAC7B,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAEhE,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,YAAY,GAChB,KAAK,KAAK,KAAK;gBACb,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM;gBAChC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;gBAC/B,SAAS,CACP,0EAA0E;oBACxE,8DAA8D;oBAC9D,6EAA6E,CAChF,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC;YAC7C,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,OAAO;YACzC,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO;YACzC,wCAAwC;YACxC,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC3E,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;oBAC3B,SAAS,CACP,gBAAgB,QAAQ,uCAAuC;wBAC7D,sDAAsD,CACzD,CAAC;oBACF,OAAO;gBACT,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,uCAAuC;YACzC,CAAC;YACD,+DAA+D;YAC/D,IAAI,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,kEAAkE;gBAClE,gDAAgD;gBAChD,MAAM,OAAO,GACX,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS,CAAC;qBACzC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;qBAC9B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;gBAC/B,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,SAAS,CAAC,CAAC;gBACzE,IAAI,CAAC;oBACH,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACrE,IAAA,kBAAa,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,QAAQ,CACN,+DAA+D;wBAC7D,2DAA2D;wBAC3D,iEAAiE,CACpE,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,2DAA2D;gBAC7D,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerHookCommand(program: Command): void;
3
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QA+CnD"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerHookCommand = registerHookCommand;
4
+ const hooks_1 = require("../install/hooks");
5
+ function registerHookCommand(program) {
6
+ const hook = program.command('hook').description('Manage git hooks for auto-rebuild');
7
+ hook
8
+ .command('install')
9
+ .description('Install post-commit and post-checkout hooks')
10
+ .action(() => {
11
+ try {
12
+ const results = (0, hooks_1.installGitHooks)('.');
13
+ for (const msg of results) {
14
+ console.log(msg);
15
+ }
16
+ }
17
+ catch (err) {
18
+ console.error(err.message || err);
19
+ process.exitCode = 1;
20
+ }
21
+ });
22
+ hook
23
+ .command('uninstall')
24
+ .description('Remove astria git hooks')
25
+ .action(() => {
26
+ try {
27
+ const results = (0, hooks_1.uninstallGitHooks)('.');
28
+ for (const msg of results) {
29
+ console.log(msg);
30
+ }
31
+ }
32
+ catch (err) {
33
+ console.error(err.message || err);
34
+ process.exitCode = 1;
35
+ }
36
+ });
37
+ hook
38
+ .command('status')
39
+ .description('Show git hook status')
40
+ .action(() => {
41
+ try {
42
+ const results = (0, hooks_1.statusGitHooks)('.');
43
+ for (const msg of results) {
44
+ console.log(msg);
45
+ }
46
+ }
47
+ catch (err) {
48
+ console.error(err.message || err);
49
+ process.exitCode = 1;
50
+ }
51
+ });
52
+ }
53
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":";;AAGA,kDA+CC;AAjDD,4CAAsF;AAEtF,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;IAEtF,IAAI;SACD,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC;YACrC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,yBAAiB,EAAC,GAAG,CAAC,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,GAAG,EAAE;QACX,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,sBAAc,EAAC,GAAG,CAAC,CAAC;YACpC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerInstallCommand(program: Command): void;
3
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAgCtD"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerInstallCommand = registerInstallCommand;
4
+ const index_1 = require("../install/index");
5
+ const platforms_1 = require("../install/platforms");
6
+ function registerInstallCommand(program) {
7
+ program
8
+ .command('install')
9
+ .description('Install astria skill for an AI platform')
10
+ .option('--platform <name>', `Platform: ${platforms_1.PLATFORM_NAMES.join(', ')}`, 'claude')
11
+ .action(async (opts) => {
12
+ try {
13
+ const results = (0, index_1.installPlatform)(opts.platform, process.cwd());
14
+ for (const msg of results) {
15
+ console.log(msg);
16
+ }
17
+ }
18
+ catch (err) {
19
+ console.error(err.message || err);
20
+ process.exitCode = 1;
21
+ }
22
+ });
23
+ program
24
+ .command('uninstall')
25
+ .description('Uninstall astria skill for an AI platform')
26
+ .option('--platform <name>', `Platform: ${platforms_1.PLATFORM_NAMES.join(', ')}`, 'claude')
27
+ .action(async (opts) => {
28
+ try {
29
+ const results = (0, index_1.uninstallPlatform)(opts.platform, process.cwd());
30
+ for (const msg of results) {
31
+ console.log(msg);
32
+ }
33
+ }
34
+ catch (err) {
35
+ console.error(err.message || err);
36
+ process.exitCode = 1;
37
+ }
38
+ });
39
+ }
40
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":";;AAIA,wDAgCC;AAnCD,4CAAsE;AACtE,oDAAsD;AAEtD,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,mBAAmB,EAAE,aAAa,0BAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC;SAC/E,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,mBAAmB,EAAE,aAAa,0BAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC;SAC/E,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAChE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function mapCommand(opts: {
2
+ graph: string;
3
+ budget: string;
4
+ detail?: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=map.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapCommand = mapCommand;
4
+ const native_1 = require("../native");
5
+ async function mapCommand(opts) {
6
+ try {
7
+ const budget = parseInt(opts.budget || '2000', 10);
8
+ const result = (0, native_1.repoMap)(opts.graph, budget, opts.detail);
9
+ console.log(result.text);
10
+ }
11
+ catch (e) {
12
+ console.error(`Error: ${e.message || e}`);
13
+ process.exitCode = 1;
14
+ }
15
+ }
16
+ //# sourceMappingURL=map.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ export declare function mcpCommand(opts: {
2
+ graph: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAEA,wBAAsB,UAAU,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,iBAQvD"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mcpCommand = mcpCommand;
4
+ const native_1 = require("../native");
5
+ async function mcpCommand(opts) {
6
+ try {
7
+ // Blocks serving newline-delimited JSON-RPC on stdio until stdin closes
8
+ (0, native_1.runMcpServer)(opts.graph);
9
+ }
10
+ catch (e) {
11
+ console.error(`Error: ${e.message || e}`);
12
+ process.exitCode = 1;
13
+ }
14
+ }
15
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":";;AAEA,gCAQC;AAVD,sCAAyC;AAElC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,IAAI,CAAC;QACH,wEAAwE;QACxE,IAAA,qBAAY,EAAC,IAAI,CAAC,KAAK,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,2 @@
1
+ export declare function mergeCommand(pathA: string, pathB: string, outPath: string): Promise<void>;
2
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/commands/merge.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAU/E"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.mergeCommand = mergeCommand;
37
+ const path = __importStar(require("path"));
38
+ const native_1 = require("../native");
39
+ async function mergeCommand(pathA, pathB, outPath) {
40
+ try {
41
+ console.log(`Merging graphs: ${pathA} + ${pathB} -> ${outPath}`);
42
+ const result = (0, native_1.mergeGraphs)(pathA, pathB, outPath);
43
+ console.log(`Nodes: ${result.nodesAdded}, Edges: ${result.edgesAdded}, Communities: ${result.communities}`);
44
+ console.log(`Merged graph written to: ${path.join(outPath, '.astria')}`);
45
+ }
46
+ catch (e) {
47
+ console.error(`Error: ${e.message || e}`);
48
+ process.exitCode = 1;
49
+ }
50
+ }
51
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/commands/merge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,oCAUC;AAbD,2CAA6B;AAC7B,sCAAwC;AAEjC,KAAK,UAAU,YAAY,CAAC,KAAa,EAAE,KAAa,EAAE,OAAe;IAC9E,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,MAAM,KAAK,OAAO,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,UAAU,kBAAkB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5G,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3E,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,4 @@
1
+ export declare function migrateCommand(opts: {
2
+ graph: string;
3
+ }): void;
4
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,75 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function pathCommand(source: string, target: string, opts: {
2
+ graph: string;
3
+ directed?: boolean;
4
+ detail?: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pathCommand = pathCommand;
4
+ const native_1 = require("../native");
5
+ async function pathCommand(source, target, opts) {
6
+ try {
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);
10
+ return;
11
+ }
12
+ console.log(result.text);
13
+ }
14
+ catch (e) {
15
+ console.error(`Error: ${e.message || e}`);
16
+ process.exitCode = 1;
17
+ }
18
+ }
19
+ //# sourceMappingURL=path.js.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ export declare function prsCommand(count: string, opts: {
2
+ graph: string;
3
+ conflicts: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=prs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prs.d.ts","sourceRoot":"","sources":["../../src/commands/prs.ts"],"names":[],"mappings":"AAyIA,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,iBA8B1F"}