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,228 @@
1
+ import { Agent } from './Agent.js';
2
+ import { readFileIfExists, writeFile, ensureDirectoryExists } from '../utils/fs.js';
3
+ /**
4
+ * Droid (Factory) agent implementation
5
+ * Supports stdio MCP servers
6
+ * Uses ~/.factory for global configuration
7
+ * MCP config: ~/.factory/mcp.json
8
+ * Rules: AGENTS.md in project root
9
+ */
10
+ export class DroidAgent extends Agent {
11
+ constructor() {
12
+ const definition = {
13
+ id: 'droid',
14
+ name: 'Droid (Factory)',
15
+ url: 'https://factory.ai',
16
+ capabilities: {
17
+ mcp: {
18
+ stdio: true,
19
+ http: false,
20
+ sse: false
21
+ },
22
+ rules: true,
23
+ hooks: false,
24
+ commands: false,
25
+ subagents: false,
26
+ statusline: false
27
+ },
28
+ configFiles: [
29
+ {
30
+ path: 'AGENTS.md',
31
+ purpose: 'rules',
32
+ format: 'markdown',
33
+ type: 'file',
34
+ optional: true,
35
+ description: 'Agent instructions and rules in markdown format'
36
+ }
37
+ ],
38
+ nativeConfigPath: '.factory/mcp.json',
39
+ globalConfigPath: '~/.factory/mcp.json'
40
+ };
41
+ super(definition);
42
+ }
43
+ /**
44
+ * Apply MCP configuration to Droid's ~/.factory/mcp.json format
45
+ * Droid stores configs globally regardless of project-level or global flag
46
+ */
47
+ async applyMCPConfig(projectPath, servers) {
48
+ // Delegate to global config application since Droid uses global config
49
+ await this.applyGlobalMCPConfig(servers);
50
+ }
51
+ /**
52
+ * Apply MCP configuration to Droid's global ~/.factory/mcp.json format
53
+ */
54
+ async applyGlobalMCPConfig(servers) {
55
+ const globalPath = this.getGlobalMcpPath();
56
+ if (!globalPath) {
57
+ throw new Error(`Droid global configuration path could not be determined`);
58
+ }
59
+ // Ensure the directory exists
60
+ await ensureDirectoryExists(globalPath);
61
+ // Read existing configuration
62
+ const existingContent = await readFileIfExists(globalPath);
63
+ let existingConfig = { mcpServers: {} };
64
+ if (existingContent) {
65
+ try {
66
+ existingConfig = JSON.parse(existingContent);
67
+ if (!existingConfig.mcpServers) {
68
+ existingConfig.mcpServers = {};
69
+ }
70
+ }
71
+ catch (error) {
72
+ console.warn('Warning: Existing ~/.factory/mcp.json is invalid, creating new configuration');
73
+ existingConfig = { mcpServers: {} };
74
+ }
75
+ }
76
+ // Convert our MCP server configs to Droid's format
77
+ for (const server of servers) {
78
+ const droidServer = {
79
+ type: 'stdio'
80
+ };
81
+ if (server.command) {
82
+ droidServer.command = server.command;
83
+ }
84
+ if (server.args && server.args.length > 0) {
85
+ droidServer.args = server.args;
86
+ }
87
+ if (server.env && Object.keys(server.env).length > 0) {
88
+ droidServer.env = server.env;
89
+ }
90
+ // Add disabled flag (default false)
91
+ droidServer.disabled = false;
92
+ // Add or update the server in the config
93
+ existingConfig.mcpServers[server.name] = droidServer;
94
+ }
95
+ // Write the updated configuration
96
+ const configJson = JSON.stringify(existingConfig, null, 2);
97
+ await writeFile(globalPath, configJson);
98
+ }
99
+ /**
100
+ * Filter out non-stdio servers since Droid only supports stdio
101
+ */
102
+ filterMCPServers(servers) {
103
+ return servers.filter(server => server.type === 'stdio');
104
+ }
105
+ /**
106
+ * Droid doesn't need any transformations for stdio servers
107
+ */
108
+ transformMCPServers(servers) {
109
+ return servers;
110
+ }
111
+ /**
112
+ * Apply rules configuration to AGENTS.md
113
+ */
114
+ async applyRulesConfig(configPath, rules, existingContent) {
115
+ const rulesSection = this.generateRulesContent(rules.sections);
116
+ let content = existingContent;
117
+ // For markdown, we'll append rules directly
118
+ if (content && !content.endsWith('\n')) {
119
+ content += '\n';
120
+ }
121
+ if (content) {
122
+ content += '\n';
123
+ }
124
+ content += rulesSection;
125
+ return content.trim() + '\n';
126
+ }
127
+ /**
128
+ * Extract existing rule texts from AGENTS.md content
129
+ */
130
+ extractExistingRules(content) {
131
+ // Extract rules from markdown format - look for lines starting with "- "
132
+ const ruleLines = content.split('\n').filter(line => line.trim().startsWith('- '));
133
+ return ruleLines.map(line => line.replace(/^- /, '').trim()).filter(rule => rule.length > 0);
134
+ }
135
+ /**
136
+ * Extract existing rule sections from AGENTS.md content using ## headers
137
+ */
138
+ extractExistingSections(content) {
139
+ const lines = content.split('\n');
140
+ const sections = [];
141
+ let currentSection = null;
142
+ for (const line of lines) {
143
+ const trimmed = line.trim();
144
+ // Check if it's a section header
145
+ if (trimmed.startsWith('## ') && trimmed.includes(' ')) {
146
+ // Start new section
147
+ if (currentSection) {
148
+ sections.push(currentSection);
149
+ }
150
+ const sectionName = trimmed.replace(/^##\s*/, '');
151
+ currentSection = {
152
+ templateId: sectionName.toLowerCase().replace(/\s+/g, '_'),
153
+ templateName: sectionName,
154
+ rules: []
155
+ };
156
+ }
157
+ else if (currentSection && trimmed.startsWith('- ')) {
158
+ // Add rule to current section
159
+ const rule = trimmed.replace(/^- /, '');
160
+ currentSection.rules.push(rule);
161
+ }
162
+ }
163
+ // Add the last section
164
+ if (currentSection) {
165
+ sections.push(currentSection);
166
+ }
167
+ return sections;
168
+ }
169
+ /**
170
+ * Generate rules content in AGENTS.md markdown format
171
+ */
172
+ generateRulesContent(sections) {
173
+ let content = '';
174
+ if (sections && sections.length > 0) {
175
+ // Group rules by sections
176
+ for (const ruleSection of sections) {
177
+ content += `## ${ruleSection.templateName}\n\n`;
178
+ for (const rule of ruleSection.rules) {
179
+ content += `- ${rule}\n`;
180
+ }
181
+ content += '\n';
182
+ }
183
+ }
184
+ return content;
185
+ }
186
+ /**
187
+ * Get existing MCP servers from Droid's ~/.factory/mcp.json configuration
188
+ * Droid uses global configuration, so we read from the global path
189
+ */
190
+ async getMCPServers(projectPath) {
191
+ const globalPath = this.getGlobalMcpPath();
192
+ if (!globalPath) {
193
+ return [];
194
+ }
195
+ const configContent = await readFileIfExists(globalPath);
196
+ if (!configContent) {
197
+ return [];
198
+ }
199
+ try {
200
+ const config = JSON.parse(configContent);
201
+ const servers = [];
202
+ if (config.mcpServers) {
203
+ for (const [name, serverConfig] of Object.entries(config.mcpServers)) {
204
+ const server = {
205
+ name,
206
+ type: 'stdio',
207
+ };
208
+ if (serverConfig.command) {
209
+ server.command = serverConfig.command;
210
+ }
211
+ if (serverConfig.args) {
212
+ server.args = serverConfig.args;
213
+ }
214
+ if (serverConfig.env) {
215
+ server.env = serverConfig.env;
216
+ }
217
+ servers.push(server);
218
+ }
219
+ }
220
+ return servers;
221
+ }
222
+ catch (error) {
223
+ // Invalid JSON or missing mcpServers property
224
+ return [];
225
+ }
226
+ }
227
+ }
228
+ //# sourceMappingURL=DroidAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DroidAgent.js","sourceRoot":"","sources":["../../src/agents/DroidAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
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
+ * Google Gemini CLI agent implementation
6
+ * Supports stdio, HTTP, and SSE MCP servers
7
+ * Native config: .gemini/settings.json (general settings file, not just MCP)
8
+ */
9
+ export declare class GeminiCliAgent extends Agent {
10
+ constructor();
11
+ /**
12
+ * Apply MCP configuration to Gemini CLI's native JSON settings format
13
+ */
14
+ applyMCPConfig(projectPath: string, servers: MCPServerConfig[]): Promise<void>;
15
+ /**
16
+ * Gemini supports all MCP server types, so no filtering needed
17
+ */
18
+ filterMCPServers(servers: MCPServerConfig[]): MCPServerConfig[];
19
+ /**
20
+ * Gemini doesn't need any transformations
21
+ */
22
+ transformMCPServers(servers: MCPServerConfig[]): MCPServerConfig[];
23
+ /**
24
+ * Apply rules configuration to Gemini CLI's JSON format
25
+ */
26
+ applyRulesConfig(configPath: string, rules: AppliedRules, existingContent: string): Promise<string>;
27
+ /**
28
+ * Extract existing rule texts from JSON content
29
+ */
30
+ extractExistingRules(content: string): string[];
31
+ /**
32
+ * Extract existing rule sections from JSON content
33
+ */
34
+ extractExistingSections(content: string): RuleSection[];
35
+ /**
36
+ * Generate rules content in JSON format
37
+ */
38
+ generateRulesContent(sections: RuleSection[]): string;
39
+ }
40
+ //# sourceMappingURL=GeminiCliAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiCliAgent.d.ts","sourceRoot":"","sources":["../../src/agents/GeminiCliAgent.ts"],"names":[],"mappings":"AACA,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,cAAe,SAAQ,KAAK;;IAkCvC;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DpF;;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;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;CAgBtD"}
@@ -0,0 +1,195 @@
1
+ import { Agent } from './Agent.js';
2
+ import { readFileIfExists, writeFile, ensureDirectoryExists } from '../utils/fs.js';
3
+ /**
4
+ * Google Gemini CLI agent implementation
5
+ * Supports stdio, HTTP, and SSE MCP servers
6
+ * Native config: .gemini/settings.json (general settings file, not just MCP)
7
+ */
8
+ export class GeminiCliAgent extends Agent {
9
+ constructor() {
10
+ const definition = {
11
+ id: 'gemini',
12
+ name: 'Google Gemini CLI',
13
+ capabilities: {
14
+ mcp: {
15
+ stdio: true,
16
+ http: true,
17
+ sse: true
18
+ },
19
+ rules: true,
20
+ hooks: false,
21
+ commands: false,
22
+ subagents: false,
23
+ statusline: false
24
+ },
25
+ configFiles: [
26
+ {
27
+ path: '.gemini/settings.json',
28
+ purpose: 'settings',
29
+ format: 'json',
30
+ type: 'file',
31
+ optional: true,
32
+ description: 'Google Gemini CLI settings and MCP configuration'
33
+ }
34
+ ],
35
+ nativeConfigPath: '.gemini/settings.json',
36
+ globalConfigPath: '~/.gemini/settings.json'
37
+ };
38
+ super(definition);
39
+ }
40
+ /**
41
+ * Apply MCP configuration to Gemini CLI's native JSON settings format
42
+ */
43
+ async applyMCPConfig(projectPath, servers) {
44
+ const settingsPath = this.getNativeMcpPath(projectPath);
45
+ // Ensure the directory exists
46
+ await ensureDirectoryExists(settingsPath);
47
+ // Read existing configuration
48
+ const existingContent = await readFileIfExists(settingsPath);
49
+ let existingConfig = { mcpServers: {} };
50
+ if (existingContent) {
51
+ try {
52
+ existingConfig = JSON.parse(existingContent);
53
+ if (!existingConfig.mcpServers) {
54
+ existingConfig.mcpServers = {};
55
+ }
56
+ }
57
+ catch (error) {
58
+ console.warn('Warning: Existing .gemini/settings.json is invalid, creating new configuration');
59
+ existingConfig = { mcpServers: {} };
60
+ }
61
+ }
62
+ // Convert our MCP server configs to Gemini's format
63
+ for (const server of servers) {
64
+ const geminiServer = {};
65
+ switch (server.type) {
66
+ case 'stdio':
67
+ if (server.command) {
68
+ geminiServer.command = server.command;
69
+ }
70
+ if (server.args && server.args.length > 0) {
71
+ geminiServer.args = server.args;
72
+ }
73
+ if (server.env && Object.keys(server.env).length > 0) {
74
+ geminiServer.env = server.env;
75
+ }
76
+ break;
77
+ case 'http':
78
+ case 'sse':
79
+ if (server.url) {
80
+ geminiServer.url = server.url;
81
+ }
82
+ if (server.headers && Object.keys(server.headers).length > 0) {
83
+ geminiServer.headers = server.headers;
84
+ }
85
+ break;
86
+ }
87
+ // Add or update the server in the config
88
+ existingConfig.mcpServers[server.name] = geminiServer;
89
+ }
90
+ // Write the updated configuration
91
+ const configJson = JSON.stringify(existingConfig, null, 2);
92
+ await writeFile(settingsPath, configJson);
93
+ }
94
+ /**
95
+ * Gemini supports all MCP server types, so no filtering needed
96
+ */
97
+ filterMCPServers(servers) {
98
+ return servers; // Gemini supports all MCP types
99
+ }
100
+ /**
101
+ * Gemini doesn't need any transformations
102
+ */
103
+ transformMCPServers(servers) {
104
+ return servers; // No transformations needed
105
+ }
106
+ /**
107
+ * Apply rules configuration to Gemini CLI's JSON format
108
+ */
109
+ async applyRulesConfig(configPath, rules, existingContent) {
110
+ let config = {};
111
+ // Parse existing JSON if present
112
+ if (existingContent.trim()) {
113
+ try {
114
+ config = JSON.parse(existingContent);
115
+ }
116
+ catch (error) {
117
+ // If parsing fails, start with empty config
118
+ config = {};
119
+ }
120
+ }
121
+ // Add or update rules section
122
+ if (!config.rules) {
123
+ config.rules = {};
124
+ }
125
+ // Convert rule sections to JSON structure
126
+ for (const section of rules.sections) {
127
+ config.rules[section.templateId] = {
128
+ name: section.templateName,
129
+ rules: section.rules
130
+ };
131
+ }
132
+ return JSON.stringify(config, null, 2);
133
+ }
134
+ /**
135
+ * Extract existing rule texts from JSON content
136
+ */
137
+ extractExistingRules(content) {
138
+ try {
139
+ const config = JSON.parse(content);
140
+ const rules = [];
141
+ if (config.rules) {
142
+ for (const [key, value] of Object.entries(config.rules)) {
143
+ if (value.rules && Array.isArray(value.rules)) {
144
+ rules.push(...value.rules);
145
+ }
146
+ }
147
+ }
148
+ return rules;
149
+ }
150
+ catch (error) {
151
+ return [];
152
+ }
153
+ }
154
+ /**
155
+ * Extract existing rule sections from JSON content
156
+ */
157
+ extractExistingSections(content) {
158
+ try {
159
+ const config = JSON.parse(content);
160
+ const sections = [];
161
+ if (config.rules) {
162
+ for (const [key, value] of Object.entries(config.rules)) {
163
+ if (value.name && value.rules && Array.isArray(value.rules)) {
164
+ sections.push({
165
+ templateId: key,
166
+ templateName: value.name,
167
+ rules: value.rules
168
+ });
169
+ }
170
+ }
171
+ }
172
+ return sections;
173
+ }
174
+ catch (error) {
175
+ return [];
176
+ }
177
+ }
178
+ /**
179
+ * Generate rules content in JSON format
180
+ */
181
+ generateRulesContent(sections) {
182
+ if (!sections || sections.length === 0) {
183
+ return '{}';
184
+ }
185
+ const config = { rules: {} };
186
+ for (const section of sections) {
187
+ config.rules[section.templateId] = {
188
+ name: section.templateName,
189
+ rules: section.rules
190
+ };
191
+ }
192
+ return JSON.stringify(config, null, 2);
193
+ }
194
+ }
195
+ //# sourceMappingURL=GeminiCliAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiCliAgent.js","sourceRoot":"","sources":["../../src/agents/GeminiCliAgent.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}