agentinit 1.4.1 → 1.5.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 (173) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +209 -0
  3. package/dist/agentinit-1.5.0.tgz +0 -0
  4. package/dist/agents/Agent.d.ts +110 -0
  5. package/dist/agents/Agent.d.ts.map +1 -0
  6. package/dist/agents/Agent.js +174 -0
  7. package/dist/agents/Agent.js.map +1 -0
  8. package/dist/agents/ClaudeAgent.d.ts +50 -0
  9. package/dist/agents/ClaudeAgent.d.ts.map +1 -0
  10. package/dist/agents/ClaudeAgent.js +249 -0
  11. package/dist/agents/ClaudeAgent.js.map +1 -0
  12. package/dist/agents/ClaudeDesktopAgent.d.ts +49 -0
  13. package/dist/agents/ClaudeDesktopAgent.d.ts.map +1 -0
  14. package/dist/agents/ClaudeDesktopAgent.js +143 -0
  15. package/dist/agents/ClaudeDesktopAgent.js.map +1 -0
  16. package/dist/agents/CodexCliAgent.d.ts +48 -0
  17. package/dist/agents/CodexCliAgent.d.ts.map +1 -0
  18. package/dist/agents/CodexCliAgent.js +262 -0
  19. package/dist/agents/CodexCliAgent.js.map +1 -0
  20. package/dist/agents/CursorAgent.d.ts +44 -0
  21. package/dist/agents/CursorAgent.d.ts.map +1 -0
  22. package/dist/agents/CursorAgent.js +231 -0
  23. package/dist/agents/CursorAgent.js.map +1 -0
  24. package/dist/agents/GeminiCliAgent.d.ts +40 -0
  25. package/dist/agents/GeminiCliAgent.d.ts.map +1 -0
  26. package/dist/agents/GeminiCliAgent.js +195 -0
  27. package/dist/agents/GeminiCliAgent.js.map +1 -0
  28. package/dist/cli.d.ts +3 -0
  29. package/dist/cli.d.ts.map +1 -0
  30. package/dist/cli.js +33191 -0
  31. package/dist/cli.js.map +1 -0
  32. package/dist/commands/apply.d.ts +2 -0
  33. package/dist/commands/apply.d.ts.map +1 -0
  34. package/dist/commands/apply.js +468 -0
  35. package/dist/commands/apply.js.map +1 -0
  36. package/dist/commands/config.d.ts +8 -0
  37. package/dist/commands/config.d.ts.map +1 -0
  38. package/dist/commands/config.js +6 -0
  39. package/dist/commands/config.js.map +1 -0
  40. package/dist/commands/detect.d.ts +6 -0
  41. package/dist/commands/detect.d.ts.map +1 -0
  42. package/dist/commands/detect.js +55 -0
  43. package/dist/commands/detect.js.map +1 -0
  44. package/dist/commands/init.d.ts +7 -0
  45. package/dist/commands/init.d.ts.map +1 -0
  46. package/dist/commands/init.js +105 -0
  47. package/dist/commands/init.js.map +1 -0
  48. package/dist/commands/mcp.d.ts +8 -0
  49. package/dist/commands/mcp.d.ts.map +1 -0
  50. package/dist/commands/mcp.js +127 -0
  51. package/dist/commands/mcp.js.map +1 -0
  52. package/dist/commands/subagents.d.ts +9 -0
  53. package/dist/commands/subagents.d.ts.map +1 -0
  54. package/dist/commands/subagents.js +6 -0
  55. package/dist/commands/subagents.js.map +1 -0
  56. package/dist/commands/sync.d.ts +7 -0
  57. package/dist/commands/sync.d.ts.map +1 -0
  58. package/dist/commands/sync.js +49 -0
  59. package/dist/commands/sync.js.map +1 -0
  60. package/dist/commands/verifyMcp.d.ts +2 -0
  61. package/dist/commands/verifyMcp.d.ts.map +1 -0
  62. package/dist/commands/verifyMcp.js +215 -0
  63. package/dist/commands/verifyMcp.js.map +1 -0
  64. package/dist/constants/index.d.ts +3 -0
  65. package/dist/constants/index.d.ts.map +1 -0
  66. package/dist/constants/index.js +3 -0
  67. package/dist/constants/index.js.map +1 -0
  68. package/dist/constants/mcp.d.ts +9 -0
  69. package/dist/constants/mcp.d.ts.map +1 -0
  70. package/dist/constants/mcp.js +28 -0
  71. package/dist/constants/mcp.js.map +1 -0
  72. package/dist/constants/tokens.d.ts +6 -0
  73. package/dist/constants/tokens.d.ts.map +1 -0
  74. package/dist/constants/tokens.js +5 -0
  75. package/dist/constants/tokens.js.map +1 -0
  76. package/dist/core/agentDetector.d.ts +9 -0
  77. package/dist/core/agentDetector.d.ts.map +1 -0
  78. package/dist/core/agentDetector.js +51 -0
  79. package/dist/core/agentDetector.js.map +1 -0
  80. package/dist/core/agentManager.d.ts +55 -0
  81. package/dist/core/agentManager.d.ts.map +1 -0
  82. package/dist/core/agentManager.js +111 -0
  83. package/dist/core/agentManager.js.map +1 -0
  84. package/dist/core/configMerger.d.ts +49 -0
  85. package/dist/core/configMerger.d.ts.map +1 -0
  86. package/dist/core/configMerger.js +180 -0
  87. package/dist/core/configMerger.js.map +1 -0
  88. package/dist/core/mcpClient.d.ts +38 -0
  89. package/dist/core/mcpClient.d.ts.map +1 -0
  90. package/dist/core/mcpClient.js +416 -0
  91. package/dist/core/mcpClient.js.map +1 -0
  92. package/dist/core/mcpFilter.d.ts +44 -0
  93. package/dist/core/mcpFilter.d.ts.map +1 -0
  94. package/dist/core/mcpFilter.js +126 -0
  95. package/dist/core/mcpFilter.js.map +1 -0
  96. package/dist/core/mcpParser.d.ts +25 -0
  97. package/dist/core/mcpParser.d.ts.map +1 -0
  98. package/dist/core/mcpParser.js +297 -0
  99. package/dist/core/mcpParser.js.map +1 -0
  100. package/dist/core/propagator.d.ts +25 -0
  101. package/dist/core/propagator.d.ts.map +1 -0
  102. package/dist/core/propagator.js +154 -0
  103. package/dist/core/propagator.js.map +1 -0
  104. package/dist/core/rulesApplicator.d.ts +29 -0
  105. package/dist/core/rulesApplicator.d.ts.map +1 -0
  106. package/dist/core/rulesApplicator.js +181 -0
  107. package/dist/core/rulesApplicator.js.map +1 -0
  108. package/dist/core/rulesParser.d.ts +41 -0
  109. package/dist/core/rulesParser.d.ts.map +1 -0
  110. package/dist/core/rulesParser.js +260 -0
  111. package/dist/core/rulesParser.js.map +1 -0
  112. package/dist/core/rulesTemplateLoader.d.ts +31 -0
  113. package/dist/core/rulesTemplateLoader.d.ts.map +1 -0
  114. package/dist/core/rulesTemplateLoader.js +75 -0
  115. package/dist/core/rulesTemplateLoader.js.map +1 -0
  116. package/dist/core/stackDetector.d.ts +16 -0
  117. package/dist/core/stackDetector.d.ts.map +1 -0
  118. package/dist/core/stackDetector.js +234 -0
  119. package/dist/core/stackDetector.js.map +1 -0
  120. package/dist/core/templateEngine.d.ts +15 -0
  121. package/dist/core/templateEngine.d.ts.map +1 -0
  122. package/dist/core/templateEngine.js +260 -0
  123. package/dist/core/templateEngine.js.map +1 -0
  124. package/dist/core/tomlGenerator.d.ts +24 -0
  125. package/dist/core/tomlGenerator.d.ts.map +1 -0
  126. package/dist/core/tomlGenerator.js +185 -0
  127. package/dist/core/tomlGenerator.js.map +1 -0
  128. package/dist/index.d.ts +21 -0
  129. package/dist/index.d.ts.map +1 -0
  130. package/dist/index.js +21 -33195
  131. package/dist/index.js.map +1 -0
  132. package/dist/lib/index.d.ts +39 -0
  133. package/dist/lib/index.d.ts.map +1 -0
  134. package/dist/lib/index.js +40 -0
  135. package/dist/lib/index.js.map +1 -0
  136. package/dist/lib/types/index.d.ts +23 -0
  137. package/dist/lib/types/index.d.ts.map +1 -0
  138. package/dist/lib/types/index.js +23 -0
  139. package/dist/lib/types/index.js.map +1 -0
  140. package/dist/lib/utils/index.d.ts +18 -0
  141. package/dist/lib/utils/index.d.ts.map +1 -0
  142. package/dist/lib/utils/index.js +21 -0
  143. package/dist/lib/utils/index.js.map +1 -0
  144. package/dist/lib/verifier/index.d.ts +22 -0
  145. package/dist/lib/verifier/index.d.ts.map +1 -0
  146. package/dist/lib/verifier/index.js +22 -0
  147. package/dist/lib/verifier/index.js.map +1 -0
  148. package/dist/registry/mcpRegistry.d.ts +12 -0
  149. package/dist/registry/mcpRegistry.d.ts.map +1 -0
  150. package/dist/registry/mcpRegistry.js +114 -0
  151. package/dist/registry/mcpRegistry.js.map +1 -0
  152. package/dist/types/index.d.ts +180 -0
  153. package/dist/types/index.d.ts.map +1 -0
  154. package/dist/types/index.js +21 -0
  155. package/dist/types/index.js.map +1 -0
  156. package/dist/types/rules.d.ts +51 -0
  157. package/dist/types/rules.d.ts.map +1 -0
  158. package/dist/types/rules.js +2 -0
  159. package/dist/types/rules.js.map +1 -0
  160. package/dist/utils/fs.d.ts +12 -0
  161. package/dist/utils/fs.d.ts.map +1 -0
  162. package/dist/utils/fs.js +91 -0
  163. package/dist/utils/fs.js.map +1 -0
  164. package/dist/utils/logger.d.ts +14 -0
  165. package/dist/utils/logger.d.ts.map +1 -0
  166. package/dist/utils/logger.js +36 -0
  167. package/dist/utils/logger.js.map +1 -0
  168. package/dist/utils/paths.d.ts +77 -0
  169. package/dist/utils/paths.d.ts.map +1 -0
  170. package/dist/utils/paths.js +140 -0
  171. package/dist/utils/paths.js.map +1 -0
  172. package/package.json +30 -6
  173. package/dist/agentinit-1.4.1.tgz +0 -0
