agent-config-sync 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { TargetName, McpRecipe, ConfigReadResult } from './types.js';
2
+ /**
3
+ * Read and parse a native config file for a target.
4
+ */
5
+ export declare function readNativeConfig(target: TargetName, configPath: string): Promise<ConfigReadResult<any>>;
6
+ /**
7
+ * Write a native config file atomically.
8
+ */
9
+ export declare function writeNativeConfig(target: TargetName, configPath: string, config: any): Promise<void>;
10
+ /**
11
+ * Add an MCP server to a native config.
12
+ */
13
+ export declare function addMcpToConfig(target: TargetName, configPath: string, serverName: string, recipe: McpRecipe): Promise<void>;
14
+ /**
15
+ * Remove an MCP server from a native config.
16
+ */
17
+ export declare function removeMcpFromConfig(target: TargetName, configPath: string, serverName: string): Promise<void>;
18
+ /**
19
+ * Enable an MCP server in a native config.
20
+ */
21
+ export declare function enableMcpInConfig(target: TargetName, configPath: string, serverName: string): Promise<void>;
22
+ /**
23
+ * Disable an MCP server in a native config.
24
+ */
25
+ export declare function disableMcpInConfig(target: TargetName, configPath: string, serverName: string): Promise<void>;
26
+ /**
27
+ * Get all MCP servers from a native config.
28
+ */
29
+ export declare function getMcpServers(target: TargetName, configPath: string): Promise<Record<string, {
30
+ enabled: boolean;
31
+ recipe?: McpRecipe;
32
+ }>>;
@@ -0,0 +1,409 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import TOML from '@iarna/toml';
4
+ // ============================================================================
5
+ // Validation
6
+ // ============================================================================
7
+ /** Valid MCP server name pattern */
8
+ const SERVER_NAME_PATTERN = /^[a-zA-Z0-9._-]+$/;
9
+ /** Valid command pattern: basename only, no path separators */
10
+ const COMMAND_PATTERN = /^[a-zA-Z0-9._-]+$/;
11
+ /**
12
+ * Validate MCP server name.
13
+ */
14
+ function validateServerName(serverName) {
15
+ if (!serverName || serverName.length === 0 || serverName.length > 100) {
16
+ throw new Error('Server name must be 1-100 characters');
17
+ }
18
+ if (!SERVER_NAME_PATTERN.test(serverName)) {
19
+ throw new Error('Server name must contain only alphanumeric characters, hyphens, underscores, and dots');
20
+ }
21
+ if (serverName.includes('..') || serverName.includes('/') || serverName.includes('\\')) {
22
+ throw new Error('Server name cannot contain path traversal characters');
23
+ }
24
+ }
25
+ /**
26
+ * Validate MCP command to prevent command injection.
27
+ * Only allows simple command names without paths or shell metacharacters.
28
+ */
29
+ function validateCommand(command) {
30
+ if (!command || command.length === 0 || command.length > 200) {
31
+ throw new Error('Command must be 1-200 characters');
32
+ }
33
+ // Check for shell metacharacters
34
+ const dangerousChars = /[;&|`$()<>]/;
35
+ if (dangerousChars.test(command)) {
36
+ throw new Error('Command cannot contain shell metacharacters');
37
+ }
38
+ // For commands with paths, allow common safe prefixes
39
+ if (command.includes('/') || command.includes('\\')) {
40
+ // Only allow specific safe paths
41
+ const allowedPaths = [
42
+ /^npx$/,
43
+ /^npm$/,
44
+ /^node$/,
45
+ /^python$/,
46
+ /^python3$/,
47
+ /^\.\/[a-zA-Z0-9._-]+$/, // Current directory relative
48
+ /^\.\.\/[a-zA-Z0-9._-]+$/, // Parent directory relative (risky but needed)
49
+ ];
50
+ const isAllowed = allowedPaths.some(pattern => pattern.test(command));
51
+ if (!isAllowed) {
52
+ throw new Error('Command path not allowed. Use npx, npm, node, or relative paths like ./command');
53
+ }
54
+ }
55
+ }
56
+ /**
57
+ * Validate MCP arguments.
58
+ */
59
+ function validateArgs(args) {
60
+ for (const arg of args) {
61
+ if (arg.length > 500) {
62
+ throw new Error('Argument too long');
63
+ }
64
+ // Check for shell metacharacters that could escape the argument
65
+ if (/[;&|`$()]/.test(arg)) {
66
+ throw new Error('Arguments cannot contain shell metacharacters');
67
+ }
68
+ }
69
+ }
70
+ // ============================================================================
71
+ // Config Reading
72
+ // ============================================================================
73
+ /**
74
+ * Read and parse a native config file for a target.
75
+ */
76
+ export async function readNativeConfig(target, configPath) {
77
+ try {
78
+ const raw = await fs.readFile(configPath, 'utf8');
79
+ switch (target) {
80
+ case 'claude':
81
+ return parseClaudeConfig(raw);
82
+ case 'codex':
83
+ return parseCodexConfig(raw);
84
+ case 'gemini':
85
+ return parseGeminiConfig(raw);
86
+ }
87
+ }
88
+ catch (error) {
89
+ if (error.code === 'ENOENT') {
90
+ return { config: null, exists: false };
91
+ }
92
+ throw error;
93
+ }
94
+ }
95
+ function parseClaudeConfig(raw) {
96
+ try {
97
+ const config = JSON.parse(raw);
98
+ return { config, exists: true };
99
+ }
100
+ catch {
101
+ return { config: null, exists: true, raw };
102
+ }
103
+ }
104
+ function parseCodexConfig(raw) {
105
+ try {
106
+ const config = TOML.parse(raw);
107
+ return { config, exists: true };
108
+ }
109
+ catch {
110
+ return { config: null, exists: true, raw };
111
+ }
112
+ }
113
+ function parseGeminiConfig(raw) {
114
+ try {
115
+ const config = JSON.parse(raw);
116
+ return { config, exists: true };
117
+ }
118
+ catch {
119
+ return { config: null, exists: true, raw };
120
+ }
121
+ }
122
+ // ============================================================================
123
+ // Config Writing
124
+ // ============================================================================
125
+ /**
126
+ * Write a native config file atomically.
127
+ */
128
+ export async function writeNativeConfig(target, configPath, config) {
129
+ const tempPath = `${configPath}.tmp`;
130
+ let content;
131
+ switch (target) {
132
+ case 'claude':
133
+ content = JSON.stringify(config, null, 2);
134
+ break;
135
+ case 'codex':
136
+ content = TOML.stringify(config);
137
+ break;
138
+ case 'gemini':
139
+ content = JSON.stringify(config, null, 2);
140
+ break;
141
+ }
142
+ await fs.mkdir(path.dirname(configPath), { recursive: true });
143
+ await fs.writeFile(tempPath, content, 'utf8');
144
+ await fs.rename(tempPath, configPath);
145
+ }
146
+ // ============================================================================
147
+ // MCP Server Operations
148
+ // ============================================================================
149
+ /**
150
+ * Add an MCP server to a native config.
151
+ */
152
+ export async function addMcpToConfig(target, configPath, serverName, recipe) {
153
+ // Validate server name
154
+ validateServerName(serverName);
155
+ // Validate recipe content
156
+ if (recipe.command) {
157
+ validateCommand(recipe.command);
158
+ }
159
+ if (recipe.args && recipe.args.length > 0) {
160
+ validateArgs(recipe.args);
161
+ }
162
+ if (recipe.url) {
163
+ // Basic URL validation - ensure it starts with http:// or https://
164
+ try {
165
+ const url = new URL(recipe.url);
166
+ if (url.protocol !== 'http:' && url.protocol !== 'https:') {
167
+ throw new Error('URL must use http or https protocol');
168
+ }
169
+ }
170
+ catch {
171
+ throw new Error('Invalid URL format');
172
+ }
173
+ }
174
+ const result = await readNativeConfig(target, configPath);
175
+ let config;
176
+ switch (target) {
177
+ case 'claude':
178
+ config = result.config ?? { mcpServers: {} };
179
+ break;
180
+ case 'codex':
181
+ config = result.config ?? { mcp_servers: {} };
182
+ break;
183
+ case 'gemini':
184
+ config = result.config ?? { mcpServers: {} };
185
+ break;
186
+ }
187
+ await addMcpServer(target, config, serverName, recipe);
188
+ await writeNativeConfig(target, configPath, config);
189
+ }
190
+ /**
191
+ * Remove an MCP server from a native config.
192
+ */
193
+ export async function removeMcpFromConfig(target, configPath, serverName) {
194
+ validateServerName(serverName);
195
+ const result = await readNativeConfig(target, configPath);
196
+ if (!result.config) {
197
+ return; // Nothing to remove
198
+ }
199
+ const config = result.config;
200
+ await removeMcpServer(target, config, serverName);
201
+ await writeNativeConfig(target, configPath, config);
202
+ }
203
+ /**
204
+ * Enable an MCP server in a native config.
205
+ */
206
+ export async function enableMcpInConfig(target, configPath, serverName) {
207
+ validateServerName(serverName);
208
+ const result = await readNativeConfig(target, configPath);
209
+ if (!result.config) {
210
+ return; // Nothing to enable
211
+ }
212
+ const config = result.config;
213
+ await setMcpEnabled(target, config, serverName, true);
214
+ await writeNativeConfig(target, configPath, config);
215
+ }
216
+ /**
217
+ * Disable an MCP server in a native config.
218
+ */
219
+ export async function disableMcpInConfig(target, configPath, serverName) {
220
+ validateServerName(serverName);
221
+ const result = await readNativeConfig(target, configPath);
222
+ if (!result.config) {
223
+ return; // Nothing to disable
224
+ }
225
+ const config = result.config;
226
+ await setMcpEnabled(target, config, serverName, false);
227
+ await writeNativeConfig(target, configPath, config);
228
+ }
229
+ // ============================================================================
230
+ // Internal Server Operations
231
+ // ============================================================================
232
+ async function addMcpServer(target, config, serverName, recipe) {
233
+ switch (target) {
234
+ case 'claude': {
235
+ const server = {};
236
+ if (recipe.url) {
237
+ server.httpUrl = recipe.url;
238
+ }
239
+ else if (recipe.command) {
240
+ server.command = recipe.command;
241
+ if (recipe.args)
242
+ server.args = recipe.args;
243
+ }
244
+ if (recipe.env)
245
+ server.env = recipe.env;
246
+ config.mcpServers[serverName] = server;
247
+ break;
248
+ }
249
+ case 'codex': {
250
+ const server = { enabled: true };
251
+ if (recipe.url) {
252
+ server.httpUrl = recipe.url;
253
+ }
254
+ else if (recipe.command) {
255
+ server.command = recipe.command;
256
+ if (recipe.args)
257
+ server.args = recipe.args;
258
+ }
259
+ if (recipe.cwd)
260
+ server.cwd = recipe.cwd;
261
+ if (recipe.env)
262
+ server.env = recipe.env;
263
+ config.mcp_servers[serverName] = server;
264
+ break;
265
+ }
266
+ case 'gemini': {
267
+ const server = { enabled: true };
268
+ if (recipe.url) {
269
+ server.url = recipe.url;
270
+ }
271
+ else if (recipe.command) {
272
+ server.command = recipe.command;
273
+ if (recipe.args)
274
+ server.args = recipe.args;
275
+ }
276
+ if (recipe.cwd)
277
+ server.cwd = recipe.cwd;
278
+ config.mcpServers[serverName] = server;
279
+ break;
280
+ }
281
+ }
282
+ }
283
+ async function removeMcpServer(target, config, serverName) {
284
+ switch (target) {
285
+ case 'claude':
286
+ delete config.mcpServers[serverName];
287
+ break;
288
+ case 'codex':
289
+ if (config.mcp_servers) {
290
+ delete config.mcp_servers[serverName];
291
+ }
292
+ break;
293
+ case 'gemini':
294
+ if (config.mcpServers) {
295
+ delete config.mcpServers[serverName];
296
+ }
297
+ break;
298
+ }
299
+ }
300
+ async function setMcpEnabled(target, config, serverName, enabled) {
301
+ switch (target) {
302
+ case 'claude':
303
+ // Claude doesn't have enabled flag - remove when disabled
304
+ if (!enabled) {
305
+ delete config.mcpServers[serverName];
306
+ }
307
+ break;
308
+ case 'codex':
309
+ if (config.mcp_servers?.[serverName]) {
310
+ config.mcp_servers[serverName].enabled = enabled;
311
+ }
312
+ break;
313
+ case 'gemini':
314
+ if (config.mcpServers?.[serverName]) {
315
+ config.mcpServers[serverName].enabled = enabled;
316
+ }
317
+ break;
318
+ }
319
+ }
320
+ // ============================================================================
321
+ // Status Queries
322
+ // ============================================================================
323
+ /**
324
+ * Get all MCP servers from a native config.
325
+ */
326
+ export async function getMcpServers(target, configPath) {
327
+ const result = await readNativeConfig(target, configPath);
328
+ if (!result.config) {
329
+ return {};
330
+ }
331
+ switch (target) {
332
+ case 'claude': {
333
+ const config = result.config;
334
+ const servers = {};
335
+ for (const [name, server] of Object.entries(config.mcpServers)) {
336
+ const recipe = {};
337
+ if (server.httpUrl) {
338
+ recipe.url = server.httpUrl;
339
+ recipe.transport = 'http';
340
+ }
341
+ else if (server.command) {
342
+ recipe.command = server.command;
343
+ recipe.args = server.args ?? [];
344
+ recipe.transport = 'stdio';
345
+ }
346
+ if (server.env)
347
+ recipe.env = server.env;
348
+ servers[name] = {
349
+ enabled: true,
350
+ recipe,
351
+ };
352
+ }
353
+ return servers;
354
+ }
355
+ case 'codex': {
356
+ const config = result.config;
357
+ const servers = {};
358
+ if (config.mcp_servers) {
359
+ for (const [name, server] of Object.entries(config.mcp_servers)) {
360
+ const recipe = {};
361
+ if (server.httpUrl) {
362
+ recipe.url = server.httpUrl;
363
+ recipe.transport = 'http';
364
+ }
365
+ else if (server.command) {
366
+ recipe.command = server.command;
367
+ recipe.args = server.args ?? [];
368
+ recipe.transport = 'stdio';
369
+ }
370
+ if (server.cwd)
371
+ recipe.cwd = server.cwd;
372
+ if (server.env)
373
+ recipe.env = server.env;
374
+ servers[name] = {
375
+ enabled: server.enabled !== false,
376
+ recipe: server.enabled !== false ? recipe : undefined,
377
+ };
378
+ }
379
+ }
380
+ return servers;
381
+ }
382
+ case 'gemini': {
383
+ const config = result.config;
384
+ const servers = {};
385
+ if (config.mcpServers) {
386
+ for (const [name, server] of Object.entries(config.mcpServers)) {
387
+ const recipe = {};
388
+ if (server.url) {
389
+ recipe.url = server.url;
390
+ recipe.transport = 'http';
391
+ }
392
+ else if (server.command) {
393
+ recipe.command = server.command;
394
+ recipe.args = server.args ?? [];
395
+ recipe.transport = 'stdio';
396
+ }
397
+ if (server.cwd)
398
+ recipe.cwd = server.cwd;
399
+ servers[name] = {
400
+ enabled: server.enabled !== false,
401
+ recipe: server.enabled !== false && (server.url || server.command) ? recipe : undefined,
402
+ };
403
+ }
404
+ }
405
+ return servers;
406
+ }
407
+ }
408
+ }
409
+ //# sourceMappingURL=config-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-adapters.js","sourceRoot":"","sources":["../src/config-adapters.ts"],"names":[],"mappings":"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"}
package/dist/fs.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function writeFileAtomic(absolutePath: string, content: string): Promise<void>;
2
+ export declare function readFileIfExists(absolutePath: string): Promise<string | null>;
package/dist/fs.js ADDED
@@ -0,0 +1,20 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ export async function writeFileAtomic(absolutePath, content) {
4
+ await fs.mkdir(path.dirname(absolutePath), { recursive: true });
5
+ const tempPath = `${absolutePath}.tmp`;
6
+ await fs.writeFile(tempPath, content, 'utf8');
7
+ await fs.rename(tempPath, absolutePath);
8
+ }
9
+ export async function readFileIfExists(absolutePath) {
10
+ try {
11
+ return await fs.readFile(absolutePath, 'utf8');
12
+ }
13
+ catch (error) {
14
+ const maybeError = error;
15
+ if (maybeError.code === 'ENOENT')
16
+ return null;
17
+ throw error;
18
+ }
19
+ }
20
+ //# sourceMappingURL=fs.js.map
package/dist/fs.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,YAAoB,EAAE,OAAe;IACzE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,GAAG,YAAY,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAoB;IACzD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,KAA8B,CAAC;QAClD,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC9C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { ProjectDiscovery, TargetName } from './types.js';
2
+ /** Skills directory paths for each target relative to project root */
3
+ declare const TARGET_SKILLS_PATHS: Record<TargetName, string>;
4
+ /**
5
+ * Discover the active project from the current working directory.
6
+ *
7
+ * Priority:
8
+ * 1. Nearest ancestor that is a Git repository root
9
+ * 2. Nearest ancestor containing any supported native config file
10
+ * 3. Fail with clear error
11
+ */
12
+ export declare function discoverProject(cwd?: string): Promise<ProjectDiscovery>;
13
+ /**
14
+ * Get the relative path from project root to a config file.
15
+ */
16
+ export declare function getRelativeConfigPath(projectRoot: string, target: TargetName): string;
17
+ /**
18
+ * Get the relative path from project root to the skills directory.
19
+ */
20
+ export declare function getSkillsPath(projectRoot: string, target: TargetName): string;
21
+ /**
22
+ * Get the skills directory paths constant.
23
+ */
24
+ export { TARGET_SKILLS_PATHS };