rulesync 7.21.0 → 7.22.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.md +2 -2
- package/dist/{chunk-UYWCICY6.js → chunk-4WYBBN4I.js} +29 -7
- package/dist/cli/index.cjs +31 -9
- package/dist/cli/index.js +5 -3
- package/dist/index.cjs +27 -7
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/package.json +21 -17
package/README.md
CHANGED
|
@@ -67,13 +67,13 @@ See [Quick Start guide](https://dyoshikawa.github.io/rulesync/getting-started/qu
|
|
|
67
67
|
| AGENTS.md | agentsmd | ✅ | | | 🎮 | 🎮 | 🎮 | |
|
|
68
68
|
| AgentsSkills | agentsskills | | | | | | ✅ | |
|
|
69
69
|
| Claude Code | claudecode | ✅ 🌏 | ✅ | ✅ 🌏 | ✅ 🌏 | ✅ 🌏 | ✅ 🌏 | ✅ 🌏 |
|
|
70
|
-
| Codex CLI | codexcli | ✅ 🌏 | | ✅ 🌏 🔧 | 🌏 |
|
|
70
|
+
| Codex CLI | codexcli | ✅ 🌏 | | ✅ 🌏 🔧 | 🌏 | ✅ 🌏 | ✅ 🌏 | |
|
|
71
71
|
| Gemini CLI | geminicli | ✅ 🌏 | ✅ | ✅ 🌏 | ✅ 🌏 | 🎮 | ✅ 🌏 | ✅ 🌏 |
|
|
72
72
|
| Goose | goose | ✅ 🌏 | ✅ | | | | | |
|
|
73
73
|
| GitHub Copilot | copilot | ✅ 🌏 | | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
74
74
|
| GitHub Copilot CLI | copilotcli | | | ✅ 🌏 | | | | |
|
|
75
75
|
| Cursor | cursor | ✅ | ✅ | ✅ 🌏 | ✅ 🌏 | ✅ 🌏 | ✅ 🌏 | ✅ |
|
|
76
|
-
| Factory Droid | factorydroid | ✅ 🌏 | | ✅ 🌏 |
|
|
76
|
+
| Factory Droid | factorydroid | ✅ 🌏 | | ✅ 🌏 | 🎮 | 🎮 | 🎮 | ✅ 🌏 |
|
|
77
77
|
| OpenCode | opencode | ✅ 🌏 | | ✅ 🌏 🔧 | ✅ 🌏 | ✅ 🌏 | ✅ 🌏 | ✅ 🌏 |
|
|
78
78
|
| Cline | cline | ✅ | ✅ | ✅ | ✅ 🌏 | | ✅ 🌏 | |
|
|
79
79
|
| Kilo Code | kilo | ✅ 🌏 | ✅ | ✅ | ✅ 🌏 | | ✅ 🌏 | |
|
|
@@ -24,7 +24,8 @@ var ALL_FEATURES = [
|
|
|
24
24
|
"subagents",
|
|
25
25
|
"commands",
|
|
26
26
|
"skills",
|
|
27
|
-
"hooks"
|
|
27
|
+
"hooks",
|
|
28
|
+
"permissions"
|
|
28
29
|
];
|
|
29
30
|
var ALL_FEATURES_WITH_WILDCARD = [...ALL_FEATURES, "*"];
|
|
30
31
|
var FeatureSchema = z.enum(ALL_FEATURES);
|
|
@@ -82,6 +83,10 @@ var RULESYNC_COMMANDS_RELATIVE_DIR_PATH = join(RULESYNC_RELATIVE_DIR_PATH, "comm
|
|
|
82
83
|
var RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH = join(RULESYNC_RELATIVE_DIR_PATH, "subagents");
|
|
83
84
|
var RULESYNC_MCP_RELATIVE_FILE_PATH = join(RULESYNC_RELATIVE_DIR_PATH, "mcp.json");
|
|
84
85
|
var RULESYNC_HOOKS_RELATIVE_FILE_PATH = join(RULESYNC_RELATIVE_DIR_PATH, "hooks.json");
|
|
86
|
+
var RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH = join(
|
|
87
|
+
RULESYNC_RELATIVE_DIR_PATH,
|
|
88
|
+
"permissions.json"
|
|
89
|
+
);
|
|
85
90
|
var RULESYNC_AIIGNORE_FILE_NAME = ".aiignore";
|
|
86
91
|
var RULESYNC_AIIGNORE_RELATIVE_FILE_PATH = join(RULESYNC_RELATIVE_DIR_PATH, ".aiignore");
|
|
87
92
|
var RULESYNC_IGNORE_RELATIVE_FILE_PATH = ".rulesyncignore";
|
|
@@ -94,6 +99,7 @@ var RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH = join(
|
|
|
94
99
|
var RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH = "rulesync.lock";
|
|
95
100
|
var RULESYNC_MCP_FILE_NAME = "mcp.json";
|
|
96
101
|
var RULESYNC_HOOKS_FILE_NAME = "hooks.json";
|
|
102
|
+
var RULESYNC_PERMISSIONS_FILE_NAME = "permissions.json";
|
|
97
103
|
var RULESYNC_CONFIG_SCHEMA_URL = "https://github.com/dyoshikawa/rulesync/releases/latest/download/config-schema.json";
|
|
98
104
|
var RULESYNC_MCP_SCHEMA_URL = "https://github.com/dyoshikawa/rulesync/releases/latest/download/mcp-schema.json";
|
|
99
105
|
var MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
@@ -2917,7 +2923,7 @@ var toolCommandFactories = /* @__PURE__ */ new Map([
|
|
|
2917
2923
|
meta: {
|
|
2918
2924
|
extension: "md",
|
|
2919
2925
|
supportsProject: true,
|
|
2920
|
-
supportsGlobal:
|
|
2926
|
+
supportsGlobal: false,
|
|
2921
2927
|
isSimulated: true,
|
|
2922
2928
|
supportsSubdirectory: false
|
|
2923
2929
|
}
|
|
@@ -10988,7 +10994,7 @@ var toolSkillFactories = /* @__PURE__ */ new Map([
|
|
|
10988
10994
|
"factorydroid",
|
|
10989
10995
|
{
|
|
10990
10996
|
class: FactorydroidSkill,
|
|
10991
|
-
meta: { supportsProject: true, supportsSimulated: true, supportsGlobal:
|
|
10997
|
+
meta: { supportsProject: true, supportsSimulated: true, supportsGlobal: false }
|
|
10992
10998
|
}
|
|
10993
10999
|
],
|
|
10994
11000
|
[
|
|
@@ -12751,7 +12757,7 @@ var toolSubagentFactories = /* @__PURE__ */ new Map([
|
|
|
12751
12757
|
"codexcli",
|
|
12752
12758
|
{
|
|
12753
12759
|
class: CodexCliSubagent,
|
|
12754
|
-
meta: { supportsSimulated: false, supportsGlobal:
|
|
12760
|
+
meta: { supportsSimulated: false, supportsGlobal: true, filePattern: "*.toml" }
|
|
12755
12761
|
}
|
|
12756
12762
|
],
|
|
12757
12763
|
[
|
|
@@ -12772,7 +12778,7 @@ var toolSubagentFactories = /* @__PURE__ */ new Map([
|
|
|
12772
12778
|
"factorydroid",
|
|
12773
12779
|
{
|
|
12774
12780
|
class: FactorydroidSubagent,
|
|
12775
|
-
meta: { supportsSimulated: true, supportsGlobal:
|
|
12781
|
+
meta: { supportsSimulated: true, supportsGlobal: false, filePattern: "*.md" }
|
|
12776
12782
|
}
|
|
12777
12783
|
],
|
|
12778
12784
|
[
|
|
@@ -16709,11 +16715,23 @@ async function processEmptyFeatureGeneration(params) {
|
|
|
16709
16715
|
}
|
|
16710
16716
|
return { count: totalCount, paths: [], hasDiff };
|
|
16711
16717
|
}
|
|
16718
|
+
var SIMULATE_OPTION_MAP = {
|
|
16719
|
+
commands: "--simulate-commands",
|
|
16720
|
+
subagents: "--simulate-subagents",
|
|
16721
|
+
skills: "--simulate-skills"
|
|
16722
|
+
};
|
|
16712
16723
|
function warnUnsupportedTargets(params) {
|
|
16713
|
-
const { config, supportedTargets, featureName, logger } = params;
|
|
16724
|
+
const { config, supportedTargets, simulatedTargets = [], featureName, logger } = params;
|
|
16714
16725
|
for (const target of config.getTargets()) {
|
|
16715
16726
|
if (!supportedTargets.includes(target) && config.getFeatures(target).includes(featureName)) {
|
|
16716
|
-
|
|
16727
|
+
const simulateOption = SIMULATE_OPTION_MAP[featureName];
|
|
16728
|
+
if (simulateOption && simulatedTargets.includes(target)) {
|
|
16729
|
+
logger.warn(
|
|
16730
|
+
`Target '${target}' only supports simulated '${featureName}'. Use '${simulateOption}' to enable it. Skipping.`
|
|
16731
|
+
);
|
|
16732
|
+
} else {
|
|
16733
|
+
logger.warn(`Target '${target}' does not support the feature '${featureName}'. Skipping.`);
|
|
16734
|
+
}
|
|
16717
16735
|
}
|
|
16718
16736
|
}
|
|
16719
16737
|
}
|
|
@@ -16894,6 +16912,7 @@ async function generateCommandsCore(params) {
|
|
|
16894
16912
|
warnUnsupportedTargets({
|
|
16895
16913
|
config,
|
|
16896
16914
|
supportedTargets: supportedCommandsTargets,
|
|
16915
|
+
simulatedTargets: CommandsProcessor.getToolTargetsSimulated(),
|
|
16897
16916
|
featureName: "commands",
|
|
16898
16917
|
logger
|
|
16899
16918
|
});
|
|
@@ -16936,6 +16955,7 @@ async function generateSubagentsCore(params) {
|
|
|
16936
16955
|
warnUnsupportedTargets({
|
|
16937
16956
|
config,
|
|
16938
16957
|
supportedTargets: supportedSubagentsTargets,
|
|
16958
|
+
simulatedTargets: SubagentsProcessor.getToolTargetsSimulated(),
|
|
16939
16959
|
featureName: "subagents",
|
|
16940
16960
|
logger
|
|
16941
16961
|
});
|
|
@@ -16979,6 +16999,7 @@ async function generateSkillsCore(params) {
|
|
|
16979
16999
|
warnUnsupportedTargets({
|
|
16980
17000
|
config,
|
|
16981
17001
|
supportedTargets: supportedSkillsTargets,
|
|
17002
|
+
simulatedTargets: SkillsProcessor.getToolTargetsSimulated(),
|
|
16982
17003
|
featureName: "skills",
|
|
16983
17004
|
logger
|
|
16984
17005
|
});
|
|
@@ -17474,6 +17495,7 @@ export {
|
|
|
17474
17495
|
RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH,
|
|
17475
17496
|
RULESYNC_MCP_FILE_NAME,
|
|
17476
17497
|
RULESYNC_HOOKS_FILE_NAME,
|
|
17498
|
+
RULESYNC_PERMISSIONS_FILE_NAME,
|
|
17477
17499
|
RULESYNC_CONFIG_SCHEMA_URL,
|
|
17478
17500
|
RULESYNC_MCP_SCHEMA_URL,
|
|
17479
17501
|
MAX_FILE_SIZE,
|
package/dist/cli/index.cjs
CHANGED
|
@@ -35,7 +35,8 @@ var ALL_FEATURES = [
|
|
|
35
35
|
"subagents",
|
|
36
36
|
"commands",
|
|
37
37
|
"skills",
|
|
38
|
-
"hooks"
|
|
38
|
+
"hooks",
|
|
39
|
+
"permissions"
|
|
39
40
|
];
|
|
40
41
|
var ALL_FEATURES_WITH_WILDCARD = [...ALL_FEATURES, "*"];
|
|
41
42
|
var FeatureSchema = import_mini.z.enum(ALL_FEATURES);
|
|
@@ -79,6 +80,10 @@ var RULESYNC_COMMANDS_RELATIVE_DIR_PATH = (0, import_node_path.join)(RULESYNC_RE
|
|
|
79
80
|
var RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH = (0, import_node_path.join)(RULESYNC_RELATIVE_DIR_PATH, "subagents");
|
|
80
81
|
var RULESYNC_MCP_RELATIVE_FILE_PATH = (0, import_node_path.join)(RULESYNC_RELATIVE_DIR_PATH, "mcp.json");
|
|
81
82
|
var RULESYNC_HOOKS_RELATIVE_FILE_PATH = (0, import_node_path.join)(RULESYNC_RELATIVE_DIR_PATH, "hooks.json");
|
|
83
|
+
var RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH = (0, import_node_path.join)(
|
|
84
|
+
RULESYNC_RELATIVE_DIR_PATH,
|
|
85
|
+
"permissions.json"
|
|
86
|
+
);
|
|
82
87
|
var RULESYNC_AIIGNORE_FILE_NAME = ".aiignore";
|
|
83
88
|
var RULESYNC_AIIGNORE_RELATIVE_FILE_PATH = (0, import_node_path.join)(RULESYNC_RELATIVE_DIR_PATH, ".aiignore");
|
|
84
89
|
var RULESYNC_IGNORE_RELATIVE_FILE_PATH = ".rulesyncignore";
|
|
@@ -91,6 +96,7 @@ var RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH = (0, import_node_path.join)(
|
|
|
91
96
|
var RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH = "rulesync.lock";
|
|
92
97
|
var RULESYNC_MCP_FILE_NAME = "mcp.json";
|
|
93
98
|
var RULESYNC_HOOKS_FILE_NAME = "hooks.json";
|
|
99
|
+
var RULESYNC_PERMISSIONS_FILE_NAME = "permissions.json";
|
|
94
100
|
var RULESYNC_CONFIG_SCHEMA_URL = "https://github.com/dyoshikawa/rulesync/releases/latest/download/config-schema.json";
|
|
95
101
|
var RULESYNC_MCP_SCHEMA_URL = "https://github.com/dyoshikawa/rulesync/releases/latest/download/mcp-schema.json";
|
|
96
102
|
var MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
@@ -2626,7 +2632,7 @@ var toolCommandFactories = /* @__PURE__ */ new Map([
|
|
|
2626
2632
|
meta: {
|
|
2627
2633
|
extension: "md",
|
|
2628
2634
|
supportsProject: true,
|
|
2629
|
-
supportsGlobal:
|
|
2635
|
+
supportsGlobal: false,
|
|
2630
2636
|
isSimulated: true,
|
|
2631
2637
|
supportsSubdirectory: false
|
|
2632
2638
|
}
|
|
@@ -10697,7 +10703,7 @@ var toolSkillFactories = /* @__PURE__ */ new Map([
|
|
|
10697
10703
|
"factorydroid",
|
|
10698
10704
|
{
|
|
10699
10705
|
class: FactorydroidSkill,
|
|
10700
|
-
meta: { supportsProject: true, supportsSimulated: true, supportsGlobal:
|
|
10706
|
+
meta: { supportsProject: true, supportsSimulated: true, supportsGlobal: false }
|
|
10701
10707
|
}
|
|
10702
10708
|
],
|
|
10703
10709
|
[
|
|
@@ -12460,7 +12466,7 @@ var toolSubagentFactories = /* @__PURE__ */ new Map([
|
|
|
12460
12466
|
"codexcli",
|
|
12461
12467
|
{
|
|
12462
12468
|
class: CodexCliSubagent,
|
|
12463
|
-
meta: { supportsSimulated: false, supportsGlobal:
|
|
12469
|
+
meta: { supportsSimulated: false, supportsGlobal: true, filePattern: "*.toml" }
|
|
12464
12470
|
}
|
|
12465
12471
|
],
|
|
12466
12472
|
[
|
|
@@ -12481,7 +12487,7 @@ var toolSubagentFactories = /* @__PURE__ */ new Map([
|
|
|
12481
12487
|
"factorydroid",
|
|
12482
12488
|
{
|
|
12483
12489
|
class: FactorydroidSubagent,
|
|
12484
|
-
meta: { supportsSimulated: true, supportsGlobal:
|
|
12490
|
+
meta: { supportsSimulated: true, supportsGlobal: false, filePattern: "*.md" }
|
|
12485
12491
|
}
|
|
12486
12492
|
],
|
|
12487
12493
|
[
|
|
@@ -16830,7 +16836,8 @@ var FEATURE_PATHS = {
|
|
|
16830
16836
|
skills: ["skills"],
|
|
16831
16837
|
ignore: [RULESYNC_AIIGNORE_FILE_NAME],
|
|
16832
16838
|
mcp: [RULESYNC_MCP_FILE_NAME],
|
|
16833
|
-
hooks: [RULESYNC_HOOKS_FILE_NAME]
|
|
16839
|
+
hooks: [RULESYNC_HOOKS_FILE_NAME],
|
|
16840
|
+
permissions: [RULESYNC_PERMISSIONS_FILE_NAME]
|
|
16834
16841
|
};
|
|
16835
16842
|
function isToolTarget(target) {
|
|
16836
16843
|
return target !== "rulesync";
|
|
@@ -17710,11 +17717,23 @@ async function processEmptyFeatureGeneration(params) {
|
|
|
17710
17717
|
}
|
|
17711
17718
|
return { count: totalCount, paths: [], hasDiff };
|
|
17712
17719
|
}
|
|
17720
|
+
var SIMULATE_OPTION_MAP = {
|
|
17721
|
+
commands: "--simulate-commands",
|
|
17722
|
+
subagents: "--simulate-subagents",
|
|
17723
|
+
skills: "--simulate-skills"
|
|
17724
|
+
};
|
|
17713
17725
|
function warnUnsupportedTargets(params) {
|
|
17714
|
-
const { config, supportedTargets, featureName, logger: logger5 } = params;
|
|
17726
|
+
const { config, supportedTargets, simulatedTargets = [], featureName, logger: logger5 } = params;
|
|
17715
17727
|
for (const target of config.getTargets()) {
|
|
17716
17728
|
if (!supportedTargets.includes(target) && config.getFeatures(target).includes(featureName)) {
|
|
17717
|
-
|
|
17729
|
+
const simulateOption = SIMULATE_OPTION_MAP[featureName];
|
|
17730
|
+
if (simulateOption && simulatedTargets.includes(target)) {
|
|
17731
|
+
logger5.warn(
|
|
17732
|
+
`Target '${target}' only supports simulated '${featureName}'. Use '${simulateOption}' to enable it. Skipping.`
|
|
17733
|
+
);
|
|
17734
|
+
} else {
|
|
17735
|
+
logger5.warn(`Target '${target}' does not support the feature '${featureName}'. Skipping.`);
|
|
17736
|
+
}
|
|
17718
17737
|
}
|
|
17719
17738
|
}
|
|
17720
17739
|
}
|
|
@@ -17895,6 +17914,7 @@ async function generateCommandsCore(params) {
|
|
|
17895
17914
|
warnUnsupportedTargets({
|
|
17896
17915
|
config,
|
|
17897
17916
|
supportedTargets: supportedCommandsTargets,
|
|
17917
|
+
simulatedTargets: CommandsProcessor.getToolTargetsSimulated(),
|
|
17898
17918
|
featureName: "commands",
|
|
17899
17919
|
logger: logger5
|
|
17900
17920
|
});
|
|
@@ -17937,6 +17957,7 @@ async function generateSubagentsCore(params) {
|
|
|
17937
17957
|
warnUnsupportedTargets({
|
|
17938
17958
|
config,
|
|
17939
17959
|
supportedTargets: supportedSubagentsTargets,
|
|
17960
|
+
simulatedTargets: SubagentsProcessor.getToolTargetsSimulated(),
|
|
17940
17961
|
featureName: "subagents",
|
|
17941
17962
|
logger: logger5
|
|
17942
17963
|
});
|
|
@@ -17980,6 +18001,7 @@ async function generateSkillsCore(params) {
|
|
|
17980
18001
|
warnUnsupportedTargets({
|
|
17981
18002
|
config,
|
|
17982
18003
|
supportedTargets: supportedSkillsTargets,
|
|
18004
|
+
simulatedTargets: SkillsProcessor.getToolTargetsSimulated(),
|
|
17983
18005
|
featureName: "skills",
|
|
17984
18006
|
logger: logger5
|
|
17985
18007
|
});
|
|
@@ -21781,7 +21803,7 @@ function wrapCommand({
|
|
|
21781
21803
|
}
|
|
21782
21804
|
|
|
21783
21805
|
// src/cli/index.ts
|
|
21784
|
-
var getVersion = () => "7.
|
|
21806
|
+
var getVersion = () => "7.22.0";
|
|
21785
21807
|
function wrapCommand2(name, errorCode, handler) {
|
|
21786
21808
|
return wrapCommand({ name, errorCode, handler, getVersion });
|
|
21787
21809
|
}
|
package/dist/cli/index.js
CHANGED
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
RULESYNC_MCP_RELATIVE_FILE_PATH,
|
|
29
29
|
RULESYNC_MCP_SCHEMA_URL,
|
|
30
30
|
RULESYNC_OVERVIEW_FILE_NAME,
|
|
31
|
+
RULESYNC_PERMISSIONS_FILE_NAME,
|
|
31
32
|
RULESYNC_RELATIVE_DIR_PATH,
|
|
32
33
|
RULESYNC_RULES_RELATIVE_DIR_PATH,
|
|
33
34
|
RULESYNC_SKILLS_RELATIVE_DIR_PATH,
|
|
@@ -69,7 +70,7 @@ import {
|
|
|
69
70
|
removeTempDirectory,
|
|
70
71
|
stringifyFrontmatter,
|
|
71
72
|
writeFileContent
|
|
72
|
-
} from "../chunk-
|
|
73
|
+
} from "../chunk-4WYBBN4I.js";
|
|
73
74
|
|
|
74
75
|
// src/cli/index.ts
|
|
75
76
|
import { Command } from "commander";
|
|
@@ -537,7 +538,8 @@ var FEATURE_PATHS = {
|
|
|
537
538
|
skills: ["skills"],
|
|
538
539
|
ignore: [RULESYNC_AIIGNORE_FILE_NAME],
|
|
539
540
|
mcp: [RULESYNC_MCP_FILE_NAME],
|
|
540
|
-
hooks: [RULESYNC_HOOKS_FILE_NAME]
|
|
541
|
+
hooks: [RULESYNC_HOOKS_FILE_NAME],
|
|
542
|
+
permissions: [RULESYNC_PERMISSIONS_FILE_NAME]
|
|
541
543
|
};
|
|
542
544
|
function isToolTarget(target) {
|
|
543
545
|
return target !== "rulesync";
|
|
@@ -4370,7 +4372,7 @@ function wrapCommand({
|
|
|
4370
4372
|
}
|
|
4371
4373
|
|
|
4372
4374
|
// src/cli/index.ts
|
|
4373
|
-
var getVersion = () => "7.
|
|
4375
|
+
var getVersion = () => "7.22.0";
|
|
4374
4376
|
function wrapCommand2(name, errorCode, handler) {
|
|
4375
4377
|
return wrapCommand({ name, errorCode, handler, getVersion });
|
|
4376
4378
|
}
|
package/dist/index.cjs
CHANGED
|
@@ -51,6 +51,10 @@ var RULESYNC_COMMANDS_RELATIVE_DIR_PATH = (0, import_node_path.join)(RULESYNC_RE
|
|
|
51
51
|
var RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH = (0, import_node_path.join)(RULESYNC_RELATIVE_DIR_PATH, "subagents");
|
|
52
52
|
var RULESYNC_MCP_RELATIVE_FILE_PATH = (0, import_node_path.join)(RULESYNC_RELATIVE_DIR_PATH, "mcp.json");
|
|
53
53
|
var RULESYNC_HOOKS_RELATIVE_FILE_PATH = (0, import_node_path.join)(RULESYNC_RELATIVE_DIR_PATH, "hooks.json");
|
|
54
|
+
var RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH = (0, import_node_path.join)(
|
|
55
|
+
RULESYNC_RELATIVE_DIR_PATH,
|
|
56
|
+
"permissions.json"
|
|
57
|
+
);
|
|
54
58
|
var RULESYNC_AIIGNORE_FILE_NAME = ".aiignore";
|
|
55
59
|
var RULESYNC_AIIGNORE_RELATIVE_FILE_PATH = (0, import_node_path.join)(RULESYNC_RELATIVE_DIR_PATH, ".aiignore");
|
|
56
60
|
var RULESYNC_IGNORE_RELATIVE_FILE_PATH = ".rulesyncignore";
|
|
@@ -244,7 +248,8 @@ var ALL_FEATURES = [
|
|
|
244
248
|
"subagents",
|
|
245
249
|
"commands",
|
|
246
250
|
"skills",
|
|
247
|
-
"hooks"
|
|
251
|
+
"hooks",
|
|
252
|
+
"permissions"
|
|
248
253
|
];
|
|
249
254
|
var ALL_FEATURES_WITH_WILDCARD = [...ALL_FEATURES, "*"];
|
|
250
255
|
var FeatureSchema = import_mini.z.enum(ALL_FEATURES);
|
|
@@ -2925,7 +2930,7 @@ var toolCommandFactories = /* @__PURE__ */ new Map([
|
|
|
2925
2930
|
meta: {
|
|
2926
2931
|
extension: "md",
|
|
2927
2932
|
supportsProject: true,
|
|
2928
|
-
supportsGlobal:
|
|
2933
|
+
supportsGlobal: false,
|
|
2929
2934
|
isSimulated: true,
|
|
2930
2935
|
supportsSubdirectory: false
|
|
2931
2936
|
}
|
|
@@ -10996,7 +11001,7 @@ var toolSkillFactories = /* @__PURE__ */ new Map([
|
|
|
10996
11001
|
"factorydroid",
|
|
10997
11002
|
{
|
|
10998
11003
|
class: FactorydroidSkill,
|
|
10999
|
-
meta: { supportsProject: true, supportsSimulated: true, supportsGlobal:
|
|
11004
|
+
meta: { supportsProject: true, supportsSimulated: true, supportsGlobal: false }
|
|
11000
11005
|
}
|
|
11001
11006
|
],
|
|
11002
11007
|
[
|
|
@@ -12759,7 +12764,7 @@ var toolSubagentFactories = /* @__PURE__ */ new Map([
|
|
|
12759
12764
|
"codexcli",
|
|
12760
12765
|
{
|
|
12761
12766
|
class: CodexCliSubagent,
|
|
12762
|
-
meta: { supportsSimulated: false, supportsGlobal:
|
|
12767
|
+
meta: { supportsSimulated: false, supportsGlobal: true, filePattern: "*.toml" }
|
|
12763
12768
|
}
|
|
12764
12769
|
],
|
|
12765
12770
|
[
|
|
@@ -12780,7 +12785,7 @@ var toolSubagentFactories = /* @__PURE__ */ new Map([
|
|
|
12780
12785
|
"factorydroid",
|
|
12781
12786
|
{
|
|
12782
12787
|
class: FactorydroidSubagent,
|
|
12783
|
-
meta: { supportsSimulated: true, supportsGlobal:
|
|
12788
|
+
meta: { supportsSimulated: true, supportsGlobal: false, filePattern: "*.md" }
|
|
12784
12789
|
}
|
|
12785
12790
|
],
|
|
12786
12791
|
[
|
|
@@ -16717,11 +16722,23 @@ async function processEmptyFeatureGeneration(params) {
|
|
|
16717
16722
|
}
|
|
16718
16723
|
return { count: totalCount, paths: [], hasDiff };
|
|
16719
16724
|
}
|
|
16725
|
+
var SIMULATE_OPTION_MAP = {
|
|
16726
|
+
commands: "--simulate-commands",
|
|
16727
|
+
subagents: "--simulate-subagents",
|
|
16728
|
+
skills: "--simulate-skills"
|
|
16729
|
+
};
|
|
16720
16730
|
function warnUnsupportedTargets(params) {
|
|
16721
|
-
const { config, supportedTargets, featureName, logger } = params;
|
|
16731
|
+
const { config, supportedTargets, simulatedTargets = [], featureName, logger } = params;
|
|
16722
16732
|
for (const target of config.getTargets()) {
|
|
16723
16733
|
if (!supportedTargets.includes(target) && config.getFeatures(target).includes(featureName)) {
|
|
16724
|
-
|
|
16734
|
+
const simulateOption = SIMULATE_OPTION_MAP[featureName];
|
|
16735
|
+
if (simulateOption && simulatedTargets.includes(target)) {
|
|
16736
|
+
logger.warn(
|
|
16737
|
+
`Target '${target}' only supports simulated '${featureName}'. Use '${simulateOption}' to enable it. Skipping.`
|
|
16738
|
+
);
|
|
16739
|
+
} else {
|
|
16740
|
+
logger.warn(`Target '${target}' does not support the feature '${featureName}'. Skipping.`);
|
|
16741
|
+
}
|
|
16725
16742
|
}
|
|
16726
16743
|
}
|
|
16727
16744
|
}
|
|
@@ -16902,6 +16919,7 @@ async function generateCommandsCore(params) {
|
|
|
16902
16919
|
warnUnsupportedTargets({
|
|
16903
16920
|
config,
|
|
16904
16921
|
supportedTargets: supportedCommandsTargets,
|
|
16922
|
+
simulatedTargets: CommandsProcessor.getToolTargetsSimulated(),
|
|
16905
16923
|
featureName: "commands",
|
|
16906
16924
|
logger
|
|
16907
16925
|
});
|
|
@@ -16944,6 +16962,7 @@ async function generateSubagentsCore(params) {
|
|
|
16944
16962
|
warnUnsupportedTargets({
|
|
16945
16963
|
config,
|
|
16946
16964
|
supportedTargets: supportedSubagentsTargets,
|
|
16965
|
+
simulatedTargets: SubagentsProcessor.getToolTargetsSimulated(),
|
|
16947
16966
|
featureName: "subagents",
|
|
16948
16967
|
logger
|
|
16949
16968
|
});
|
|
@@ -16987,6 +17006,7 @@ async function generateSkillsCore(params) {
|
|
|
16987
17006
|
warnUnsupportedTargets({
|
|
16988
17007
|
config,
|
|
16989
17008
|
supportedTargets: supportedSkillsTargets,
|
|
17009
|
+
simulatedTargets: SkillsProcessor.getToolTargetsSimulated(),
|
|
16990
17010
|
featureName: "skills",
|
|
16991
17011
|
logger
|
|
16992
17012
|
});
|
package/dist/index.d.cts
CHANGED
|
@@ -30,7 +30,7 @@ declare const ToolTargetSchema: z.ZodMiniEnum<{
|
|
|
30
30
|
}>;
|
|
31
31
|
type ToolTarget = z.infer<typeof ToolTargetSchema>;
|
|
32
32
|
|
|
33
|
-
declare const ALL_FEATURES: readonly ["rules", "ignore", "mcp", "subagents", "commands", "skills", "hooks"];
|
|
33
|
+
declare const ALL_FEATURES: readonly ["rules", "ignore", "mcp", "subagents", "commands", "skills", "hooks", "permissions"];
|
|
34
34
|
declare const FeatureSchema: z.ZodMiniEnum<{
|
|
35
35
|
rules: "rules";
|
|
36
36
|
ignore: "ignore";
|
|
@@ -39,6 +39,7 @@ declare const FeatureSchema: z.ZodMiniEnum<{
|
|
|
39
39
|
commands: "commands";
|
|
40
40
|
skills: "skills";
|
|
41
41
|
hooks: "hooks";
|
|
42
|
+
permissions: "permissions";
|
|
42
43
|
}>;
|
|
43
44
|
type Feature = z.infer<typeof FeatureSchema>;
|
|
44
45
|
|
package/dist/index.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ declare const ToolTargetSchema: z.ZodMiniEnum<{
|
|
|
30
30
|
}>;
|
|
31
31
|
type ToolTarget = z.infer<typeof ToolTargetSchema>;
|
|
32
32
|
|
|
33
|
-
declare const ALL_FEATURES: readonly ["rules", "ignore", "mcp", "subagents", "commands", "skills", "hooks"];
|
|
33
|
+
declare const ALL_FEATURES: readonly ["rules", "ignore", "mcp", "subagents", "commands", "skills", "hooks", "permissions"];
|
|
34
34
|
declare const FeatureSchema: z.ZodMiniEnum<{
|
|
35
35
|
rules: "rules";
|
|
36
36
|
ignore: "ignore";
|
|
@@ -39,6 +39,7 @@ declare const FeatureSchema: z.ZodMiniEnum<{
|
|
|
39
39
|
commands: "commands";
|
|
40
40
|
skills: "skills";
|
|
41
41
|
hooks: "hooks";
|
|
42
|
+
permissions: "permissions";
|
|
42
43
|
}>;
|
|
43
44
|
type Feature = z.infer<typeof FeatureSchema>;
|
|
44
45
|
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rulesync",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.22.0",
|
|
4
4
|
"description": "Unified AI rules management CLI tool that generates configuration files for various AI development tools",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -52,9 +52,9 @@
|
|
|
52
52
|
"@octokit/request-error": "7.1.0",
|
|
53
53
|
"@octokit/rest": "22.0.1",
|
|
54
54
|
"@toon-format/toon": "2.1.0",
|
|
55
|
-
"@valibot/to-json-schema": "1.
|
|
55
|
+
"@valibot/to-json-schema": "1.6.0",
|
|
56
56
|
"commander": "14.0.3",
|
|
57
|
-
"effect": "3.
|
|
57
|
+
"effect": "3.20.0",
|
|
58
58
|
"es-toolkit": "1.45.1",
|
|
59
59
|
"fastmcp": "3.34.0",
|
|
60
60
|
"globby": "16.1.1",
|
|
@@ -66,40 +66,42 @@
|
|
|
66
66
|
"zod": "4.3.6"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
|
-
"@anthropic-ai/claude-agent-sdk": "0.2.
|
|
69
|
+
"@anthropic-ai/claude-agent-sdk": "0.2.79",
|
|
70
70
|
"@eslint/js": "9.39.4",
|
|
71
|
+
"@opencode-ai/sdk": "1.2.27",
|
|
71
72
|
"@openrouter/sdk": "0.9.11",
|
|
72
73
|
"@secretlint/secretlint-rule-preset-recommend": "11.3.1",
|
|
73
74
|
"@tsconfig/node24": "24.0.4",
|
|
74
75
|
"@types/js-yaml": "4.0.9",
|
|
75
|
-
"@types/node": "25.
|
|
76
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
77
|
-
"@vitest/coverage-v8": "4.0
|
|
76
|
+
"@types/node": "25.5.0",
|
|
77
|
+
"@typescript/native-preview": "7.0.0-dev.20260318.1",
|
|
78
|
+
"@vitest/coverage-v8": "4.1.0",
|
|
78
79
|
"cspell": "9.7.0",
|
|
79
80
|
"eslint": "9.39.4",
|
|
80
81
|
"eslint-plugin-import": "2.32.0",
|
|
81
82
|
"eslint-plugin-no-type-assertion": "1.3.0",
|
|
82
|
-
"eslint-plugin-oxlint": "1.
|
|
83
|
-
"eslint-plugin-strict-dependencies": "1.3.
|
|
83
|
+
"eslint-plugin-oxlint": "1.56.0",
|
|
84
|
+
"eslint-plugin-strict-dependencies": "1.3.32",
|
|
84
85
|
"eslint-plugin-zod-import": "0.3.0",
|
|
85
|
-
"knip": "5.
|
|
86
|
-
"lint-staged": "16.
|
|
87
|
-
"oxfmt": "0.
|
|
88
|
-
"oxlint": "1.
|
|
86
|
+
"knip": "5.88.0",
|
|
87
|
+
"lint-staged": "16.4.0",
|
|
88
|
+
"oxfmt": "0.41.0",
|
|
89
|
+
"oxlint": "1.56.0",
|
|
89
90
|
"repomix": "1.12.0",
|
|
90
|
-
"resend": "6.9.
|
|
91
|
+
"resend": "6.9.4",
|
|
91
92
|
"secretlint": "11.3.1",
|
|
92
93
|
"simple-git-hooks": "2.13.1",
|
|
93
94
|
"sort-package-json": "3.6.1",
|
|
94
95
|
"tsup": "8.5.1",
|
|
95
96
|
"tsx": "4.21.0",
|
|
96
97
|
"typescript": "5.9.3",
|
|
97
|
-
"typescript-eslint": "8.57.
|
|
98
|
+
"typescript-eslint": "8.57.1",
|
|
98
99
|
"vitepress": "1.6.4",
|
|
99
|
-
"vitest": "4.0
|
|
100
|
+
"vitest": "4.1.0"
|
|
100
101
|
},
|
|
101
102
|
"engines": {
|
|
102
|
-
"node": ">=22.0.0"
|
|
103
|
+
"node": ">=22.0.0",
|
|
104
|
+
"pnpm": ">=10"
|
|
103
105
|
},
|
|
104
106
|
"publishConfig": {
|
|
105
107
|
"access": "public"
|
|
@@ -122,9 +124,11 @@
|
|
|
122
124
|
"fmt:check": "oxfmt --check .",
|
|
123
125
|
"generate": "pnpm run dev generate",
|
|
124
126
|
"generate:schema": "tsx scripts/generate-json-schema.ts",
|
|
127
|
+
"implement-loop": "tsx scripts/implement-loop.ts",
|
|
125
128
|
"knip": "knip",
|
|
126
129
|
"oxlint": "oxlint . --max-warnings 0",
|
|
127
130
|
"oxlint:fix": "oxlint . --fix --max-warnings 0",
|
|
131
|
+
"review-loop": "tsx scripts/review-loop.ts",
|
|
128
132
|
"secretlint": "secretlint --secretlintignore .gitignore \"**/*\"",
|
|
129
133
|
"sort": "sort-package-json",
|
|
130
134
|
"task": "tsx scripts/run-tasks.ts",
|