agentinit 1.4.1 → 1.6.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 (177) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +209 -0
  3. package/dist/agentinit-1.6.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/DroidAgent.d.ts +52 -0
  25. package/dist/agents/DroidAgent.d.ts.map +1 -0
  26. package/dist/agents/DroidAgent.js +228 -0
  27. package/dist/agents/DroidAgent.js.map +1 -0
  28. package/dist/agents/GeminiCliAgent.d.ts +40 -0
  29. package/dist/agents/GeminiCliAgent.d.ts.map +1 -0
  30. package/dist/agents/GeminiCliAgent.js +195 -0
  31. package/dist/agents/GeminiCliAgent.js.map +1 -0
  32. package/dist/cli.d.ts +3 -0
  33. package/dist/cli.d.ts.map +1 -0
  34. package/dist/cli.js +33365 -0
  35. package/dist/cli.js.map +1 -0
  36. package/dist/commands/apply.d.ts +2 -0
  37. package/dist/commands/apply.d.ts.map +1 -0
  38. package/dist/commands/apply.js +468 -0
  39. package/dist/commands/apply.js.map +1 -0
  40. package/dist/commands/config.d.ts +8 -0
  41. package/dist/commands/config.d.ts.map +1 -0
  42. package/dist/commands/config.js +6 -0
  43. package/dist/commands/config.js.map +1 -0
  44. package/dist/commands/detect.d.ts +6 -0
  45. package/dist/commands/detect.d.ts.map +1 -0
  46. package/dist/commands/detect.js +55 -0
  47. package/dist/commands/detect.js.map +1 -0
  48. package/dist/commands/init.d.ts +7 -0
  49. package/dist/commands/init.d.ts.map +1 -0
  50. package/dist/commands/init.js +105 -0
  51. package/dist/commands/init.js.map +1 -0
  52. package/dist/commands/mcp.d.ts +8 -0
  53. package/dist/commands/mcp.d.ts.map +1 -0
  54. package/dist/commands/mcp.js +127 -0
  55. package/dist/commands/mcp.js.map +1 -0
  56. package/dist/commands/subagents.d.ts +9 -0
  57. package/dist/commands/subagents.d.ts.map +1 -0
  58. package/dist/commands/subagents.js +6 -0
  59. package/dist/commands/subagents.js.map +1 -0
  60. package/dist/commands/sync.d.ts +7 -0
  61. package/dist/commands/sync.d.ts.map +1 -0
  62. package/dist/commands/sync.js +49 -0
  63. package/dist/commands/sync.js.map +1 -0
  64. package/dist/commands/verifyMcp.d.ts +2 -0
  65. package/dist/commands/verifyMcp.d.ts.map +1 -0
  66. package/dist/commands/verifyMcp.js +215 -0
  67. package/dist/commands/verifyMcp.js.map +1 -0
  68. package/dist/constants/index.d.ts +3 -0
  69. package/dist/constants/index.d.ts.map +1 -0
  70. package/dist/constants/index.js +3 -0
  71. package/dist/constants/index.js.map +1 -0
  72. package/dist/constants/mcp.d.ts +9 -0
  73. package/dist/constants/mcp.d.ts.map +1 -0
  74. package/dist/constants/mcp.js +28 -0
  75. package/dist/constants/mcp.js.map +1 -0
  76. package/dist/constants/tokens.d.ts +6 -0
  77. package/dist/constants/tokens.d.ts.map +1 -0
  78. package/dist/constants/tokens.js +5 -0
  79. package/dist/constants/tokens.js.map +1 -0
  80. package/dist/core/agentDetector.d.ts +9 -0
  81. package/dist/core/agentDetector.d.ts.map +1 -0
  82. package/dist/core/agentDetector.js +51 -0
  83. package/dist/core/agentDetector.js.map +1 -0
  84. package/dist/core/agentManager.d.ts +55 -0
  85. package/dist/core/agentManager.d.ts.map +1 -0
  86. package/dist/core/agentManager.js +113 -0
  87. package/dist/core/agentManager.js.map +1 -0
  88. package/dist/core/configMerger.d.ts +49 -0
  89. package/dist/core/configMerger.d.ts.map +1 -0
  90. package/dist/core/configMerger.js +180 -0
  91. package/dist/core/configMerger.js.map +1 -0
  92. package/dist/core/mcpClient.d.ts +38 -0
  93. package/dist/core/mcpClient.d.ts.map +1 -0
  94. package/dist/core/mcpClient.js +416 -0
  95. package/dist/core/mcpClient.js.map +1 -0
  96. package/dist/core/mcpFilter.d.ts +44 -0
  97. package/dist/core/mcpFilter.d.ts.map +1 -0
  98. package/dist/core/mcpFilter.js +126 -0
  99. package/dist/core/mcpFilter.js.map +1 -0
  100. package/dist/core/mcpParser.d.ts +25 -0
  101. package/dist/core/mcpParser.d.ts.map +1 -0
  102. package/dist/core/mcpParser.js +297 -0
  103. package/dist/core/mcpParser.js.map +1 -0
  104. package/dist/core/propagator.d.ts +25 -0
  105. package/dist/core/propagator.d.ts.map +1 -0
  106. package/dist/core/propagator.js +154 -0
  107. package/dist/core/propagator.js.map +1 -0
  108. package/dist/core/rulesApplicator.d.ts +29 -0
  109. package/dist/core/rulesApplicator.d.ts.map +1 -0
  110. package/dist/core/rulesApplicator.js +181 -0
  111. package/dist/core/rulesApplicator.js.map +1 -0
  112. package/dist/core/rulesParser.d.ts +41 -0
  113. package/dist/core/rulesParser.d.ts.map +1 -0
  114. package/dist/core/rulesParser.js +260 -0
  115. package/dist/core/rulesParser.js.map +1 -0
  116. package/dist/core/rulesTemplateLoader.d.ts +31 -0
  117. package/dist/core/rulesTemplateLoader.d.ts.map +1 -0
  118. package/dist/core/rulesTemplateLoader.js +75 -0
  119. package/dist/core/rulesTemplateLoader.js.map +1 -0
  120. package/dist/core/stackDetector.d.ts +16 -0
  121. package/dist/core/stackDetector.d.ts.map +1 -0
  122. package/dist/core/stackDetector.js +234 -0
  123. package/dist/core/stackDetector.js.map +1 -0
  124. package/dist/core/templateEngine.d.ts +15 -0
  125. package/dist/core/templateEngine.d.ts.map +1 -0
  126. package/dist/core/templateEngine.js +260 -0
  127. package/dist/core/templateEngine.js.map +1 -0
  128. package/dist/core/tomlGenerator.d.ts +24 -0
  129. package/dist/core/tomlGenerator.d.ts.map +1 -0
  130. package/dist/core/tomlGenerator.js +185 -0
  131. package/dist/core/tomlGenerator.js.map +1 -0
  132. package/dist/index.d.ts +21 -0
  133. package/dist/index.d.ts.map +1 -0
  134. package/dist/index.js +21 -33195
  135. package/dist/index.js.map +1 -0
  136. package/dist/lib/index.d.ts +39 -0
  137. package/dist/lib/index.d.ts.map +1 -0
  138. package/dist/lib/index.js +40 -0
  139. package/dist/lib/index.js.map +1 -0
  140. package/dist/lib/types/index.d.ts +23 -0
  141. package/dist/lib/types/index.d.ts.map +1 -0
  142. package/dist/lib/types/index.js +23 -0
  143. package/dist/lib/types/index.js.map +1 -0
  144. package/dist/lib/utils/index.d.ts +18 -0
  145. package/dist/lib/utils/index.d.ts.map +1 -0
  146. package/dist/lib/utils/index.js +21 -0
  147. package/dist/lib/utils/index.js.map +1 -0
  148. package/dist/lib/verifier/index.d.ts +22 -0
  149. package/dist/lib/verifier/index.d.ts.map +1 -0
  150. package/dist/lib/verifier/index.js +22 -0
  151. package/dist/lib/verifier/index.js.map +1 -0
  152. package/dist/registry/mcpRegistry.d.ts +12 -0
  153. package/dist/registry/mcpRegistry.d.ts.map +1 -0
  154. package/dist/registry/mcpRegistry.js +114 -0
  155. package/dist/registry/mcpRegistry.js.map +1 -0
  156. package/dist/types/index.d.ts +180 -0
  157. package/dist/types/index.d.ts.map +1 -0
  158. package/dist/types/index.js +21 -0
  159. package/dist/types/index.js.map +1 -0
  160. package/dist/types/rules.d.ts +51 -0
  161. package/dist/types/rules.d.ts.map +1 -0
  162. package/dist/types/rules.js +2 -0
  163. package/dist/types/rules.js.map +1 -0
  164. package/dist/utils/fs.d.ts +12 -0
  165. package/dist/utils/fs.d.ts.map +1 -0
  166. package/dist/utils/fs.js +91 -0
  167. package/dist/utils/fs.js.map +1 -0
  168. package/dist/utils/logger.d.ts +14 -0
  169. package/dist/utils/logger.d.ts.map +1 -0
  170. package/dist/utils/logger.js +36 -0
  171. package/dist/utils/logger.js.map +1 -0
  172. package/dist/utils/paths.d.ts +77 -0
  173. package/dist/utils/paths.d.ts.map +1 -0
  174. package/dist/utils/paths.js +140 -0
  175. package/dist/utils/paths.js.map +1 -0
  176. package/package.json +30 -6
  177. package/dist/agentinit-1.4.1.tgz +0 -0
