rulesync 0.33.0 → 0.36.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/README.ja.md +104 -8
- package/README.md +104 -8
- package/dist/chunk-6PQ4APY4.mjs +70 -0
- package/dist/chunk-QHXMJZTJ.mjs +62 -0
- package/dist/chunk-QVPQ2X4L.mjs +77 -0
- package/dist/chunk-SBYRCTWS.mjs +64 -0
- package/dist/chunk-UNTCJDMQ.mjs +73 -0
- package/dist/chunk-YGXGGUBG.mjs +80 -0
- package/dist/claude-O4SRX6VC.mjs +8 -0
- package/dist/cline-H5JF2OPT.mjs +8 -0
- package/dist/copilot-GCIYHK4Q.mjs +8 -0
- package/dist/cursor-N75OH6WS.mjs +8 -0
- package/dist/geminicli-AGOQ32ZE.mjs +8 -0
- package/dist/index.js +1291 -214
- package/dist/index.mjs +990 -207
- package/dist/roo-V5YVC222.mjs +8 -0
- package/package.json +14 -6
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// src/generators/mcp/claude.ts
|
|
2
|
+
function generateClaudeMcp(config, _target) {
|
|
3
|
+
const claudeSettings = {
|
|
4
|
+
mcpServers: {}
|
|
5
|
+
};
|
|
6
|
+
const shouldInclude = (server) => {
|
|
7
|
+
if (!server.rulesyncTargets || server.rulesyncTargets.length === 0) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
if (server.rulesyncTargets.length === 1 && server.rulesyncTargets[0] === "*") {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
return server.rulesyncTargets.includes("claude");
|
|
14
|
+
};
|
|
15
|
+
for (const [serverName, server] of Object.entries(config.mcpServers)) {
|
|
16
|
+
if (!shouldInclude(server)) continue;
|
|
17
|
+
const claudeServer = {};
|
|
18
|
+
if (server.command) {
|
|
19
|
+
claudeServer.command = server.command;
|
|
20
|
+
if (server.args) claudeServer.args = server.args;
|
|
21
|
+
} else if (server.url || server.httpUrl) {
|
|
22
|
+
const url = server.httpUrl || server.url;
|
|
23
|
+
if (url) {
|
|
24
|
+
claudeServer.url = url;
|
|
25
|
+
}
|
|
26
|
+
if (server.httpUrl) {
|
|
27
|
+
claudeServer.transport = "http";
|
|
28
|
+
} else if (server.transport === "sse") {
|
|
29
|
+
claudeServer.transport = "sse";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (server.env) {
|
|
33
|
+
claudeServer.env = server.env;
|
|
34
|
+
}
|
|
35
|
+
claudeSettings.mcpServers[serverName] = claudeServer;
|
|
36
|
+
}
|
|
37
|
+
return JSON.stringify(claudeSettings, null, 2);
|
|
38
|
+
}
|
|
39
|
+
function generateClaudeMcpConfiguration(mcpServers, baseDir = "") {
|
|
40
|
+
const filepath = baseDir ? `${baseDir}/.claude/settings.json` : ".claude/settings.json";
|
|
41
|
+
const settings = {
|
|
42
|
+
mcpServers: {}
|
|
43
|
+
};
|
|
44
|
+
for (const [serverName, server] of Object.entries(mcpServers)) {
|
|
45
|
+
const targets = server.rulesyncTargets;
|
|
46
|
+
if (targets && targets.length > 0) {
|
|
47
|
+
const targetsArray = targets;
|
|
48
|
+
if (!targetsArray.includes("*") && !targetsArray.includes("claudecode")) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const { rulesyncTargets: _, transport, ...serverConfig } = server;
|
|
53
|
+
const claudeServer = {
|
|
54
|
+
...serverConfig
|
|
55
|
+
};
|
|
56
|
+
if (transport && transport !== "stdio") {
|
|
57
|
+
claudeServer.transport = transport;
|
|
58
|
+
}
|
|
59
|
+
settings.mcpServers[serverName] = claudeServer;
|
|
60
|
+
}
|
|
61
|
+
return [
|
|
62
|
+
{
|
|
63
|
+
filepath,
|
|
64
|
+
content: `${JSON.stringify(settings, null, 2)}
|
|
65
|
+
`
|
|
66
|
+
}
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export {
|
|
71
|
+
generateClaudeMcp,
|
|
72
|
+
generateClaudeMcpConfiguration
|
|
73
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// src/generators/mcp/copilot.ts
|
|
2
|
+
function generateCopilotMcp(config, target) {
|
|
3
|
+
const shouldInclude = (server) => {
|
|
4
|
+
const targets = server.rulesyncTargets;
|
|
5
|
+
if (!targets || targets.length === 0) return true;
|
|
6
|
+
if (targets.length === 1 && targets[0] === "*") return true;
|
|
7
|
+
return targets.includes("copilot");
|
|
8
|
+
};
|
|
9
|
+
const servers = {};
|
|
10
|
+
const inputs = [];
|
|
11
|
+
const inputMap = /* @__PURE__ */ new Map();
|
|
12
|
+
for (const [serverName, server] of Object.entries(config.mcpServers)) {
|
|
13
|
+
if (!shouldInclude(server)) continue;
|
|
14
|
+
const copilotServer = {};
|
|
15
|
+
if (server.command) {
|
|
16
|
+
copilotServer.command = server.command;
|
|
17
|
+
if (server.args) copilotServer.args = server.args;
|
|
18
|
+
} else if (server.url || server.httpUrl) {
|
|
19
|
+
const url = server.httpUrl || server.url;
|
|
20
|
+
if (url) {
|
|
21
|
+
copilotServer.url = url;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (server.env) {
|
|
25
|
+
copilotServer.env = {};
|
|
26
|
+
for (const [key, value] of Object.entries(server.env)) {
|
|
27
|
+
if (target === "editor" && value.includes("SECRET")) {
|
|
28
|
+
const inputId = `${serverName}_${key}`;
|
|
29
|
+
inputMap.set(inputId, value);
|
|
30
|
+
copilotServer.env[key] = `\${input:${inputId}}`;
|
|
31
|
+
inputs.push({
|
|
32
|
+
id: inputId,
|
|
33
|
+
type: "password",
|
|
34
|
+
description: `${key} for ${serverName}`
|
|
35
|
+
});
|
|
36
|
+
} else {
|
|
37
|
+
copilotServer.env[key] = value;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (server.tools) {
|
|
42
|
+
copilotServer.tools = server.tools;
|
|
43
|
+
} else if (server.alwaysAllow) {
|
|
44
|
+
copilotServer.tools = server.alwaysAllow;
|
|
45
|
+
}
|
|
46
|
+
servers[serverName] = copilotServer;
|
|
47
|
+
}
|
|
48
|
+
if (target === "codingAgent") {
|
|
49
|
+
const config2 = { mcpServers: servers };
|
|
50
|
+
return JSON.stringify(config2, null, 2);
|
|
51
|
+
} else {
|
|
52
|
+
const config2 = { servers };
|
|
53
|
+
if (inputs.length > 0) {
|
|
54
|
+
config2.inputs = inputs;
|
|
55
|
+
}
|
|
56
|
+
return JSON.stringify(config2, null, 2);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function generateCopilotMcpConfiguration(mcpServers, baseDir = "") {
|
|
60
|
+
const configs = [];
|
|
61
|
+
const rulesyncConfig = { mcpServers };
|
|
62
|
+
const editorContent = generateCopilotMcp(rulesyncConfig, "editor");
|
|
63
|
+
configs.push({
|
|
64
|
+
filepath: baseDir ? `${baseDir}/.vscode/mcp.json` : ".vscode/mcp.json",
|
|
65
|
+
content: `${editorContent}
|
|
66
|
+
`
|
|
67
|
+
});
|
|
68
|
+
const codingAgentContent = generateCopilotMcp(rulesyncConfig, "codingAgent");
|
|
69
|
+
configs.push({
|
|
70
|
+
filepath: baseDir ? `${baseDir}/.copilot/mcp.json` : ".copilot/mcp.json",
|
|
71
|
+
content: `${codingAgentContent}
|
|
72
|
+
`
|
|
73
|
+
});
|
|
74
|
+
return configs;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export {
|
|
78
|
+
generateCopilotMcp,
|
|
79
|
+
generateCopilotMcpConfiguration
|
|
80
|
+
};
|