code-auditor-mcp 1.0.1 → 1.1.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 (112) hide show
  1. package/README.md +41 -0
  2. package/dist/api/index.d.ts +1 -0
  3. package/dist/api/index.d.ts.map +1 -0
  4. package/dist/api/index.js +3 -0
  5. package/dist/api/index.js.map +1 -0
  6. package/dist/cli.d.ts +1 -1
  7. package/dist/cli.js +229 -22
  8. package/dist/cli.js.map +1 -1
  9. package/dist/codeIndexDb.d.ts +150 -0
  10. package/dist/codeIndexDb.d.ts.map +1 -0
  11. package/dist/codeIndexDb.js +847 -0
  12. package/dist/codeIndexDb.js.map +1 -0
  13. package/dist/codeIndexService.d.ts +66 -0
  14. package/dist/codeIndexService.d.ts.map +1 -0
  15. package/dist/codeIndexService.js +201 -0
  16. package/dist/codeIndexService.js.map +1 -0
  17. package/dist/config/configLoader.d.ts.map +1 -1
  18. package/dist/config/configLoader.js +17 -1
  19. package/dist/config/configLoader.js.map +1 -1
  20. package/dist/config/defaults.d.ts +9 -0
  21. package/dist/config/defaults.d.ts.map +1 -1
  22. package/dist/config/defaults.js +9 -0
  23. package/dist/config/defaults.js.map +1 -1
  24. package/dist/constants.d.ts +8 -0
  25. package/dist/constants.d.ts.map +1 -0
  26. package/dist/constants.js +14 -0
  27. package/dist/constants.js.map +1 -0
  28. package/dist/functionScanner.d.ts +30 -0
  29. package/dist/functionScanner.d.ts.map +1 -0
  30. package/dist/functionScanner.js +264 -0
  31. package/dist/functionScanner.js.map +1 -0
  32. package/dist/generators/AWSQConfigGenerator.d.ts +8 -0
  33. package/dist/generators/AWSQConfigGenerator.d.ts.map +1 -0
  34. package/dist/generators/AWSQConfigGenerator.js +33 -0
  35. package/dist/generators/AWSQConfigGenerator.js.map +1 -0
  36. package/dist/generators/AiderConfigGenerator.d.ts +8 -0
  37. package/dist/generators/AiderConfigGenerator.d.ts.map +1 -0
  38. package/dist/generators/AiderConfigGenerator.js +23 -0
  39. package/dist/generators/AiderConfigGenerator.js.map +1 -0
  40. package/dist/generators/BaseConfigGenerator.d.ts +51 -0
  41. package/dist/generators/BaseConfigGenerator.d.ts.map +1 -0
  42. package/dist/generators/BaseConfigGenerator.js +67 -0
  43. package/dist/generators/BaseConfigGenerator.js.map +1 -0
  44. package/dist/generators/ClaudeConfigGenerator.d.ts +14 -0
  45. package/dist/generators/ClaudeConfigGenerator.d.ts.map +1 -0
  46. package/dist/generators/ClaudeConfigGenerator.js +70 -0
  47. package/dist/generators/ClaudeConfigGenerator.js.map +1 -0
  48. package/dist/generators/ClineConfigGenerator.d.ts +9 -0
  49. package/dist/generators/ClineConfigGenerator.d.ts.map +1 -0
  50. package/dist/generators/ClineConfigGenerator.js +26 -0
  51. package/dist/generators/ClineConfigGenerator.js.map +1 -0
  52. package/dist/generators/CodeiumConfigGenerator.d.ts +8 -0
  53. package/dist/generators/CodeiumConfigGenerator.d.ts.map +1 -0
  54. package/dist/generators/CodeiumConfigGenerator.js +30 -0
  55. package/dist/generators/CodeiumConfigGenerator.js.map +1 -0
  56. package/dist/generators/ConfigGeneratorFactory.d.ts +35 -0
  57. package/dist/generators/ConfigGeneratorFactory.d.ts.map +1 -0
  58. package/dist/generators/ConfigGeneratorFactory.js +77 -0
  59. package/dist/generators/ConfigGeneratorFactory.js.map +1 -0
  60. package/dist/generators/ContinueConfigGenerator.d.ts +12 -0
  61. package/dist/generators/ContinueConfigGenerator.d.ts.map +1 -0
  62. package/dist/generators/ContinueConfigGenerator.js +99 -0
  63. package/dist/generators/ContinueConfigGenerator.js.map +1 -0
  64. package/dist/generators/CopilotConfigGenerator.d.ts +12 -0
  65. package/dist/generators/CopilotConfigGenerator.d.ts.map +1 -0
  66. package/dist/generators/CopilotConfigGenerator.js +77 -0
  67. package/dist/generators/CopilotConfigGenerator.js.map +1 -0
  68. package/dist/generators/CursorConfigGenerator.d.ts +12 -0
  69. package/dist/generators/CursorConfigGenerator.d.ts.map +1 -0
  70. package/dist/generators/CursorConfigGenerator.js +80 -0
  71. package/dist/generators/CursorConfigGenerator.js.map +1 -0
  72. package/dist/generators/JetBrainsConfigGenerator.d.ts +8 -0
  73. package/dist/generators/JetBrainsConfigGenerator.d.ts.map +1 -0
  74. package/dist/generators/JetBrainsConfigGenerator.js +36 -0
  75. package/dist/generators/JetBrainsConfigGenerator.js.map +1 -0
  76. package/dist/generators/VSCodeConfigGenerator.d.ts +8 -0
  77. package/dist/generators/VSCodeConfigGenerator.d.ts.map +1 -0
  78. package/dist/generators/VSCodeConfigGenerator.js +29 -0
  79. package/dist/generators/VSCodeConfigGenerator.js.map +1 -0
  80. package/dist/generators/index.d.ts +13 -0
  81. package/dist/generators/index.d.ts.map +1 -0
  82. package/dist/generators/index.js +14 -0
  83. package/dist/generators/index.js.map +1 -0
  84. package/dist/mcp.js +483 -2
  85. package/dist/mcp.js.map +1 -1
  86. package/dist/search/QueryParser.d.ts +60 -0
  87. package/dist/search/QueryParser.d.ts.map +1 -0
  88. package/dist/search/QueryParser.js +330 -0
  89. package/dist/search/QueryParser.js.map +1 -0
  90. package/dist/search/index.d.ts +7 -0
  91. package/dist/search/index.d.ts.map +1 -0
  92. package/dist/search/index.js +6 -0
  93. package/dist/search/index.js.map +1 -0
  94. package/dist/test-multi-strategy-search.d.ts +3 -0
  95. package/dist/test-multi-strategy-search.d.ts.map +1 -0
  96. package/dist/test-multi-strategy-search.js +170 -0
  97. package/dist/test-multi-strategy-search.js.map +1 -0
  98. package/dist/types.d.ts +136 -0
  99. package/dist/types.d.ts.map +1 -1
  100. package/dist/ui/InteractivePrompts.d.ts +37 -0
  101. package/dist/ui/InteractivePrompts.d.ts.map +1 -0
  102. package/dist/ui/InteractivePrompts.js +147 -0
  103. package/dist/ui/InteractivePrompts.js.map +1 -0
  104. package/dist/ui/index.d.ts +2 -0
  105. package/dist/ui/index.d.ts.map +1 -0
  106. package/dist/ui/index.js +3 -0
  107. package/dist/ui/index.js.map +1 -0
  108. package/dist/utils/jsDocParser.d.ts +84 -0
  109. package/dist/utils/jsDocParser.d.ts.map +1 -0
  110. package/dist/utils/jsDocParser.js +366 -0
  111. package/dist/utils/jsDocParser.js.map +1 -0
  112. package/package.json +31 -12
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Function Scanner
3
+ * Scans directories for functions using AST parsing
4
+ */
5
+ import { discoverFiles } from './utils/fileDiscovery.js';
6
+ import { parseTypeScriptFile } from './utils/astParser.js';
7
+ import { findNodesByKind, getLineAndColumn } from './utils/astUtils.js';
8
+ import { getImports } from './utils/astUtils.js';
9
+ import * as ts from 'typescript';
10
+ import path from 'path';
11
+ /**
12
+ * Scan directory for functions
13
+ */
14
+ export async function scanDirectoryForFunctions(dirPath, options) {
15
+ const functions = [];
16
+ try {
17
+ // Discover TypeScript and JavaScript files
18
+ const fileExtensions = options?.fileExtensions || ['.ts', '.js', '.tsx', '.jsx'];
19
+ const files = await discoverFiles(dirPath, {
20
+ includePaths: options?.includePaths || ['**/*'],
21
+ excludePaths: options?.excludePaths || ['**/node_modules/**', '**/dist/**', '**/build/**']
22
+ });
23
+ // Filter by extensions
24
+ const targetFiles = files.filter(file => fileExtensions.some(ext => file.endsWith(ext)));
25
+ // Process each file
26
+ for (const filePath of targetFiles) {
27
+ try {
28
+ const fileFunctions = await extractFunctionsFromFile(filePath);
29
+ functions.push(...fileFunctions);
30
+ }
31
+ catch (error) {
32
+ console.error(`Error processing ${filePath}:`, error);
33
+ }
34
+ }
35
+ return functions;
36
+ }
37
+ catch (error) {
38
+ throw new Error(`Failed to scan directory: ${error instanceof Error ? error.message : 'Unknown error'}`);
39
+ }
40
+ }
41
+ /**
42
+ * Extract functions from a single file
43
+ */
44
+ export async function extractFunctionsFromFile(filePath) {
45
+ const functions = [];
46
+ // Parse file
47
+ const parseResult = await parseTypeScriptFile(filePath);
48
+ if (!parseResult.sourceFile) {
49
+ return functions;
50
+ }
51
+ const sourceFile = parseResult.sourceFile;
52
+ // Get file dependencies
53
+ const imports = getImports(sourceFile);
54
+ const dependencies = imports
55
+ .map(imp => imp.moduleSpecifier)
56
+ .filter(spec => !spec.startsWith('.') && !spec.startsWith('/'))
57
+ .filter((v, i, a) => a.indexOf(v) === i); // Unique only
58
+ // Find all function declarations
59
+ const functionDeclarations = findNodesByKind(sourceFile, ts.SyntaxKind.FunctionDeclaration);
60
+ for (const func of functionDeclarations) {
61
+ const funcDecl = func;
62
+ if (funcDecl.name) {
63
+ const { line } = getLineAndColumn(sourceFile, func.getStart());
64
+ functions.push({
65
+ name: funcDecl.name.text,
66
+ filePath,
67
+ lineNumber: line,
68
+ language: getLanguageFromPath(filePath),
69
+ dependencies,
70
+ purpose: `Function ${funcDecl.name.text} implementation`,
71
+ context: `Located in ${path.basename(filePath)}`,
72
+ metadata: {
73
+ kind: 'function',
74
+ isAsync: !!funcDecl.modifiers?.some(m => m.kind === ts.SyntaxKind.AsyncKeyword),
75
+ isExported: !!funcDecl.modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword),
76
+ parameterCount: funcDecl.parameters.length
77
+ }
78
+ });
79
+ }
80
+ }
81
+ // Find arrow functions assigned to variables
82
+ const variableStatements = findNodesByKind(sourceFile, ts.SyntaxKind.VariableStatement);
83
+ for (const varStmt of variableStatements) {
84
+ const varDeclarations = varStmt.declarationList.declarations;
85
+ for (const varDecl of varDeclarations) {
86
+ if (varDecl.initializer &&
87
+ varDecl.initializer.kind === ts.SyntaxKind.ArrowFunction &&
88
+ ts.isIdentifier(varDecl.name)) {
89
+ const { line } = getLineAndColumn(sourceFile, varDecl.getStart());
90
+ const arrowFunc = varDecl.initializer;
91
+ const varStmtNode = varStmt;
92
+ functions.push({
93
+ name: varDecl.name.text,
94
+ filePath,
95
+ lineNumber: line,
96
+ language: getLanguageFromPath(filePath),
97
+ dependencies,
98
+ purpose: `Arrow function ${varDecl.name.text}`,
99
+ context: `Defined in ${path.basename(filePath)}`,
100
+ metadata: {
101
+ kind: 'arrow',
102
+ isAsync: arrowFunc.modifiers?.some(m => m.kind === ts.SyntaxKind.AsyncKeyword) || false,
103
+ isExported: varStmtNode.modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword) || false,
104
+ parameterCount: arrowFunc.parameters.length
105
+ }
106
+ });
107
+ }
108
+ }
109
+ }
110
+ // Find class methods
111
+ const classDeclarations = findNodesByKind(sourceFile, ts.SyntaxKind.ClassDeclaration);
112
+ for (const classDecl of classDeclarations) {
113
+ const className = classDecl.name?.text || 'AnonymousClass';
114
+ const methods = classDecl.members.filter(member => member.kind === ts.SyntaxKind.MethodDeclaration);
115
+ for (const method of methods) {
116
+ if (ts.isIdentifier(method.name)) {
117
+ const { line } = getLineAndColumn(sourceFile, method.getStart());
118
+ functions.push({
119
+ name: `${className}.${method.name.text}`,
120
+ filePath,
121
+ lineNumber: line,
122
+ language: getLanguageFromPath(filePath),
123
+ dependencies,
124
+ purpose: `Method ${method.name.text} of class ${className}`,
125
+ context: `Class method in ${path.basename(filePath)}`,
126
+ metadata: {
127
+ kind: 'method',
128
+ className,
129
+ isAsync: !!method.modifiers?.some(m => m.kind === ts.SyntaxKind.AsyncKeyword),
130
+ isStatic: !!method.modifiers?.some(m => m.kind === ts.SyntaxKind.StaticKeyword),
131
+ isPrivate: !!method.modifiers?.some(m => m.kind === ts.SyntaxKind.PrivateKeyword),
132
+ parameterCount: method.parameters.length
133
+ }
134
+ });
135
+ }
136
+ }
137
+ }
138
+ return functions;
139
+ }
140
+ /**
141
+ * Get language from file path
142
+ */
143
+ function getLanguageFromPath(filePath) {
144
+ const ext = path.extname(filePath).toLowerCase();
145
+ switch (ext) {
146
+ case '.ts':
147
+ case '.tsx':
148
+ return 'typescript';
149
+ case '.js':
150
+ case '.jsx':
151
+ return 'javascript';
152
+ default:
153
+ return 'unknown';
154
+ }
155
+ }
156
+ // Aliases for MCP server compatibility
157
+ export const scanFunctionsInFile = extractFunctionsFromFile;
158
+ export async function scanFunctionsInDirectory(dirPath, options) {
159
+ return scanDirectoryForFunctions(dirPath, {
160
+ fileExtensions: options?.fileTypes,
161
+ includePaths: options?.recursive !== false ? ['**/*'] : ['*']
162
+ });
163
+ }
164
+ /**
165
+ * Function Scanner class for compatibility
166
+ */
167
+ export class FunctionScanner {
168
+ async scanFunctions(content, filePath, language) {
169
+ // Parse the content directly
170
+ const functions = [];
171
+ // Create a TypeScript source file from content
172
+ const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
173
+ // Get file dependencies
174
+ const imports = getImports(sourceFile);
175
+ const dependencies = imports
176
+ .map(imp => imp.moduleSpecifier)
177
+ .filter(spec => !spec.startsWith('.') && !spec.startsWith('/'))
178
+ .filter((v, i, a) => a.indexOf(v) === i); // Unique only
179
+ // Find all function declarations
180
+ const functionDeclarations = findNodesByKind(sourceFile, ts.SyntaxKind.FunctionDeclaration);
181
+ for (const func of functionDeclarations) {
182
+ const funcNode = func;
183
+ if (!funcNode.name)
184
+ continue;
185
+ const { line } = getLineAndColumn(sourceFile, funcNode.getStart());
186
+ functions.push({
187
+ name: funcNode.name.text,
188
+ filePath: filePath,
189
+ lineNumber: line,
190
+ language: language,
191
+ dependencies,
192
+ purpose: `Function ${funcNode.name.text} implementation`,
193
+ context: `Located in ${path.basename(filePath)}`,
194
+ metadata: {
195
+ kind: 'function',
196
+ isAsync: !!funcNode.modifiers?.some(m => m.kind === ts.SyntaxKind.AsyncKeyword),
197
+ isExported: !!funcNode.modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword),
198
+ parameterCount: funcNode.parameters.length
199
+ }
200
+ });
201
+ }
202
+ // Find arrow functions and variable declarations
203
+ const varDeclarations = findNodesByKind(sourceFile, ts.SyntaxKind.VariableStatement);
204
+ for (const varStmt of varDeclarations) {
205
+ const varStmtNode = varStmt;
206
+ for (const declaration of varStmtNode.declarationList.declarations) {
207
+ if (declaration.initializer &&
208
+ declaration.initializer.kind === ts.SyntaxKind.ArrowFunction &&
209
+ ts.isIdentifier(declaration.name)) {
210
+ const arrowFunc = declaration.initializer;
211
+ const { line } = getLineAndColumn(sourceFile, declaration.getStart());
212
+ functions.push({
213
+ name: declaration.name.text,
214
+ filePath: filePath,
215
+ lineNumber: line,
216
+ language: language,
217
+ dependencies,
218
+ purpose: `Arrow function ${declaration.name.text}`,
219
+ context: `Defined in ${path.basename(filePath)}`,
220
+ metadata: {
221
+ kind: 'arrow',
222
+ isAsync: !!arrowFunc.modifiers?.some(m => m.kind === ts.SyntaxKind.AsyncKeyword),
223
+ isExported: !!varStmtNode.modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword),
224
+ parameterCount: arrowFunc.parameters.length
225
+ }
226
+ });
227
+ }
228
+ }
229
+ }
230
+ // Find class methods
231
+ const classDeclarations = findNodesByKind(sourceFile, ts.SyntaxKind.ClassDeclaration);
232
+ for (const classDecl of classDeclarations) {
233
+ const classNode = classDecl;
234
+ if (!classNode.name)
235
+ continue;
236
+ const className = classNode.name.text;
237
+ for (const member of classNode.members) {
238
+ if (ts.isMethodDeclaration(member) && member.name && ts.isIdentifier(member.name)) {
239
+ const method = member;
240
+ const { line } = getLineAndColumn(sourceFile, method.getStart());
241
+ functions.push({
242
+ name: `${className}.${method.name.text}`,
243
+ filePath: filePath,
244
+ lineNumber: line,
245
+ language: language,
246
+ dependencies,
247
+ purpose: `Method ${method.name.text} of class ${className}`,
248
+ context: `Class method in ${path.basename(filePath)}`,
249
+ metadata: {
250
+ kind: 'method',
251
+ className,
252
+ isAsync: !!method.modifiers?.some(m => m.kind === ts.SyntaxKind.AsyncKeyword),
253
+ isStatic: !!method.modifiers?.some(m => m.kind === ts.SyntaxKind.StaticKeyword),
254
+ isPrivate: !!method.modifiers?.some(m => m.kind === ts.SyntaxKind.PrivateKeyword),
255
+ parameterCount: method.parameters.length
256
+ }
257
+ });
258
+ }
259
+ }
260
+ }
261
+ return functions;
262
+ }
263
+ }
264
+ //# sourceMappingURL=functionScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionScanner.js","sourceRoot":"","sources":["../src/functionScanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAe,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAe,EACf,OAAqB;IAErB,MAAM,SAAS,GAAuB,EAAE,CAAC;IAEzC,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,MAAM,aAAa,CAC/B,OAAO,EACP;YACE,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,CAAC,MAAM,CAAC;YAC/C,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,CAAC,oBAAoB,EAAE,YAAY,EAAE,aAAa,CAAC;SAC3F,CACF,CAAC;QAEF,uBAAuB;QACvB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACtC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAC/C,CAAC;QAEF,oBAAoB;QACpB,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,wBAAwB,CAAC,QAAQ,CAAC,CAAC;gBAC/D,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3G,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,QAAgB;IAC7D,MAAM,SAAS,GAAuB,EAAE,CAAC;IAEzC,aAAa;IACb,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAE1C,wBAAwB;IACxB,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,OAAO;SACzB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC;SAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc;IAE1D,iCAAiC;IACjC,MAAM,oBAAoB,GAAG,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5F,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAA8B,CAAC;QAChD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/D,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;gBACxB,QAAQ;gBACR,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,CAAC;gBACvC,YAAY;gBACZ,OAAO,EAAE,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,iBAAiB;gBACxD,OAAO,EAAE,cAAc,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAChD,QAAQ,EAAE;oBACR,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;oBAC/E,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;oBACnF,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM;iBAC3C;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,MAAM,kBAAkB,GAAG,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACxF,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,MAAM,eAAe,GAAI,OAAgC,CAAC,eAAe,CAAC,YAAY,CAAC;QACvF,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,WAAW;gBACnB,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;gBACxD,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClE,MAAM,SAAS,GAAG,OAAO,CAAC,WAA+B,CAAC;gBAC1D,MAAM,WAAW,GAAG,OAA+B,CAAC;gBACpD,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;oBACvB,QAAQ;oBACR,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,CAAC;oBACvC,YAAY;oBACZ,OAAO,EAAE,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;oBAC9C,OAAO,EAAE,cAAc,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBAChD,QAAQ,EAAE;wBACR,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,KAAK;wBACvF,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK;wBAC7F,cAAc,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM;qBAC5C;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,iBAAiB,GAAG,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACtF,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAI,SAAiC,CAAC,IAAI,EAAE,IAAI,IAAI,gBAAgB,CAAC;QACpF,MAAM,OAAO,GAAI,SAAiC,CAAC,OAAO,CAAC,MAAM,CAC/D,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAChC,CAAC;QAE5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjE,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;oBACxC,QAAQ;oBACR,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,CAAC;oBACvC,YAAY;oBACZ,OAAO,EAAE,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,SAAS,EAAE;oBAC3D,OAAO,EAAE,mBAAmB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACrD,QAAQ,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,SAAS;wBACT,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;wBAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;wBAC/E,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;wBACjF,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;qBACzC;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAe,EACf,OAAuD;IAEvD,OAAO,yBAAyB,CAAC,OAAO,EAAE;QACxC,cAAc,EAAE,OAAO,EAAE,SAAS;QAClC,YAAY,EAAE,OAAO,EAAE,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B,KAAK,CAAC,aAAa,CACjB,OAAe,EACf,QAAgB,EAChB,QAAgB;QAEhB,6BAA6B;QAC7B,MAAM,SAAS,GAAuB,EAAE,CAAC;QAEzC,+CAA+C;QAC/C,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,OAAO,EACP,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;QAEF,wBAAwB;QACxB,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,OAAO;aACzB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC;aAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc;QAE1D,iCAAiC;QACjC,MAAM,oBAAoB,GAAG,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAC5F,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,IAA8B,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAAE,SAAS;YAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEnE,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;gBACxB,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,QAAQ;gBAClB,YAAY;gBACZ,OAAO,EAAE,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,iBAAiB;gBACxD,OAAO,EAAE,cAAc,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAChD,QAAQ,EAAE;oBACR,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;oBAC/E,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;oBACnF,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM;iBAC3C;aACF,CAAC,CAAC;QACL,CAAC;QAED,iDAAiD;QACjD,MAAM,eAAe,GAAG,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACrF,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,OAA+B,CAAC;YACpD,KAAK,MAAM,WAAW,IAAI,WAAW,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;gBACnE,IAAI,WAAW,CAAC,WAAW;oBACvB,WAAW,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;oBAC5D,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,MAAM,SAAS,GAAG,WAAW,CAAC,WAA+B,CAAC;oBAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAEtE,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI;wBAC3B,QAAQ,EAAE,QAAQ;wBAClB,UAAU,EAAE,IAAI;wBAChB,QAAQ,EAAE,QAAQ;wBAClB,YAAY;wBACZ,OAAO,EAAE,kBAAkB,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;wBAClD,OAAO,EAAE,cAAc,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;wBAChD,QAAQ,EAAE;4BACR,IAAI,EAAE,OAAO;4BACb,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;4BAChF,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;4BACtF,cAAc,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM;yBAC5C;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,iBAAiB,GAAG,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACtF,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,SAAgC,CAAC;YACnD,IAAI,CAAC,SAAS,CAAC,IAAI;gBAAE,SAAS;YAE9B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAEtC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClF,MAAM,MAAM,GAAG,MAA8B,CAAC;oBAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAEjE,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,GAAG,SAAS,IAAK,MAAM,CAAC,IAAsB,CAAC,IAAI,EAAE;wBAC3D,QAAQ,EAAE,QAAQ;wBAClB,UAAU,EAAE,IAAI;wBAChB,QAAQ,EAAE,QAAQ;wBAClB,YAAY;wBACZ,OAAO,EAAE,UAAW,MAAM,CAAC,IAAsB,CAAC,IAAI,aAAa,SAAS,EAAE;wBAC9E,OAAO,EAAE,mBAAmB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;wBACrD,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,SAAS;4BACT,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;4BAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;4BAC/E,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;4BACjF,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;yBACzC;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { BaseConfigGenerator, ConfigOutput } from './BaseConfigGenerator.js';
2
+ export declare class AWSQConfigGenerator extends BaseConfigGenerator {
3
+ getToolName(): string;
4
+ getFilename(): string;
5
+ generateConfig(): ConfigOutput;
6
+ getInstructions(): string;
7
+ }
8
+ //# sourceMappingURL=AWSQConfigGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AWSQConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/AWSQConfigGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7E,qBAAa,mBAAoB,SAAQ,mBAAmB;IAC1D,WAAW,IAAI,MAAM;IACrB,WAAW,IAAI,MAAM;IAErB,cAAc,IAAI,YAAY;IA0B9B,eAAe,IAAI,MAAM;CAG1B"}
@@ -0,0 +1,33 @@
1
+ import { BaseConfigGenerator } from './BaseConfigGenerator.js';
2
+ export class AWSQConfigGenerator extends BaseConfigGenerator {
3
+ getToolName() { return 'AWS Q Developer'; }
4
+ getFilename() { return 'awsq-customization.json'; }
5
+ generateConfig() {
6
+ const config = {
7
+ customizations: {
8
+ name: 'CodeIndexCustomization',
9
+ description: 'Local code index for AWS Q',
10
+ repositories: [{
11
+ type: 'external',
12
+ endpoint: `${this.serverUrl}/api/awsq`,
13
+ authentication: { type: 'bearer', token: this.getDefaultApiKey() }
14
+ }],
15
+ capabilities: {
16
+ codeCompletion: true,
17
+ codeExplanation: true,
18
+ codeTransformation: false,
19
+ search: true
20
+ }
21
+ }
22
+ };
23
+ return {
24
+ filename: this.getFilename(),
25
+ content: this.formatJson(config),
26
+ instructions: 'Install AWS Toolkit, open AWS Q settings, import this configuration file.'
27
+ };
28
+ }
29
+ getInstructions() {
30
+ return 'AWS Q configuration instructions...';
31
+ }
32
+ }
33
+ //# sourceMappingURL=AWSQConfigGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AWSQConfigGenerator.js","sourceRoot":"","sources":["../../src/generators/AWSQConfigGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAgB,MAAM,0BAA0B,CAAC;AAE7E,MAAM,OAAO,mBAAoB,SAAQ,mBAAmB;IAC1D,WAAW,KAAa,OAAO,iBAAiB,CAAC,CAAC,CAAC;IACnD,WAAW,KAAa,OAAO,yBAAyB,CAAC,CAAC,CAAC;IAE3D,cAAc;QACZ,MAAM,MAAM,GAAG;YACb,cAAc,EAAE;gBACd,IAAI,EAAE,wBAAwB;gBAC9B,WAAW,EAAE,4BAA4B;gBACzC,YAAY,EAAE,CAAC;wBACb,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,WAAW;wBACtC,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE;qBACnE,CAAC;gBACF,YAAY,EAAE;oBACZ,cAAc,EAAE,IAAI;oBACpB,eAAe,EAAE,IAAI;oBACrB,kBAAkB,EAAE,KAAK;oBACzB,MAAM,EAAE,IAAI;iBACb;aACF;SACF,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;YAC5B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,YAAY,EAAE,2EAA2E;SAC1F,CAAC;IACJ,CAAC;IAED,eAAe;QACb,OAAO,qCAAqC,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { BaseConfigGenerator, ConfigOutput } from './BaseConfigGenerator.js';
2
+ export declare class AiderConfigGenerator extends BaseConfigGenerator {
3
+ getToolName(): string;
4
+ getFilename(): string;
5
+ generateConfig(): ConfigOutput;
6
+ getInstructions(): string;
7
+ }
8
+ //# sourceMappingURL=AiderConfigGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiderConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/AiderConfigGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7E,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,WAAW,IAAI,MAAM;IACrB,WAAW,IAAI,MAAM;IAErB,cAAc,IAAI,YAAY;IAgB9B,eAAe,IAAI,MAAM;CAG1B"}
@@ -0,0 +1,23 @@
1
+ import { BaseConfigGenerator } from './BaseConfigGenerator.js';
2
+ export class AiderConfigGenerator extends BaseConfigGenerator {
3
+ getToolName() { return 'Aider'; }
4
+ getFilename() { return '.aider.conf.yml'; }
5
+ generateConfig() {
6
+ const config = {
7
+ model: 'gpt-4',
8
+ 'edit-format': 'diff',
9
+ 'auto-commits': false,
10
+ 'api-base': `${this.serverUrl}/api/aider`,
11
+ 'api-key': this.getDefaultApiKey()
12
+ };
13
+ return {
14
+ filename: this.getFilename(),
15
+ content: this.formatYaml(config),
16
+ instructions: 'Place in project root as .aider.conf.yml'
17
+ };
18
+ }
19
+ getInstructions() {
20
+ return 'Aider configuration instructions...';
21
+ }
22
+ }
23
+ //# sourceMappingURL=AiderConfigGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiderConfigGenerator.js","sourceRoot":"","sources":["../../src/generators/AiderConfigGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAgB,MAAM,0BAA0B,CAAC;AAE7E,MAAM,OAAO,oBAAqB,SAAQ,mBAAmB;IAC3D,WAAW,KAAa,OAAO,OAAO,CAAC,CAAC,CAAC;IACzC,WAAW,KAAa,OAAO,iBAAiB,CAAC,CAAC,CAAC;IAEnD,cAAc;QACZ,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,OAAO;YACd,aAAa,EAAE,MAAM;YACrB,cAAc,EAAE,KAAK;YACrB,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,YAAY;YACzC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE;SACnC,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;YAC5B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,YAAY,EAAE,0CAA0C;SACzD,CAAC;IACJ,CAAC;IAED,eAAe;QACb,OAAO,qCAAqC,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Base Configuration Generator
3
+ * Abstract class for all AI tool config generators
4
+ */
5
+ export interface ConfigOutput {
6
+ filename: string;
7
+ content: string;
8
+ additionalFiles?: AdditionalFile[];
9
+ instructions: string;
10
+ }
11
+ export interface AdditionalFile {
12
+ filename: string;
13
+ content: string;
14
+ }
15
+ export declare abstract class BaseConfigGenerator {
16
+ protected serverUrl: string;
17
+ constructor(serverUrl?: string);
18
+ /**
19
+ * Generate the configuration for the specific tool
20
+ */
21
+ abstract generateConfig(): ConfigOutput;
22
+ /**
23
+ * Get the default filename for this tool's configuration
24
+ */
25
+ abstract getFilename(): string;
26
+ /**
27
+ * Get setup instructions for this tool
28
+ */
29
+ abstract getInstructions(): string;
30
+ /**
31
+ * Format an object as pretty-printed JSON
32
+ */
33
+ protected formatJson(obj: any, indent?: number): string;
34
+ /**
35
+ * Convert a JSON object to YAML format
36
+ */
37
+ protected formatYaml(obj: any, indent?: number): string;
38
+ /**
39
+ * Get the tool name (for display purposes)
40
+ */
41
+ abstract getToolName(): string;
42
+ /**
43
+ * Check if this tool requires authentication
44
+ */
45
+ requiresAuth(): boolean;
46
+ /**
47
+ * Get the default API key for this tool
48
+ */
49
+ getDefaultApiKey(): string;
50
+ }
51
+ //# sourceMappingURL=BaseConfigGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/BaseConfigGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,8BAAsB,mBAAmB;IACvC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEhB,SAAS,GAAE,MAA2B;IAIlD;;OAEG;IACH,QAAQ,CAAC,cAAc,IAAI,YAAY;IAEvC;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,MAAM;IAE9B;;OAEG;IACH,QAAQ,CAAC,eAAe,IAAI,MAAM;IAElC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM;IAI1D;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM;IAgC1D;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,MAAM;IAE9B;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG3B"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Base Configuration Generator
3
+ * Abstract class for all AI tool config generators
4
+ */
5
+ import { DEFAULT_SERVER_URL, DEFAULT_API_KEY } from '../constants.js';
6
+ export class BaseConfigGenerator {
7
+ serverUrl;
8
+ constructor(serverUrl = DEFAULT_SERVER_URL) {
9
+ this.serverUrl = serverUrl;
10
+ }
11
+ /**
12
+ * Format an object as pretty-printed JSON
13
+ */
14
+ formatJson(obj, indent = 2) {
15
+ return JSON.stringify(obj, null, indent);
16
+ }
17
+ /**
18
+ * Convert a JSON object to YAML format
19
+ */
20
+ formatYaml(obj, indent = 0) {
21
+ let yaml = '';
22
+ const spaces = ' '.repeat(indent);
23
+ for (const [key, value] of Object.entries(obj)) {
24
+ if (value === null || value === undefined) {
25
+ yaml += `${spaces}${key}: null\n`;
26
+ }
27
+ else if (typeof value === 'object' && !Array.isArray(value)) {
28
+ yaml += `${spaces}${key}:\n${this.formatYaml(value, indent + 2)}`;
29
+ }
30
+ else if (Array.isArray(value)) {
31
+ yaml += `${spaces}${key}:\n`;
32
+ value.forEach(item => {
33
+ if (typeof item === 'object') {
34
+ yaml += `${spaces}- \n${this.formatYaml(item, indent + 4)}`;
35
+ }
36
+ else {
37
+ yaml += `${spaces}- ${item}\n`;
38
+ }
39
+ });
40
+ }
41
+ else if (typeof value === 'string' && value.includes('\n')) {
42
+ // Multi-line string
43
+ yaml += `${spaces}${key}: |\n`;
44
+ value.split('\n').forEach(line => {
45
+ yaml += `${spaces} ${line}\n`;
46
+ });
47
+ }
48
+ else {
49
+ yaml += `${spaces}${key}: ${value}\n`;
50
+ }
51
+ }
52
+ return yaml;
53
+ }
54
+ /**
55
+ * Check if this tool requires authentication
56
+ */
57
+ requiresAuth() {
58
+ return true;
59
+ }
60
+ /**
61
+ * Get the default API key for this tool
62
+ */
63
+ getDefaultApiKey() {
64
+ return DEFAULT_API_KEY;
65
+ }
66
+ }
67
+ //# sourceMappingURL=BaseConfigGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConfigGenerator.js","sourceRoot":"","sources":["../../src/generators/BaseConfigGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AActE,MAAM,OAAgB,mBAAmB;IAC7B,SAAS,CAAS;IAE5B,YAAY,YAAoB,kBAAkB;QAChD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAiBD;;OAEG;IACO,UAAU,CAAC,GAAQ,EAAE,SAAiB,CAAC;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACO,UAAU,CAAC,GAAQ,EAAE,SAAiB,CAAC;QAC/C,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAElC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1C,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,UAAU,CAAC;YACpC,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9D,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YACpE,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC;gBAC7B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACnB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC7B,IAAI,IAAI,GAAG,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACN,IAAI,IAAI,GAAG,MAAM,KAAK,IAAI,IAAI,CAAC;oBACjC,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7D,oBAAoB;gBACpB,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,OAAO,CAAC;gBAC/B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC/B,IAAI,IAAI,GAAG,MAAM,KAAK,IAAI,IAAI,CAAC;gBACjC,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC;YACxC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAOD;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,eAAe,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Claude Desktop Configuration Generator
3
+ * Generates configuration for Claude Desktop app
4
+ */
5
+ import { BaseConfigGenerator, ConfigOutput } from './BaseConfigGenerator.js';
6
+ export declare class ClaudeConfigGenerator extends BaseConfigGenerator {
7
+ getToolName(): string;
8
+ getFilename(): string;
9
+ generateConfig(): ConfigOutput;
10
+ getInstructions(): string;
11
+ private getConfigPath;
12
+ requiresAuth(): boolean;
13
+ }
14
+ //# sourceMappingURL=ClaudeConfigGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/ClaudeConfigGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAI7E,qBAAa,qBAAsB,SAAQ,mBAAmB;IAC5D,WAAW,IAAI,MAAM;IAIrB,WAAW,IAAI,MAAM;IAIrB,cAAc,IAAI,YAAY;IAuB9B,eAAe,IAAI,MAAM;IAsBzB,OAAO,CAAC,aAAa;IAWrB,YAAY,IAAI,OAAO;CAGxB"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Claude Desktop Configuration Generator
3
+ * Generates configuration for Claude Desktop app
4
+ */
5
+ import { BaseConfigGenerator } from './BaseConfigGenerator.js';
6
+ import { resolve } from 'path';
7
+ import { platform } from 'os';
8
+ export class ClaudeConfigGenerator extends BaseConfigGenerator {
9
+ getToolName() {
10
+ return 'Claude Desktop';
11
+ }
12
+ getFilename() {
13
+ return 'claude_desktop_config.json';
14
+ }
15
+ generateConfig() {
16
+ const config = {
17
+ mcpServers: {
18
+ 'code-index': {
19
+ command: 'node',
20
+ args: [
21
+ resolve(process.cwd(), 'dist/mcp.js'),
22
+ '--mcp-mode'
23
+ ],
24
+ env: {
25
+ MCP_SERVER_URL: this.serverUrl
26
+ }
27
+ }
28
+ }
29
+ };
30
+ return {
31
+ filename: this.getFilename(),
32
+ content: this.formatJson(config),
33
+ instructions: this.getInstructions()
34
+ };
35
+ }
36
+ getInstructions() {
37
+ const configPath = this.getConfigPath();
38
+ return `
39
+ Claude Desktop Configuration Instructions:
40
+
41
+ 1. Place this file at: ${configPath}
42
+ 2. Restart Claude Desktop
43
+ 3. Look for the "hammer" icon (🔨) to access MCP tools
44
+ 4. Your code index tools will be available
45
+
46
+ Available MCP Tools:
47
+ - search_functions: Search your codebase
48
+ - find_definition: Find function definitions
49
+ - index_functions: Index new files
50
+ - get_index_stats: View indexing statistics
51
+ - register_functions: Manually register functions
52
+
53
+ Note: Claude Desktop has excellent MCP support built-in!
54
+ `;
55
+ }
56
+ getConfigPath() {
57
+ switch (platform()) {
58
+ case 'darwin':
59
+ return '~/Library/Application Support/Claude/claude_desktop_config.json';
60
+ case 'win32':
61
+ return '%APPDATA%\\Claude\\claude_desktop_config.json';
62
+ default:
63
+ return '~/.config/Claude/claude_desktop_config.json';
64
+ }
65
+ }
66
+ requiresAuth() {
67
+ return false; // Claude Desktop uses local MCP connection
68
+ }
69
+ }
70
+ //# sourceMappingURL=ClaudeConfigGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeConfigGenerator.js","sourceRoot":"","sources":["../../src/generators/ClaudeConfigGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAgB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B,MAAM,OAAO,qBAAsB,SAAQ,mBAAmB;IAC5D,WAAW;QACT,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,OAAO,4BAA4B,CAAC;IACtC,CAAC;IAED,cAAc;QACZ,MAAM,MAAM,GAAG;YACb,UAAU,EAAE;gBACV,YAAY,EAAE;oBACZ,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE;wBACJ,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;wBACrC,YAAY;qBACb;oBACD,GAAG,EAAE;wBACH,cAAc,EAAE,IAAI,CAAC,SAAS;qBAC/B;iBACF;aACF;SACF,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;YAC5B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,eAAe;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAExC,OAAO;;;yBAGc,UAAU;;;;;;;;;;;;;CAalC,CAAC;IACA,CAAC;IAEO,aAAa;QACnB,QAAQ,QAAQ,EAAE,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,iEAAiE,CAAC;YAC3E,KAAK,OAAO;gBACV,OAAO,+CAA+C,CAAC;YACzD;gBACE,OAAO,6CAA6C,CAAC;QACzD,CAAC;IACH,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,CAAC,2CAA2C;IAC3D,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { BaseConfigGenerator, ConfigOutput } from './BaseConfigGenerator.js';
2
+ export declare class ClineConfigGenerator extends BaseConfigGenerator {
3
+ getToolName(): string;
4
+ getFilename(): string;
5
+ generateConfig(): ConfigOutput;
6
+ getInstructions(): string;
7
+ requiresAuth(): boolean;
8
+ }
9
+ //# sourceMappingURL=ClineConfigGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClineConfigGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/ClineConfigGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7E,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,WAAW,IAAI,MAAM;IACrB,WAAW,IAAI,MAAM;IAErB,cAAc,IAAI,YAAY;IAiB9B,eAAe,IAAI,MAAM;IAIzB,YAAY,IAAI,OAAO;CACxB"}
@@ -0,0 +1,26 @@
1
+ import { BaseConfigGenerator } from './BaseConfigGenerator.js';
2
+ import { resolve } from 'path';
3
+ export class ClineConfigGenerator extends BaseConfigGenerator {
4
+ getToolName() { return 'Cline'; }
5
+ getFilename() { return '.cline/mcp-config.json'; }
6
+ generateConfig() {
7
+ const config = {
8
+ mcpServers: {
9
+ 'code-index': {
10
+ command: 'node',
11
+ args: [resolve(process.cwd(), 'dist/mcp.js'), '--mcp-mode']
12
+ }
13
+ }
14
+ };
15
+ return {
16
+ filename: this.getFilename(),
17
+ content: this.formatJson(config),
18
+ instructions: 'Place in .cline/mcp-config.json and restart Cline'
19
+ };
20
+ }
21
+ getInstructions() {
22
+ return 'Cline configuration instructions...';
23
+ }
24
+ requiresAuth() { return false; }
25
+ }
26
+ //# sourceMappingURL=ClineConfigGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClineConfigGenerator.js","sourceRoot":"","sources":["../../src/generators/ClineConfigGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAgB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,OAAO,oBAAqB,SAAQ,mBAAmB;IAC3D,WAAW,KAAa,OAAO,OAAO,CAAC,CAAC,CAAC;IACzC,WAAW,KAAa,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAE1D,cAAc;QACZ,MAAM,MAAM,GAAG;YACb,UAAU,EAAE;gBACV,YAAY,EAAE;oBACZ,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC;iBAC5D;aACF;SACF,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;YAC5B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAChC,YAAY,EAAE,mDAAmD;SAClE,CAAC;IACJ,CAAC;IAED,eAAe;QACb,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IAED,YAAY,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;CAC1C"}