rulesync 14.0.1 → 14.1.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 CHANGED
@@ -119,7 +119,7 @@ The tables below show whether each tool supports a given feature (✅ = supporte
119
119
  | Devin Desktop | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
120
120
  | Warp | ✅ | ✅ | ✅ | | | ✅ | | ✅ | |
121
121
  | Replit | ✅ | | | | | ✅ | | | |
122
- | Pi Coding Agent | ✅ | | | ✅ | | ✅ | | | |
122
+ | Pi Coding Agent | ✅ | | | ✅ | | ✅ || | |
123
123
  | Zed | ✅ | ✅ | ✅ | | | ✅ | | ✅ | |
124
124
 
125
125
  <!-- SUPPORTED_TOOLS_AI:END -->
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const require_import = require("../import-Dh9PCQKq.cjs");
2
+ const require_import = require("../import-CDKxRD_F.cjs");
3
3
  let commander = require("commander");
4
4
  let zod_mini = require("zod/mini");
5
5
  let node_path = require("node:path");
@@ -55,7 +55,7 @@ async function convertCommand(logger, options) {
55
55
  ...options,
56
56
  targets: [fromTool, ...toTools],
57
57
  features: options.features ?? ["*"]
58
- });
58
+ }, { logger });
59
59
  const isPreview = config.isPreviewMode();
60
60
  const modePrefix = isPreview ? "[DRY RUN] " : "";
61
61
  logger.debug(`Converting files from ${fromTool} to ${toTools.join(", ")}...`);
@@ -1670,7 +1670,10 @@ const groupEntriesByDestination = ({ entries, resolveDestination }) => {
1670
1670
  const gitignoreCommand = async (logger, options) => {
1671
1671
  const gitignorePath = (0, node_path.join)(process.cwd(), ".gitignore");
1672
1672
  const gitattributesPath = (0, node_path.join)(process.cwd(), ".gitattributes");
1673
- const config = await require_import.ConfigResolver.resolve({});
1673
+ const config = await require_import.ConfigResolver.resolve({
1674
+ verbose: options?.verbose,
1675
+ silent: options?.silent
1676
+ }, { logger });
1674
1677
  const resolvedEntries = resolveGitignoreEntries({
1675
1678
  targets: options?.targets,
1676
1679
  features: options?.features,
@@ -5281,7 +5284,7 @@ async function runRulesyncInstall(logger, options) {
5281
5284
  configPath: options.configPath,
5282
5285
  verbose: options.verbose,
5283
5286
  silent: options.silent
5284
- })).getSources();
5287
+ }, { logger })).getSources();
5285
5288
  if (apmExists && sources.length > 0) throw new Error("Both apm.yml and rulesync.jsonc `sources` are defined. Pass --mode apm or --mode rulesync to disambiguate.");
