rulesync 9.1.0 → 9.2.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/cli/index.cjs +11 -11
- package/dist/cli/index.js +11 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/{import-ylOvQDpE.js → import-BkxwFCDM.js} +190 -97
- package/dist/import-BkxwFCDM.js.map +1 -0
- package/dist/{import-CNtfs80W.cjs → import-H0MKtu9x.cjs} +189 -96
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +16 -16
- package/dist/import-ylOvQDpE.js.map +0 -1
|
@@ -7142,6 +7142,12 @@ var CodexcliHooks = class CodexcliHooks extends ToolHooks {
|
|
|
7142
7142
|
relativeFilePath: CODEXCLI_HOOKS_FILE_NAME
|
|
7143
7143
|
};
|
|
7144
7144
|
}
|
|
7145
|
+
static getExtraSharedWritePaths() {
|
|
7146
|
+
return [{
|
|
7147
|
+
relativeDirPath: CODEXCLI_DIR,
|
|
7148
|
+
relativeFilePath: CODEXCLI_MCP_FILE_NAME
|
|
7149
|
+
}];
|
|
7150
|
+
}
|
|
7145
7151
|
static async fromFile({ outputRoot = process.cwd(), validate = true, global = false }) {
|
|
7146
7152
|
const paths = CodexcliHooks.getSettablePaths({ global });
|
|
7147
7153
|
const fileContent = await readFileContentOrNull(join(outputRoot, paths.relativeDirPath, paths.relativeFilePath)) ?? "{\"hooks\":{}}";
|
|
@@ -9732,6 +9738,12 @@ var VibeHooks = class VibeHooks extends ToolHooks {
|
|
|
9732
9738
|
relativeFilePath: VIBE_HOOKS_FILE_NAME
|
|
9733
9739
|
};
|
|
9734
9740
|
}
|
|
9741
|
+
static getExtraSharedWritePaths() {
|
|
9742
|
+
return [{
|
|
9743
|
+
relativeDirPath: VIBE_DIR,
|
|
9744
|
+
relativeFilePath: VIBE_CONFIG_FILE_NAME
|
|
9745
|
+
}];
|
|
9746
|
+
}
|
|
9735
9747
|
static async fromFile({ outputRoot = process.cwd(), validate = true, global = false }) {
|
|
9736
9748
|
const paths = VibeHooks.getSettablePaths({ global });
|
|
9737
9749
|
const fileContent = await readFileContentOrNull(join(outputRoot, paths.relativeDirPath, paths.relativeFilePath)) ?? smolToml.stringify({});
|
|
@@ -10450,6 +10462,66 @@ var AugmentcodeIgnore = class AugmentcodeIgnore extends ToolIgnore {
|
|
|
10450
10462
|
}
|
|
10451
10463
|
};
|
|
10452
10464
|
//#endregion
|
|
10465
|
+
//#region src/features/claudecode-settings-gateway.ts
|
|
10466
|
+
/**
|
|
10467
|
+
* Single owner of the `.claude/settings.json` `permissions` block, which both
|
|
10468
|
+
* `ignore` (writes `Read(...)` into `permissions.deny`) and `permissions`
|
|
10469
|
+
* (writes the whole `allow`/`ask`/`deny`) read-modify-write. The entry format,
|
|
10470
|
+
* the merge, and the cross-feature ownership rule (permissions' explicit `Read`
|
|
10471
|
+
* rules win over ignore-derived `Read` denies) used to be duplicated across both
|
|
10472
|
+
* feature files; they live here once so each feature just states its intent and
|
|
10473
|
+
* never reasons about the other's existence.
|
|
10474
|
+
*/
|
|
10475
|
+
const READ_TOOL_NAME = "Read";
|
|
10476
|
+
const isReadDenyEntry = (entry) => entry.startsWith(`${READ_TOOL_NAME}(`) && entry.endsWith(")");
|
|
10477
|
+
const buildReadDenyEntry = (pattern) => `${READ_TOOL_NAME}(${pattern})`;
|
|
10478
|
+
const parsePermissionsBlock = (settings) => {
|
|
10479
|
+
const permissions = settings.permissions ?? {};
|
|
10480
|
+
return {
|
|
10481
|
+
allow: permissions.allow ?? [],
|
|
10482
|
+
ask: permissions.ask ?? [],
|
|
10483
|
+
deny: permissions.deny ?? []
|
|
10484
|
+
};
|
|
10485
|
+
};
|
|
10486
|
+
const withPermissions = (settings, next) => {
|
|
10487
|
+
const permissions = { ...settings.permissions };
|
|
10488
|
+
const assign = (key, values) => {
|
|
10489
|
+
if (values.length > 0) permissions[key] = values;
|
|
10490
|
+
else delete permissions[key];
|
|
10491
|
+
};
|
|
10492
|
+
assign("allow", next.allow);
|
|
10493
|
+
assign("ask", next.ask);
|
|
10494
|
+
assign("deny", next.deny);
|
|
10495
|
+
return {
|
|
10496
|
+
...settings,
|
|
10497
|
+
permissions
|
|
10498
|
+
};
|
|
10499
|
+
};
|
|
10500
|
+
const applyIgnoreReadDenies = (params) => {
|
|
10501
|
+
const { settings, readDenies } = params;
|
|
10502
|
+
const current = parsePermissionsBlock(settings);
|
|
10503
|
+
const preservedDeny = current.deny.filter((entry) => !isReadDenyEntry(entry) || readDenies.includes(entry));
|
|
10504
|
+
return withPermissions(settings, {
|
|
10505
|
+
allow: current.allow,
|
|
10506
|
+
ask: current.ask,
|
|
10507
|
+
deny: uniq([...preservedDeny, ...readDenies].toSorted())
|
|
10508
|
+
});
|
|
10509
|
+
};
|
|
10510
|
+
const applyPermissions = (params) => {
|
|
10511
|
+
const { settings, managedToolNames, toolNameOf, allow, ask, deny, logger } = params;
|
|
10512
|
+
const current = parsePermissionsBlock(settings);
|
|
10513
|
+
const keepUnmanaged = (entries) => entries.filter((entry) => !managedToolNames.has(toolNameOf(entry)));
|
|
10514
|
+
if (logger && managedToolNames.has(READ_TOOL_NAME)) {
|
|
10515
|
+
const overwrittenReadDenies = current.deny.filter((entry) => toolNameOf(entry) === READ_TOOL_NAME);
|
|
10516
|
+
if (overwrittenReadDenies.length > 0) logger.warn(`Permissions feature manages '${READ_TOOL_NAME}' tool and will overwrite ${overwrittenReadDenies.length} existing ${READ_TOOL_NAME} deny entries. Permissions take precedence.`);
|
|
10517
|
+
}
|
|
10518
|
+
return withPermissions(settings, {
|
|
10519
|
+
allow: uniq([...keepUnmanaged(current.allow), ...allow].toSorted()),
|
|
10520
|
+
ask: uniq([...keepUnmanaged(current.ask), ...ask].toSorted()),
|
|
10521
|
+
deny: uniq([...keepUnmanaged(current.deny), ...deny].toSorted())
|
|
10522
|
+
});
|
|
10523
|
+
};
|
|
10524
|
+
//#endregion
|
|
10453
10525
|
//#region src/features/ignore/claudecode-ignore.ts
|
|
10454
10526
|
const DEFAULT_FILE_MODE = "shared";
|
|
10455
10527
|
/**
|
|
@@ -10496,7 +10568,7 @@ var ClaudecodeIgnore = class ClaudecodeIgnore extends ToolIgnore {
|
|
|
10496
10568
|
}
|
|
10497
10569
|
toRulesyncIgnore() {
|
|
10498
10570
|
const fileContent = this.patterns.map((pattern) => {
|
|
10499
|
-
if (
|
|
10571
|
+
if (isReadDenyEntry(pattern)) return pattern.slice(5, -1);
|
|
10500
10572
|
return pattern;
|
|
10501
10573
|
}).filter((pattern) => pattern.length > 0).join("\n");
|
|
10502
10574
|
return new RulesyncIgnore({
|
|
@@ -10507,22 +10579,20 @@ var ClaudecodeIgnore = class ClaudecodeIgnore extends ToolIgnore {
|
|
|
10507
10579
|
});
|
|
10508
10580
|
}
|
|
10509
10581
|
static async fromRulesyncIgnore({ outputRoot = process.cwd(), rulesyncIgnore, options }) {
|
|
10510
|
-
const deniedValues = rulesyncIgnore.getFileContent().split(/\r?\n|\r/).map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#")).map((pattern) =>
|
|
10582
|
+
const deniedValues = rulesyncIgnore.getFileContent().split(/\r?\n|\r/).map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#")).map((pattern) => buildReadDenyEntry(pattern));
|
|
10511
10583
|
const paths = this.getSettablePaths({ options });
|
|
10512
10584
|
const filePath = join(outputRoot, paths.relativeDirPath, paths.relativeFilePath);
|
|
10513
10585
|
const existingFileContent = await fileExists(filePath) ? await readFileContent(filePath) : "{}";
|
|
10514
|
-
|
|
10515
|
-
|
|
10516
|
-
|
|
10517
|
-
|
|
10586
|
+
let existingJsonValue;
|
|
10587
|
+
try {
|
|
10588
|
+
existingJsonValue = JSON.parse(existingFileContent);
|
|
10589
|
+
} catch (error) {
|
|
10590
|
+
throw new Error(`Failed to parse existing Claude settings at ${filePath}: ${formatError(error)}`, { cause: error });
|
|
10591
|
+
}
|
|
10592
|
+
const jsonValue = applyIgnoreReadDenies({
|
|
10593
|
+
settings: existingJsonValue,
|
|
10594
|
+
readDenies: deniedValues
|
|
10518
10595
|
});
|
|
10519
|
-
const jsonValue = {
|
|
10520
|
-
...existingJsonValue,
|
|
10521
|
-
permissions: {
|
|
10522
|
-
...existingJsonValue.permissions,
|
|
10523
|
-
deny: uniq([...preservedDenies, ...deniedValues].toSorted())
|
|
10524
|
-
}
|
|
10525
|
-
};
|
|
10526
10596
|
return new ClaudecodeIgnore({
|
|
10527
10597
|
outputRoot,
|
|
10528
10598
|
relativeDirPath: paths.relativeDirPath,
|
|
@@ -17059,31 +17129,15 @@ var ClaudecodePermissions = class ClaudecodePermissions extends ToolPermissions
|
|
|
17059
17129
|
const config = rulesyncPermissions.getJson();
|
|
17060
17130
|
const { allow, ask, deny } = convertRulesyncToClaudePermissions(config);
|
|
17061
17131
|
const managedToolNames = new Set(Object.keys(config.permission).map((category) => toClaudeToolName(category)));
|
|
17062
|
-
const
|
|
17063
|
-
|
|
17064
|
-
|
|
17065
|
-
|
|
17066
|
-
|
|
17067
|
-
|
|
17068
|
-
|
|
17069
|
-
|
|
17070
|
-
|
|
17071
|
-
if (droppedReadDenyEntries.length > 0) logger.warn(`Permissions feature manages 'Read' tool and will overwrite ${droppedReadDenyEntries.length} existing Read deny entries (possibly from ignore feature). Permissions take precedence.`);
|
|
17072
|
-
}
|
|
17073
|
-
const mergedPermissions = { ...existingPermissions };
|
|
17074
|
-
const mergedAllow = uniq([...preservedAllow, ...allow].toSorted());
|
|
17075
|
-
const mergedAsk = uniq([...preservedAsk, ...ask].toSorted());
|
|
17076
|
-
const mergedDeny = uniq([...preservedDeny, ...deny].toSorted());
|
|
17077
|
-
if (mergedAllow.length > 0) mergedPermissions.allow = mergedAllow;
|
|
17078
|
-
else delete mergedPermissions.allow;
|
|
17079
|
-
if (mergedAsk.length > 0) mergedPermissions.ask = mergedAsk;
|
|
17080
|
-
else delete mergedPermissions.ask;
|
|
17081
|
-
if (mergedDeny.length > 0) mergedPermissions.deny = mergedDeny;
|
|
17082
|
-
else delete mergedPermissions.deny;
|
|
17083
|
-
const merged = {
|
|
17084
|
-
...settings,
|
|
17085
|
-
permissions: mergedPermissions
|
|
17086
|
-
};
|
|
17132
|
+
const merged = applyPermissions({
|
|
17133
|
+
settings,
|
|
17134
|
+
managedToolNames,
|
|
17135
|
+
toolNameOf: (entry) => parseClaudePermissionEntry(entry).toolName,
|
|
17136
|
+
allow,
|
|
17137
|
+
ask,
|
|
17138
|
+
deny,
|
|
17139
|
+
logger
|
|
17140
|
+
});
|
|
17087
17141
|
const fileContent = JSON.stringify(merged, null, 2);
|
|
17088
17142
|
return new ClaudecodePermissions({
|
|
17089
17143
|
outputRoot,
|
|
@@ -33761,6 +33815,9 @@ var KiloRule = class KiloRule extends ToolRule {
|
|
|
33761
33815
|
nonRoot: { relativeDirPath: buildToolPath(KILO_DIR, KILO_RULES_DIR_NAME, excludeToolDir) }
|
|
33762
33816
|
};
|
|
33763
33817
|
}
|
|
33818
|
+
static getExtraSharedWritePaths({ global = false } = {}) {
|
|
33819
|
+
return global ? [] : [KiloMcp.getSettablePaths({ global: false })];
|
|
33820
|
+
}
|
|
33764
33821
|
static async fromFile({ outputRoot = process.cwd(), relativeFilePath, validate = true, global = false }) {
|
|
33765
33822
|
const paths = this.getSettablePaths({ global });
|
|
33766
33823
|
if (relativeFilePath === paths.root.relativeFilePath) {
|
|
@@ -34022,6 +34079,9 @@ var OpenCodeRule = class OpenCodeRule extends ToolRule {
|
|
|
34022
34079
|
nonRoot: { relativeDirPath: buildToolPath(OPENCODE_DIR, "memories", excludeToolDir) }
|
|
34023
34080
|
};
|
|
34024
34081
|
}
|
|
34082
|
+
static getExtraSharedWritePaths({ global = false } = {}) {
|
|
34083
|
+
return global ? [] : [OpencodeMcp.getSettablePaths({ global: false })];
|
|
34084
|
+
}
|
|
34025
34085
|
static async fromFile({ outputRoot = process.cwd(), relativeFilePath, validate = true, global = false }) {
|
|
34026
34086
|
const paths = this.getSettablePaths({ global });
|
|
34027
34087
|
if (relativeFilePath === paths.root.relativeFilePath) {
|
|
@@ -34698,6 +34758,37 @@ var RovodevRule = class RovodevRule extends ToolRule {
|
|
|
34698
34758
|
toolTarget: "rovodev"
|
|
34699
34759
|
});
|
|
34700
34760
|
}
|
|
34761
|
+
/**
|
|
34762
|
+
* Mirror the primary `.rovodev/AGENTS.md` root rule to `./AGENTS.md` so project
|
|
34763
|
+
* memory stays discoverable at the repo root. Empty when `rootRule` is not the primary root.
|
|
34764
|
+
*/
|
|
34765
|
+
static getRootMirrorFiles({ outputRoot, rootRule, content }) {
|
|
34766
|
+
if (!(rootRule instanceof RovodevRule)) return [];
|
|
34767
|
+
const primary = this.getSettablePaths({ global: false }).root;
|
|
34768
|
+
if (rootRule.getRelativeDirPath() !== primary.relativeDirPath || rootRule.getRelativeFilePath() !== primary.relativeFilePath) return [];
|
|
34769
|
+
return [new RovodevRule({
|
|
34770
|
+
outputRoot,
|
|
34771
|
+
relativeDirPath: ".",
|
|
34772
|
+
relativeFilePath: ROVODEV_RULE_FILE_NAME,
|
|
34773
|
+
fileContent: content,
|
|
34774
|
+
validate: true,
|
|
34775
|
+
root: true
|
|
34776
|
+
})];
|
|
34777
|
+
}
|
|
34778
|
+
/**
|
|
34779
|
+
* Globs for mirror deletion: the `./AGENTS.md` mirror (`mirrorGlob`) is deleted
|
|
34780
|
+
* only when the primary `.rovodev/AGENTS.md` (`primaryGlob`) still exists.
|
|
34781
|
+
*/
|
|
34782
|
+
static getRootMirrorDeletionGlobs({ outputRoot }) {
|
|
34783
|
+
return {
|
|
34784
|
+
primaryGlob: join(outputRoot, ROVODEV_DIR, ROVODEV_RULE_FILE_NAME),
|
|
34785
|
+
mirrorGlob: join(outputRoot, ROVODEV_RULE_FILE_NAME)
|
|
34786
|
+
};
|
|
34787
|
+
}
|
|
34788
|
+
/** Glob for the `separate-local-file` deletion; rovodev writes it at project root, not under `.rovodev/`. */
|
|
34789
|
+
static getLocalRootDeletionGlob({ outputRoot, fileName }) {
|
|
34790
|
+
return join(outputRoot, fileName);
|
|
34791
|
+
}
|
|
34701
34792
|
};
|
|
34702
34793
|
//#endregion
|
|
34703
34794
|
//#region src/features/rules/takt-rule.ts
|
|
@@ -35420,7 +35511,7 @@ var RulesProcessor = class extends FeatureProcessor {
|
|
|
35420
35511
|
});
|
|
35421
35512
|
this.applyRootRuleSections({
|
|
35422
35513
|
toolRules,
|
|
35423
|
-
|
|
35514
|
+
factory
|
|
35424
35515
|
});
|
|
35425
35516
|
return [...toolRules, ...extraFiles];
|
|
35426
35517
|
}
|
|
@@ -35482,31 +35573,16 @@ var RulesProcessor = class extends FeatureProcessor {
|
|
|
35482
35573
|
* reference and conventions sections to the root rule content. Mutates the
|
|
35483
35574
|
* root rule in place.
|
|
35484
35575
|
*/
|
|
35485
|
-
applyRootRuleSections({ toolRules,
|
|
35576
|
+
applyRootRuleSections({ toolRules, factory }) {
|
|
35577
|
+
const { meta } = factory;
|
|
35486
35578
|
const rootRule = toolRules.find((rule) => rule.isRoot());
|
|
35487
35579
|
if (!rootRule) return;
|
|
35488
35580
|
const newContent = this.generateReferenceSectionFromMeta(meta, toolRules) + (!meta.createsSeparateConventionsRule && meta.additionalConventions ? this.generateAdditionalConventionsSectionFromMeta(meta) : "") + rootRule.getFileContent();
|
|
35489
35581
|
rootRule.setFileContent(newContent);
|
|
35490
|
-
if (meta.mirrorsRootToAgentsMd && !this.global)
|
|
35491
|
-
|
|
35582
|
+
if (meta.mirrorsRootToAgentsMd && !this.global && factory.class.getRootMirrorFiles) toolRules.push(...factory.class.getRootMirrorFiles({
|
|
35583
|
+
outputRoot: this.outputRoot,
|
|
35492
35584
|
rootRule,
|
|
35493
35585
|
content: newContent
|
|
35494
|
-
});
|
|
35495
|
-
}
|
|
35496
|
-
/**
|
|
35497
|
-
* Mirror the primary root rule to a project-root `AGENTS.md` for tools whose
|
|
35498
|
-
* primary root lives in a subdirectory (rovodev: `.rovodev/AGENTS.md`).
|
|
35499
|
-
*/
|
|
35500
|
-
mirrorRootRuleToAgentsMd({ toolRules, rootRule, content }) {
|
|
35501
|
-
if (!(rootRule instanceof RovodevRule)) return;
|
|
35502
|
-
const primary = RovodevRule.getSettablePaths({ global: false }).root;
|
|
35503
|
-
if (rootRule.getRelativeDirPath() === primary.relativeDirPath && rootRule.getRelativeFilePath() === primary.relativeFilePath) toolRules.push(new RovodevRule({
|
|
35504
|
-
outputRoot: this.outputRoot,
|
|
35505
|
-
relativeDirPath: ".",
|
|
35506
|
-
relativeFilePath: "AGENTS.md",
|
|
35507
|
-
fileContent: content,
|
|
35508
|
-
validate: true,
|
|
35509
|
-
root: true
|
|
35510
35586
|
}));
|
|
35511
35587
|
}
|
|
35512
35588
|
buildSkillList(skillClass) {
|
|
@@ -35732,15 +35808,19 @@ As this project's AI coding tool, you must follow the additional conventions bel
|
|
|
35732
35808
|
const localRootToolRules = await (async () => {
|
|
35733
35809
|
if (!forDeletion || this.global || factory.meta.localRootMode !== "separate-local-file" || !factory.meta.localRootFileName) return [];
|
|
35734
35810
|
const fileName = factory.meta.localRootFileName;
|
|
35735
|
-
if (factory.class
|
|
35811
|
+
if (factory.class.getLocalRootDeletionGlob) return buildDeletionRulesFromPaths(await findFilesByGlobs(factory.class.getLocalRootDeletionGlob({
|
|
35812
|
+
outputRoot: this.outputRoot,
|
|
35813
|
+
fileName
|
|
35814
|
+
})));
|
|
35736
35815
|
if (!settablePaths.root) return [];
|
|
35737
35816
|
return buildDeletionRulesFromPaths(await findFilesWithFallback(join(this.outputRoot, settablePaths.root.relativeDirPath ?? ".", fileName), settablePaths.alternativeRoots, (alt) => join(this.outputRoot, alt.relativeDirPath, fileName)));
|
|
35738
35817
|
})();
|
|
35739
35818
|
this.logger.debug(`Found ${localRootToolRules.length} local root tool rule files for deletion`);
|
|
35740
35819
|
const rootMirrorDeletionRules = await (async () => {
|
|
35741
|
-
if (!forDeletion || this.global || !factory.meta.mirrorsRootToAgentsMd || factory.class
|
|
35742
|
-
|
|
35743
|
-
|
|
35820
|
+
if (!forDeletion || this.global || !factory.meta.mirrorsRootToAgentsMd || !factory.class.getRootMirrorDeletionGlobs) return [];
|
|
35821
|
+
const { primaryGlob, mirrorGlob } = factory.class.getRootMirrorDeletionGlobs({ outputRoot: this.outputRoot });
|
|
35822
|
+
if ((await findFilesByGlobs(primaryGlob)).length === 0) return [];
|
|
35823
|
+
return buildDeletionRulesFromPaths(await findFilesByGlobs(mirrorGlob));
|
|
35744
35824
|
})();
|
|
35745
35825
|
const nonRootToolRules = await (async () => {
|
|
35746
35826
|
if (!settablePaths.nonRoot) return [];
|
|
@@ -36254,22 +36334,29 @@ function resolveExecutionOrder(steps) {
|
|
|
36254
36334
|
const GENERATION_STEP_GRAPH = [
|
|
36255
36335
|
{
|
|
36256
36336
|
id: "ignore",
|
|
36257
|
-
writesSharedFile: ["claude
|
|
36337
|
+
writesSharedFile: [".claude/settings.json", ".zed/settings.json"]
|
|
36258
36338
|
},
|
|
36259
36339
|
{
|
|
36260
36340
|
id: "mcp",
|
|
36261
36341
|
writesSharedFile: [
|
|
36262
|
-
"
|
|
36263
|
-
"
|
|
36264
|
-
"
|
|
36265
|
-
"
|
|
36266
|
-
"
|
|
36267
|
-
"
|
|
36268
|
-
"
|
|
36269
|
-
"
|
|
36270
|
-
"
|
|
36271
|
-
"
|
|
36272
|
-
"
|
|
36342
|
+
".amp/settings.json",
|
|
36343
|
+
".augment/settings.json",
|
|
36344
|
+
".codex/config.toml",
|
|
36345
|
+
".config/amp/settings.json",
|
|
36346
|
+
".config/devin/config.json",
|
|
36347
|
+
".config/opencode/opencode.json",
|
|
36348
|
+
".config/zed/settings.json",
|
|
36349
|
+
".devin/config.json",
|
|
36350
|
+
".grok/config.toml",
|
|
36351
|
+
".hermes/config.yaml",
|
|
36352
|
+
".qwen/settings.json",
|
|
36353
|
+
".reasonix/config.toml",
|
|
36354
|
+
".takt/config.yaml",
|
|
36355
|
+
".vibe/config.toml",
|
|
36356
|
+
".zed/settings.json",
|
|
36357
|
+
"kilo.json",
|
|
36358
|
+
"opencode.json",
|
|
36359
|
+
"reasonix.toml"
|
|
36273
36360
|
],
|
|
36274
36361
|
dependsOn: ["ignore"]
|
|
36275
36362
|
},
|
|
@@ -36279,33 +36366,39 @@ const GENERATION_STEP_GRAPH = [
|
|
|
36279
36366
|
{
|
|
36280
36367
|
id: "hooks",
|
|
36281
36368
|
writesSharedFile: [
|
|
36282
|
-
"
|
|
36283
|
-
"
|
|
36284
|
-
"
|
|
36285
|
-
"
|
|
36286
|
-
"
|
|
36287
|
-
"
|
|
36288
|
-
"
|
|
36289
|
-
"
|
|
36369
|
+
".augment/settings.json",
|
|
36370
|
+
".claude/settings.json",
|
|
36371
|
+
".codex/config.toml",
|
|
36372
|
+
".config/devin/config.json",
|
|
36373
|
+
".hermes/config.yaml",
|
|
36374
|
+
".kiro/agents/default.json",
|
|
36375
|
+
".qwen/settings.json",
|
|
36376
|
+
".vibe/config.toml"
|
|
36290
36377
|
],
|
|
36291
36378
|
dependsOn: ["ignore", "mcp"]
|
|
36292
36379
|
},
|
|
36293
36380
|
{
|
|
36294
36381
|
id: "permissions",
|
|
36295
36382
|
writesSharedFile: [
|
|
36296
|
-
"
|
|
36297
|
-
"
|
|
36298
|
-
"
|
|
36299
|
-
"
|
|
36300
|
-
"
|
|
36301
|
-
"
|
|
36302
|
-
"
|
|
36303
|
-
"
|
|
36304
|
-
"
|
|
36305
|
-
"
|
|
36306
|
-
"
|
|
36307
|
-
"
|
|
36308
|
-
"
|
|
36383
|
+
".amp/settings.json",
|
|
36384
|
+
".augment/settings.json",
|
|
36385
|
+
".claude/settings.json",
|
|
36386
|
+
".codex/config.toml",
|
|
36387
|
+
".config/amp/settings.json",
|
|
36388
|
+
".config/devin/config.json",
|
|
36389
|
+
".config/opencode/opencode.json",
|
|
36390
|
+
".config/zed/settings.json",
|
|
36391
|
+
".devin/config.json",
|
|
36392
|
+
".grok/config.toml",
|
|
36393
|
+
".hermes/config.yaml",
|
|
36394
|
+
".kiro/agents/default.json",
|
|
36395
|
+
".qwen/settings.json",
|
|
36396
|
+
".reasonix/config.toml",
|
|
36397
|
+
".takt/config.yaml",
|
|
36398
|
+
".vibe/config.toml",
|
|
36399
|
+
".zed/settings.json",
|
|
36400
|
+
"opencode.json",
|
|
36401
|
+
"reasonix.toml"
|
|
36309
36402
|
],
|
|
36310
36403
|
dependsOn: [
|
|
36311
36404
|
"ignore",
|
|
@@ -36315,7 +36408,7 @@ const GENERATION_STEP_GRAPH = [
|
|
|
36315
36408
|
},
|
|
36316
36409
|
{
|
|
36317
36410
|
id: "rules",
|
|
36318
|
-
writesSharedFile: ["kilo
|
|
36411
|
+
writesSharedFile: ["kilo.json", "opencode.json"],
|
|
36319
36412
|
dependsOn: [
|
|
36320
36413
|
"mcp",
|
|
36321
36414
|
"skills",
|
|
@@ -37014,4 +37107,4 @@ async function importPermissionsCore(params) {
|
|
|
37014
37107
|
//#endregion
|
|
37015
37108
|
export { CLIError as $, IgnoreProcessor as A, RULESYNC_LOCAL_CONFIG_RELATIVE_FILE_PATH as At, toolCommandFactories as B, RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH as Bt, PermissionsProcessorToolTargetSchema as C, RULESYNC_COMMANDS_RELATIVE_DIR_PATH as Ct, McpProcessorToolTargetSchema as D, RULESYNC_HOOKS_FILE_NAME as Dt, McpProcessor as E, RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH as Et, HooksProcessorToolTargetSchema as F, RULESYNC_PERMISSIONS_FILE_NAME as Ft, CLAUDECODE_SKILLS_DIR_PATH as G, CLAUDECODE_LOCAL_RULE_FILE_NAME as H, formatError as Ht, toolHooksFactories as I, RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH as It, stringifyFrontmatter as J, RulesyncCommand as K, RulesyncHooks as L, RULESYNC_RELATIVE_DIR_PATH as Lt, toolIgnoreFactories as M, RULESYNC_MCP_RELATIVE_FILE_PATH as Mt, RulesyncIgnore as N, RULESYNC_MCP_SCHEMA_URL as Nt, toolMcpFactories as O, RULESYNC_HOOKS_RELATIVE_FILE_PATH as Ot, HooksProcessor as P, RULESYNC_OVERVIEW_FILE_NAME as Pt, JsonLogger as Q, CommandsProcessor as R, RULESYNC_RULES_RELATIVE_DIR_PATH as Rt, PermissionsProcessor as S, RULESYNC_AIIGNORE_RELATIVE_FILE_PATH as St, RulesyncPermissions as T, RULESYNC_CONFIG_SCHEMA_URL as Tt, CLAUDECODE_MEMORIES_DIR_NAME as U, ALL_FEATURES as Ut, CLAUDECODE_DIR as V, RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH as Vt, CLAUDECODE_SETTINGS_LOCAL_FILE_NAME as W, ALL_FEATURES_WITH_WILDCARD as Wt, findControlCharacter as X, ConfigResolver as Y, ConsoleLogger as Z, toolSkillFactories as _, ALL_TOOL_TARGETS as _t, RulesProcessor as a, fileExists as at, RulesyncSkillFrontmatterSchema as b, MAX_FILE_SIZE as bt, RulesyncRule as c, getHomeDirectory as ct, SubagentsProcessorToolTargetSchema as d, readFileContent as dt, ErrorCodes as et, toolSubagentFactories as f, removeDirectory as ft, SkillsProcessorToolTargetSchema as g, writeFileContent as gt, SkillsProcessor as h, toPosixPath as ht, convertFromTool as i, ensureDir as it, IgnoreProcessorToolTargetSchema as j, RULESYNC_MCP_FILE_NAME as jt, RulesyncMcp as k, RULESYNC_IGNORE_RELATIVE_FILE_PATH as kt, RulesyncRuleFrontmatterSchema as l, isSymlink as lt, RulesyncSubagentFrontmatterSchema as m, removeTempDirectory as mt, checkRulesyncDirExists as n, createTempDirectory as nt, RulesProcessorToolTargetSchema as o, findFilesByGlobs as ot, RulesyncSubagent as p, removeFile as pt, RulesyncCommandFrontmatterSchema as q, generate as r, directoryExists as rt, toolRuleFactories as s, getFileSize as st, importFromTool as t, checkPathTraversal as tt, SubagentsProcessor as u, listDirectoryFiles as ut, getLocalSkillDirNames as v, ALL_TOOL_TARGETS_WITH_WILDCARD as vt, toolPermissionsFactories as w, RULESYNC_CONFIG_RELATIVE_FILE_PATH as wt, SKILL_FILE_NAME as x, RULESYNC_AIIGNORE_FILE_NAME as xt, RulesyncSkill as y, ToolTargetSchema as yt, CommandsProcessorToolTargetSchema as z, RULESYNC_SKILLS_RELATIVE_DIR_PATH as zt };
|
|
37016
37109
|
|
|
37017
|
-
//# sourceMappingURL=import-
|
|
37110
|
+
//# sourceMappingURL=import-BkxwFCDM.js.map
|