agentinit 1.7.0 → 1.8.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 (148) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +127 -104
  3. package/dist/agents/Agent.d.ts +44 -0
  4. package/dist/agents/Agent.d.ts.map +1 -1
  5. package/dist/agents/Agent.js +111 -22
  6. package/dist/agents/Agent.js.map +1 -1
  7. package/dist/agents/AiderAgent.d.ts +9 -0
  8. package/dist/agents/AiderAgent.d.ts.map +1 -0
  9. package/dist/agents/AiderAgent.js +135 -0
  10. package/dist/agents/AiderAgent.js.map +1 -0
  11. package/dist/agents/ClaudeAgent.d.ts +4 -0
  12. package/dist/agents/ClaudeAgent.d.ts.map +1 -1
  13. package/dist/agents/ClaudeAgent.js +33 -18
  14. package/dist/agents/ClaudeAgent.js.map +1 -1
  15. package/dist/agents/ClaudeDesktopAgent.d.ts +5 -0
  16. package/dist/agents/ClaudeDesktopAgent.d.ts.map +1 -1
  17. package/dist/agents/ClaudeDesktopAgent.js +31 -1
  18. package/dist/agents/ClaudeDesktopAgent.js.map +1 -1
  19. package/dist/agents/ClineAgent.d.ts +8 -0
  20. package/dist/agents/ClineAgent.d.ts.map +1 -0
  21. package/dist/agents/ClineAgent.js +42 -0
  22. package/dist/agents/ClineAgent.js.map +1 -0
  23. package/dist/agents/CodexCliAgent.d.ts +4 -0
  24. package/dist/agents/CodexCliAgent.d.ts.map +1 -1
  25. package/dist/agents/CodexCliAgent.js +38 -8
  26. package/dist/agents/CodexCliAgent.js.map +1 -1
  27. package/dist/agents/CopilotAgent.d.ts +9 -0
  28. package/dist/agents/CopilotAgent.d.ts.map +1 -0
  29. package/dist/agents/CopilotAgent.js +131 -0
  30. package/dist/agents/CopilotAgent.js.map +1 -0
  31. package/dist/agents/CursorAgent.d.ts +4 -4
  32. package/dist/agents/CursorAgent.d.ts.map +1 -1
  33. package/dist/agents/CursorAgent.js +32 -43
  34. package/dist/agents/CursorAgent.js.map +1 -1
  35. package/dist/agents/DroidAgent.d.ts +5 -0
  36. package/dist/agents/DroidAgent.d.ts.map +1 -1
  37. package/dist/agents/DroidAgent.js +37 -18
  38. package/dist/agents/DroidAgent.js.map +1 -1
  39. package/dist/agents/GeminiCliAgent.d.ts +4 -0
  40. package/dist/agents/GeminiCliAgent.d.ts.map +1 -1
  41. package/dist/agents/GeminiCliAgent.js +37 -8
  42. package/dist/agents/GeminiCliAgent.js.map +1 -1
  43. package/dist/agents/MarkdownRulesAgent.d.ts +13 -0
  44. package/dist/agents/MarkdownRulesAgent.d.ts.map +1 -0
  45. package/dist/agents/MarkdownRulesAgent.js +53 -0
  46. package/dist/agents/MarkdownRulesAgent.js.map +1 -0
  47. package/dist/agents/RooCodeAgent.d.ts +9 -0
  48. package/dist/agents/RooCodeAgent.d.ts.map +1 -0
  49. package/dist/agents/RooCodeAgent.js +131 -0
  50. package/dist/agents/RooCodeAgent.js.map +1 -0
  51. package/dist/agents/WindsurfAgent.d.ts +9 -0
  52. package/dist/agents/WindsurfAgent.d.ts.map +1 -0
  53. package/dist/agents/WindsurfAgent.js +127 -0
  54. package/dist/agents/WindsurfAgent.js.map +1 -0
  55. package/dist/agents/ZedAgent.d.ts +9 -0
  56. package/dist/agents/ZedAgent.d.ts.map +1 -0
  57. package/dist/agents/ZedAgent.js +127 -0
  58. package/dist/agents/ZedAgent.js.map +1 -0
  59. package/dist/cli.js +30587 -11981
  60. package/dist/cli.js.map +1 -1
  61. package/dist/commands/apply.d.ts +10 -0
  62. package/dist/commands/apply.d.ts.map +1 -1
  63. package/dist/commands/apply.js +134 -3
  64. package/dist/commands/apply.js.map +1 -1
  65. package/dist/commands/detect.d.ts.map +1 -1
  66. package/dist/commands/detect.js +25 -0
  67. package/dist/commands/detect.js.map +1 -1
  68. package/dist/commands/init.js +1 -1
  69. package/dist/commands/init.js.map +1 -1
  70. package/dist/commands/mcp.d.ts +2 -7
  71. package/dist/commands/mcp.d.ts.map +1 -1
  72. package/dist/commands/mcp.js +541 -110
  73. package/dist/commands/mcp.js.map +1 -1
  74. package/dist/commands/plugins.d.ts +3 -0
  75. package/dist/commands/plugins.d.ts.map +1 -0
  76. package/dist/commands/plugins.js +309 -0
  77. package/dist/commands/plugins.js.map +1 -0
  78. package/dist/commands/revert.d.ts +7 -0
  79. package/dist/commands/revert.d.ts.map +1 -0
  80. package/dist/commands/revert.js +48 -0
  81. package/dist/commands/revert.js.map +1 -0
  82. package/dist/commands/rules.d.ts +3 -0
  83. package/dist/commands/rules.d.ts.map +1 -0
  84. package/dist/commands/rules.js +354 -0
  85. package/dist/commands/rules.js.map +1 -0
  86. package/dist/commands/skills.d.ts +3 -0
  87. package/dist/commands/skills.d.ts.map +1 -0
  88. package/dist/commands/skills.js +179 -0
  89. package/dist/commands/skills.js.map +1 -0
  90. package/dist/commands/sync.d.ts +1 -0
  91. package/dist/commands/sync.d.ts.map +1 -1
  92. package/dist/commands/sync.js +18 -1
  93. package/dist/commands/sync.js.map +1 -1
  94. package/dist/commands/verifyMcp.js +1 -1
  95. package/dist/commands/verifyMcp.js.map +1 -1
  96. package/dist/core/agentDetector.d.ts.map +1 -1
  97. package/dist/core/agentDetector.js +8 -2
  98. package/dist/core/agentDetector.js.map +1 -1
  99. package/dist/core/agentManager.d.ts.map +1 -1
  100. package/dist/core/agentManager.js +12 -0
  101. package/dist/core/agentManager.js.map +1 -1
  102. package/dist/core/gitignoreManager.d.ts +8 -0
  103. package/dist/core/gitignoreManager.d.ts.map +1 -0
  104. package/dist/core/gitignoreManager.js +114 -0
  105. package/dist/core/gitignoreManager.js.map +1 -0
  106. package/dist/core/managedState.d.ts +42 -0
  107. package/dist/core/managedState.d.ts.map +1 -0
  108. package/dist/core/managedState.js +194 -0
  109. package/dist/core/managedState.js.map +1 -0
  110. package/dist/core/pluginManager.d.ts +134 -0
  111. package/dist/core/pluginManager.d.ts.map +1 -0
  112. package/dist/core/pluginManager.js +845 -0
  113. package/dist/core/pluginManager.js.map +1 -0
  114. package/dist/core/projectSkills.d.ts +19 -0
  115. package/dist/core/projectSkills.d.ts.map +1 -0
  116. package/dist/core/projectSkills.js +105 -0
  117. package/dist/core/projectSkills.js.map +1 -0
  118. package/dist/core/propagator.d.ts +8 -1
  119. package/dist/core/propagator.d.ts.map +1 -1
  120. package/dist/core/propagator.js +179 -36
  121. package/dist/core/propagator.js.map +1 -1
  122. package/dist/core/rulesApplicator.d.ts +0 -4
  123. package/dist/core/rulesApplicator.d.ts.map +1 -1
  124. package/dist/core/rulesApplicator.js +8 -39
  125. package/dist/core/rulesApplicator.js.map +1 -1
  126. package/dist/core/rulesTemplateLoader.js +2 -2
  127. package/dist/core/rulesTemplateLoader.js.map +1 -1
  128. package/dist/core/skillsManager.d.ts +61 -0
  129. package/dist/core/skillsManager.d.ts.map +1 -0
  130. package/dist/core/skillsManager.js +407 -0
  131. package/dist/core/skillsManager.js.map +1 -0
  132. package/dist/types/index.d.ts +14 -0
  133. package/dist/types/index.d.ts.map +1 -1
  134. package/dist/types/index.js.map +1 -1
  135. package/dist/types/plugins.d.ts +161 -0
  136. package/dist/types/plugins.d.ts.map +1 -0
  137. package/dist/types/plugins.js +2 -0
  138. package/dist/types/plugins.js.map +1 -0
  139. package/dist/types/skills.d.ts +50 -0
  140. package/dist/types/skills.d.ts.map +1 -0
  141. package/dist/types/skills.js +2 -0
  142. package/dist/types/skills.js.map +1 -0
  143. package/package.json +7 -2
  144. package/dist/agentinit-1.7.0.tgz +0 -0
  145. package/dist/registry/mcpRegistry.d.ts +0 -12
  146. package/dist/registry/mcpRegistry.d.ts.map +0 -1
  147. package/dist/registry/mcpRegistry.js +0 -114
  148. package/dist/registry/mcpRegistry.js.map +0 -1
