rulesync 0.55.0 → 0.56.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 (35) hide show
  1. package/README.ja.md +67 -5
  2. package/README.md +77 -6
  3. package/dist/{augmentcode-MJYD2Y4S.js → augmentcode-HIZIQG2W.js} +2 -2
  4. package/dist/chunk-7E4U4YAB.js +17 -0
  5. package/dist/{chunk-D7XQ4OHK.js → chunk-7UBF4OLN.js} +1 -1
  6. package/dist/{chunk-VI6SBYFB.js → chunk-AUUSMVCT.js} +2 -1
  7. package/dist/chunk-J3TBR5EP.js +292 -0
  8. package/dist/{chunk-OXKDEZJK.js → chunk-KUGTKMNW.js} +1 -1
  9. package/dist/{chunk-QVPD6ENS.js → chunk-LXTA7DBA.js} +1 -1
  10. package/dist/chunk-OA473EXZ.js +17 -0
  11. package/dist/{chunk-BEPSWIZC.js → chunk-PCATT4UZ.js} +1 -1
  12. package/dist/chunk-VKNCBVZF.js +17 -0
  13. package/dist/chunk-VNT6AHHO.js +17 -0
  14. package/dist/chunk-W2WU253H.js +17 -0
  15. package/dist/chunk-WAX2UANS.js +61 -0
  16. package/dist/{chunk-ORNO5MOO.js → chunk-YTU3SCQO.js} +1 -1
  17. package/dist/{claudecode-CKGUHLRR.js → claudecode-VVI2PTKI.js} +3 -3
  18. package/dist/{cline-Z5C656VR.js → cline-BJLFSLEB.js} +3 -3
  19. package/dist/{codexcli-VFUJKSIJ.js → codexcli-LKWQB3V3.js} +3 -3
  20. package/dist/{copilot-4WQS5TA7.js → copilot-MOR3HHJX.js} +2 -2
  21. package/dist/{cursor-HOB2F2V2.js → cursor-2BVUO64T.js} +3 -2
  22. package/dist/{geminicli-XTMQTIU2.js → geminicli-5YFMKRFL.js} +3 -2
  23. package/dist/index.cjs +532 -318
  24. package/dist/index.js +304 -163
  25. package/dist/{junie-AN6CR7DD.js → junie-5TDJPUXX.js} +3 -2
  26. package/dist/{kiro-PTUZOHQ2.js → kiro-YDHXY2MA.js} +2 -2
  27. package/dist/{roo-WOMS36KU.js → roo-L3QTTIPO.js} +2 -2
  28. package/dist/windsurf-PXDRIQ76.js +10 -0
  29. package/package.json +1 -1
  30. package/dist/chunk-3PHMFVXP.js +0 -66
  31. package/dist/chunk-OY6BYYIX.js +0 -63
  32. package/dist/chunk-PPAQWVXX.js +0 -94
  33. package/dist/chunk-TJKD6LEW.js +0 -90
  34. package/dist/chunk-UHANRG2O.js +0 -54
  35. package/dist/chunk-UZCJNUXO.js +0 -67
