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.
- package/CHANGELOG.md +19 -0
- package/README.md +209 -0
- package/dist/agentinit-1.6.0.tgz +0 -0
- package/dist/agents/Agent.d.ts +110 -0
- package/dist/agents/Agent.d.ts.map +1 -0
- package/dist/agents/Agent.js +174 -0
- package/dist/agents/Agent.js.map +1 -0
- package/dist/agents/ClaudeAgent.d.ts +50 -0
- package/dist/agents/ClaudeAgent.d.ts.map +1 -0
- package/dist/agents/ClaudeAgent.js +249 -0
- package/dist/agents/ClaudeAgent.js.map +1 -0
- package/dist/agents/ClaudeDesktopAgent.d.ts +49 -0
- package/dist/agents/ClaudeDesktopAgent.d.ts.map +1 -0
- package/dist/agents/ClaudeDesktopAgent.js +143 -0
- package/dist/agents/ClaudeDesktopAgent.js.map +1 -0
- package/dist/agents/CodexCliAgent.d.ts +48 -0
- package/dist/agents/CodexCliAgent.d.ts.map +1 -0
- package/dist/agents/CodexCliAgent.js +262 -0
- package/dist/agents/CodexCliAgent.js.map +1 -0
- package/dist/agents/CursorAgent.d.ts +44 -0
- package/dist/agents/CursorAgent.d.ts.map +1 -0
- package/dist/agents/CursorAgent.js +231 -0
- package/dist/agents/CursorAgent.js.map +1 -0
- package/dist/agents/DroidAgent.d.ts +52 -0
- package/dist/agents/DroidAgent.d.ts.map +1 -0
- package/dist/agents/DroidAgent.js +228 -0
- package/dist/agents/DroidAgent.js.map +1 -0
- package/dist/agents/GeminiCliAgent.d.ts +40 -0
- package/dist/agents/GeminiCliAgent.d.ts.map +1 -0
- package/dist/agents/GeminiCliAgent.js +195 -0
- package/dist/agents/GeminiCliAgent.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +33365 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/apply.d.ts +2 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +468 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +6 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/detect.d.ts +6 -0
- package/dist/commands/detect.d.ts.map +1 -0
- package/dist/commands/detect.js +55 -0
- package/dist/commands/detect.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +105 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp.d.ts +8 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +127 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/subagents.d.ts +9 -0
- package/dist/commands/subagents.d.ts.map +1 -0
- package/dist/commands/subagents.js +6 -0
- package/dist/commands/subagents.js.map +1 -0
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +49 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/verifyMcp.d.ts +2 -0
- package/dist/commands/verifyMcp.d.ts.map +1 -0
- package/dist/commands/verifyMcp.js +215 -0
- package/dist/commands/verifyMcp.js.map +1 -0
- package/dist/constants/index.d.ts +3 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +3 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/mcp.d.ts +9 -0
- package/dist/constants/mcp.d.ts.map +1 -0
- package/dist/constants/mcp.js +28 -0
- package/dist/constants/mcp.js.map +1 -0
- package/dist/constants/tokens.d.ts +6 -0
- package/dist/constants/tokens.d.ts.map +1 -0
- package/dist/constants/tokens.js +5 -0
- package/dist/constants/tokens.js.map +1 -0
- package/dist/core/agentDetector.d.ts +9 -0
- package/dist/core/agentDetector.d.ts.map +1 -0
- package/dist/core/agentDetector.js +51 -0
- package/dist/core/agentDetector.js.map +1 -0
- package/dist/core/agentManager.d.ts +55 -0
- package/dist/core/agentManager.d.ts.map +1 -0
- package/dist/core/agentManager.js +113 -0
- package/dist/core/agentManager.js.map +1 -0
- package/dist/core/configMerger.d.ts +49 -0
- package/dist/core/configMerger.d.ts.map +1 -0
- package/dist/core/configMerger.js +180 -0
- package/dist/core/configMerger.js.map +1 -0
- package/dist/core/mcpClient.d.ts +38 -0
- package/dist/core/mcpClient.d.ts.map +1 -0
- package/dist/core/mcpClient.js +416 -0
- package/dist/core/mcpClient.js.map +1 -0
- package/dist/core/mcpFilter.d.ts +44 -0
- package/dist/core/mcpFilter.d.ts.map +1 -0
- package/dist/core/mcpFilter.js +126 -0
- package/dist/core/mcpFilter.js.map +1 -0
- package/dist/core/mcpParser.d.ts +25 -0
- package/dist/core/mcpParser.d.ts.map +1 -0
- package/dist/core/mcpParser.js +297 -0
- package/dist/core/mcpParser.js.map +1 -0
- package/dist/core/propagator.d.ts +25 -0
- package/dist/core/propagator.d.ts.map +1 -0
- package/dist/core/propagator.js +154 -0
- package/dist/core/propagator.js.map +1 -0
- package/dist/core/rulesApplicator.d.ts +29 -0
- package/dist/core/rulesApplicator.d.ts.map +1 -0
- package/dist/core/rulesApplicator.js +181 -0
- package/dist/core/rulesApplicator.js.map +1 -0
- package/dist/core/rulesParser.d.ts +41 -0
- package/dist/core/rulesParser.d.ts.map +1 -0
- package/dist/core/rulesParser.js +260 -0
- package/dist/core/rulesParser.js.map +1 -0
- package/dist/core/rulesTemplateLoader.d.ts +31 -0
- package/dist/core/rulesTemplateLoader.d.ts.map +1 -0
- package/dist/core/rulesTemplateLoader.js +75 -0
- package/dist/core/rulesTemplateLoader.js.map +1 -0
- package/dist/core/stackDetector.d.ts +16 -0
- package/dist/core/stackDetector.d.ts.map +1 -0
- package/dist/core/stackDetector.js +234 -0
- package/dist/core/stackDetector.js.map +1 -0
- package/dist/core/templateEngine.d.ts +15 -0
- package/dist/core/templateEngine.d.ts.map +1 -0
- package/dist/core/templateEngine.js +260 -0
- package/dist/core/templateEngine.js.map +1 -0
- package/dist/core/tomlGenerator.d.ts +24 -0
- package/dist/core/tomlGenerator.d.ts.map +1 -0
- package/dist/core/tomlGenerator.js +185 -0
- package/dist/core/tomlGenerator.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -33195
- package/dist/index.js.map +1 -0
- package/dist/lib/index.d.ts +39 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +40 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/types/index.d.ts +23 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/lib/types/index.js +23 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/utils/index.d.ts +18 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +21 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/verifier/index.d.ts +22 -0
- package/dist/lib/verifier/index.d.ts.map +1 -0
- package/dist/lib/verifier/index.js +22 -0
- package/dist/lib/verifier/index.js.map +1 -0
- package/dist/registry/mcpRegistry.d.ts +12 -0
- package/dist/registry/mcpRegistry.d.ts.map +1 -0
- package/dist/registry/mcpRegistry.js +114 -0
- package/dist/registry/mcpRegistry.js.map +1 -0
- package/dist/types/index.d.ts +180 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +21 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/rules.d.ts +51 -0
- package/dist/types/rules.d.ts.map +1 -0
- package/dist/types/rules.js +2 -0
- package/dist/types/rules.js.map +1 -0
- package/dist/utils/fs.d.ts +12 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +91 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +36 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.d.ts +77 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +140 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +30 -6
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|