@@ -0,0 +1,53 @@
1
+ import { Agent } from './Agent.js';
2
+ /**
3
+ * Shared markdown-section rule handling for agents that store instructions
4
+ * as `## Section` headers followed by bullet rules.
5
+ */
6
+ export class MarkdownRulesAgent extends Agent {
7
+ async applyRulesConfig(_configPath, rules, existingContent) {
8
+ return this.replaceMarkdownRulesSections(existingContent, rules.sections, /^##\s+(.+)$/);
9
+ }
10
+ extractExistingRules(content) {
11
+ return this.extractExistingSections(content).flatMap(section => section.rules);
12
+ }
13
+ extractExistingSections(content) {
14
+ const lines = content.split('\n');
15
+ const sections = [];
16
+ let currentSection = null;
17
+ for (const line of lines) {
18
+ const trimmed = line.trim();
19
+ if (trimmed.startsWith('## ') && trimmed.includes(' ')) {
20
+ if (currentSection && currentSection.rules.length > 0) {
21
+ sections.push(currentSection);
22
+ }
23
+ const sectionName = trimmed.replace(/^##\s*/, '');
24
+ currentSection = {
25
+ templateId: sectionName.toLowerCase().replace(/\s+/g, '_'),
26
+ templateName: sectionName,
27
+ rules: []
28
+ };
29
+ }
30
+ else if (currentSection && trimmed.startsWith('- ')) {
31
+ currentSection.rules.push(trimmed.replace(/^- /, ''));
32
+ }
33
+ }
34
+ if (currentSection && currentSection.rules.length > 0) {
35
+ sections.push(currentSection);
36
+ }
37
+ return sections;
38
+ }
39
+ generateRulesContent(sections) {
40
+ let content = '';
41
+ for (const section of sections) {
42
+ if (section.rules.length === 0)
43
+ continue;
44
+ content += `## ${section.templateName}\n`;
45
+ for (const rule of section.rules) {
46
+ content += `- ${rule}\n`;
47
+ }
48
+ content += '\n';
49
+ }
50
+ return content.trim();
51
+ }
52
+ }
53
+ //# sourceMappingURL=MarkdownRulesAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownRulesAgent.js","sourceRoot":"","sources":["../../src/agents/MarkdownRulesAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC;;;GAGG;AACH,MAAM,OAAgB,kBAAmB,SAAQ,KAAK;IACpD,KAAK,CAAC,gBAAgB,CACpB,WAAmB,EACnB,KAAmB,EACnB,eAAuB;QAEvB,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC3F,CAAC;IAED,oBAAoB,CAAC,OAAe;QAClC,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC;IAED,uBAAuB,CAAC,OAAe;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,IAAI,cAAc,GAAuB,IAAI,CAAC;QAE9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE5B,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,IAAI,cAAc,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtD,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAChC,CAAC;gBAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAClD,cAAc,GAAG;oBACf,UAAU,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;oBAC1D,YAAY,EAAE,WAAW;oBACzB,KAAK,EAAE,EAAE;iBACV,CAAC;YACJ,CAAC;iBAAM,IAAI,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,IAAI,cAAc,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,oBAAoB,CAAC,QAAuB;QAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEzC,OAAO,IAAI,MAAM,OAAO,CAAC,YAAY,IAAI,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC;YAC3B,CAAC;YACD,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { MarkdownRulesAgent } from './MarkdownRulesAgent.js';
2
+ import type { MCPServerConfig } from '../types/index.js';
3
+ export declare class RooCodeAgent extends MarkdownRulesAgent {
4
+ constructor();
5
+ applyMCPConfig(projectPath: string, servers: MCPServerConfig[]): Promise<void>;
6
+ removeMCPServer(projectPath: string, serverName: string): Promise<boolean>;
7
+ getMCPServers(projectPath: string): Promise<MCPServerConfig[]>;
8
+ }
9
+ //# sourceMappingURL=RooCodeAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RooCodeAgent.d.ts","sourceRoot":"","sources":["../../src/agents/RooCodeAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAmB,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AAEzF,qBAAa,YAAa,SAAQ,kBAAkB;;IA+C5C,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC9E,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB1E,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CA+BrE"}
@@ -0,0 +1,131 @@
1
+ import { MarkdownRulesAgent } from './MarkdownRulesAgent.js';
2
+ import { ensureDirectoryExists, readFileIfExists, writeFile } from '../utils/fs.js';
3
+ export class RooCodeAgent extends MarkdownRulesAgent {
4
+ constructor() {
5
+ const definition = {
6
+ id: 'roo',
7
+ name: 'RooCode',
8
+ capabilities: {
9
+ mcp: {
10
+ stdio: true,
11
+ http: true,
12
+ sse: true,
13
+ },
14
+ rules: true,
15
+ hooks: false,
16
+ commands: false,
17
+ subagents: false,
18
+ statusline: false,
19
+ skills: true,
20
+ },
21
+ configFiles: [
22
+ {
23
+ path: 'AGENTS.md',
24
+ purpose: 'rules',
25
+ format: 'markdown',
26
+ type: 'file',
27
+ optional: true,
28
+ description: 'RooCode instructions file',
29
+ },
30
+ {
31
+ path: '.roo/mcp.json',
32
+ purpose: 'mcp',
33
+ format: 'json',
34
+ type: 'file',
35
+ optional: true,
36
+ description: 'RooCode MCP configuration',
37
+ },
38
+ ],
39
+ nativeConfigPath: '.roo/mcp.json',
40
+ rulesPath: 'AGENTS.md',
41
+ skillPaths: {
42
+ project: '.roo/skills/',
43
+ global: '~/.roo/skills/',
44
+ },
45
+ };
46
+ super(definition);
47
+ }
48
+ async applyMCPConfig(projectPath, servers) {
49
+ const configPath = this.getNativeMcpPath(projectPath);
50
+ await ensureDirectoryExists(configPath);
51
+ const existingContent = await readFileIfExists(configPath);
52
+ let existingConfig = { mcpServers: {} };
53
+ if (existingContent) {
54
+ try {
55
+ existingConfig = JSON.parse(existingContent);
56
+ if (!existingConfig.mcpServers) {
57
+ existingConfig.mcpServers = {};
58
+ }
59
+ }
60
+ catch {
61
+ existingConfig = { mcpServers: {} };
62
+ }
63
+ }
64
+ for (const server of servers) {
65
+ const nextServer = {};
66
+ if (server.command)
67
+ nextServer.command = server.command;
68
+ if (server.args?.length)
69
+ nextServer.args = server.args;
70
+ if (server.env && Object.keys(server.env).length > 0)
71
+ nextServer.env = server.env;
72
+ if (server.url)
73
+ nextServer.url = server.url;
74
+ if (server.headers && Object.keys(server.headers).length > 0)
75
+ nextServer.headers = server.headers;
76
+ existingConfig.mcpServers[server.name] = nextServer;
77
+ }
78
+ await writeFile(configPath, JSON.stringify(existingConfig, null, 2));
79
+ }
80
+ async removeMCPServer(projectPath, serverName) {
81
+ const configPath = this.getNativeMcpPath(projectPath);
82
+ const content = await readFileIfExists(configPath);
83
+ if (!content)
84
+ return false;
85
+ try {
86
+ const config = JSON.parse(content);
87
+ if (!config.mcpServers || !(serverName in config.mcpServers))
88
+ return false;
89
+ delete config.mcpServers[serverName];
90
+ await writeFile(configPath, JSON.stringify(config, null, 2));
91
+ return true;
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ }
97
+ async getMCPServers(projectPath) {
98
+ const configPath = this.getNativeMcpPath(projectPath);
99
+ const content = await readFileIfExists(configPath);
100
+ if (!content)
101
+ return [];
102
+ try {
103
+ const config = JSON.parse(content);
104
+ const servers = [];
105
+ if (config.mcpServers) {
106
+ for (const [name, serverConfig] of Object.entries(config.mcpServers)) {
107
+ const server = {
108
+ name,
109
+ type: (serverConfig.command ? 'stdio' : 'http'),
110
+ };
111
+ if (serverConfig.command)
112
+ server.command = serverConfig.command;
113
+ if (serverConfig.args)
114
+ server.args = serverConfig.args;
115
+ if (serverConfig.env)
116
+ server.env = serverConfig.env;
117
+ if (serverConfig.url)
118
+ server.url = serverConfig.url;
119
+ if (serverConfig.headers)
120
+ server.headers = serverConfig.headers;
121
+ servers.push(server);
122
+ }
123
+ }
124
+ return servers;
125
+ }
126
+ catch {
127
+ return [];
128
+ }
129
+ }
130
+ }
131
+ //# sourceMappingURL=RooCodeAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RooCodeAgent.js","sourceRoot":"","sources":["../../src/agents/RooCodeAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { MarkdownRulesAgent } from './MarkdownRulesAgent.js';
2
+ import type { MCPServerConfig } from '../types/index.js';
3
+ export declare class WindsurfAgent extends MarkdownRulesAgent {
4
+ constructor();
5
+ applyMCPConfig(projectPath: string, servers: MCPServerConfig[]): Promise<void>;
6
+ removeMCPServer(projectPath: string, serverName: string): Promise<boolean>;
7
+ getMCPServers(projectPath: string): Promise<MCPServerConfig[]>;
8
+ }
9
+ //# sourceMappingURL=WindsurfAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindsurfAgent.d.ts","sourceRoot":"","sources":["../../src/agents/WindsurfAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAmB,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AAEzF,qBAAa,aAAc,SAAQ,kBAAkB;;IA2C7C,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC9E,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB1E,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CA+BrE"}
@@ -0,0 +1,127 @@
1
+ import { MarkdownRulesAgent } from './MarkdownRulesAgent.js';
2
+ import { ensureDirectoryExists, readFileIfExists, writeFile } from '../utils/fs.js';
3
+ export class WindsurfAgent extends MarkdownRulesAgent {
4
+ constructor() {
5
+ const definition = {
6
+ id: 'windsurf',
7
+ name: 'Windsurf',
8
+ capabilities: {
9
+ mcp: {
10
+ stdio: true,
11
+ http: true,
12
+ sse: true,
13
+ },
14
+ rules: true,
15
+ hooks: false,
16
+ commands: false,
17
+ subagents: false,
18
+ statusline: false,
19
+ skills: false,
20
+ },
21
+ configFiles: [
22
+ {
23
+ path: '.windsurfrules',
24
+ purpose: 'rules',
25
+ format: 'text',
26
+ type: 'file',
27
+ optional: true,
28
+ description: 'Windsurf rules file',
29
+ },
30
+ {
31
+ path: '.windsurf/mcp_config.json',
32
+ purpose: 'mcp',
33
+ format: 'json',
34
+ type: 'file',
35
+ optional: true,
36
+ description: 'Windsurf MCP server configuration',
37
+ },
38
+ ],
39
+ nativeConfigPath: '.windsurf/mcp_config.json',
40
+ rulesPath: '.windsurfrules',
41
+ };
42
+ super(definition);
43
+ }
44
+ async applyMCPConfig(projectPath, servers) {
45
+ const configPath = this.getNativeMcpPath(projectPath);
46
+ await ensureDirectoryExists(configPath);
47
+ const existingContent = await readFileIfExists(configPath);
48
+ let existingConfig = { mcpServers: {} };
49
+ if (existingContent) {
50
+ try {
51
+ existingConfig = JSON.parse(existingContent);
52
+ if (!existingConfig.mcpServers) {
53
+ existingConfig.mcpServers = {};
54
+ }
55
+ }
56
+ catch {
57
+ existingConfig = { mcpServers: {} };
58
+ }
59
+ }
60
+ for (const server of servers) {
61
+ const nextServer = {};
62
+ if (server.command)
63
+ nextServer.command = server.command;
64
+ if (server.args?.length)
65
+ nextServer.args = server.args;
66
+ if (server.env && Object.keys(server.env).length > 0)
67
+ nextServer.env = server.env;
68
+ if (server.url)
69
+ nextServer.url = server.url;
70
+ if (server.headers && Object.keys(server.headers).length > 0)
71
+ nextServer.headers = server.headers;
72
+ existingConfig.mcpServers[server.name] = nextServer;
73
+ }
74
+ await writeFile(configPath, JSON.stringify(existingConfig, null, 2));
75
+ }
76
+ async removeMCPServer(projectPath, serverName) {
77
+ const configPath = this.getNativeMcpPath(projectPath);
78
+ const content = await readFileIfExists(configPath);
79
+ if (!content)
80
+ return false;
81
+ try {
82
+ const config = JSON.parse(content);
83
+ if (!config.mcpServers || !(serverName in config.mcpServers))
84
+ return false;
85
+ delete config.mcpServers[serverName];
86
+ await writeFile(configPath, JSON.stringify(config, null, 2));
87
+ return true;
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
93
+ async getMCPServers(projectPath) {
94
+ const configPath = this.getNativeMcpPath(projectPath);
95
+ const content = await readFileIfExists(configPath);
96
+ if (!content)
97
+ return [];
98
+ try {
99
+ const config = JSON.parse(content);
100
+ const servers = [];
101
+ if (config.mcpServers) {
102
+ for (const [name, serverConfig] of Object.entries(config.mcpServers)) {
103
+ const server = {
104
+ name,
105
+ type: (serverConfig.command ? 'stdio' : 'http'),
106
+ };
107
+ if (serverConfig.command)
108
+ server.command = serverConfig.command;
109
+ if (serverConfig.args)
110
+ server.args = serverConfig.args;
111
+ if (serverConfig.env)
112
+ server.env = serverConfig.env;
113
+ if (serverConfig.url)
114
+ server.url = serverConfig.url;
115
+ if (serverConfig.headers)
116
+ server.headers = serverConfig.headers;
117
+ servers.push(server);
118
+ }
119
+ }
120
+ return servers;
121
+ }
122
+ catch {
123
+ return [];
124
+ }
125
+ }
126
+ }
127
+ //# sourceMappingURL=WindsurfAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindsurfAgent.js","sourceRoot":"","sources":["../../src/agents/WindsurfAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { MarkdownRulesAgent } from './MarkdownRulesAgent.js';
2
+ import type { MCPServerConfig } from '../types/index.js';
3
+ export declare class ZedAgent extends MarkdownRulesAgent {
4
+ constructor();
5
+ applyMCPConfig(projectPath: string, servers: MCPServerConfig[]): Promise<void>;
6
+ removeMCPServer(projectPath: string, serverName: string): Promise<boolean>;
7
+ getMCPServers(projectPath: string): Promise<MCPServerConfig[]>;
8
+ }
9
+ //# sourceMappingURL=ZedAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZedAgent.d.ts","sourceRoot":"","sources":["../../src/agents/ZedAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAmB,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AAEzF,qBAAa,QAAS,SAAQ,kBAAkB;;IA2CxC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC9E,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB1E,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CA+BrE"}
@@ -0,0 +1,127 @@
1
+ import { MarkdownRulesAgent } from './MarkdownRulesAgent.js';
2
+ import { ensureDirectoryExists, readFileIfExists, writeFile } from '../utils/fs.js';
3
+ export class ZedAgent extends MarkdownRulesAgent {
4
+ constructor() {
5
+ const definition = {
6
+ id: 'zed',
7
+ name: 'Zed',
8
+ capabilities: {
9
+ mcp: {
10
+ stdio: true,
11
+ http: true,
12
+ sse: true,
13
+ },
14
+ rules: true,
15
+ hooks: false,
16
+ commands: false,
17
+ subagents: false,
18
+ statusline: false,
19
+ skills: false,
20
+ },
21
+ configFiles: [
22
+ {
23
+ path: 'AGENTS.md',
24
+ purpose: 'rules',
25
+ format: 'markdown',
26
+ type: 'file',
27
+ optional: true,
28
+ description: 'Zed project instructions',
29
+ },
30
+ {
31
+ path: '.zed/settings.json',
32
+ purpose: 'mcp',
33
+ format: 'json',
34
+ type: 'file',
35
+ optional: true,
36
+ description: 'Zed project settings',
37
+ },
38
+ ],
39
+ nativeConfigPath: '.zed/settings.json',
40
+ rulesPath: 'AGENTS.md',
41
+ };
42
+ super(definition);
43
+ }
44
+ async applyMCPConfig(projectPath, servers) {
45
+ const configPath = this.getNativeMcpPath(projectPath);
46
+ await ensureDirectoryExists(configPath);
47
+ const existingContent = await readFileIfExists(configPath);
48
+ let existingConfig = { context_servers: {} };
49
+ if (existingContent) {
50
+ try {
51
+ existingConfig = JSON.parse(existingContent);
52
+ if (!existingConfig.context_servers) {
53
+ existingConfig.context_servers = {};
54
+ }
55
+ }
56
+ catch {
57
+ existingConfig = { context_servers: {} };
58
+ }
59
+ }
60
+ for (const server of servers) {
61
+ const nextServer = { source: 'custom' };
62
+ if (server.command)
63
+ nextServer.command = server.command;
64
+ if (server.args?.length)
65
+ nextServer.args = server.args;
66
+ if (server.env && Object.keys(server.env).length > 0)
67
+ nextServer.env = server.env;
68
+ if (server.url)
69
+ nextServer.url = server.url;
70
+ if (server.headers && Object.keys(server.headers).length > 0)
71
+ nextServer.headers = server.headers;
72
+ existingConfig.context_servers[server.name] = nextServer;
73
+ }
74
+ await writeFile(configPath, JSON.stringify(existingConfig, null, 2));
75
+ }
76
+ async removeMCPServer(projectPath, serverName) {
77
+ const configPath = this.getNativeMcpPath(projectPath);
78
+ const content = await readFileIfExists(configPath);
79
+ if (!content)
80
+ return false;
81
+ try {
82
+ const config = JSON.parse(content);
83
+ if (!config.context_servers || !(serverName in config.context_servers))
84
+ return false;
85
+ delete config.context_servers[serverName];
86
+ await writeFile(configPath, JSON.stringify(config, null, 2));
87
+ return true;
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
93
+ async getMCPServers(projectPath) {
94
+ const configPath = this.getNativeMcpPath(projectPath);
95
+ const content = await readFileIfExists(configPath);
96
+ if (!content)
97
+ return [];
98
+ try {
99
+ const config = JSON.parse(content);
100
+ const servers = [];
101
+ if (config.context_servers) {
102
+ for (const [name, serverConfig] of Object.entries(config.context_servers)) {
103
+ const server = {
104
+ name,
105
+ type: (serverConfig.command ? 'stdio' : 'http'),
106
+ };
107
+ if (serverConfig.command)
108
+ server.command = serverConfig.command;
109
+ if (serverConfig.args)
110
+ server.args = serverConfig.args;
111
+ if (serverConfig.env)
112
+ server.env = serverConfig.env;
113
+ if (serverConfig.url)
114
+ server.url = serverConfig.url;
115
+ if (serverConfig.headers)
116
+ server.headers = serverConfig.headers;
117
+ servers.push(server);
118
+ }
119
+ }
120
+ return servers;
121
+ }
122
+ catch {
123
+ return [];
124
+ }
125
+ }
126
+ }
127
+ //# sourceMappingURL=ZedAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZedAgent.js","sourceRoot":"","sources":["../../src/agents/ZedAgent.ts"],"names":[],"mappings":"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"}