@@ -0,0 +1,292 @@
1
+ import {
2
+ shouldIncludeServer
3
+ } from "./chunk-AUUSMVCT.js";
4
+
5
+ // src/generators/mcp/shared-factory.ts
6
+ function generateMcpConfig(config, toolConfig) {
7
+ const servers = {};
8
+ for (const [serverName, server] of Object.entries(config.mcpServers)) {
9
+ if (!shouldIncludeServer(server, toolConfig.target)) continue;
10
+ servers[serverName] = toolConfig.serverTransform(server, serverName);
11
+ }
12
+ const finalConfig = toolConfig.configWrapper(servers);
13
+ return JSON.stringify(finalConfig, null, 2);
14
+ }
15
+ function generateMcpConfigurationFiles(mcpServers, toolConfig, baseDir = "") {
16
+ const configs = [];
17
+ const rulesyncConfig = { mcpServers };
18
+ for (const configPath of toolConfig.configPaths) {
19
+ const filepath = baseDir ? `${baseDir}/${configPath}` : configPath;
20
+ const content = generateMcpConfig(rulesyncConfig, toolConfig);
21
+ configs.push({
22
+ filepath,
23
+ content: `${content}
24
+ `
25
+ });
26
+ }
27
+ return configs;
28
+ }
29
+ var serverTransforms = {
30
+ /**
31
+ * Basic server transformation (command, args, env, url handling)
32
+ */
33
+ basic: (server) => {
34
+ const result = {};
35
+ if (server.command) {
36
+ result.command = server.command;
37
+ if (server.args) result.args = server.args;
38
+ } else if (server.url || server.httpUrl) {
39
+ const url = server.httpUrl || server.url;
40
+ if (url) result.url = url;
41
+ }
42
+ if (server.env) {
43
+ result.env = server.env;
44
+ }
45
+ return result;
46
+ },
47
+ /**
48
+ * Extended server transformation (includes disabled, alwaysAllow, etc.)
49
+ */
50
+ extended: (server) => {
51
+ const result = serverTransforms.basic(server);
52
+ if (server.disabled !== void 0) {
53
+ result.disabled = server.disabled;
54
+ }
55
+ if (server.alwaysAllow) {
56
+ result.alwaysAllow = server.alwaysAllow;
57
+ }
58
+ if (server.networkTimeout !== void 0) {
59
+ result.networkTimeout = server.networkTimeout;
60
+ }
61
+ if (server.tools) {
62
+ result.tools = server.tools;
63
+ }
64
+ if (server.timeout !== void 0) {
65
+ result.timeout = server.timeout;
66
+ }
67
+ if (server.trust !== void 0) {
68
+ result.trust = server.trust;
69
+ }
70
+ if (server.headers) {
71
+ result.headers = server.headers;
72
+ }
73
+ return result;
74
+ },
75
+ /**
76
+ * Remove rulesync-specific properties from server config
77
+ */
78
+ cleanRulesyncProps: (server) => {
79
+ const { targets: _, transport: _transport, ...cleanServer } = server;
80
+ return { ...cleanServer };
81
+ }
82
+ };
83
+ var configWrappers = {
84
+ /**
85
+ * Standard mcpServers wrapper
86
+ */
87
+ mcpServers: (servers) => ({
88
+ mcpServers: servers
89
+ }),
90
+ /**
91
+ * Servers-only wrapper (for tools that use "servers" instead of "mcpServers")
92
+ */
93
+ servers: (servers) => ({
94
+ servers
95
+ })
96
+ };
97
+ var MCP_GENERATOR_REGISTRY = {
98
+ claudecode: {
99
+ target: "claudecode",
100
+ configPaths: [".claude/settings.json"],
101
+ serverTransform: (server) => {
102
+ const claudeServer = {};
103
+ if (server.command) {
104
+ claudeServer.command = server.command;
105
+ if (server.args) claudeServer.args = server.args;
106
+ } else if (server.url || server.httpUrl) {
107
+ const url = server.httpUrl || server.url;
108
+ if (url) {
109
+ claudeServer.url = url;
110
+ }
111
+ if (server.httpUrl) {
112
+ claudeServer.transport = "http";
113
+ } else if (server.transport === "sse") {
114
+ claudeServer.transport = "sse";
115
+ }
116
+ }
117
+ if (server.env) {
118
+ claudeServer.env = server.env;
119
+ }
120
+ return claudeServer;
121
+ },
122
+ configWrapper: configWrappers.mcpServers
123
+ },
124
+ cursor: {
125
+ target: "cursor",
126
+ configPaths: [".cursor/mcp.json"],
127
+ serverTransform: (server) => {
128
+ const cursorServer = {};
129
+ if (server.command) {
130
+ cursorServer.command = server.command;
131
+ if (server.args) cursorServer.args = server.args;
132
+ } else if (server.url || server.httpUrl) {
133
+ const url = server.httpUrl || server.url;
134
+ if (url) {
135
+ cursorServer.url = url;
136
+ }
137
+ if (server.httpUrl || server.transport === "http") {
138
+ cursorServer.type = "streamable-http";
139
+ } else if (server.transport === "sse" || server.type === "sse") {
140
+ cursorServer.type = "sse";
141
+ }
142
+ }
143
+ if (server.env) {
144
+ cursorServer.env = server.env;
145
+ }
146
+ if (server.cwd) {
147
+ cursorServer.cwd = server.cwd;
148
+ }
149
+ return cursorServer;
150
+ },
151
+ configWrapper: configWrappers.mcpServers
152
+ },
153
+ windsurf: {
154
+ target: "windsurf",
155
+ configPaths: ["mcp_config.json"],
156
+ serverTransform: (server) => {
157
+ const windsurfServer = {};
158
+ if (server.command) {
159
+ windsurfServer.command = server.command;
160
+ if (server.args) windsurfServer.args = server.args;
161
+ } else if (server.url || server.httpUrl) {
162
+ const url = server.httpUrl || server.url;
163
+ if (url) {
164
+ windsurfServer.serverUrl = url;
165
+ }
166
+ }
167
+ if (server.env) {
168
+ windsurfServer.env = server.env;
169
+ }
170
+ if (server.cwd) {
171
+ windsurfServer.cwd = server.cwd;
172
+ }
173
+ return windsurfServer;
174
+ },
175
+ configWrapper: configWrappers.mcpServers
176
+ },
177
+ junie: {
178
+ target: "junie",
179
+ configPaths: [".junie/mcp-config.json"],
180
+ serverTransform: (server, serverName) => {
181
+ const junieServer = {
182
+ name: serverName
183
+ };
184
+ if (server.command) {
185
+ junieServer.command = server.command;
186
+ if (server.args) junieServer.args = server.args;
187
+ } else if (server.url || server.httpUrl) {
188
+ if (server.httpUrl) {
189
+ junieServer.httpUrl = server.httpUrl;
190
+ } else if (server.url) {
191
+ junieServer.url = server.url;
192
+ }
193
+ }
194
+ if (server.env) {
195
+ junieServer.env = server.env;
196
+ }
197
+ if (server.cwd) {
198
+ junieServer.workingDirectory = server.cwd;
199
+ }
200
+ if (server.timeout !== void 0) {
201
+ junieServer.timeout = server.timeout;
202
+ }
203
+ if (server.trust !== void 0) {
204
+ junieServer.trust = server.trust;
205
+ }
206
+ if (server.transport) {
207
+ if (String(server.transport) === "streamable-http") {
208
+ junieServer.transport = "http";
209
+ } else if (server.transport === "stdio" || server.transport === "http" || server.transport === "sse") {
210
+ junieServer.transport = server.transport;
211
+ }
212
+ } else if (server.command) {
213
+ junieServer.transport = "stdio";
214
+ }
215
+ return junieServer;
216
+ },
217
+ configWrapper: configWrappers.mcpServers
218
+ },
219
+ cline: {
220
+ target: "cline",
221
+ configPaths: [".cline/mcp.json"],
222
+ serverTransform: serverTransforms.extended,
223
+ configWrapper: configWrappers.mcpServers
224
+ }
225
+ };
226
+ function generateMcpFromRegistry(tool, config) {
227
+ const generatorConfig = MCP_GENERATOR_REGISTRY[tool];
228
+ if (!generatorConfig) {
229
+ throw new Error(`No MCP generator configuration found for tool: ${tool}`);
230
+ }
231
+ return generateMcpConfig(config, generatorConfig);
232
+ }
233
+ function generateMcpConfigurationFilesFromRegistry(tool, mcpServers, baseDir = "") {
234
+ const generatorConfig = MCP_GENERATOR_REGISTRY[tool];
235
+ if (!generatorConfig) {
236
+ throw new Error(`No MCP generator configuration found for tool: ${tool}`);
237
+ }
238
+ if (tool === "junie") {
239
+ return generateJunieMcpConfigurationFiles(mcpServers, baseDir);
240
+ }
241
+ const customTools = ["copilot", "augmentcode", "roo", "codexcli", "kiro", "geminicli"];
242
+ if (customTools.includes(tool)) {
243
+ throw new Error(
244
+ `Tool ${tool} uses custom configuration logic - use its specific generator function instead`
245
+ );
246
+ }
247
+ return generateMcpConfigurationFiles(mcpServers, generatorConfig, baseDir);
248
+ }
249
+ function generateJunieMcpConfigurationFiles(mcpServers, baseDir = "") {
250
+ const filepath = baseDir ? `${baseDir}/.junie/mcp-config.json` : ".junie/mcp-config.json";
251
+ const config = {
252
+ mcpServers: {}
253
+ };
254
+ for (const [serverName, server] of Object.entries(mcpServers)) {
255
+ if (!shouldIncludeServer(server, "junie")) {
256
+ continue;
257
+ }
258
+ const { targets: _, transport, cwd, ...serverConfig } = server;
259
+ const junieServer = {
260
+ ...serverConfig,
261
+ name: serverName
262
+ };
263
+ if (cwd) {
264
+ junieServer.workingDirectory = cwd;
265
+ }
266
+ if (transport) {
267
+ if (String(transport) === "streamable-http") {
268
+ junieServer.transport = "http";
269
+ } else if (transport === "stdio" || transport === "http" || transport === "sse") {
270
+ junieServer.transport = transport;
271
+ }
272
+ } else if (serverConfig.command) {
273
+ junieServer.transport = "stdio";
274
+ }
275
+ config.mcpServers[serverName] = junieServer;
276
+ }
277
+ return [
278
+ {
279
+ filepath,
280
+ content: `${JSON.stringify(config, null, 2)}
281
+ `
282
+ }
283
+ ];
284
+ }
285
+
286
+ export {
287
+ generateMcpConfig,
288
+ generateMcpConfigurationFiles,
289
+ configWrappers,
290
+ generateMcpFromRegistry,
291
+ generateMcpConfigurationFilesFromRegistry
292
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  shouldIncludeServer
3
- } from "./chunk-VI6SBYFB.js";
3
+ } from "./chunk-AUUSMVCT.js";
4
4
 