@@ -0,0 +1,28 @@
1
+ import { readFileSync } from 'fs';
2
+ import { fileURLToPath } from 'url';
3
+ import { dirname, join } from 'path';
4
+ export const DEFAULT_CONNECTION_TIMEOUT_MS = 30000;
5
+ // Dynamic version from package.json
6
+ function getPackageVersion() {
7
+ try {
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = dirname(__filename);
10
+ const packageJsonPath = join(__dirname, '../../package.json');
11
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
12
+ return packageJson.version || '1.0.0';
13
+ }
14
+ catch {
15
+ return '1.0.0';
16
+ }
17
+ }
18
+ export const MCP_VERIFIER_CONFIG = {
19
+ name: "agentinit-verifier",
20
+ version: getPackageVersion()
21
+ };
22
+ export class TimeoutError extends Error {
23
+ constructor(message) {
24
+ super(message);
25
+ this.name = 'TimeoutError';
26
+ }
27
+ }
28
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/constants/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAEnD,oCAAoC;AACpC,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,OAAO,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,iBAAiB,EAAE;CACpB,CAAC;AAEX,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export declare const TOKEN_COUNT_THRESHOLDS: {
2
+ readonly LOW: 5000;
3
+ readonly MEDIUM: 15000;
4
+ };
5
+ export type TokenCountThreshold = typeof TOKEN_COUNT_THRESHOLDS[keyof typeof TOKEN_COUNT_THRESHOLDS];
6
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,OAAO,sBAAsB,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const TOKEN_COUNT_THRESHOLDS = {
2
+ LOW: 5000,
3
+ MEDIUM: 15000
4
+ };
5
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/constants/tokens.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,KAAK;CACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { AgentConfig } from '../types/index.js';
2
+ export declare class AgentDetector {
3
+ private readonly agentConfigs;
4
+ detectAgents(projectPath: string): Promise<AgentConfig[]>;
5
+ private checkAgentFiles;
6
+ detectAgentByName(projectPath: string, agentName: string): Promise<AgentConfig | null>;
7
+ getSupportedAgents(): string[];
8
+ }
9
+ //# sourceMappingURL=agentDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentDetector.d.ts","sourceRoot":"","sources":["../../src/core/agentDetector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAW3B;IAEI,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAiBjD,eAAe;IAavB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAc5F,kBAAkB,IAAI,MAAM,EAAE;CAG/B"}
@@ -0,0 +1,51 @@
1
+ import { resolve } from 'path';
2
+ import { fileExists } from '../utils/fs.js';
3
+ export class AgentDetector {
4
+ agentConfigs = [
5
+ { name: 'cursor', files: ['.cursorrules', '.cursor/settings.json'] },
6
+ { name: 'claude', files: ['CLAUDE.md', '.claude/config.md'] },
7
+ { name: 'windsurf', files: ['.windsurfrules', '.windsurf'] },
8
+ { name: 'copilot', files: ['.github/copilot.yml'] },
9
+ { name: 'codeium', files: ['.codeium/config.json'] },
10
+ { name: 'codex', files: ['.codex/config.toml'] },
11
+ { name: 'gemini', files: ['.gemini/settings.json'] }
12
+ ];
13
+ async detectAgents(projectPath) {
14
+ const results = [];
15
+ for (const config of this.agentConfigs) {
16
+ const detected = await this.checkAgentFiles(projectPath, config.files);
17
+ results.push({
18
+ name: config.name,
19
+ files: config.files,
20
+ detected: detected.found,
21
+ ...(detected.path && { configPath: detected.path })
22
+ });
23
+ }
24
+ return results;
25
+ }
26
+ async checkAgentFiles(projectPath, files) {
27
+ for (const file of files) {
28
+ const fullPath = resolve(projectPath, file);
29
+ if (await fileExists(fullPath)) {
30
+ return { found: true, path: fullPath };
31
+ }
32
+ }
33
+ return { found: false };
34
+ }
35
+ async detectAgentByName(projectPath, agentName) {
36
+ const config = this.agentConfigs.find(c => c.name === agentName);
37
+ if (!config)
38
+ return null;
39
+ const detected = await this.checkAgentFiles(projectPath, config.files);
40
+ return {
41
+ name: config.name,
42
+ files: config.files,
43
+ detected: detected.found,
44
+ ...(detected.path && { configPath: detected.path })
45
+ };
46
+ }
47
+ getSupportedAgents() {
48
+ return this.agentConfigs.map(c => c.name);
49
+ }
50
+ }
51
+ //# sourceMappingURL=agentDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentDetector.js","sourceRoot":"","sources":["../../src/core/agentDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,MAAM,OAAO,aAAa;IACP,YAAY,GAGxB;QACH,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,cAAc,EAAE,uBAAuB,CAAC,EAAE;QACpE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE;QAC7D,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE;QAC5D,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,qBAAqB,CAAC,EAAE;QACnD,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,sBAAsB,CAAC,EAAE;QACpD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,oBAAoB,CAAC,EAAE;QAChD,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,uBAAuB,CAAC,EAAE;KACrD,CAAC;IAEF,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAEvE,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,QAAQ,CAAC,KAAK;gBACxB,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;aACpD,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,WAAmB,EACnB,KAAe;QAEf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACzC,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB,EAAE,SAAiB;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAEvE,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,QAAQ,CAAC,KAAK;YACxB,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF"}
@@ -0,0 +1,55 @@
1
+ import { Agent } from '../agents/Agent.js';
2
+ import type { AgentDetectionResult } from '../types/index.js';
3
+ /**
4
+ * Manager class for AI coding agents
5
+ * Handles agent registration, detection, and selection
6
+ */
7
+ export declare class AgentManager {
8
+ private agents;
9
+ constructor();
10
+ /**
11
+ * Register the default supported agents
12
+ */
13
+ private registerDefaultAgents;
14
+ /**
15
+ * Get all registered agents
16
+ */
17
+ getAllAgents(): Agent[];
18
+ /**
19
+ * Get an agent by its ID
20
+ */
21
+ getAgentById(id: string): Agent | undefined;
22
+ /**
23
+ * Get all supported agent IDs
24
+ */
25
+ getSupportedAgentIds(): string[];
26
+ /**
27
+ * Detect which agents are present in the given project path
28
+ */
29
+ detectAgents(projectPath: string): Promise<AgentDetectionResult[]>;
30
+ /**
31
+ * Detect a specific agent by ID in the project path
32
+ */
33
+ detectAgentById(projectPath: string, agentId: string): Promise<AgentDetectionResult | null>;
34
+ /**
35
+ * Get the primary detected agent (first one found, prioritized by registration order)
36
+ */
37
+ getPrimaryAgent(projectPath: string): Promise<AgentDetectionResult | null>;
38
+ /**
39
+ * Register a custom agent
40
+ */
41
+ registerAgent(agent: Agent): void;
42
+ /**
43
+ * Check if any agents are present in the project
44
+ */
45
+ hasAnyAgents(projectPath: string): Promise<boolean>;
46
+ /**
47
+ * Get a summary of all detected agents
48
+ */
49
+ getDetectionSummary(projectPath: string): Promise<string>;
50
+ /**
51
+ * Filter agents by their capabilities
52
+ */
53
+ getAgentsByCapability(capability: keyof Agent['capabilities']): Agent[];
54
+ }
55
+ //# sourceMappingURL=agentManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentManager.d.ts","sourceRoot":"","sources":["../../src/core/agentManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAe;;IAM7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,YAAY,IAAI,KAAK,EAAE;IAIvB;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAI3C;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAIhC;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAaxE;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IASjG;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAKhF;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAMjC;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzD;;OAEG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW/D;;OAEG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK,EAAE;CAMxE"}
@@ -0,0 +1,111 @@
1
+ import { ClaudeAgent } from '../agents/ClaudeAgent.js';
2
+ import { ClaudeDesktopAgent } from '../agents/ClaudeDesktopAgent.js';
3
+ import { CodexCliAgent } from '../agents/CodexCliAgent.js';
4
+ import { GeminiCliAgent } from '../agents/GeminiCliAgent.js';
5
+ import { CursorAgent } from '../agents/CursorAgent.js';
6
+ /**
7
+ * Manager class for AI coding agents
8
+ * Handles agent registration, detection, and selection
9
+ */
10
+ export class AgentManager {
11
+ agents = [];
12
+ constructor() {
13
+ this.registerDefaultAgents();
14
+ }
15
+ /**
16
+ * Register the default supported agents
17
+ */
18
+ registerDefaultAgents() {
19
+ this.agents = [
20
+ new ClaudeAgent(),
21
+ new ClaudeDesktopAgent(),
22
+ new CodexCliAgent(),
23
+ new GeminiCliAgent(),
24
+ new CursorAgent()
25
+ ];
26
+ }
27
+ /**
28
+ * Get all registered agents
29
+ */
30
+ getAllAgents() {
31
+ return [...this.agents];
32
+ }
33
+ /**
34
+ * Get an agent by its ID
35
+ */
36
+ getAgentById(id) {
37
+ return this.agents.find(agent => agent.id === id);
38
+ }
39
+ /**
40
+ * Get all supported agent IDs
41
+ */
42
+ getSupportedAgentIds() {
43
+ return this.agents.map(agent => agent.id);
44
+ }
45
+ /**
46
+ * Detect which agents are present in the given project path
47
+ */
48
+ async detectAgents(projectPath) {
49
+ const results = [];
50
+ for (const agent of this.agents) {
51
+ const detection = await agent.detectPresence(projectPath);
52
+ if (detection) {
53
+ results.push(detection);
54
+ }
55
+ }
56
+ return results;
57
+ }
58
+ /**
59
+ * Detect a specific agent by ID in the project path
60
+ */
61
+ async detectAgentById(projectPath, agentId) {
62
+ const agent = this.getAgentById(agentId);
63
+ if (!agent) {
64
+ return null;
65
+ }
66
+ return await agent.detectPresence(projectPath);
67
+ }
68
+ /**
69
+ * Get the primary detected agent (first one found, prioritized by registration order)
70
+ */
71
+ async getPrimaryAgent(projectPath) {
72
+ const detectedAgents = await this.detectAgents(projectPath);
73
+ return detectedAgents.length > 0 ? detectedAgents[0] : null;
74
+ }
75
+ /**
76
+ * Register a custom agent
77
+ */
78
+ registerAgent(agent) {
79
+ // Remove existing agent with same ID if present
80
+ this.agents = this.agents.filter(existing => existing.id !== agent.id);
81
+ this.agents.push(agent);
82
+ }
83
+ /**
84
+ * Check if any agents are present in the project
85
+ */
86
+ async hasAnyAgents(projectPath) {
87
+ const detected = await this.detectAgents(projectPath);
88
+ return detected.length > 0;
89
+ }
90
+ /**
91
+ * Get a summary of all detected agents
92
+ */
93
+ async getDetectionSummary(projectPath) {
94
+ const detected = await this.detectAgents(projectPath);
95
+ if (detected.length === 0) {
96
+ return 'No AI coding agents detected in this project.';
97
+ }
98
+ const agentNames = detected.map(d => d.agent.name).join(', ');
99
+ return `Detected ${detected.length} agent${detected.length > 1 ? 's' : ''}: ${agentNames}`;
100
+ }
101
+ /**
102
+ * Filter agents by their capabilities
103
+ */
104
+ getAgentsByCapability(capability) {
105
+ return this.agents.filter(agent => {
106
+ const cap = agent.capabilities[capability];
107
+ return typeof cap === 'boolean' ? cap : Object.values(cap).some(Boolean);
108
+ });
109
+ }
110
+ }
111
+ //# sourceMappingURL=agentManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentManager.js","sourceRoot":"","sources":["../../src/core/agentManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Configuration file merging utility
3
+ * Handles merging of JSON and TOML configuration files
4
+ */
5
+ export declare class ConfigMerger {
6
+ /**
7
+ * Merge JSON configurations
8
+ * Deep merges objects, arrays are replaced entirely
9
+ */
10
+ static mergeJSON(existing: any, newData: any): any;
11
+ /**
12
+ * Merge TOML configurations
13
+ * Similar to JSON merge but handles TOML-specific formatting
14
+ */
15
+ static mergeTOML(existingToml: string, newData: any): string;
16
+ /**
17
+ * Safely parse JSON with error handling
18
+ */
19
+ static parseJSON(jsonString: string, fallback?: any): any;
20
+ /**
21
+ * Safely parse TOML with error handling
22
+ */
23
+ static parseTOML(tomlString: string, fallback?: any): any;
24
+ /**
25
+ * Format JSON with standard formatting
26
+ */
27
+ static formatJSON(data: any): string;
28
+ /**
29
+ * Format TOML with custom formatting for better readability
30
+ */
31
+ static formatTOML(data: any, options?: {
32
+ header?: string;
33
+ sectionSeparator?: boolean;
34
+ compactArrays?: boolean;
35
+ }): string;
36
+ /**
37
+ * Convert multi-line arrays to single-line format in TOML
38
+ */
39
+ private static compactArrays;
40
+ /**
41
+ * Deep clone an object (utility method)
42
+ */
43
+ static deepClone(obj: any): any;
44
+ /**
45
+ * Merge arrays with deduplication
46
+ */
47
+ static mergeArrays(existing: any[], newItems: any[], keyField?: string): any[];
48
+ }
49
+ //# sourceMappingURL=configMerger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configMerger.d.ts","sourceRoot":"","sources":["../../src/core/configMerger.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,GAAG;IAwBlD;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM;IAgB5D;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,GAAQ,GAAG,GAAG;IAa7D;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,GAAQ,GAAG,GAAG;IAa7D;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAIpC;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,GAAE;QACpC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;KACpB,GAAG,MAAM;IAsCf;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAmB5B;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IAc/B;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE;CAsB/E"}
@@ -0,0 +1,180 @@
1
+ import * as TOML from '@iarna/toml';
2
+ /**
3
+ * Configuration file merging utility
4
+ * Handles merging of JSON and TOML configuration files
5
+ */
6
+ export class ConfigMerger {
7
+ /**
8
+ * Merge JSON configurations
9
+ * Deep merges objects, arrays are replaced entirely
10
+ */
11
+ static mergeJSON(existing, newData) {
12
+ if (!existing)
13
+ return newData;
14
+ if (!newData)
15
+ return existing;
16
+ const merged = { ...existing };
17
+ for (const [key, value] of Object.entries(newData)) {
18
+ if (value === null || value === undefined) {
19
+ continue;
20
+ }
21
+ if (typeof value === 'object' && !Array.isArray(value) &&
22
+ merged[key] && typeof merged[key] === 'object' && !Array.isArray(merged[key])) {
23
+ // Deep merge objects
24
+ merged[key] = this.mergeJSON(merged[key], value);
25
+ }
26
+ else {
27
+ // Replace primitive values and arrays
28
+ merged[key] = value;
29
+ }
30
+ }
31
+ return merged;
32
+ }
33
+ /**
34
+ * Merge TOML configurations
35
+ * Similar to JSON merge but handles TOML-specific formatting
36
+ */
37
+ static mergeTOML(existingToml, newData) {
38
+ let existingConfig = {};
39
+ if (existingToml && existingToml.trim()) {
40
+ try {
41
+ existingConfig = TOML.parse(existingToml);
42
+ }
43
+ catch (error) {
44
+ console.warn('Warning: Existing TOML configuration is invalid, starting fresh');
45
+ existingConfig = {};
46
+ }
47
+ }
48
+ const merged = this.mergeJSON(existingConfig, newData);
49
+ return TOML.stringify(merged);
50
+ }
51
+ /**
52
+ * Safely parse JSON with error handling
53
+ */
54
+ static parseJSON(jsonString, fallback = {}) {
55
+ if (!jsonString || !jsonString.trim()) {
56
+ return fallback;
57
+ }
58
+ try {
59
+ return JSON.parse(jsonString);
60
+ }
61
+ catch (error) {
62
+ console.warn('Warning: Invalid JSON, using fallback value');
63
+ return fallback;
64
+ }
65
+ }
66
+ /**
67
+ * Safely parse TOML with error handling
68
+ */
69
+ static parseTOML(tomlString, fallback = {}) {
70
+ if (!tomlString || !tomlString.trim()) {
71
+ return fallback;
72
+ }
73
+ try {
74
+ return TOML.parse(tomlString);
75
+ }
76
+ catch (error) {
77
+ console.warn('Warning: Invalid TOML, using fallback value');
78
+ return fallback;
79
+ }
80
+ }
81
+ /**
82
+ * Format JSON with standard formatting
83
+ */
84
+ static formatJSON(data) {
85
+ return JSON.stringify(data, null, 2);
86
+ }
87
+ /**
88
+ * Format TOML with custom formatting for better readability
89
+ */
90
+ static formatTOML(data, options = {}) {
91
+ let tomlString = TOML.stringify(data);
92
+ if (options.compactArrays) {
93
+ tomlString = this.compactArrays(tomlString);
94
+ }
95
+ const lines = tomlString.split('\n');
96
+ const formattedLines = [];
97
+ // Add header if provided
98
+ if (options.header) {
99
+ formattedLines.push(`# ${options.header}`);
100
+ formattedLines.push('# Generated automatically by agentinit');
101
+ formattedLines.push('');
102
+ }
103
+ let lastWasSection = false;
104
+ for (const line of lines) {
105
+ const trimmedLine = line.trim();
106
+ if (trimmedLine.startsWith('[') && trimmedLine.endsWith(']')) {
107
+ // Section header
108
+ if (options.sectionSeparator && lastWasSection) {
109
+ formattedLines.push(''); // Add blank line between sections
110
+ }
111
+ formattedLines.push(trimmedLine);
112
+ lastWasSection = true;
113
+ }
114
+ else if (trimmedLine) {
115
+ formattedLines.push(trimmedLine);
116
+ lastWasSection = false;
117
+ }
118
+ }
119
+ return formattedLines.join('\n') + '\n';
120
+ }
121
+ /**
122
+ * Convert multi-line arrays to single-line format in TOML
123
+ */
124
+ static compactArrays(tomlString) {
125
+ return tomlString.replace(/(\w+)\s*=\s*\[\s*\n((?:\s*[^[\]]+,?\s*\n)*)\s*\]/g, (match, key, content) => {
126
+ const items = content
127
+ .split('\n')
128
+ .map((line) => line.trim())
129
+ .filter((line) => line && line !== '')
130
+ .map((line) => line.replace(/,$/, '').trim())
131
+ .filter((item) => item);
132
+ if (items.length > 0) {
133
+ return `${key} = [${items.join(', ')}]`;
134
+ }
135
+ return `${key} = []`;
136
+ });
137
+ }
138
+ /**
139
+ * Deep clone an object (utility method)
140
+ */
141
+ static deepClone(obj) {
142
+ if (obj === null || typeof obj !== 'object')
143
+ return obj;
144
+ if (obj instanceof Date)
145
+ return new Date(obj.getTime());
146
+ if (Array.isArray(obj))
147
+ return obj.map(item => this.deepClone(item));
148
+ const cloned = {};
149
+ for (const key in obj) {
150
+ if (obj.hasOwnProperty(key)) {
151
+ cloned[key] = this.deepClone(obj[key]);
152
+ }
153
+ }
154
+ return cloned;
155
+ }
156
+ /**
157
+ * Merge arrays with deduplication
158
+ */
159
+ static mergeArrays(existing, newItems, keyField) {
160
+ if (!Array.isArray(existing))
161
+ existing = [];
162
+ if (!Array.isArray(newItems))
163
+ return existing;
164
+ if (!keyField) {
165
+ // Simple deduplication
166
+ return [...new Set([...existing, ...newItems])];
167
+ }
168
+ // Deduplication by key field
169
+ const merged = [...existing];
170
+ const existingKeys = new Set(existing.map(item => item[keyField]));
171
+ for (const newItem of newItems) {
172
+ if (!existingKeys.has(newItem[keyField])) {
173
+ merged.push(newItem);
174
+ existingKeys.add(newItem[keyField]);
175
+ }
176
+ }
177
+ return merged;
178
+ }
179
+ }
180
+ //# sourceMappingURL=configMerger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configMerger.js","sourceRoot":"","sources":["../../src/core/configMerger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { MCPServerConfig, MCPVerificationResult } from '../types/index.js';
2
+ export declare class MCPVerificationError extends Error {
3
+ readonly serverName: string;
4
+ constructor(message: string, serverName: string);
5
+ }
6
+ export declare class MCPVerifier {
7
+ private defaultTimeout;
8
+ constructor(defaultTimeout?: number);
9
+ /**
10
+ * Color utility function for token display
11
+ */
12
+ private colorizeTokenCount;
13
+ /**
14
+ * Calculate token counts for MCP tools based on how they appear in Claude's context
15
+ */
16
+ private calculateToolTokens;
17
+ /**
18
+ * Verify a single MCP server
19
+ */
20
+ verifyServer(server: MCPServerConfig, timeout?: number): Promise<MCPVerificationResult>;
21
+ /**
22
+ * Verify multiple MCP servers
23
+ */
24
+ verifyServers(servers: MCPServerConfig[], timeout?: number): Promise<MCPVerificationResult[]>;
25
+ /**
26
+ * Create the appropriate transport for the server type
27
+ */
28
+ private createTransport;
29
+ /**
30
+ * Connect to the server and retrieve capabilities
31
+ */
32
+ private connectAndVerify;
33
+ /**
34
+ * Format verification results for display
35
+ */
36
+ formatResults(results: MCPVerificationResult[]): string;
37
+ }
38
+ //# sourceMappingURL=mcpClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpClient.d.ts","sourceRoot":"","sources":["../../src/core/mcpClient.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EAKtB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,oBAAqB,SAAQ,KAAK;aACA,UAAU,EAAE,MAAM;gBAAnD,OAAO,EAAE,MAAM,EAAkB,UAAU,EAAE,MAAM;CAIhE;AAGD,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAS;gBAEnB,cAAc,GAAE,MAAsC;IAIlE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsE3B;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiF7F;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAsBnG;;OAEG;YACW,eAAe;IA0C7B;;OAEG;YACW,gBAAgB;IA8G9B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,MAAM;CAiFxD"}