rulesync 0.36.0 → 0.38.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/dist/chunk-AWKMUY5R.js +56 -0
- package/dist/{chunk-YGXGGUBG.mjs → chunk-BEJD7I74.js} +5 -7
- package/dist/{chunk-6PQ4APY4.mjs → chunk-HOVR7QDA.js} +6 -9
- package/dist/{chunk-UNTCJDMQ.mjs → chunk-LQDXGEGC.js} +7 -13
- package/dist/{chunk-QVPQ2X4L.mjs → chunk-SPMMXF7R.js} +11 -10
- package/dist/{chunk-SBYRCTWS.mjs → chunk-VZMUQVX4.js} +11 -10
- package/dist/{chunk-QHXMJZTJ.mjs → chunk-XERXHVPP.js} +6 -6
- package/dist/{claude-O4SRX6VC.mjs → claude-ZBX7NASK.js} +2 -1
- package/dist/{cline-H5JF2OPT.mjs → cline-XP43H6CB.js} +2 -1
- package/dist/{copilot-GCIYHK4Q.mjs → copilot-4O7P53MT.js} +2 -1
- package/dist/{cursor-N75OH6WS.mjs → cursor-HSO7S4D3.js} +2 -1
- package/dist/{geminicli-AGOQ32ZE.mjs → geminicli-UZWXPT2J.js} +2 -1
- package/dist/{index.mjs → index.cjs} +561 -186
- package/dist/index.js +207 -503
- package/dist/{roo-V5YVC222.mjs → roo-JSRLCK7Z.js} +2 -1
- package/package.json +15 -13
- /package/dist/{index.d.mts → index.d.cts} +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// src/schemas/mcp.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var ToolTargetSchema = z.enum([
|
|
4
|
+
"copilot",
|
|
5
|
+
"cursor",
|
|
6
|
+
"cline",
|
|
7
|
+
"claudecode",
|
|
8
|
+
"claude",
|
|
9
|
+
"roo",
|
|
10
|
+
"geminicli"
|
|
11
|
+
]);
|
|
12
|
+
var WildcardTargetSchema = z.tuple([z.literal("*")]);
|
|
13
|
+
var SpecificTargetsSchema = z.array(ToolTargetSchema);
|
|
14
|
+
var RulesyncTargetsSchema = z.union([SpecificTargetsSchema, WildcardTargetSchema]);
|
|
15
|
+
var McpTransportTypeSchema = z.enum(["stdio", "sse", "http"]);
|
|
16
|
+
var McpServerBaseSchema = z.object({
|
|
17
|
+
command: z.string().optional(),
|
|
18
|
+
args: z.array(z.string()).optional(),
|
|
19
|
+
url: z.string().optional(),
|
|
20
|
+
httpUrl: z.string().optional(),
|
|
21
|
+
env: z.record(z.string()).optional(),
|
|
22
|
+
disabled: z.boolean().optional(),
|
|
23
|
+
networkTimeout: z.number().optional(),
|
|
24
|
+
timeout: z.number().optional(),
|
|
25
|
+
trust: z.boolean().optional(),
|
|
26
|
+
cwd: z.string().optional(),
|
|
27
|
+
transport: McpTransportTypeSchema.optional(),
|
|
28
|
+
type: z.enum(["sse", "streamable-http"]).optional(),
|
|
29
|
+
alwaysAllow: z.array(z.string()).optional(),
|
|
30
|
+
tools: z.array(z.string()).optional()
|
|
31
|
+
});
|
|
32
|
+
var RulesyncMcpServerSchema = McpServerBaseSchema.extend({
|
|
33
|
+
rulesyncTargets: RulesyncTargetsSchema.optional()
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// src/utils/mcp-helpers.ts
|
|
37
|
+
function shouldIncludeServer(server, targetTool) {
|
|
38
|
+
if (!server.rulesyncTargets || server.rulesyncTargets.length === 0) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
const parsedTargets = RulesyncTargetsSchema.parse(server.rulesyncTargets);
|
|
42
|
+
if (parsedTargets.length === 1 && parsedTargets[0] === "*") {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
const validatedTool = ToolTargetSchema.parse(targetTool);
|
|
46
|
+
for (const target of parsedTargets) {
|
|
47
|
+
if (target === validatedTool) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export {
|
|
55
|
+
shouldIncludeServer
|
|
56
|
+
};
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
shouldIncludeServer
|
|
3
|
+
} from "./chunk-AWKMUY5R.js";
|
|
4
|
+
|
|
1
5
|
// src/generators/mcp/copilot.ts
|
|
2
6
|
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
7
|
const servers = {};
|
|
10
8
|
const inputs = [];
|
|
11
9
|
const inputMap = /* @__PURE__ */ new Map();
|
|
12
10
|
for (const [serverName, server] of Object.entries(config.mcpServers)) {
|
|
13
|
-
if (!
|
|
11
|
+
if (!shouldIncludeServer(server, "copilot")) continue;
|
|
14
12
|
const copilotServer = {};
|
|
15
13
|
if (server.command) {
|
|
16
14
|
copilotServer.command = server.command;
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
shouldIncludeServer
|
|
3
|
+
} from "./chunk-AWKMUY5R.js";
|
|
4
|
+
|
|
1
5
|
// src/generators/mcp/geminicli.ts
|
|
2
6
|
function generateGeminiCliMcp(config, _target) {
|
|
3
7
|
const geminiSettings = {
|
|
4
8
|
mcpServers: {}
|
|
5
9
|
};
|
|
6
|
-
const shouldInclude = (server) => {
|
|
7
|
-
const targets = server.rulesyncTargets;
|
|
8
|
-
if (!targets || targets.length === 0) return true;
|
|
9
|
-
if (targets.length === 1 && targets[0] === "*") return true;
|
|
10
|
-
return targets.includes("geminicli");
|
|
11
|
-
};
|
|
12
10
|
for (const [serverName, server] of Object.entries(config.mcpServers)) {
|
|
13
|
-
if (!
|
|
11
|
+
if (!shouldIncludeServer(server, "geminicli")) continue;
|
|
14
12
|
const geminiServer = {};
|
|
15
13
|
if (server.command) {
|
|
16
14
|
geminiServer.command = server.command;
|
|
@@ -48,8 +46,7 @@ function generateGeminiCliMcpConfiguration(mcpServers, baseDir = "") {
|
|
|
48
46
|
mcpServers: {}
|
|
49
47
|
};
|
|
50
48
|
for (const [serverName, server] of Object.entries(mcpServers)) {
|
|
51
|
-
|
|
52
|
-
if (targets && !targets.includes("*") && !targets.includes("geminicli")) {
|
|
49
|
+
if (!shouldIncludeServer(server, "geminicli")) {
|
|
53
50
|
continue;
|
|
54
51
|
}
|
|
55
52
|
const { rulesyncTargets: _, ...serverConfig } = server;
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
shouldIncludeServer
|
|
3
|
+
} from "./chunk-AWKMUY5R.js";
|
|
4
|
+
|
|
1
5
|
// src/generators/mcp/claude.ts
|
|
2
6
|
function generateClaudeMcp(config, _target) {
|
|
3
7
|
const claudeSettings = {
|
|
4
8
|
mcpServers: {}
|
|
5
9
|
};
|
|
6
10
|
const shouldInclude = (server) => {
|
|
7
|
-
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
if (server.rulesyncTargets.length === 1 && server.rulesyncTargets[0] === "*") {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
return server.rulesyncTargets.includes("claude");
|
|
11
|
+
return shouldIncludeServer(server, "claude");
|
|
14
12
|
};
|
|
15
13
|
for (const [serverName, server] of Object.entries(config.mcpServers)) {
|
|
16
14
|
if (!shouldInclude(server)) continue;
|
|
@@ -42,12 +40,8 @@ function generateClaudeMcpConfiguration(mcpServers, baseDir = "") {
|
|
|
42
40
|
mcpServers: {}
|
|
43
41
|
};
|
|
44
42
|
for (const [serverName, server] of Object.entries(mcpServers)) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const targetsArray = targets;
|
|
48
|
-
if (!targetsArray.includes("*") && !targetsArray.includes("claudecode")) {
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
43
|
+
if (!shouldIncludeServer(server, "claudecode")) {
|
|
44
|
+
continue;
|
|
51
45
|
}
|
|
52
46
|
const { rulesyncTargets: _, transport, ...serverConfig } = server;
|
|
53
47
|
const claudeServer = {
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
shouldIncludeServer
|
|
3
|
+
} from "./chunk-AWKMUY5R.js";
|
|
4
|
+
|
|
1
5
|
// src/generators/mcp/roo.ts
|
|
2
6
|
function generateRooMcp(config, _target) {
|
|
3
7
|
const rooConfig = {
|
|
4
8
|
mcpServers: {}
|
|
5
9
|
};
|
|
6
|
-
const shouldInclude = (server) => {
|
|
7
|
-
const targets = server.rulesyncTargets;
|
|
8
|
-
if (!targets || targets.length === 0) return true;
|
|
9
|
-
if (targets.length === 1 && targets[0] === "*") return true;
|
|
10
|
-
return targets.includes("roo");
|
|
11
|
-
};
|
|
12
10
|
for (const [serverName, server] of Object.entries(config.mcpServers)) {
|
|
13
|
-
if (!
|
|
11
|
+
if (!shouldIncludeServer(server, "roo")) continue;
|
|
14
12
|
const rooServer = {};
|
|
15
13
|
if (server.command) {
|
|
16
14
|
rooServer.command = server.command;
|
|
@@ -55,11 +53,14 @@ function generateRooMcpConfiguration(mcpServers, baseDir = "") {
|
|
|
55
53
|
mcpServers: {}
|
|
56
54
|
};
|
|
57
55
|
for (const [serverName, server] of Object.entries(mcpServers)) {
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
if (!server || typeof server !== "object") {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
const serverObj = server;
|
|
60
|
+
if (!shouldIncludeServer(serverObj, "roo")) {
|
|
60
61
|
continue;
|
|
61
62
|
}
|
|
62
|
-
const { rulesyncTargets, ...serverConfig } =
|
|
63
|
+
const { rulesyncTargets: _rulesyncTargets, ...serverConfig } = serverObj;
|
|
63
64
|
config.mcpServers[serverName] = serverConfig;
|
|
64
65
|
}
|
|
65
66
|
return [
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
shouldIncludeServer
|
|
3
|
+
} from "./chunk-AWKMUY5R.js";
|
|
4
|
+
|
|
1
5
|
// src/generators/mcp/cursor.ts
|
|
2
6
|
function generateCursorMcp(config, _target) {
|
|
3
7
|
const cursorConfig = {
|
|
4
8
|
mcpServers: {}
|
|
5
9
|
};
|
|
6
|
-
const shouldInclude = (server) => {
|
|
7
|
-
const targets = server.rulesyncTargets;
|
|
8
|
-
if (!targets || targets.length === 0) return true;
|
|
9
|
-
if (targets.length === 1 && targets[0] === "*") return true;
|
|
10
|
-
return targets.includes("cursor");
|
|
11
|
-
};
|
|
12
10
|
for (const [serverName, server] of Object.entries(config.mcpServers)) {
|
|
13
|
-
if (!
|
|
11
|
+
if (!shouldIncludeServer(server, "cursor")) continue;
|
|
14
12
|
const cursorServer = {};
|
|
15
13
|
if (server.command) {
|
|
16
14
|
cursorServer.command = server.command;
|
|
@@ -42,11 +40,14 @@ function generateCursorMcpConfiguration(mcpServers, baseDir = "") {
|
|
|
42
40
|
mcpServers: {}
|
|
43
41
|
};
|
|
44
42
|
for (const [serverName, server] of Object.entries(mcpServers)) {
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
if (!server || typeof server !== "object") {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const serverObj = server;
|
|
47
|
+
if (!shouldIncludeServer(serverObj, "cursor")) {
|
|
47
48
|
continue;
|
|
48
49
|
}
|
|
49
|
-
const { rulesyncTargets, ...serverConfig } =
|
|
50
|
+
const { rulesyncTargets: _rulesyncTargets, ...serverConfig } = serverObj;
|
|
50
51
|
config.mcpServers[serverName] = serverConfig;
|
|
51
52
|
}
|
|
52
53
|
return [
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
shouldIncludeServer
|
|
3
|
+
} from "./chunk-AWKMUY5R.js";
|
|
4
|
+
|
|
1
5
|
// src/generators/mcp/cline.ts
|
|
2
6
|
function generateClineMcp(config, _target) {
|
|
3
7
|
const clineConfig = {
|
|
4
8
|
mcpServers: {}
|
|
5
9
|
};
|
|
6
10
|
const shouldInclude = (server) => {
|
|
7
|
-
|
|
8
|
-
if (!targets || targets.length === 0) return true;
|
|
9
|
-
if (targets.length === 1 && targets[0] === "*") return true;
|
|
10
|
-
return targets.includes("cline");
|
|
11
|
+
return shouldIncludeServer(server, "cline");
|
|
11
12
|
};
|
|
12
13
|
for (const [serverName, server] of Object.entries(config.mcpServers)) {
|
|
13
14
|
if (!shouldInclude(server)) continue;
|
|
@@ -40,8 +41,7 @@ function generateClineMcpConfiguration(mcpServers, baseDir = "") {
|
|
|
40
41
|
mcpServers: {}
|
|
41
42
|
};
|
|
42
43
|
for (const [serverName, server] of Object.entries(mcpServers)) {
|
|
43
|
-
|
|
44
|
-
if (targets && !targets.includes("*") && !targets.includes("cline")) {
|
|
44
|
+
if (!shouldIncludeServer(server, "cline")) {
|
|
45
45
|
continue;
|
|
46
46
|
}
|
|
47
47
|
const { rulesyncTargets: _, ...serverConfig } = server;
|