5
5
  // src/generators/mcp/copilot.ts
6
6
  function generateCopilotMcp(config, target) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  shouldIncludeServer
3
- } from "./chunk-VI6SBYFB.js";
3
+ } from "./chunk-AUUSMVCT.js";
4
4
 
5
5
  // src/generators/mcp/kiro.ts
6
6
  function generateKiroMcp(config) {
@@ -0,0 +1,17 @@
1
+ import {
2
+ generateMcpConfigurationFilesFromRegistry,
3
+ generateMcpFromRegistry
4
+ } from "./chunk-J3TBR5EP.js";
5
+
6
+ // src/generators/mcp/cursor.ts
7
+ function generateCursorMcp(config) {
8
+ return generateMcpFromRegistry("cursor", config);
9
+ }
10
+ function generateCursorMcpConfiguration(mcpServers, baseDir = "") {
11
+ return generateMcpConfigurationFilesFromRegistry("cursor", mcpServers, baseDir);
12
+ }
13
+
14
+ export {
15
+ generateCursorMcp,
16
+ generateCursorMcpConfiguration
17
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  shouldIncludeServer
3
- } from "./chunk-VI6SBYFB.js";
3
+ } from "./chunk-AUUSMVCT.js";
4
4
 
5
5
  // src/generators/mcp/roo.ts