@@ -0,0 +1,249 @@
1
+ import { Agent } from './Agent.js';
2
+ import { readFileIfExists, writeFile, ensureDirectoryExists } from '../utils/fs.js';
3
+ /**
4
+ * Claude Code agent implementation
5
+ * Supports full MCP capabilities including stdio, HTTP, and SSE servers
6
+ * Native config: .mcp.json
7
+ * Global config: ~/.claude.json
8
+ *
9
+ * Note: Claude Code uses a unique MCP configuration format:
10
+ * - stdio servers: { command, args?, env? }
11
+ * - http servers: { type: "http", url, headers? }
12
+ * - sse servers: { type: "sse", url, headers? }
13
+ */
14
+ export class ClaudeAgent extends Agent {
15
+ constructor() {
16
+ const definition = {
17
+ id: 'claude',
18
+ name: 'Claude Code',
19
+ url: 'https://docs.anthropic.com/claude/docs/claude-code',
20
+ capabilities: {
21
+ mcp: {
22
+ stdio: true,
23
+ http: true,
24
+ sse: true
25
+ },
26
+ rules: true,
27
+ hooks: true,
28
+ commands: true,
29
+ subagents: true,
30
+ statusline: true
31
+ },
32
+ configFiles: [
33
+ {
34
+ path: 'CLAUDE.md',
35
+ purpose: 'rules',
36
+ format: 'markdown',
37
+ type: 'file',
38
+ optional: true,
39
+ description: 'Claude-specific configuration and rules'
40
+ },
41
+ {
42
+ path: '.claude/config.md',
43
+ purpose: 'rules',
44
+ format: 'markdown',
45
+ type: 'file',
46
+ optional: true,
47
+ description: 'Alternative Claude configuration file'
48
+ }
49
+ ],
50
+ nativeConfigPath: '.mcp.json',
51
+ globalConfigPath: '~/.claude.json'
52
+ };
53
+ super(definition);
54
+ }
55
+ /**
56
+ * Apply MCP configuration to Claude's native .mcp.json format
57
+ */
58
+ async applyMCPConfig(projectPath, servers) {
59
+ const mcpConfigPath = this.getNativeMcpPath(projectPath);
60
+ // Ensure the directory exists
61
+ await ensureDirectoryExists(mcpConfigPath);
62
+ // Read existing configuration
63
+ const existingContent = await readFileIfExists(mcpConfigPath);
64
+ let existingConfig = { mcpServers: {} };
65
+ if (existingContent) {
66
+ try {
67
+ existingConfig = JSON.parse(existingContent);
68
+ if (!existingConfig.mcpServers) {
69
+ existingConfig.mcpServers = {};
70
+ }
71
+ }
72
+ catch (error) {
73
+ console.warn('Warning: Existing .mcp.json is invalid, creating new configuration');
74
+ existingConfig = { mcpServers: {} };
75
+ }
76
+ }
77
+ // Convert our MCP server configs to Claude's format
78
+ for (const server of servers) {
79
+ const claudeServer = {};
80
+ switch (server.type) {
81
+ case 'stdio':
82
+ if (server.command) {
83
+ claudeServer.command = server.command;
84
+ }
85
+ if (server.args && server.args.length > 0) {
86
+ claudeServer.args = server.args;
87
+ }
88
+ if (server.env && Object.keys(server.env).length > 0) {
89
+ claudeServer.env = server.env;
90
+ }
91
+ break;
92
+ case 'http':
93
+ claudeServer.type = 'http';
94
+ if (server.url) {
95
+ claudeServer.url = server.url;
96
+ }
97
+ if (server.headers && Object.keys(server.headers).length > 0) {
98
+ claudeServer.headers = server.headers;
99
+ }
100
+ break;
101
+ case 'sse':
102
+ claudeServer.type = 'sse';
103
+ if (server.url) {
104
+ claudeServer.url = server.url;
105
+ }
106
+ if (server.headers && Object.keys(server.headers).length > 0) {
107
+ claudeServer.headers = server.headers;
108
+ }
109
+ break;
110
+ }
111
+ // Add or update the server in the config
112
+ existingConfig.mcpServers[server.name] = claudeServer;
113
+ }
114
+ // Write the updated configuration
115
+ const configJson = JSON.stringify(existingConfig, null, 2);
116
+ await writeFile(mcpConfigPath, configJson);
117
+ }
118
+ /**
119
+ * Claude supports all MCP server types, so no filtering needed
120
+ */
121
+ filterMCPServers(servers) {
122
+ return servers; // Claude supports everything
123
+ }
124
+ /**
125
+ * Claude doesn't need any transformations
126
+ */
127
+ transformMCPServers(servers) {
128
+ return servers; // No transformations needed
129
+ }
130
+ /**
131
+ * Apply rules configuration to Claude's CLAUDE.md format
132
+ */
133
+ async applyRulesConfig(configPath, rules, existingContent) {
134
+ const rulesSection = this.generateRulesContent(rules.sections);
135
+ let content = existingContent;
136
+ // For markdown, we'll append rules directly
137
+ if (content && !content.endsWith('\n')) {
138
+ content += '\n';
139
+ }
140
+ if (content) {
141
+ content += '\n';
142
+ }
143
+ content += rulesSection;
144
+ return content.trim() + '\n';
145
+ }
146
+ /**
147
+ * Extract existing rule texts from CLAUDE.md content
148
+ */
149
+ extractExistingRules(content) {
150
+ // Extract rules from markdown format - look for lines starting with "- "
151
+ const ruleLines = content.split('\n').filter(line => line.trim().startsWith('- '));
152
+ return ruleLines.map(line => line.replace(/^- /, '').trim()).filter(rule => rule.length > 0);
153
+ }
154
+ /**
155
+ * Extract existing rule sections from CLAUDE.md content using ## headers
156
+ */
157
+ extractExistingSections(content) {
158
+ const lines = content.split('\n');
159
+ const sections = [];
160
+ let currentSection = null;
161
+ for (const line of lines) {
162
+ const trimmed = line.trim();
163
+ // Check if it's a section header
164
+ if (trimmed.startsWith('## ') && trimmed.includes(' ')) {
165
+ // Start new section
166
+ if (currentSection) {
167
+ sections.push(currentSection);
168
+ }
169
+ const sectionName = trimmed.replace(/^##\s*/, '');
170
+ currentSection = {
171
+ templateId: sectionName.toLowerCase().replace(/\s+/g, '_'),
172
+ templateName: sectionName,
173
+ rules: []
174
+ };
175
+ }
176
+ else if (currentSection && trimmed.startsWith('- ')) {
177
+ // Add rule to current section
178
+ const rule = trimmed.replace(/^- /, '');
179
+ currentSection.rules.push(rule);
180
+ }
181
+ }
182
+ // Add the last section
183
+ if (currentSection) {
184
+ sections.push(currentSection);
185
+ }
186
+ return sections;
187
+ }
188
+ /**
189
+ * Generate rules content in Claude's CLAUDE.md markdown format
190
+ */
191
+ generateRulesContent(sections) {
192
+ let content = '';
193
+ if (sections && sections.length > 0) {
194
+ // Group rules by sections
195
+ for (const ruleSection of sections) {
196
+ content += `## ${ruleSection.templateName}\n\n`;
197
+ for (const rule of ruleSection.rules) {
198
+ content += `- ${rule}\n`;
199
+ }
200
+ content += '\n';
201
+ }
202
+ }
203
+ return content;
204
+ }
205
+ /**
206
+ * Get existing MCP servers from Claude's .mcp.json configuration
207
+ */
208
+ async getMCPServers(projectPath) {
209
+ const mcpConfigPath = this.getNativeMcpPath(projectPath);
210
+ const configContent = await readFileIfExists(mcpConfigPath);
211
+ if (!configContent) {
212
+ return [];
213
+ }
214
+ try {
215
+ const config = JSON.parse(configContent);
216
+ const servers = [];
217
+ if (config.mcpServers) {
218
+ for (const [name, serverConfig] of Object.entries(config.mcpServers)) {
219
+ const server = {
220
+ name,
221
+ type: (serverConfig.type || (serverConfig.command ? 'stdio' : serverConfig.type)),
222
+ };
223
+ if (serverConfig.command) {
224
+ server.command = serverConfig.command;
225
+ }
226
+ if (serverConfig.args) {
227
+ server.args = serverConfig.args;
228
+ }
229
+ if (serverConfig.env) {
230
+ server.env = serverConfig.env;
231
+ }
232
+ if (serverConfig.url) {
233
+ server.url = serverConfig.url;
234
+ }
235
+ if (serverConfig.headers) {
236
+ server.headers = serverConfig.headers;
237
+ }
238
+ servers.push(server);
239
+ }
240
+ }
241
+ return servers;
242
+ }
243
+ catch (error) {
244
+ // Invalid JSON or missing mcpServers property
245
+ return [];
246
+ }
247
+ }
248
+ }
249
+ //# sourceMappingURL=ClaudeAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeAgent.js","sourceRoot":"","sources":["../../src/agents/ClaudeAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { Agent } from './Agent.js';
2
+ import type { MCPServerConfig } from '../types/index.js';
3
+ import type { AppliedRules, RuleSection } from '../types/rules.js';
4
+ /**
5
+ * Claude Desktop app agent implementation
6
+ * Supports full MCP capabilities including stdio, HTTP, and SSE servers
7
+ * Native config: platform-specific claude_desktop_config.json
8
+ */
9
+ export declare class ClaudeDesktopAgent extends Agent {
10
+ constructor();
11
+ /**
12
+ * Claude Desktop doesn't support project-level detection since it's a desktop app
13
+ */
14
+ detectPresence(): Promise<null>;
15
+ /**
16
+ * Claude Desktop is not used for project-level configurations
17
+ * This method should not be called
18
+ */
19
+ applyMCPConfig(): Promise<void>;
20
+ /**
21
+ * Apply MCP configuration to Claude Desktop's global config format
22
+ */
23
+ applyGlobalMCPConfig(servers: MCPServerConfig[]): Promise<void>;
24
+ /**
25
+ * Claude Desktop supports all MCP server types, so no filtering needed
26
+ */
27
+ filterMCPServers(servers: MCPServerConfig[]): MCPServerConfig[];
28
+ /**
29
+ * Claude Desktop doesn't need any transformations
30
+ */
31
+ transformMCPServers(servers: MCPServerConfig[]): MCPServerConfig[];
32
+ /**
33
+ * Claude Desktop doesn't support rules configuration
34
+ */
35
+ applyRulesConfig(configPath: string, rules: AppliedRules, existingContent: string): Promise<string>;
36
+ /**
37
+ * Claude Desktop doesn't support rules extraction
38
+ */
39
+ extractExistingRules(content: string): string[];
40
+ /**
41
+ * Claude Desktop doesn't support rules sections
42
+ */
43
+ extractExistingSections(content: string): RuleSection[];
44
+ /**
45
+ * Claude Desktop doesn't generate rules content
46
+ */
47
+ generateRulesContent(sections: RuleSection[]): string;
48
+ }
49
+ //# sourceMappingURL=ClaudeDesktopAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeDesktopAgent.d.ts","sourceRoot":"","sources":["../../src/agents/ClaudeDesktopAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;;IA8B3C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+DrE;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE;IAI/D;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE;IAIlE;;OAEG;IACG,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAIlB;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAI/C;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE;IAIvD;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM;CAGtD"}
@@ -0,0 +1,143 @@
1
+ import { Agent } from './Agent.js';
2
+ import { readFileIfExists, writeFile, ensureDirectoryExists } from '../utils/fs.js';
3
+ /**
4
+ * Claude Desktop app agent implementation
5
+ * Supports full MCP capabilities including stdio, HTTP, and SSE servers
6
+ * Native config: platform-specific claude_desktop_config.json
7
+ */
8
+ export class ClaudeDesktopAgent extends Agent {
9
+ constructor() {
10
+ const definition = {
11
+ id: 'claude-desktop',
12
+ name: 'Claude Desktop',
13
+ url: 'https://claude.ai/download',
14
+ capabilities: {
15
+ mcp: {
16
+ stdio: true,
17
+ http: true,
18
+ sse: true
19
+ },
20
+ rules: false, // No .rules files support
21
+ hooks: false, // No hook system
22
+ commands: false, // No custom commands
23
+ subagents: false, // No subagent support
24
+ statusline: false // No statusline customization
25
+ },
26
+ configFiles: [], // Claude Desktop doesn't have project-specific detection files
27
+ nativeConfigPath: 'claude_desktop_config.json', // Not used for project-level
28
+ globalConfigPaths: {
29
+ windows: '%APPDATA%/Claude/claude_desktop_config.json',
30
+ darwin: '~/Library/Application Support/Claude/claude_desktop_config.json',
31
+ linux: '~/.config/Claude/claude_desktop_config.json'
32
+ }
33
+ };
34
+ super(definition);
35
+ }
36
+ /**
37
+ * Claude Desktop doesn't support project-level detection since it's a desktop app
38
+ */
39
+ async detectPresence() {
40
+ return null;
41
+ }
42
+ /**
43
+ * Claude Desktop is not used for project-level configurations
44
+ * This method should not be called
45
+ */
46
+ async applyMCPConfig() {
47
+ throw new Error('Claude Desktop only supports global configuration. Use --global flag.');
48
+ }
49
+ /**
50
+ * Apply MCP configuration to Claude Desktop's global config format
51
+ */
52
+ async applyGlobalMCPConfig(servers) {
53
+ const globalPath = this.getGlobalMcpPath();
54
+ if (!globalPath) {
55
+ throw new Error(`Claude Desktop global configuration path could not be determined for this platform`);
56
+ }
57
+ // Ensure the directory exists
58
+ await ensureDirectoryExists(globalPath);
59
+ // Read existing configuration
60
+ const existingContent = await readFileIfExists(globalPath);
61
+ let existingConfig = { mcpServers: {} };
62
+ if (existingContent) {
63
+ try {
64
+ existingConfig = JSON.parse(existingContent);
65
+ if (!existingConfig.mcpServers) {
66
+ existingConfig.mcpServers = {};
67
+ }
68
+ }
69
+ catch (error) {
70
+ console.warn('Warning: Existing claude_desktop_config.json is invalid, creating new configuration');
71
+ existingConfig = { mcpServers: {} };
72
+ }
73
+ }
74
+ // Convert our MCP server configs to Claude Desktop's format
75
+ for (const server of servers) {
76
+ const claudeDesktopServer = {};
77
+ switch (server.type) {
78
+ case 'stdio':
79
+ if (server.command) {
80
+ claudeDesktopServer.command = server.command;
81
+ }
82
+ if (server.args && server.args.length > 0) {
83
+ claudeDesktopServer.args = server.args;
84
+ }
85
+ if (server.env && Object.keys(server.env).length > 0) {
86
+ claudeDesktopServer.env = server.env;
87
+ }
88
+ break;
89
+ case 'http':
90
+ case 'sse':
91
+ if (server.url) {
92
+ claudeDesktopServer.url = server.url;
93
+ }
94
+ if (server.headers && Object.keys(server.headers).length > 0) {
95
+ claudeDesktopServer.headers = server.headers;
96
+ }
97
+ break;
98
+ }
99
+ // Add or update the server in the config
100
+ existingConfig.mcpServers[server.name] = claudeDesktopServer;
101
+ }
102
+ // Write the updated configuration
103
+ const configJson = JSON.stringify(existingConfig, null, 2);
104
+ await writeFile(globalPath, configJson);
105
+ }
106
+ /**
107
+ * Claude Desktop supports all MCP server types, so no filtering needed
108
+ */
109
+ filterMCPServers(servers) {
110
+ return servers; // Claude Desktop supports everything
111
+ }
112
+ /**
113
+ * Claude Desktop doesn't need any transformations
114
+ */
115
+ transformMCPServers(servers) {
116
+ return servers; // No transformations needed
117
+ }
118
+ /**
119
+ * Claude Desktop doesn't support rules configuration
120
+ */
121
+ async applyRulesConfig(configPath, rules, existingContent) {
122
+ throw new Error('Claude Desktop does not support rules configuration. Rules should be applied to a project-level agent like Claude Code.');
123
+ }
124
+ /**
125
+ * Claude Desktop doesn't support rules extraction
126
+ */
127
+ extractExistingRules(content) {
128
+ return [];
129
+ }
130
+ /**
131
+ * Claude Desktop doesn't support rules sections
132
+ */
133
+ extractExistingSections(content) {
134
+ return [];
135
+ }
136
+ /**
137
+ * Claude Desktop doesn't generate rules content
138
+ */
139
+ generateRulesContent(sections) {
140
+ return '';
141
+ }
142
+ }
143
+ //# sourceMappingURL=ClaudeDesktopAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeDesktopAgent.js","sourceRoot":"","sources":["../../src/agents/ClaudeDesktopAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { Agent } from './Agent.js';
2
+ import type { MCPServerConfig } from '../types/index.js';
3
+ import type { AppliedRules, RuleSection } from '../types/rules.js';
4
+ /**
5
+ * OpenAI Codex CLI agent implementation
6
+ * Supports only stdio MCP servers - transforms remote servers to stdio via mcp-remote proxy
7
+ * Native config: .codex/config.toml
8
+ */
9
+ export declare class CodexCliAgent extends Agent {
10
+ constructor();
11
+ /**
12
+ * Apply MCP configuration to Codex CLI's native TOML format
13
+ */
14
+ applyMCPConfig(projectPath: string, servers: MCPServerConfig[]): Promise<void>;
15
+ /**
16
+ * Codex only supports stdio, so filter out others (they'll be transformed)
17
+ */
18
+ filterMCPServers(servers: MCPServerConfig[]): MCPServerConfig[];
19
+ /**
20
+ * Transform remote (HTTP/SSE) servers to stdio using mcp-remote proxy
21
+ */
22
+ transformMCPServers(servers: MCPServerConfig[]): MCPServerConfig[];
23
+ /**
24
+ * Format TOML output for Codex CLI with proper structure and comments
25
+ */
26
+ private formatTOML;
27
+ /**
28
+ * Apply rules configuration to Codex CLI's TOML format
29
+ */
30
+ applyRulesConfig(configPath: string, rules: AppliedRules, existingContent: string): Promise<string>;
31
+ /**
32
+ * Extract existing rule texts from TOML content
33
+ */
34
+ extractExistingRules(content: string): string[];
35
+ /**
36
+ * Extract existing rule sections from TOML content
37
+ */
38
+ extractExistingSections(content: string): RuleSection[];
39
+ /**
40
+ * Generate rules content in TOML format
41
+ */
42
+ generateRulesContent(sections: RuleSection[]): string;
43
+ /**
44
+ * Format TOML output for rules with proper structure and comments
45
+ */
46
+ private formatTOMLRules;
47
+ }
48
+ //# sourceMappingURL=CodexCliAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexCliAgent.d.ts","sourceRoot":"","sources":["../../src/agents/CodexCliAgent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAkC,MAAM,mBAAmB,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;;IAkCtC;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CpF;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE;IAK/D;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE;IAgClE;;OAEG;IACH,OAAO,CAAC,UAAU;IA6BlB;;OAEG;IACG,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IA6BlB;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAmB/C;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE;IAuBvD;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM;IAiBrD;;OAEG;IACH,OAAO,CAAC,eAAe;CA2BxB"}