agentinit 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +209 -0
- package/dist/agentinit-1.5.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/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 +33191 -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 +111 -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.0.tgz +0 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { MCPServerType } from '../types/index.js';
|
|
2
|
+
export class MCPParseError extends Error {
|
|
3
|
+
constructor(message) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.name = 'MCPParseError';
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class MCPParser {
|
|
9
|
+
/**
|
|
10
|
+
* Parse command line arguments to extract MCP server configurations
|
|
11
|
+
*/
|
|
12
|
+
static parseArguments(args) {
|
|
13
|
+
const servers = [];
|
|
14
|
+
let i = 0;
|
|
15
|
+
while (i < args.length) {
|
|
16
|
+
const arg = args[i];
|
|
17
|
+
if (arg === '--mcp-stdio') {
|
|
18
|
+
const result = this.parseStdioMCP(args, i);
|
|
19
|
+
if (result.server) {
|
|
20
|
+
servers.push(result.server);
|
|
21
|
+
}
|
|
22
|
+
i = result.nextIndex;
|
|
23
|
+
}
|
|
24
|
+
else if (arg === '--mcp-http') {
|
|
25
|
+
const result = this.parseHttpMCP(args, i);
|
|
26
|
+
if (result.server) {
|
|
27
|
+
servers.push(result.server);
|
|
28
|
+
}
|
|
29
|
+
i = result.nextIndex;
|
|
30
|
+
}
|
|
31
|
+
else if (arg === '--mcp-sse') {
|
|
32
|
+
const result = this.parseSSEMCP(args, i);
|
|
33
|
+
if (result.server) {
|
|
34
|
+
servers.push(result.server);
|
|
35
|
+
}
|
|
36
|
+
i = result.nextIndex;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
i++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return { servers };
|
|
43
|
+
}
|
|
44
|
+
static parseStdioMCP(args, startIndex) {
|
|
45
|
+
let i = startIndex + 1;
|
|
46
|
+
if (i >= args.length) {
|
|
47
|
+
return { server: null, nextIndex: i };
|
|
48
|
+
}
|
|
49
|
+
const serverName = args[i];
|
|
50
|
+
if (!serverName) {
|
|
51
|
+
return { server: null, nextIndex: i + 1 };
|
|
52
|
+
}
|
|
53
|
+
// Validate that the name doesn't look like a command (old syntax)
|
|
54
|
+
if (this.looksLikeCommand(serverName)) {
|
|
55
|
+
throw new MCPParseError(`Invalid MCP name: "${serverName}"\n` +
|
|
56
|
+
`The name appears to be a command. New syntax requires explicit names:\n` +
|
|
57
|
+
` Correct: --mcp-stdio myname "npx -y @package/name"\n` +
|
|
58
|
+
` Incorrect: --mcp-stdio "npx -y @package/name"`);
|
|
59
|
+
}
|
|
60
|
+
i++;
|
|
61
|
+
if (i >= args.length) {
|
|
62
|
+
throw new MCPParseError(`Missing command for MCP server "${serverName}"\n` +
|
|
63
|
+
`Usage: --mcp-stdio <name> <command>`);
|
|
64
|
+
}
|
|
65
|
+
const commandStr = args[i];
|
|
66
|
+
if (!commandStr) {
|
|
67
|
+
return { server: null, nextIndex: i + 1 };
|
|
68
|
+
}
|
|
69
|
+
i++;
|
|
70
|
+
// Parse command and initial args
|
|
71
|
+
const [command, ...initialArgs] = this.parseCommand(commandStr);
|
|
72
|
+
if (!command) {
|
|
73
|
+
return { server: null, nextIndex: i };
|
|
74
|
+
}
|
|
75
|
+
const server = {
|
|
76
|
+
name: serverName,
|
|
77
|
+
type: MCPServerType.STDIO,
|
|
78
|
+
command,
|
|
79
|
+
args: [...initialArgs],
|
|
80
|
+
env: {}
|
|
81
|
+
};
|
|
82
|
+
// Look for --args and --env modifiers
|
|
83
|
+
while (i < args.length) {
|
|
84
|
+
const nextArg = args[i];
|
|
85
|
+
if (!nextArg) {
|
|
86
|
+
i++;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (nextArg === '--args' && i + 1 < args.length) {
|
|
90
|
+
const argsStr = args[i + 1];
|
|
91
|
+
if (argsStr) {
|
|
92
|
+
const additionalArgs = this.parseArgsString(argsStr);
|
|
93
|
+
server.args = [...(server.args || []), ...additionalArgs];
|
|
94
|
+
}
|
|
95
|
+
i += 2;
|
|
96
|
+
}
|
|
97
|
+
else if (nextArg === '--env' && i + 1 < args.length) {
|
|
98
|
+
const envStr = args[i + 1];
|
|
99
|
+
if (envStr) {
|
|
100
|
+
const envVars = this.parseEnvString(envStr);
|
|
101
|
+
server.env = { ...server.env, ...envVars };
|
|
102
|
+
}
|
|
103
|
+
i += 2;
|
|
104
|
+
}
|
|
105
|
+
else if (nextArg.startsWith('--mcp-')) {
|
|
106
|
+
// Next MCP command, stop parsing this one
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
i++;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return { server, nextIndex: i };
|
|
114
|
+
}
|
|
115
|
+
static parseHttpMCP(args, startIndex) {
|
|
116
|
+
let i = startIndex + 1;
|
|
117
|
+
if (i >= args.length) {
|
|
118
|
+
return { server: null, nextIndex: i };
|
|
119
|
+
}
|
|
120
|
+
const serverName = args[i];
|
|
121
|
+
if (!serverName) {
|
|
122
|
+
return { server: null, nextIndex: i + 1 };
|
|
123
|
+
}
|
|
124
|
+
// Validate that the name doesn't look like a URL (old syntax)
|
|
125
|
+
if (this.looksLikeUrl(serverName)) {
|
|
126
|
+
throw new MCPParseError(`Invalid MCP name: "${serverName}"\n` +
|
|
127
|
+
`The name appears to be a URL. New syntax requires explicit names:\n` +
|
|
128
|
+
` Correct: --mcp-http myname "https://example.com/mcp"\n` +
|
|
129
|
+
` Incorrect: --mcp-http "https://example.com/mcp"`);
|
|
130
|
+
}
|
|
131
|
+
i++;
|
|
132
|
+
if (i >= args.length) {
|
|
133
|
+
throw new MCPParseError(`Missing URL for MCP server "${serverName}"\n` +
|
|
134
|
+
`Usage: --mcp-http <name> <url>`);
|
|
135
|
+
}
|
|
136
|
+
const url = args[i];
|
|
137
|
+
if (!url) {
|
|
138
|
+
return { server: null, nextIndex: i + 1 };
|
|
139
|
+
}
|
|
140
|
+
i++;
|
|
141
|
+
const server = {
|
|
142
|
+
name: serverName,
|
|
143
|
+
type: MCPServerType.HTTP,
|
|
144
|
+
url,
|
|
145
|
+
headers: {}
|
|
146
|
+
};
|
|
147
|
+
// Look for --auth and --header modifiers
|
|
148
|
+
while (i < args.length) {
|
|
149
|
+
const nextArg = args[i];
|
|
150
|
+
if (!nextArg) {
|
|
151
|
+
i++;
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (nextArg === '--auth' && i + 1 < args.length) {
|
|
155
|
+
const authHeader = args[i + 1];
|
|
156
|
+
if (authHeader) {
|
|
157
|
+
if (authHeader.startsWith('Bearer ')) {
|
|
158
|
+
server.headers['Authorization'] = authHeader;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
server.headers['Authorization'] = `Bearer ${authHeader}`;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
i += 2;
|
|
165
|
+
}
|
|
166
|
+
else if (nextArg === '--header' && i + 1 < args.length) {
|
|
167
|
+
const headerStr = args[i + 1];
|
|
168
|
+
if (headerStr) {
|
|
169
|
+
const colonIndex = headerStr.indexOf(':');
|
|
170
|
+
if (colonIndex > 0 && colonIndex < headerStr.length - 1) {
|
|
171
|
+
const key = headerStr.substring(0, colonIndex).trim();
|
|
172
|
+
const value = headerStr.substring(colonIndex + 1).trim();
|
|
173
|
+
if (key && value) {
|
|
174
|
+
server.headers[key] = value;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
i += 2;
|
|
179
|
+
}
|
|
180
|
+
else if (nextArg.startsWith('--mcp-')) {
|
|
181
|
+
// Next MCP command, stop parsing this one
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
i++;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return { server, nextIndex: i };
|
|
189
|
+
}
|
|
190
|
+
static parseSSEMCP(args, startIndex) {
|
|
191
|
+
let i = startIndex + 1;
|
|
192
|
+
if (i >= args.length) {
|
|
193
|
+
return { server: null, nextIndex: i };
|
|
194
|
+
}
|
|
195
|
+
const serverName = args[i];
|
|
196
|
+
if (!serverName) {
|
|
197
|
+
return { server: null, nextIndex: i + 1 };
|
|
198
|
+
}
|
|
199
|
+
// Validate that the name doesn't look like a URL (old syntax)
|
|
200
|
+
if (this.looksLikeUrl(serverName)) {
|
|
201
|
+
throw new MCPParseError(`Invalid MCP name: "${serverName}"\n` +
|
|
202
|
+
`The name appears to be a URL. New syntax requires explicit names:\n` +
|
|
203
|
+
` Correct: --mcp-sse myname "https://example.com/sse"\n` +
|
|
204
|
+
` Incorrect: --mcp-sse "https://example.com/sse"`);
|
|
205
|
+
}
|
|
206
|
+
i++;
|
|
207
|
+
if (i >= args.length) {
|
|
208
|
+
throw new MCPParseError(`Missing URL for MCP server "${serverName}"\n` +
|
|
209
|
+
`Usage: --mcp-sse <name> <url>`);
|
|
210
|
+
}
|
|
211
|
+
const url = args[i];
|
|
212
|
+
if (!url) {
|
|
213
|
+
return { server: null, nextIndex: i + 1 };
|
|
214
|
+
}
|
|
215
|
+
i++;
|
|
216
|
+
const server = {
|
|
217
|
+
name: serverName,
|
|
218
|
+
type: MCPServerType.SSE,
|
|
219
|
+
url
|
|
220
|
+
};
|
|
221
|
+
// Skip to next MCP command
|
|
222
|
+
while (i < args.length && !args[i]?.startsWith('--mcp-')) {
|
|
223
|
+
i++;
|
|
224
|
+
}
|
|
225
|
+
return { server, nextIndex: i };
|
|
226
|
+
}
|
|
227
|
+
static parseCommand(commandStr) {
|
|
228
|
+
// Handle quoted arguments in command string
|
|
229
|
+
const parts = [];
|
|
230
|
+
let current = '';
|
|
231
|
+
let inQuotes = false;
|
|
232
|
+
let quoteChar = '';
|
|
233
|
+
for (let i = 0; i < commandStr.length; i++) {
|
|
234
|
+
const char = commandStr[i];
|
|
235
|
+
if ((char === '"' || char === "'") && !inQuotes) {
|
|
236
|
+
inQuotes = true;
|
|
237
|
+
quoteChar = char;
|
|
238
|
+
}
|
|
239
|
+
else if (char === quoteChar && inQuotes) {
|
|
240
|
+
inQuotes = false;
|
|
241
|
+
quoteChar = '';
|
|
242
|
+
}
|
|
243
|
+
else if (char === ' ' && !inQuotes) {
|
|
244
|
+
if (current.trim()) {
|
|
245
|
+
parts.push(current.trim());
|
|
246
|
+
current = '';
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
current += char;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (current.trim()) {
|
|
254
|
+
parts.push(current.trim());
|
|
255
|
+
}
|
|
256
|
+
return parts;
|
|
257
|
+
}
|
|
258
|
+
static parseArgsString(argsStr) {
|
|
259
|
+
return this.parseCommand(argsStr);
|
|
260
|
+
}
|
|
261
|
+
static parseEnvString(envStr) {
|
|
262
|
+
const env = {};
|
|
263
|
+
// Handle format like: "KEY1=value1 KEY2=value2" or "KEY=value"
|
|
264
|
+
const pairs = envStr.split(' ').filter(pair => pair.includes('='));
|
|
265
|
+
for (const pair of pairs) {
|
|
266
|
+
const [key, ...valueParts] = pair.split('=');
|
|
267
|
+
const value = valueParts.join('='); // Handle values with = in them
|
|
268
|
+
if (key && value !== undefined) {
|
|
269
|
+
env[key] = value;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return env;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Check if a string looks like a command (indicates old syntax usage)
|
|
276
|
+
*/
|
|
277
|
+
static looksLikeCommand(name) {
|
|
278
|
+
const commandPatterns = [
|
|
279
|
+
/^(npx|npm|node|docker|python|pip|cargo|go)\s/, // Starts with common commands
|
|
280
|
+
/\s/, // Contains spaces (likely a command string)
|
|
281
|
+
/^["'].*["']$/, // Wrapped in quotes (likely a command string)
|
|
282
|
+
];
|
|
283
|
+
return commandPatterns.some(pattern => pattern.test(name));
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Check if a string looks like a URL (indicates old syntax usage)
|
|
287
|
+
*/
|
|
288
|
+
static looksLikeUrl(name) {
|
|
289
|
+
const urlPatterns = [
|
|
290
|
+
/^https?:\/\//, // Starts with http:// or https://
|
|
291
|
+
/^localhost:\d+/, // Starts with localhost:port
|
|
292
|
+
/\.[a-z]{2,}(\/|$)/i, // Contains domain-like pattern (.com, .org, etc.)
|
|
293
|
+
];
|
|
294
|
+
return urlPatterns.some(pattern => pattern.test(name));
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=mcpParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpParser.js","sourceRoot":"","sources":["../../src/core/mcpParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface SyncOptions {
|
|
2
|
+
dryRun?: boolean;
|
|
3
|
+
backup?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface SyncResult {
|
|
6
|
+
success: boolean;
|
|
7
|
+
changes: Array<{
|
|
8
|
+
agent: string;
|
|
9
|
+
action: 'created' | 'updated' | 'backed_up';
|
|
10
|
+
file: string;
|
|
11
|
+
}>;
|
|
12
|
+
errors: string[];
|
|
13
|
+
}
|
|
14
|
+
export declare class Propagator {
|
|
15
|
+
private readonly agentAdapters;
|
|
16
|
+
constructor();
|
|
17
|
+
syncAgentsFile(projectPath: string, options?: SyncOptions): Promise<SyncResult>;
|
|
18
|
+
private syncAgent;
|
|
19
|
+
private getDefaultTargets;
|
|
20
|
+
private initializeAdapters;
|
|
21
|
+
private formatForClaude;
|
|
22
|
+
private formatForCursor;
|
|
23
|
+
private formatForWindsurf;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=propagator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propagator.d.ts","sourceRoot":"","sources":["../../src/core/propagator.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;QAC5C,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;;IAM3D,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;YA8D3E,SAAS;IA6CvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,iBAAiB;CAY1B"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { resolve } from 'path';
|
|
2
|
+
import matter from 'gray-matter';
|
|
3
|
+
import { fileExists, readFileIfExists, writeFile, copyFile } from '../utils/fs.js';
|
|
4
|
+
export class Propagator {
|
|
5
|
+
agentAdapters = new Map();
|
|
6
|
+
constructor() {
|
|
7
|
+
this.initializeAdapters();
|
|
8
|
+
}
|
|
9
|
+
async syncAgentsFile(projectPath, options = {}) {
|
|
10
|
+
const result = {
|
|
11
|
+
success: true,
|
|
12
|
+
changes: [],
|
|
13
|
+
errors: []
|
|
14
|
+
};
|
|
15
|
+
const agentsPath = resolve(projectPath, 'agents.md');
|
|
16
|
+
if (!await fileExists(agentsPath)) {
|
|
17
|
+
result.success = false;
|
|
18
|
+
result.errors.push('agents.md not found. Run `agentinit init` first.');
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const agentsContent = await readFileIfExists(agentsPath);
|
|
23
|
+
if (!agentsContent) {
|
|
24
|
+
result.errors.push('Failed to read agents.md');
|
|
25
|
+
result.success = false;
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
const parsed = matter(agentsContent);
|
|
29
|
+
const targets = parsed.data.targets || this.getDefaultTargets();
|
|
30
|
+
for (const target of targets) {
|
|
31
|
+
const adapter = this.agentAdapters.get(target);
|
|
32
|
+
if (!adapter) {
|
|
33
|
+
result.errors.push(`No adapter found for agent: ${target}`);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const syncResult = await this.syncAgent(projectPath, target, adapter, parsed.content, options);
|
|
38
|
+
result.changes.push(...syncResult.changes);
|
|
39
|
+
if (!syncResult.success) {
|
|
40
|
+
result.errors.push(...syncResult.errors);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
result.errors.push(`Failed to sync ${target}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
result.success = result.errors.length === 0;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
result.success = false;
|
|
51
|
+
result.errors.push(`Failed to parse agents.md: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
async syncAgent(projectPath, agentName, adapter, content, options) {
|
|
56
|
+
const result = {
|
|
57
|
+
success: true,
|
|
58
|
+
changes: [],
|
|
59
|
+
errors: []
|
|
60
|
+
};
|
|
61
|
+
const targetPath = resolve(projectPath, adapter.configPath);
|
|
62
|
+
const agentContent = adapter.transformContent(content);
|
|
63
|
+
// Create backup if requested and file exists
|
|
64
|
+
if (options.backup && await fileExists(targetPath)) {
|
|
65
|
+
const backupPath = `${targetPath}.agentinit.backup`;
|
|
66
|
+
if (!options.dryRun) {
|
|
67
|
+
await copyFile(targetPath, backupPath);
|
|
68
|
+
}
|
|
69
|
+
result.changes.push({
|
|
70
|
+
agent: agentName,
|
|
71
|
+
action: 'backed_up',
|
|
72
|
+
file: backupPath
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const exists = await fileExists(targetPath);
|
|
76
|
+
const action = exists ? 'updated' : 'created';
|
|
77
|
+
if (!options.dryRun) {
|
|
78
|
+
await writeFile(targetPath, agentContent);
|
|
79
|
+
}
|
|
80
|
+
result.changes.push({
|
|
81
|
+
agent: agentName,
|
|
82
|
+
action,
|
|
83
|
+
file: targetPath
|
|
84
|
+
});
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
getDefaultTargets() {
|
|
88
|
+
return ['claude', 'cursor'];
|
|
89
|
+
}
|
|
90
|
+
initializeAdapters() {
|
|
91
|
+
this.agentAdapters.set('claude', {
|
|
92
|
+
configPath: 'CLAUDE.md',
|
|
93
|
+
transformContent: (content) => this.formatForClaude(content)
|
|
94
|
+
});
|
|
95
|
+
this.agentAdapters.set('cursor', {
|
|
96
|
+
configPath: '.cursorrules',
|
|
97
|
+
transformContent: (content) => this.formatForCursor(content)
|
|
98
|
+
});
|
|
99
|
+
this.agentAdapters.set('windsurf', {
|
|
100
|
+
configPath: '.windsurfrules',
|
|
101
|
+
transformContent: (content) => this.formatForWindsurf(content)
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
formatForClaude(content) {
|
|
105
|
+
return `# Claude Configuration
|
|
106
|
+
|
|
107
|
+
${content}
|
|
108
|
+
|
|
109
|
+
## Additional Claude-Specific Instructions
|
|
110
|
+
|
|
111
|
+
- Use Claude's long-form thinking when needed for complex problems
|
|
112
|
+
- Provide detailed explanations for complex code
|
|
113
|
+
- Break down large tasks into smaller, manageable steps
|
|
114
|
+
- Use Claude's code analysis capabilities effectively
|
|
115
|
+
`;
|
|
116
|
+
}
|
|
117
|
+
formatForCursor(content) {
|
|
118
|
+
// Convert markdown to a more concise format for Cursor
|
|
119
|
+
const lines = content.split('\n');
|
|
120
|
+
const rules = [];
|
|
121
|
+
let inCodeBlock = false;
|
|
122
|
+
for (const line of lines) {
|
|
123
|
+
if (line.startsWith('```')) {
|
|
124
|
+
inCodeBlock = !inCodeBlock;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (inCodeBlock)
|
|
128
|
+
continue;
|
|
129
|
+
if (line.startsWith('### ') || line.startsWith('## ')) {
|
|
130
|
+
rules.push(`\n// ${line.replace(/#+\s/, '')}`);
|
|
131
|
+
}
|
|
132
|
+
else if (line.startsWith('- ')) {
|
|
133
|
+
rules.push(`// ${line.substring(2)}`);
|
|
134
|
+
}
|
|
135
|
+
else if (line.trim() && !line.startsWith('#') && !line.startsWith('*')) {
|
|
136
|
+
rules.push(`// ${line}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return rules.join('\n').replace(/\n\n+/g, '\n\n');
|
|
140
|
+
}
|
|
141
|
+
formatForWindsurf(content) {
|
|
142
|
+
return `// Windsurf Configuration
|
|
143
|
+
// Generated from agents.md
|
|
144
|
+
|
|
145
|
+
${content}
|
|
146
|
+
|
|
147
|
+
// Windsurf-Specific Notes:
|
|
148
|
+
// - Use Windsurf's AI pair programming features
|
|
149
|
+
// - Leverage real-time collaboration capabilities
|
|
150
|
+
// - Follow Windsurf's code suggestion patterns
|
|
151
|
+
`;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=propagator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propagator.js","sourceRoot":"","sources":["../../src/core/propagator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Agent } from '../agents/Agent.js';
|
|
2
|
+
import type { AppliedRules, RuleApplicationResult } from '../types/rules.js';
|
|
3
|
+
export declare class RulesApplicator {
|
|
4
|
+
/**
|
|
5
|
+
* Apply rules to an agent's configuration
|
|
6
|
+
*/
|
|
7
|
+
applyRulesToAgent(agent: Agent, rules: AppliedRules, projectPath: string, isGlobal?: boolean): Promise<RuleApplicationResult>;
|
|
8
|
+
/**
|
|
9
|
+
* Apply rules using agent-specific methods
|
|
10
|
+
*/
|
|
11
|
+
private applyRulesByAgentType;
|
|
12
|
+
/**
|
|
13
|
+
* Merge new sections with existing ones
|
|
14
|
+
*/
|
|
15
|
+
private mergeSections;
|
|
16
|
+
/**
|
|
17
|
+
* Count total tokens in the entire config file
|
|
18
|
+
*/
|
|
19
|
+
private countTotalFileTokens;
|
|
20
|
+
/**
|
|
21
|
+
* Count tokens in the rules
|
|
22
|
+
*/
|
|
23
|
+
private countRulesTokens;
|
|
24
|
+
/**
|
|
25
|
+
* Get the appropriate rules config path for an agent
|
|
26
|
+
*/
|
|
27
|
+
private getAgentRulesPath;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=rulesApplicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rulesApplicator.d.ts","sourceRoot":"","sources":["../../src/core/rulesApplicator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,qBAAa,eAAe;IAE1B;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,OAAe,GACxB,OAAO,CAAC,qBAAqB,CAAC;IA4EjC;;OAEG;YACW,qBAAqB;IAwBnC;;OAEG;IACH,OAAO,CAAC,aAAa;IAqCrB;;OAEG;YACW,oBAAoB;IAalC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAc1B"}
|