6
6
  function generateRooMcp(config) {
@@ -0,0 +1,17 @@
1
+ import {
2
+ generateMcpConfigurationFilesFromRegistry,
3
+ generateMcpFromRegistry
4
+ } from "./chunk-J3TBR5EP.js";
5
+
6
+ // src/generators/mcp/claudecode.ts
7
+ function generateClaudeMcp(config) {
8
+ return generateMcpFromRegistry("claudecode", config);
9
+ }
10
+ function generateClaudeMcpConfiguration(mcpServers, baseDir = "") {
11
+ return generateMcpConfigurationFilesFromRegistry("claudecode", mcpServers, baseDir);
12
+ }
13
+
14
+ export {
15
+ generateClaudeMcp,
16
+ generateClaudeMcpConfiguration
17
+ };
@@ -0,0 +1,17 @@
1
+ import {
2
+ generateMcpConfigurationFilesFromRegistry,
3
+ generateMcpFromRegistry
4
+ } from "./chunk-J3TBR5EP.js";
5
+
6
+ // src/generators/mcp/junie.ts
7
+ function generateJunieMcp(config) {
8
+ return generateMcpFromRegistry("junie", config);
9
+ }
10
+ function generateJunieMcpConfiguration(mcpServers, baseDir = "") {
11
+ return generateMcpConfigurationFilesFromRegistry("junie", mcpServers, baseDir);
12
+ }
13
+
14
+ export {
15
+ generateJunieMcp,
16
+ generateJunieMcpConfiguration
17
+ };
@@ -0,0 +1,17 @@
1
+ import {
2
+ generateMcpConfigurationFilesFromRegistry,
3
+ generateMcpFromRegistry
4
+ } from "./chunk-J3TBR5EP.js";
5
+
6
+ // src/generators/mcp/cline.ts
7
+ function generateClineMcp(config) {
8
+ return generateMcpFromRegistry("cline", config);
9
+ }
10
+ function generateClineMcpConfiguration(mcpServers, baseDir = "") {
11
+ return generateMcpConfigurationFilesFromRegistry("cline", mcpServers, baseDir);
12
+ }
13
+
14
+ export {
15
+ generateClineMcp,
16
+ generateClineMcpConfiguration
17
+ };
@@ -0,0 +1,61 @@
1
+ import {
2
+ configWrappers,
3
+ generateMcpConfig,
4
+ generateMcpConfigurationFiles
5
+ } from "./chunk-J3TBR5EP.js";
6
+
7
+ // src/generators/mcp/geminicli.ts
8
+ function generateGeminiCliMcp(config) {
9
+ return generateMcpConfig(config, {
10
+ target: "geminicli",
11
+ configPaths: [".gemini/settings.json"],
12
+ serverTransform: (server) => {
13
+ const geminiServer = {};
14
+ if (server.command) {
15
+ geminiServer.command = server.command;
16
+ if (server.args) geminiServer.args = server.args;
17
+ } else if (server.url || server.httpUrl) {
18
+ if (server.httpUrl) {
19
+ geminiServer.httpUrl = server.httpUrl;
20
+ } else if (server.url) {
21
+ geminiServer.url = server.url;
22
+ }
23
+ }
24
+ if (server.env) {
25
+ geminiServer.env = server.env;
26
+ }
27
+ if (server.timeout !== void 0) {
28
+ geminiServer.timeout = server.timeout;
29
+ }
30
+ if (server.trust !== void 0) {
31
+ geminiServer.trust = server.trust;
32
+ }
33
+ return geminiServer;
34
+ },
35
+ configWrapper: configWrappers.mcpServers
36
+ });
37
+ }
38
+ function generateGeminiCliMcpConfiguration(mcpServers, baseDir = "") {
39
+ return generateMcpConfigurationFiles(
40
+ mcpServers,
41
+ {
42
+ target: "geminicli",
43
+ configPaths: [".gemini/settings.json"],
44
+ serverTransform: (server) => {
45
+ const { targets: _, ...serverConfig } = server;
46
+ const geminiServer = { ...serverConfig };
47
+ if (server.env) {
48
+ geminiServer.env = server.env;
49
+ }
50
+ return geminiServer;
51
+ },
52
+ configWrapper: configWrappers.mcpServers
53
+ },
54
+ baseDir
55
+ );
56
+ }
57
+
58
+ export {
59
+ generateGeminiCliMcp,
60
+ generateGeminiCliMcpConfiguration
61
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  shouldIncludeServer
3
- } from "./chunk-VI6SBYFB.js";
3
+ } from "./chunk-AUUSMVCT.js";
4
4
 