5286
5289
  if (sources.length === 0) {
5287
5290
  if (apmExists) {
@@ -5336,7 +5339,7 @@ async function runGhInstall(logger, options) {
5336
5339
  configPath: options.configPath,
5337
5340
  verbose: options.verbose,
5338
5341
  silent: options.silent
5339
- })).getSources();
5342
+ }, { logger })).getSources();
5340
5343
  if (sources.length === 0) {
5341
5344
  logger.warn("No sources defined in configuration. Nothing to install.");
5342
5345
  return;
@@ -7667,10 +7670,16 @@ function wrapCommand$1({ name, errorCode, handler, getVersion, loggerFactory = c
7667
7670
  globalOpts,
7668
7671
  getVersion
7669
7672
  });
7670
- logger.configure({
7673
+ const cliLoggerOptions = {
7671
7674
  verbose: Boolean(globalOpts.verbose) || Boolean(options.verbose),
7672
7675
  silent: Boolean(globalOpts.silent) || Boolean(options.silent)
7676
+ };
7677
+ require_import.warnOnConflictingFlags({
7678
+ ...cliLoggerOptions,
7679
+ jsonMode: logger.jsonMode
7673
7680
  });
7681
+ logger.configure(cliLoggerOptions);
7682
+ require_import.fallbackLogger.configure(cliLoggerOptions);
7674
7683
  try {
7675
7684
  await handler(logger, options, globalOpts, positionalArgs);
7676
7685
  logger.outputJson(true);
@@ -7684,7 +7693,7 @@ function wrapCommand$1({ name, errorCode, handler, getVersion, loggerFactory = c
7684
7693
  }
7685
7694
  //#endregion
7686
7695
  //#region src/cli/index.ts
7687
- const getVersion = () => "14.0.1";
7696
+ const getVersion = () => "14.1.0";
7688
7697
  function wrapCommand(name, errorCode, handler) {
7689
7698
  return wrapCommand$1({
7690
7699
  name,
@@ -7706,7 +7715,9 @@ const main = async () => {
7706
7715
  const resolvedTargets = await resolveGitignoreTargets({ cliTargets });
7707
7716
  await gitignoreCommand(logger, {
7708
7717
  targets: resolvedTargets ? [...resolvedTargets] : void 0,
7709
- features: cliFeatures
7718
+ features: cliFeatures,
7719
+ verbose: options.verbose,
7720
+ silent: options.silent
7710
7721
  });
7711
7722
  }));
7712
7723
  program.command("fetch <source>").description("Fetch files from a Git repository (GitHub/GitLab)").option("-t, --target <target>", "Target format to interpret files as (e.g., 'rulesync', 'claudecode'). Default: rulesync").option("-f, --features <features>", `Comma-separated list of features to fetch (${require_import.ALL_FEATURES.join(",")}) or '*' for all`, parseCommaSeparatedList).option("-r, --ref <ref>", "Branch, tag, or commit SHA to fetch from").option("-p, --path <path>", "Subdirectory path within the repository").option("-o, --output <dir>", "Output directory (default: .rulesync)").option("-c, --conflict <strategy>", "Conflict resolution strategy: skip, overwrite (default: overwrite)").option("--token <token>", "Git provider token for private repositories").option("-V, --verbose", "Verbose output").option("-s, --silent", "Suppress all output").action(wrapCommand("fetch", "FETCH_FAILED", async (logger, options, _globalOpts, positionalArgs) => {
package/dist/cli/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { $ as isSymlink, A as CLAUDECODE_SETTINGS_LOCAL_FILE_NAME, At as RULESYNC_PERMISSIONS_JSONC_FILE_NAME, B as findControlCharacter, Bt as ALL_FEATURES_WITH_WILDCARD, C as CommandsProcessor, Ct as RULESYNC_MCP_FILE_NAME, D as CLAUDECODE_DIR, Dt as RULESYNC_NPM_SOURCES_LOCK_RELATIVE_FILE_PATH, E as CODEXCLI_DIR, Et as RULESYNC_MCP_SCHEMA_URL, F as RulesyncCheck, Ft as RULESYNC_SKILLS_RELATIVE_DIR_PATH, G as checkPathTraversal, H as JsonLogger, I as RulesyncCheckFrontmatterSchema, It as RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH, J as ensureDir, K as createTempDirectory, L as stringifyFrontmatter, Lt as RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, M as RulesyncCommand, Mt as RULESYNC_PERMISSIONS_SCHEMA_URL, N as RulesyncCommandFrontmatterSchema, Nt as RULESYNC_RELATIVE_DIR_PATH, O as CLAUDECODE_LOCAL_RULE_FILE_NAME, Ot as RULESYNC_OVERVIEW_FILE_NAME, P as ChecksProcessor, Pt as RULESYNC_RULES_RELATIVE_DIR_PATH, Q as getHomeDirectory, R as loadYaml, Rt as formatError, S as RulesyncHooks, St as RULESYNC_LOCAL_CONFIG_RELATIVE_FILE_PATH, T as CODEXCLI_BASH_RULES_FILE_NAME, Tt as RULESYNC_MCP_RELATIVE_FILE_PATH, U as CLIError, V as ConsoleLogger, W as ErrorCodes, X as findFilesByGlobs, Y as fileExists, Z as getFileSize, _ as McpProcessor, _t as RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH, a as convertFromTool, at as toPosixPath, b as RulesyncIgnore, bt as RULESYNC_HOOKS_RELATIVE_FILE_PATH, c as RulesyncRuleFrontmatterSchema, ct as ALL_TOOL_TARGETS_WITH_WILDCARD, d as RulesyncSubagentFrontmatterSchema, dt as RULESYNC_AIIGNORE_FILE_NAME, et as listDirectoryFiles, f as SkillsProcessor, ft as RULESYNC_AIIGNORE_RELATIVE_FILE_PATH, g as RulesyncPermissions, gt as RULESYNC_CONFIG_SCHEMA_URL, h as RulesyncSkillFrontmatterSchema, ht as RULESYNC_CONFIG_RELATIVE_FILE_PATH, i as getProcessorRegistryEntry, it as removeTempDirectory, j as CLAUDECODE_SKILLS_DIR_PATH, jt as RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH, k as CLAUDECODE_MEMORIES_DIR_NAME, kt as RULESYNC_PERMISSIONS_FILE_NAME, l as SubagentsProcessor, lt as ToolTargetSchema, m as RulesyncSkill, mt as RULESYNC_COMMANDS_RELATIVE_DIR_PATH, n as checkRulesyncDirExists, nt as removeDirectory, o as RulesProcessor, ot as writeFileContent, p as getLocalSkillDirNames, pt as RULESYNC_CHECKS_RELATIVE_DIR_PATH, q as directoryExists, r as generate, rt as removeFile, s as RulesyncRule, st as ALL_TOOL_TARGETS, t as importFromTool, tt as readFileContent, u as RulesyncSubagent, ut as MAX_FILE_SIZE, v as RulesyncMcp, vt as RULESYNC_HOOKS_FILE_NAME, w as SKILL_FILE_NAME$1, wt as RULESYNC_MCP_JSONC_FILE_NAME, x as HooksProcessor, xt as RULESYNC_IGNORE_RELATIVE_FILE_PATH, y as IgnoreProcessor, yt as RULESYNC_HOOKS_JSONC_FILE_NAME, z as ConfigResolver, zt as ALL_FEATURES } from "../import-CSnC5vl7.js";
2
+ import { $ as getFileSize, A as CLAUDECODE_SETTINGS_LOCAL_FILE_NAME, At as RULESYNC_OVERVIEW_FILE_NAME, B as findControlCharacter, Bt as formatError, C as CommandsProcessor, Ct as RULESYNC_IGNORE_RELATIVE_FILE_PATH, D as CLAUDECODE_DIR, Dt as RULESYNC_MCP_RELATIVE_FILE_PATH, E as CODEXCLI_DIR, Et as RULESYNC_MCP_JSONC_FILE_NAME, F as RulesyncCheck, Ft as RULESYNC_RELATIVE_DIR_PATH, G as CLIError, H as JsonLogger, Ht as ALL_FEATURES_WITH_WILDCARD, I as RulesyncCheckFrontmatterSchema, It as RULESYNC_RULES_RELATIVE_DIR_PATH, J as createTempDirectory, K as ErrorCodes, L as stringifyFrontmatter, Lt as RULESYNC_SKILLS_RELATIVE_DIR_PATH, M as RulesyncCommand, Mt as RULESYNC_PERMISSIONS_JSONC_FILE_NAME, N as RulesyncCommandFrontmatterSchema, Nt as RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH, O as CLAUDECODE_LOCAL_RULE_FILE_NAME, Ot as RULESYNC_MCP_SCHEMA_URL, P as ChecksProcessor, Pt as RULESYNC_PERMISSIONS_SCHEMA_URL, Q as findFilesByGlobs, R as loadYaml, Rt as RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH, S as RulesyncHooks, St as RULESYNC_HOOKS_RELATIVE_FILE_PATH, T as CODEXCLI_BASH_RULES_FILE_NAME, Tt as RULESYNC_MCP_FILE_NAME, U as fallbackLogger, V as ConsoleLogger, Vt as ALL_FEATURES, W as warnOnConflictingFlags, X as ensureDir, Y as directoryExists, Z as fileExists, _ as McpProcessor, _t as RULESYNC_CONFIG_RELATIVE_FILE_PATH, a as convertFromTool, at as removeFile, b as RulesyncIgnore, bt as RULESYNC_HOOKS_FILE_NAME, c as RulesyncRuleFrontmatterSchema, ct as writeFileContent, d as RulesyncSubagentFrontmatterSchema, dt as ToolTargetSchema, et as getHomeDirectory, f as SkillsProcessor, ft as MAX_FILE_SIZE, g as RulesyncPermissions, gt as RULESYNC_COMMANDS_RELATIVE_DIR_PATH, h as RulesyncSkillFrontmatterSchema, ht as RULESYNC_CHECKS_RELATIVE_DIR_PATH, i as getProcessorRegistryEntry, it as removeDirectory, j as CLAUDECODE_SKILLS_DIR_PATH, jt as RULESYNC_PERMISSIONS_FILE_NAME, k as CLAUDECODE_MEMORIES_DIR_NAME, kt as RULESYNC_NPM_SOURCES_LOCK_RELATIVE_FILE_PATH, l as SubagentsProcessor, lt as ALL_TOOL_TARGETS, m as RulesyncSkill, mt as RULESYNC_AIIGNORE_RELATIVE_FILE_PATH, n as checkRulesyncDirExists, nt as listDirectoryFiles, o as RulesProcessor, ot as removeTempDirectory, p as getLocalSkillDirNames, pt as RULESYNC_AIIGNORE_FILE_NAME, q as checkPathTraversal, r as generate, rt as readFileContent, s as RulesyncRule, st as toPosixPath, t as importFromTool, tt as isSymlink, u as RulesyncSubagent, ut as ALL_TOOL_TARGETS_WITH_WILDCARD, v as RulesyncMcp, vt as RULESYNC_CONFIG_SCHEMA_URL, w as SKILL_FILE_NAME$1, wt as RULESYNC_LOCAL_CONFIG_RELATIVE_FILE_PATH, x as HooksProcessor, xt as RULESYNC_HOOKS_JSONC_FILE_NAME, y as IgnoreProcessor, yt as RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH, z as ConfigResolver, zt as RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH } from "../import-BN4K49Ta.js";
3
3
  import { Command } from "commander";
4
4
  import { nonnegative, optional, refine, z } from "zod/mini";
5
5
  import * as path$1 from "node:path";
@@ -53,7 +53,7 @@ async function convertCommand(logger, options) {
53
53
  ...options,
54
54
  targets: [fromTool, ...toTools],
55
55
  features: options.features ?? ["*"]
56
- });
56
+ }, { logger });
57
57
  const isPreview = config.isPreviewMode();
58
58
  const modePrefix = isPreview ? "[DRY RUN] " : "";
59
59
  logger.debug(`Converting files from ${fromTool} to ${toTools.join(", ")}...`);
@@ -1668,7 +1668,10 @@ const groupEntriesByDestination = ({ entries, resolveDestination }) => {
1668
1668
  const gitignoreCommand = async (logger, options) => {
1669
1669
  const gitignorePath = join(process.cwd(), ".gitignore");
1670
1670
  const gitattributesPath = join(process.cwd(), ".gitattributes");
1671
- const config = await ConfigResolver.resolve({});
1671
+ const config = await ConfigResolver.resolve({
1672
+ verbose: options?.verbose,
1673
+ silent: options?.silent
1674
+ }, { logger });
1672
1675
  const resolvedEntries = resolveGitignoreEntries({
1673
1676
  targets: options?.targets,
1674
1677
  features: options?.features,
@@ -5279,7 +5282,7 @@ async function runRulesyncInstall(logger, options) {
5279
5282
  configPath: options.configPath,
5280
5283
  verbose: options.verbose,
5281
5284
  silent: options.silent
5282
- })).getSources();
5285
+ }, { logger })).getSources();
5283
5286
  if (apmExists && sources.length > 0) throw new Error("Both apm.yml and rulesync.jsonc `sources` are defined. Pass --mode apm or --mode rulesync to disambiguate.");
5284
5287
  if (sources.length === 0) {
5285
5288
  if (apmExists) {
@@ -5334,7 +5337,7 @@ async function runGhInstall(logger, options) {
5334
5337
  configPath: options.configPath,
5335
5338
  verbose: options.verbose,
5336
5339
  silent: options.silent
5337
- })).getSources();
5340
+ }, { logger })).getSources();
5338
5341
  if (sources.length === 0) {
5339
5342
  logger.warn("No sources defined in configuration. Nothing to install.");
5340
5343
  return;
@@ -7665,10 +7668,16 @@ function wrapCommand$1({ name, errorCode, handler, getVersion, loggerFactory = c
7665
7668
  globalOpts,
7666
7669
  getVersion
7667
7670
  });
7668
- logger.configure({
7671
+ const cliLoggerOptions = {
7669
7672
  verbose: Boolean(globalOpts.verbose) || Boolean(options.verbose),
7670
7673
  silent: Boolean(globalOpts.silent) || Boolean(options.silent)
7674
+ };
7675
+ warnOnConflictingFlags({
7676
+ ...cliLoggerOptions,
7677
+ jsonMode: logger.jsonMode
7671
7678
  });
7679
+ logger.configure(cliLoggerOptions);
7680
+ fallbackLogger.configure(cliLoggerOptions);
7672
7681
  try {
7673
7682
  await handler(logger, options, globalOpts, positionalArgs);
7674
7683
  logger.outputJson(true);
@@ -7682,7 +7691,7 @@ function wrapCommand$1({ name, errorCode, handler, getVersion, loggerFactory = c
7682
7691
  }
7683
7692
  //#endregion
7684
7693
  //#region src/cli/index.ts
7685
- const getVersion = () => "14.0.1";
7694
+ const getVersion = () => "14.1.0";
7686
7695
  function wrapCommand(name, errorCode, handler) {
7687
7696
  return wrapCommand$1({
7688
7697
  name,
@@ -7704,7 +7713,9 @@ const main = async () => {
7704
7713
  const resolvedTargets = await resolveGitignoreTargets({ cliTargets });
7705
7714
  await gitignoreCommand(logger, {
7706
7715
  targets: resolvedTargets ? [...resolvedTargets] : void 0,
7707
- features: cliFeatures
7716
+ features: cliFeatures,
7717
+ verbose: options.verbose,
7718
+ silent: options.silent
7708
7719
  });
7709
7720
  }));
7710
7721
  program.command("fetch <source>").description("Fetch files from a Git repository (GitHub/GitLab)").option("-t, --target <target>", "Target format to interpret files as (e.g., 'rulesync', 'claudecode'). Default: rulesync").option("-f, --features <features>", `Comma-separated list of features to fetch (${ALL_FEATURES.join(",")}) or '*' for all`, parseCommaSeparatedList).option("-r, --ref <ref>", "Branch, tag, or commit SHA to fetch from").option("-p, --path <path>", "Subdirectory path within the repository").option("-o, --output <dir>", "Output directory (default: .rulesync)").option("-c, --conflict <strategy>", "Conflict resolution strategy: skip, overwrite (default: overwrite)").option("--token <token>", "Git provider token for private repositories").option("-V, --verbose", "Verbose output").option("-s, --silent", "Suppress all output").action(wrapCommand("fetch", "FETCH_FAILED", async (logger, options, _globalOpts, positionalArgs) => {