@mduenas/codegraph 0.4.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 (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +641 -0
  3. package/dist/bin/codegraph.d.ts +20 -0
  4. package/dist/bin/codegraph.d.ts.map +1 -0
  5. package/dist/bin/codegraph.js +704 -0
  6. package/dist/bin/codegraph.js.map +1 -0
  7. package/dist/config.d.ts +51 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +291 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/context/formatter.d.ts +30 -0
  12. package/dist/context/formatter.d.ts.map +1 -0
  13. package/dist/context/formatter.js +244 -0
  14. package/dist/context/formatter.js.map +1 -0
  15. package/dist/context/index.d.ts +86 -0
  16. package/dist/context/index.d.ts.map +1 -0
  17. package/dist/context/index.js +402 -0
  18. package/dist/context/index.js.map +1 -0
  19. package/dist/db/index.d.ts +64 -0
  20. package/dist/db/index.d.ts.map +1 -0
  21. package/dist/db/index.js +170 -0
  22. package/dist/db/index.js.map +1 -0
  23. package/dist/db/migrations.d.ts +44 -0
  24. package/dist/db/migrations.d.ts.map +1 -0
  25. package/dist/db/migrations.js +105 -0
  26. package/dist/db/migrations.js.map +1 -0
  27. package/dist/db/queries.d.ts +148 -0
  28. package/dist/db/queries.d.ts.map +1 -0
  29. package/dist/db/queries.js +669 -0
  30. package/dist/db/queries.js.map +1 -0
  31. package/dist/directory.d.ts +45 -0
  32. package/dist/directory.d.ts.map +1 -0
  33. package/dist/directory.js +191 -0
  34. package/dist/directory.js.map +1 -0
  35. package/dist/errors.d.ts +136 -0
  36. package/dist/errors.d.ts.map +1 -0
  37. package/dist/errors.js +219 -0
  38. package/dist/errors.js.map +1 -0
  39. package/dist/extraction/grammars.d.ts +36 -0
  40. package/dist/extraction/grammars.d.ts.map +1 -0
  41. package/dist/extraction/grammars.js +181 -0
  42. package/dist/extraction/grammars.js.map +1 -0
  43. package/dist/extraction/index.d.ts +91 -0
  44. package/dist/extraction/index.d.ts.map +1 -0
  45. package/dist/extraction/index.js +493 -0
  46. package/dist/extraction/index.js.map +1 -0
  47. package/dist/extraction/tree-sitter.d.ts +176 -0
  48. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  49. package/dist/extraction/tree-sitter.js +1798 -0
  50. package/dist/extraction/tree-sitter.js.map +1 -0
  51. package/dist/graph/index.d.ts +8 -0
  52. package/dist/graph/index.d.ts.map +1 -0
  53. package/dist/graph/index.js +13 -0
  54. package/dist/graph/index.js.map +1 -0
  55. package/dist/graph/queries.d.ts +106 -0
  56. package/dist/graph/queries.d.ts.map +1 -0
  57. package/dist/graph/queries.js +355 -0
  58. package/dist/graph/queries.js.map +1 -0
  59. package/dist/graph/traversal.d.ts +127 -0
  60. package/dist/graph/traversal.d.ts.map +1 -0
  61. package/dist/graph/traversal.js +465 -0
  62. package/dist/graph/traversal.js.map +1 -0
  63. package/dist/index.d.ts +496 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +818 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/installer/banner.d.ts +40 -0
  68. package/dist/installer/banner.d.ts.map +1 -0
  69. package/dist/installer/banner.js +162 -0
  70. package/dist/installer/banner.js.map +1 -0
  71. package/dist/installer/claude-md-template.d.ts +10 -0
  72. package/dist/installer/claude-md-template.d.ts.map +1 -0
  73. package/dist/installer/claude-md-template.js +46 -0
  74. package/dist/installer/claude-md-template.js.map +1 -0
  75. package/dist/installer/config-writer.d.ts +36 -0
  76. package/dist/installer/config-writer.d.ts.map +1 -0
  77. package/dist/installer/config-writer.js +282 -0
  78. package/dist/installer/config-writer.js.map +1 -0
  79. package/dist/installer/index.d.ts +13 -0
  80. package/dist/installer/index.d.ts.map +1 -0
  81. package/dist/installer/index.js +155 -0
  82. package/dist/installer/index.js.map +1 -0
  83. package/dist/installer/prompts.d.ts +18 -0
  84. package/dist/installer/prompts.d.ts.map +1 -0
  85. package/dist/installer/prompts.js +113 -0
  86. package/dist/installer/prompts.js.map +1 -0
  87. package/dist/mcp/index.d.ts +64 -0
  88. package/dist/mcp/index.d.ts.map +1 -0
  89. package/dist/mcp/index.js +207 -0
  90. package/dist/mcp/index.js.map +1 -0
  91. package/dist/mcp/tools.d.ts +93 -0
  92. package/dist/mcp/tools.d.ts.map +1 -0
  93. package/dist/mcp/tools.js +442 -0
  94. package/dist/mcp/tools.js.map +1 -0
  95. package/dist/mcp/transport.d.ts +89 -0
  96. package/dist/mcp/transport.d.ts.map +1 -0
  97. package/dist/mcp/transport.js +170 -0
  98. package/dist/mcp/transport.js.map +1 -0
  99. package/dist/resolution/frameworks/csharp.d.ts +8 -0
  100. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  101. package/dist/resolution/frameworks/csharp.js +274 -0
  102. package/dist/resolution/frameworks/csharp.js.map +1 -0
  103. package/dist/resolution/frameworks/express.d.ts +8 -0
  104. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  105. package/dist/resolution/frameworks/express.js +208 -0
  106. package/dist/resolution/frameworks/express.js.map +1 -0
  107. package/dist/resolution/frameworks/go.d.ts +8 -0
  108. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  109. package/dist/resolution/frameworks/go.js +225 -0
  110. package/dist/resolution/frameworks/go.js.map +1 -0
  111. package/dist/resolution/frameworks/index.d.ts +33 -0
  112. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  113. package/dist/resolution/frameworks/index.js +113 -0
  114. package/dist/resolution/frameworks/index.js.map +1 -0
  115. package/dist/resolution/frameworks/java.d.ts +8 -0
  116. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  117. package/dist/resolution/frameworks/java.js +239 -0
  118. package/dist/resolution/frameworks/java.js.map +1 -0
  119. package/dist/resolution/frameworks/laravel.d.ts +13 -0
  120. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  121. package/dist/resolution/frameworks/laravel.js +198 -0
  122. package/dist/resolution/frameworks/laravel.js.map +1 -0
  123. package/dist/resolution/frameworks/python.d.ts +10 -0
  124. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  125. package/dist/resolution/frameworks/python.js +331 -0
  126. package/dist/resolution/frameworks/python.js.map +1 -0
  127. package/dist/resolution/frameworks/react.d.ts +8 -0
  128. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  129. package/dist/resolution/frameworks/react.js +294 -0
  130. package/dist/resolution/frameworks/react.js.map +1 -0
  131. package/dist/resolution/frameworks/ruby.d.ts +8 -0
  132. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  133. package/dist/resolution/frameworks/ruby.js +262 -0
  134. package/dist/resolution/frameworks/ruby.js.map +1 -0
  135. package/dist/resolution/frameworks/rust.d.ts +8 -0
  136. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  137. package/dist/resolution/frameworks/rust.js +222 -0
  138. package/dist/resolution/frameworks/rust.js.map +1 -0
  139. package/dist/resolution/frameworks/swift.d.ts +10 -0
  140. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  141. package/dist/resolution/frameworks/swift.js +486 -0
  142. package/dist/resolution/frameworks/swift.js.map +1 -0
  143. package/dist/resolution/import-resolver.d.ts +20 -0
  144. package/dist/resolution/import-resolver.d.ts.map +1 -0
  145. package/dist/resolution/import-resolver.js +445 -0
  146. package/dist/resolution/import-resolver.js.map +1 -0
  147. package/dist/resolution/index.d.ts +72 -0
  148. package/dist/resolution/index.d.ts.map +1 -0
  149. package/dist/resolution/index.js +301 -0
  150. package/dist/resolution/index.js.map +1 -0
  151. package/dist/resolution/name-matcher.d.ts +27 -0
  152. package/dist/resolution/name-matcher.d.ts.map +1 -0
  153. package/dist/resolution/name-matcher.js +210 -0
  154. package/dist/resolution/name-matcher.js.map +1 -0
  155. package/dist/resolution/types.d.ts +108 -0
  156. package/dist/resolution/types.d.ts.map +1 -0
  157. package/dist/resolution/types.js +8 -0
  158. package/dist/resolution/types.js.map +1 -0
  159. package/dist/sync/git-hooks.d.ts +66 -0
  160. package/dist/sync/git-hooks.d.ts.map +1 -0
  161. package/dist/sync/git-hooks.js +281 -0
  162. package/dist/sync/git-hooks.js.map +1 -0
  163. package/dist/sync/index.d.ts +13 -0
  164. package/dist/sync/index.d.ts.map +1 -0
  165. package/dist/sync/index.js +18 -0
  166. package/dist/sync/index.js.map +1 -0
  167. package/dist/types.d.ts +410 -0
  168. package/dist/types.d.ts.map +1 -0
  169. package/dist/types.js +165 -0
  170. package/dist/types.js.map +1 -0
  171. package/dist/utils.d.ts +116 -0
  172. package/dist/utils.d.ts.map +1 -0
  173. package/dist/utils.js +295 -0
  174. package/dist/utils.js.map +1 -0
  175. package/dist/vectors/embedder.d.ts +140 -0
  176. package/dist/vectors/embedder.d.ts.map +1 -0
  177. package/dist/vectors/embedder.js +336 -0
  178. package/dist/vectors/embedder.js.map +1 -0
  179. package/dist/vectors/index.d.ts +9 -0
  180. package/dist/vectors/index.d.ts.map +1 -0
  181. package/dist/vectors/index.js +20 -0
  182. package/dist/vectors/index.js.map +1 -0
  183. package/dist/vectors/manager.d.ts +119 -0
  184. package/dist/vectors/manager.d.ts.map +1 -0
  185. package/dist/vectors/manager.js +274 -0
  186. package/dist/vectors/manager.js.map +1 -0
  187. package/dist/vectors/search.d.ts +134 -0
  188. package/dist/vectors/search.d.ts.map +1 -0
  189. package/dist/vectors/search.js +409 -0
  190. package/dist/vectors/search.js.map +1 -0
  191. package/package.json +67 -0
  192. package/scripts/postinstall.js +68 -0
@@ -0,0 +1,13 @@
1
+ /**
2
+ * CodeGraph Interactive Installer
3
+ *
4
+ * Provides a beautiful interactive CLI experience for setting up CodeGraph
5
+ * with Claude Code.
6
+ */
7
+ import { InstallLocation } from './prompts';
8
+ /**
9
+ * Run the interactive installer
10
+ */
11
+ export declare function runInstaller(): Promise<void>;
12
+ export { InstallLocation };
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAA0C,eAAe,EAAE,MAAM,WAAW,CAAC;AAWpF;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAoFlD;AA0DD,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /**
3
+ * CodeGraph Interactive Installer
4
+ *
5
+ * Provides a beautiful interactive CLI experience for setting up CodeGraph
6
+ * with Claude Code.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.runInstaller = runInstaller;
13
+ const child_process_1 = require("child_process");
14
+ const banner_1 = require("./banner");
15
+ const prompts_1 = require("./prompts");
16
+ const config_writer_1 = require("./config-writer");
17
+ const index_1 = __importDefault(require("../index"));
18
+ /**
19
+ * Format a number with commas
20
+ */
21
+ function formatNumber(n) {
22
+ return n.toLocaleString();
23
+ }
24
+ /**
25
+ * Run the interactive installer
26
+ */
27
+ async function runInstaller() {
28
+ // Show the banner
29
+ (0, banner_1.showBanner)();
30
+ try {
31
+ // Step 1: Check if codegraph is available (skip install if already there)
32
+ let codegraphAvailable = false;
33
+ try {
34
+ (0, child_process_1.execSync)('which codegraph', { stdio: 'pipe' });
35
+ codegraphAvailable = true;
36
+ }
37
+ catch {
38
+ // Not installed globally yet
39
+ }
40
+ if (!codegraphAvailable) {
41
+ console.log(banner_1.chalk.dim(' Installing codegraph globally...'));
42
+ try {
43
+ (0, child_process_1.execSync)('npm install -g @colbymchenry/codegraph', { stdio: 'pipe' });
44
+ (0, banner_1.success)('Installed codegraph command globally');
45
+ }
46
+ catch {
47
+ // May fail if no permissions, but that's ok - npx still works
48
+ (0, banner_1.info)('Could not install globally (try with sudo if needed)');
49
+ }
50
+ console.log();
51
+ }
52
+ // Step 2: Ask for installation location
53
+ const location = await (0, prompts_1.promptInstallLocation)();
54
+ console.log();
55
+ // Step 3: Write MCP configuration
56
+ const alreadyHasMcp = (0, config_writer_1.hasMcpConfig)(location);
57
+ (0, config_writer_1.writeMcpConfig)(location);
58
+ if (alreadyHasMcp) {
59
+ (0, banner_1.success)(`Updated MCP server in ${location === 'global' ? '~/.claude.json' : './.claude.json'}`);
60
+ }
61
+ else {
62
+ (0, banner_1.success)(`Added MCP server to ${location === 'global' ? '~/.claude.json' : './.claude.json'}`);
63
+ }
64
+ // Step 4: Ask about auto-allow permissions
65
+ const autoAllow = await (0, prompts_1.promptAutoAllow)();
66
+ console.log();
67
+ if (autoAllow) {
68
+ const alreadyHasPerms = (0, config_writer_1.hasPermissions)(location);
69
+ (0, config_writer_1.writePermissions)(location);
70
+ if (alreadyHasPerms) {
71
+ (0, banner_1.success)(`Updated permissions in ${location === 'global' ? '~/.claude/settings.json' : './.claude/settings.json'}`);
72
+ }
73
+ else {
74
+ (0, banner_1.success)(`Added permissions to ${location === 'global' ? '~/.claude/settings.json' : './.claude/settings.json'}`);
75
+ }
76
+ }
77
+ // Step 5: Write CLAUDE.md instructions
78
+ const claudeMdResult = (0, config_writer_1.writeClaudeMd)(location);
79
+ const claudeMdPath = location === 'global' ? '~/.claude/CLAUDE.md' : './.claude/CLAUDE.md';
80
+ if (claudeMdResult.created) {
81
+ (0, banner_1.success)(`Created ${claudeMdPath} with CodeGraph instructions`);
82
+ }
83
+ else if (claudeMdResult.updated) {
84
+ (0, banner_1.success)(`Updated CodeGraph section in ${claudeMdPath}`);
85
+ }
86
+ else {
87
+ (0, banner_1.success)(`Added CodeGraph instructions to ${claudeMdPath}`);
88
+ }
89
+ // Step 6: For local install, initialize the project
90
+ if (location === 'local') {
91
+ await initializeLocalProject();
92
+ }
93
+ // Show next steps
94
+ (0, banner_1.showNextSteps)(location);
95
+ }
96
+ catch (err) {
97
+ console.log();
98
+ if (err instanceof Error && err.message.includes('readline was closed')) {
99
+ // User cancelled with Ctrl+C
100
+ console.log(banner_1.chalk.dim(' Installation cancelled.'));
101
+ }
102
+ else {
103
+ (0, banner_1.error)(`Installation failed: ${err instanceof Error ? err.message : String(err)}`);
104
+ }
105
+ process.exit(1);
106
+ }
107
+ }
108
+ /**
109
+ * Initialize CodeGraph in the current project (for local installs)
110
+ */
111
+ async function initializeLocalProject() {
112
+ const projectPath = process.cwd();
113
+ // Check if already initialized
114
+ if (index_1.default.isInitialized(projectPath)) {
115
+ (0, banner_1.info)('CodeGraph already initialized in this project');
116
+ return;
117
+ }
118
+ console.log();
119
+ console.log(banner_1.chalk.dim(' Initializing CodeGraph in current project...'));
120
+ // Initialize CodeGraph
121
+ const cg = await index_1.default.init(projectPath);
122
+ (0, banner_1.success)('Created .codegraph/ directory');
123
+ // Index the project
124
+ const result = await cg.indexAll({
125
+ onProgress: (progress) => {
126
+ // Simple progress indicator
127
+ const phaseNames = {
128
+ scanning: 'Scanning files',
129
+ parsing: 'Parsing code',
130
+ storing: 'Storing data',
131
+ resolving: 'Resolving refs',
132
+ };
133
+ const phaseName = phaseNames[progress.phase] || progress.phase;
134
+ const percent = progress.total > 0 ? Math.round((progress.current / progress.total) * 100) : 0;
135
+ process.stdout.write(`\r ${banner_1.chalk.dim(phaseName)}... ${percent}% `);
136
+ },
137
+ });
138
+ // Clear progress line
139
+ process.stdout.write('\r' + ' '.repeat(50) + '\r');
140
+ if (result.success) {
141
+ (0, banner_1.success)(`Indexed ${formatNumber(result.filesIndexed)} files (${formatNumber(result.nodesCreated)} symbols)`);
142
+ }
143
+ else {
144
+ (0, banner_1.success)(`Indexed ${formatNumber(result.filesIndexed)} files with ${result.errors.length} warnings`);
145
+ }
146
+ // Install git hooks if this is a git repository
147
+ if (cg.isGitRepository()) {
148
+ const hookResult = cg.installGitHooks();
149
+ if (hookResult.success) {
150
+ (0, banner_1.success)('Installed git post-commit hook');
151
+ }
152
+ }
153
+ cg.close();
154
+ }
155
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * User prompts for the CodeGraph installer
3
+ * Uses built-in readline to avoid ESM issues with inquirer
4
+ */
5
+ export type InstallLocation = 'global' | 'local';
6
+ /**
7
+ * Prompt for installation location (global or local)
8
+ */
9
+ export declare function promptInstallLocation(): Promise<InstallLocation>;
10
+ /**
11
+ * Prompt for auto-allow permissions
12
+ */
13
+ export declare function promptAutoAllow(): Promise<boolean>;
14
+ /**
15
+ * Prompt for confirmation (yes/no)
16
+ */
17
+ export declare function promptConfirm(message: string, defaultYes?: boolean): Promise<boolean>;
18
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/installer/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC;AAuBjD;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC,CAmBtE;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAiBxD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAYjG"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /**
3
+ * User prompts for the CodeGraph installer
4
+ * Uses built-in readline to avoid ESM issues with inquirer
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.promptInstallLocation = promptInstallLocation;
41
+ exports.promptAutoAllow = promptAutoAllow;
42
+ exports.promptConfirm = promptConfirm;
43
+ const readline = __importStar(require("readline"));
44
+ const banner_1 = require("./banner");
45
+ /**
46
+ * Create a readline interface for prompts
47
+ */
48
+ function createInterface() {
49
+ return readline.createInterface({
50
+ input: process.stdin,
51
+ output: process.stdout,
52
+ });
53
+ }
54
+ /**
55
+ * Prompt the user with a question and return their answer
56
+ */
57
+ function prompt(rl, question) {
58
+ return new Promise((resolve) => {
59
+ rl.question(question, (answer) => {
60
+ resolve(answer.trim());
61
+ });
62
+ });
63
+ }
64
+ /**
65
+ * Prompt for installation location (global or local)
66
+ */
67
+ async function promptInstallLocation() {
68
+ const rl = createInterface();
69
+ console.log(banner_1.chalk.bold(' Where would you like to install?'));
70
+ console.log();
71
+ console.log(' 1) Global (~/.claude) - available in all projects');
72
+ console.log(' 2) Local (./.claude) - this project only');
73
+ console.log();
74
+ const answer = await prompt(rl, ' Choice [1]: ');
75
+ rl.close();
76
+ // Default to '1' if empty, parse the answer
77
+ const choice = answer === '' ? '1' : answer;
78
+ if (choice === '2') {
79
+ return 'local';
80
+ }
81
+ return 'global';
82
+ }
83
+ /**
84
+ * Prompt for auto-allow permissions
85
+ */
86
+ async function promptAutoAllow() {
87
+ const rl = createInterface();
88
+ console.log();
89
+ console.log(banner_1.chalk.bold(' Auto-allow CodeGraph commands?') + banner_1.chalk.dim(' (Skips permission prompts)'));
90
+ console.log();
91
+ console.log(' 1) Yes - auto-approve all codegraph_* tools');
92
+ console.log(' 2) No - ask for permission each time');
93
+ console.log();
94
+ const answer = await prompt(rl, ' Choice [1]: ');
95
+ rl.close();
96
+ // Default to '1' if empty
97
+ const choice = answer === '' ? '1' : answer;
98
+ return choice !== '2';
99
+ }
100
+ /**
101
+ * Prompt for confirmation (yes/no)
102
+ */
103
+ async function promptConfirm(message, defaultYes = true) {
104
+ const rl = createInterface();
105
+ const defaultStr = defaultYes ? 'Y/n' : 'y/N';
106
+ const answer = await prompt(rl, ` ${message} [${defaultStr}]: `);
107
+ rl.close();
108
+ if (answer === '') {
109
+ return defaultYes;
110
+ }
111
+ return answer.toLowerCase().startsWith('y');
112
+ }
113
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/installer/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * CodeGraph MCP Server
3
+ *
4
+ * Model Context Protocol server that exposes CodeGraph functionality
5
+ * as tools for AI assistants like Claude.
6
+ *
7
+ * @module mcp
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { MCPServer } from 'codegraph';
12
+ *
13
+ * const server = new MCPServer('/path/to/project');
14
+ * await server.start();
15
+ * ```
16
+ */
17
+ /**
18
+ * MCP Server for CodeGraph
19
+ *
20
+ * Implements the Model Context Protocol to expose CodeGraph
21
+ * functionality as tools that can be called by AI assistants.
22
+ */
23
+ export declare class MCPServer {
24
+ private transport;
25
+ private cg;
26
+ private toolHandler;
27
+ private projectPath;
28
+ private initError;
29
+ constructor(projectPath?: string);
30
+ /**
31
+ * Start the MCP server
32
+ *
33
+ * Note: CodeGraph initialization is deferred until the initialize request
34
+ * is received, which includes the rootUri from the client.
35
+ */
36
+ start(): Promise<void>;
37
+ /**
38
+ * Initialize CodeGraph for the project
39
+ */
40
+ private initializeCodeGraph;
41
+ /**
42
+ * Stop the server
43
+ */
44
+ stop(): void;
45
+ /**
46
+ * Handle incoming JSON-RPC messages
47
+ */
48
+ private handleMessage;
49
+ /**
50
+ * Handle initialize request
51
+ */
52
+ private handleInitialize;
53
+ /**
54
+ * Handle tools/list request
55
+ */
56
+ private handleToolsList;
57
+ /**
58
+ * Handle tools/call request
59
+ */
60
+ private handleToolsCall;
61
+ }
62
+ export { StdioTransport } from './transport';
63
+ export { tools, ToolHandler } from './tools';
64
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAmBH;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,SAAS,CAAuB;gBAE5B,WAAW,CAAC,EAAE,MAAM;IAKhC;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;OAEG;YACW,mBAAmB;IAiBjC;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;YACW,aAAa;IA6C3B;;OAEG;YACW,gBAAgB;IAkC9B;;OAEG;YACW,eAAe;IAM7B;;OAEG;YACW,eAAe;CA+C9B;AAGD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ /**
3
+ * CodeGraph MCP Server
4
+ *
5
+ * Model Context Protocol server that exposes CodeGraph functionality
6
+ * as tools for AI assistants like Claude.
7
+ *
8
+ * @module mcp
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { MCPServer } from 'codegraph';
13
+ *
14
+ * const server = new MCPServer('/path/to/project');
15
+ * await server.start();
16
+ * ```
17
+ */
18
+ var __importDefault = (this && this.__importDefault) || function (mod) {
19
+ return (mod && mod.__esModule) ? mod : { "default": mod };
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.ToolHandler = exports.tools = exports.StdioTransport = exports.MCPServer = void 0;
23
+ const index_1 = __importDefault(require("../index"));
24
+ const transport_1 = require("./transport");
25
+ const tools_1 = require("./tools");
26
+ /**
27
+ * MCP Server Info
28
+ */
29
+ const SERVER_INFO = {
30
+ name: 'codegraph',
31
+ version: '0.1.0',
32
+ };
33
+ /**
34
+ * MCP Protocol Version
35
+ */
36
+ const PROTOCOL_VERSION = '2024-11-05';
37
+ /**
38
+ * MCP Server for CodeGraph
39
+ *
40
+ * Implements the Model Context Protocol to expose CodeGraph
41
+ * functionality as tools that can be called by AI assistants.
42
+ */
43
+ class MCPServer {
44
+ transport;
45
+ cg = null;
46
+ toolHandler = null;
47
+ projectPath;
48
+ initError = null;
49
+ constructor(projectPath) {
50
+ this.projectPath = projectPath || null;
51
+ this.transport = new transport_1.StdioTransport();
52
+ }
53
+ /**
54
+ * Start the MCP server
55
+ *
56
+ * Note: CodeGraph initialization is deferred until the initialize request
57
+ * is received, which includes the rootUri from the client.
58
+ */
59
+ async start() {
60
+ // Start listening for messages immediately - don't check initialization yet
61
+ // We'll get the project path from the initialize request's rootUri
62
+ this.transport.start(this.handleMessage.bind(this));
63
+ // Keep the process running
64
+ process.on('SIGINT', () => this.stop());
65
+ process.on('SIGTERM', () => this.stop());
66
+ }
67
+ /**
68
+ * Initialize CodeGraph for the project
69
+ */
70
+ async initializeCodeGraph(projectPath) {
71
+ this.projectPath = projectPath;
72
+ if (!index_1.default.isInitialized(projectPath)) {
73
+ this.initError = `CodeGraph not initialized in ${projectPath}. Run 'codegraph init' first.`;
74
+ return;
75
+ }
76
+ try {
77
+ this.cg = await index_1.default.open(projectPath);
78
+ this.toolHandler = new tools_1.ToolHandler(this.cg);
79
+ this.initError = null;
80
+ }
81
+ catch (err) {
82
+ this.initError = `Failed to open CodeGraph: ${err instanceof Error ? err.message : String(err)}`;
83
+ }
84
+ }
85
+ /**
86
+ * Stop the server
87
+ */
88
+ stop() {
89
+ if (this.cg) {
90
+ this.cg.close();
91
+ this.cg = null;
92
+ }
93
+ this.transport.stop();
94
+ process.exit(0);
95
+ }
96
+ /**
97
+ * Handle incoming JSON-RPC messages
98
+ */
99
+ async handleMessage(message) {
100
+ // Check if it's a request (has id) or notification (no id)
101
+ const isRequest = 'id' in message;
102
+ switch (message.method) {
103
+ case 'initialize':
104
+ if (isRequest) {
105
+ await this.handleInitialize(message);
106
+ }
107
+ break;
108
+ case 'initialized':
109
+ // Notification that client has finished initialization
110
+ // No action needed - the client is ready
111
+ break;
112
+ case 'tools/list':
113
+ if (isRequest) {
114
+ await this.handleToolsList(message);
115
+ }
116
+ break;
117
+ case 'tools/call':
118
+ if (isRequest) {
119
+ await this.handleToolsCall(message);
120
+ }
121
+ break;
122
+ case 'ping':
123
+ if (isRequest) {
124
+ this.transport.sendResult(message.id, {});
125
+ }
126
+ break;
127
+ default:
128
+ if (isRequest) {
129
+ this.transport.sendError(message.id, transport_1.ErrorCodes.MethodNotFound, `Method not found: ${message.method}`);
130
+ }
131
+ }
132
+ }
133
+ /**
134
+ * Handle initialize request
135
+ */
136
+ async handleInitialize(request) {
137
+ const params = request.params;
138
+ // Extract project path from rootUri or workspaceFolders
139
+ let projectPath = this.projectPath;
140
+ if (params?.rootUri) {
141
+ // Convert file:// URI to path
142
+ projectPath = params.rootUri.replace(/^file:\/\//, '');
143
+ }
144
+ else if (params?.workspaceFolders?.[0]?.uri) {
145
+ projectPath = params.workspaceFolders[0].uri.replace(/^file:\/\//, '');
146
+ }
147
+ // Fall back to current working directory if no path provided
148
+ if (!projectPath) {
149
+ projectPath = process.cwd();
150
+ }
151
+ // Initialize CodeGraph if we have a project path
152
+ await this.initializeCodeGraph(projectPath);
153
+ // We accept the client's protocol version but respond with our supported version
154
+ this.transport.sendResult(request.id, {
155
+ protocolVersion: PROTOCOL_VERSION,
156
+ capabilities: {
157
+ tools: {},
158
+ },
159
+ serverInfo: SERVER_INFO,
160
+ });
161
+ }
162
+ /**
163
+ * Handle tools/list request
164
+ */
165
+ async handleToolsList(request) {
166
+ this.transport.sendResult(request.id, {
167
+ tools: tools_1.tools,
168
+ });
169
+ }
170
+ /**
171
+ * Handle tools/call request
172
+ */
173
+ async handleToolsCall(request) {
174
+ const params = request.params;
175
+ if (!params || !params.name) {
176
+ this.transport.sendError(request.id, transport_1.ErrorCodes.InvalidParams, 'Missing tool name');
177
+ return;
178
+ }
179
+ const toolName = params.name;
180
+ const toolArgs = params.arguments || {};
181
+ // Validate tool exists
182
+ const tool = tools_1.tools.find(t => t.name === toolName);
183
+ if (!tool) {
184
+ this.transport.sendError(request.id, transport_1.ErrorCodes.InvalidParams, `Unknown tool: ${toolName}`);
185
+ return;
186
+ }
187
+ // Execute the tool
188
+ if (!this.toolHandler) {
189
+ const errorMsg = this.initError ||
190
+ (this.projectPath
191
+ ? `CodeGraph not initialized in ${this.projectPath}. Run 'codegraph init' first.`
192
+ : 'No project path provided. Ensure Claude Code is running in a project directory.');
193
+ this.transport.sendError(request.id, transport_1.ErrorCodes.InternalError, errorMsg);
194
+ return;
195
+ }
196
+ const result = await this.toolHandler.execute(toolName, toolArgs);
197
+ this.transport.sendResult(request.id, result);
198
+ }
199
+ }
200
+ exports.MCPServer = MCPServer;
201
+ // Export for use in CLI
202
+ var transport_2 = require("./transport");
203
+ Object.defineProperty(exports, "StdioTransport", { enumerable: true, get: function () { return transport_2.StdioTransport; } });
204
+ var tools_2 = require("./tools");
205
+ Object.defineProperty(exports, "tools", { enumerable: true, get: function () { return tools_2.tools; } });
206
+ Object.defineProperty(exports, "ToolHandler", { enumerable: true, get: function () { return tools_2.ToolHandler; } });
207
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}