5
5
  // src/generators/mcp/augmentcode.ts
6
6
  function generateAugmentcodeMcp(config) {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  generateClaudeMcp,
3
3
  generateClaudeMcpConfiguration
4
- } from "./chunk-OY6BYYIX.js";
5
- import "./chunk-PPAQWVXX.js";
6
- import "./chunk-VI6SBYFB.js";
4
+ } from "./chunk-VKNCBVZF.js";
5
+ import "./chunk-J3TBR5EP.js";
6
+ import "./chunk-AUUSMVCT.js";
7
7
  export {
8
8
  generateClaudeMcp,
9
9
  generateClaudeMcpConfiguration
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  generateClineMcp,
3
3
  generateClineMcpConfiguration
4
- } from "./chunk-UHANRG2O.js";
5
- import "./chunk-PPAQWVXX.js";
6
- import "./chunk-VI6SBYFB.js";
4
+ } from "./chunk-W2WU253H.js";
5
+ import "./chunk-J3TBR5EP.js";
6
+ import "./chunk-AUUSMVCT.js";
7
7
  export {
8
8
  generateClineMcp,
9
9
  generateClineMcpConfiguration
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  generateCodexMcp,
3
3
  generateCodexMcpConfiguration
4
- } from "./chunk-D7XQ4OHK.js";
5
- import "./chunk-PPAQWVXX.js";
6
- import "./chunk-VI6SBYFB.js";
4
+ } from "./chunk-7UBF4OLN.js";
5
+ import "./chunk-J3TBR5EP.js";
6
+ import "./chunk-AUUSMVCT.js";
7
7
  export {
8
8
  generateCodexMcp,
9
9
  generateCodexMcpConfiguration
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generateCopilotMcp,
3
3
  generateCopilotMcpConfiguration
4
- } from "./chunk-OXKDEZJK.js";
5
- import "./chunk-VI6SBYFB.js";
4
+ } from "./chunk-KUGTKMNW.js";
5
+ import "./chunk-AUUSMVCT.js";
6
6
  export {
7
7
  generateCopilotMcp,
8
8
  generateCopilotMcpConfiguration
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  generateCursorMcp,
3
3
  generateCursorMcpConfiguration
4
- } from "./chunk-3PHMFVXP.js";
5
- import "./chunk-VI6SBYFB.js";
4
+ } from "./chunk-OA473EXZ.js";
5
+ import "./chunk-J3TBR5EP.js";
6
+ import "./chunk-AUUSMVCT.js";
6
7
  export {
7
8
  generateCursorMcp,
8
9
  generateCursorMcpConfiguration
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  generateGeminiCliMcp,
3
3
  generateGeminiCliMcpConfiguration
4
- } from "./chunk-UZCJNUXO.js";
5
- import "./chunk-VI6SBYFB.js";
4
+ } from "./chunk-WAX2UANS.js";
5
+ import "./chunk-J3TBR5EP.js";
6
+ import "./chunk-AUUSMVCT.js";
6
7
  export {
7
8
  generateGeminiCliMcp,
8
9
  generateGeminiCliMcpConfiguration