rulesync 3.34.0 → 4.0.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
@@ -266,11 +266,6 @@ Example:
266
266
  "simulateSubagents": false, // Generate simulated subagents
267
267
  "simulateSkills": false, // Generate simulated skills
268
268
  "modularMcp": false // Enable modular-mcp for context compression (experimental, Claude Code only)
269
-
270
- // Deprecated experimental options (for backward compatibility)
271
- // "experimentalGlobal": false,
272
- // "experimentalSimulateCommands": false,
273
- // "experimentalSimulateSubagents": false
274
269
  }
275
270
  ```
276
271
 
package/dist/index.cjs CHANGED
@@ -292,11 +292,7 @@ var ConfigParamsSchema = import_mini3.z.object({
292
292
  simulateCommands: (0, import_mini3.optional)(import_mini3.z.boolean()),
293
293
  simulateSubagents: (0, import_mini3.optional)(import_mini3.z.boolean()),
294
294
  simulateSkills: (0, import_mini3.optional)(import_mini3.z.boolean()),
295
- modularMcp: (0, import_mini3.optional)(import_mini3.z.boolean()),
296
- // Deprecated experimental options (for backward compatibility)
297
- experimentalGlobal: (0, import_mini3.optional)(import_mini3.z.boolean()),
298
- experimentalSimulateCommands: (0, import_mini3.optional)(import_mini3.z.boolean()),
299
- experimentalSimulateSubagents: (0, import_mini3.optional)(import_mini3.z.boolean())
295
+ modularMcp: (0, import_mini3.optional)(import_mini3.z.boolean())
300
296
  });
301
297
  var PartialConfigParamsSchema = import_mini3.z.partial(ConfigParamsSchema);
302
298
  var ConfigFileSchema = import_mini3.z.object({
@@ -330,10 +326,7 @@ var Config = class {
330
326
  simulateCommands,
331
327
  simulateSubagents,
332
328
  simulateSkills,
333
- modularMcp,
334
- experimentalGlobal,
335
- experimentalSimulateCommands,
336
- experimentalSimulateSubagents
329
+ modularMcp
337
330
  }) {
338
331
  this.validateConflictingTargets(targets);
339
332
  this.baseDirs = baseDirs;
@@ -341,9 +334,9 @@ var Config = class {
341
334
  this.features = features;
342
335
  this.verbose = verbose;
343
336
  this.delete = isDelete;
344
- this.global = global ?? experimentalGlobal ?? false;
345
- this.simulateCommands = simulateCommands ?? experimentalSimulateCommands ?? false;
346
- this.simulateSubagents = simulateSubagents ?? experimentalSimulateSubagents ?? false;
337
+ this.global = global ?? false;
338
+ this.simulateCommands = simulateCommands ?? false;
339
+ this.simulateSubagents = simulateSubagents ?? false;
347
340
  this.simulateSkills = simulateSkills ?? false;
348
341
  this.modularMcp = modularMcp ?? false;
349
342
  }
@@ -397,19 +390,6 @@ var Config = class {
397
390
  getModularMcp() {
398
391
  return this.modularMcp;
399
392
  }
400
- // Deprecated getters for backward compatibility
401
- /** @deprecated Use getGlobal() instead */
402
- getExperimentalGlobal() {
403
- return this.global;
404
- }
405
- /** @deprecated Use getSimulateCommands() instead */
406
- getExperimentalSimulateCommands() {
407
- return this.simulateCommands;
408
- }
409
- /** @deprecated Use getSimulateSubagents() instead */
410
- getExperimentalSimulateSubagents() {
411
- return this.simulateSubagents;
412
- }
413
393
  };
414
394
 
415
395
  // src/config/config-resolver.ts
@@ -424,10 +404,7 @@ var getDefaults = () => ({
424
404
  simulateCommands: false,
425
405
  simulateSubagents: false,
426
406
  simulateSkills: false,
427
- modularMcp: false,
428
- experimentalGlobal: false,
429
- experimentalSimulateCommands: false,
430
- experimentalSimulateSubagents: false
407
+ modularMcp: false
431
408
  });
432
409
  var ConfigResolver = class {
433
410
  static async resolve({
@@ -441,10 +418,7 @@ var ConfigResolver = class {
441
418
  simulateCommands,
442
419
  simulateSubagents,
443
420
  simulateSkills,
444
- modularMcp,
445
- experimentalGlobal,
446
- experimentalSimulateCommands,
447
- experimentalSimulateSubagents
421
+ modularMcp
448
422
  }) {
449
423
  const validatedConfigPath = resolvePath(configPath, process.cwd());
450
424
  let configByFile = {};
@@ -460,21 +434,9 @@ var ConfigResolver = class {
460
434
  throw error;
461
435
  }
462
436
  }
463
- const deprecatedGlobal = experimentalGlobal ?? configByFile.experimentalGlobal;
464
- const deprecatedCommands = experimentalSimulateCommands ?? configByFile.experimentalSimulateCommands;
465
- const deprecatedSubagents = experimentalSimulateSubagents ?? configByFile.experimentalSimulateSubagents;
466
- if (deprecatedGlobal !== void 0) {
467
- warnDeprecatedOptions({ experimentalGlobal: deprecatedGlobal });
468
- }
469
- if (deprecatedCommands !== void 0) {
470
- warnDeprecatedOptions({ experimentalSimulateCommands: deprecatedCommands });
471
- }
472
- if (deprecatedSubagents !== void 0) {
473
- warnDeprecatedOptions({ experimentalSimulateSubagents: deprecatedSubagents });
474
- }
475
- const resolvedGlobal = global ?? configByFile.global ?? experimentalGlobal ?? configByFile.experimentalGlobal ?? getDefaults().global;
476
- const resolvedSimulateCommands = simulateCommands ?? configByFile.simulateCommands ?? experimentalSimulateCommands ?? configByFile.experimentalSimulateCommands ?? getDefaults().simulateCommands;
477
- const resolvedSimulateSubagents = simulateSubagents ?? configByFile.simulateSubagents ?? experimentalSimulateSubagents ?? configByFile.experimentalSimulateSubagents ?? getDefaults().simulateSubagents;
437
+ const resolvedGlobal = global ?? configByFile.global ?? getDefaults().global;
438
+ const resolvedSimulateCommands = simulateCommands ?? configByFile.simulateCommands ?? getDefaults().simulateCommands;
439
+ const resolvedSimulateSubagents = simulateSubagents ?? configByFile.simulateSubagents ?? getDefaults().simulateSubagents;
478
440
  const resolvedSimulateSkills = simulateSkills ?? configByFile.simulateSkills ?? getDefaults().simulateSkills;
479
441
  const configParams = {
480
442
  targets: targets ?? configByFile.targets ?? getDefaults().targets,
@@ -494,25 +456,6 @@ var ConfigResolver = class {
494
456
  return new Config(configParams);
495
457
  }
496
458
  };
497
- function warnDeprecatedOptions({
498
- experimentalGlobal,
499
- experimentalSimulateCommands,
500
- experimentalSimulateSubagents
501
- }) {
502
- if (experimentalGlobal !== void 0) {
503
- logger.warn("'experimentalGlobal' option is deprecated. Please use 'global' instead.");
504
- }
505
- if (experimentalSimulateCommands !== void 0) {
506
- logger.warn(
507
- "'experimentalSimulateCommands' option is deprecated. Please use 'simulateCommands' instead."
508
- );
509
- }
510
- if (experimentalSimulateSubagents !== void 0) {
511
- logger.warn(
512
- "'experimentalSimulateSubagents' option is deprecated. Please use 'simulateSubagents' instead."
513
- );
514
- }
515
- }
516
459
  function getBaseDirsInLightOfGlobal({
517
460
  baseDirs,
518
461
  global
@@ -6220,9 +6163,6 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
6220
6163
  return {
6221
6164
  recommended: {
6222
6165
  relativeDirPath: RULESYNC_RULES_RELATIVE_DIR_PATH
6223
- },
6224
- legacy: {
6225
- relativeDirPath: RULESYNC_RELATIVE_DIR_PATH
6226
6166
  }
6227
6167
  };
6228
6168
  }
@@ -6245,44 +6185,6 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
6245
6185
  };
6246
6186
  }
6247
6187
  }
6248
- static async fromFileLegacy({
6249
- relativeFilePath,
6250
- validate = true
6251
- }) {
6252
- const legacyPath = (0, import_node_path63.join)(
6253
- process.cwd(),
6254
- this.getSettablePaths().legacy.relativeDirPath,
6255
- relativeFilePath
6256
- );
6257
- const recommendedPath = (0, import_node_path63.join)(
6258
- this.getSettablePaths().recommended.relativeDirPath,
6259
- relativeFilePath
6260
- );
6261
- logger.warn(`\u26A0\uFE0F Using deprecated path "${legacyPath}". Please migrate to "${recommendedPath}"`);
6262
- const fileContent = await readFileContent(legacyPath);
6263
- const { frontmatter, body: content } = parseFrontmatter(fileContent);
6264
- const result = RulesyncRuleFrontmatterSchema.safeParse(frontmatter);
6265
- if (!result.success) {
6266
- throw new Error(`Invalid frontmatter in ${legacyPath}: ${formatError(result.error)}`);
6267
- }
6268
- const validatedFrontmatter = {
6269
- root: result.data.root ?? false,
6270
- targets: result.data.targets ?? ["*"],
6271
- description: result.data.description ?? "",
6272
- globs: result.data.globs ?? [],
6273
- agentsmd: result.data.agentsmd,
6274
- cursor: result.data.cursor
6275
- };
6276
- const filename = (0, import_node_path63.basename)(legacyPath);
6277
- return new _RulesyncRule({
6278
- baseDir: process.cwd(),
6279
- relativeDirPath: this.getSettablePaths().recommended.relativeDirPath,
6280
- relativeFilePath: filename,
6281
- frontmatter: validatedFrontmatter,
6282
- body: content.trim(),
6283
- validate
6284
- });
6285
- }
6286
6188
  static async fromFile({
6287
6189
  relativeFilePath,
6288
6190
  validate = true
@@ -8710,13 +8612,6 @@ var RulesProcessor = class extends FeatureProcessor {
8710
8612
  }
8711
8613
  return rulesyncRules;
8712
8614
  }
8713
- async loadRulesyncFilesLegacy() {
8714
- const legacyFiles = await findFilesByGlobs((0, import_node_path84.join)(RULESYNC_RELATIVE_DIR_PATH, "*.md"));
8715
- logger.debug(`Found ${legacyFiles.length} legacy rulesync files`);
8716
- return Promise.all(
8717
- legacyFiles.map((file) => RulesyncRule.fromFileLegacy({ relativeFilePath: (0, import_node_path84.basename)(file) }))
8718
- );
8719
- }
8720
8615
  /**
8721
8616
  * Implementation of abstract method from FeatureProcessor
8722
8617
  * Load tool-specific rule configurations and parse them into ToolRule instances
@@ -8948,10 +8843,7 @@ async function generateRules(config, options) {
8948
8843
  const oldToolFiles = await processor.loadToolFiles({ forDeletion: true });
8949
8844
  await processor.removeAiFiles(oldToolFiles);
8950
8845
  }
8951
- let rulesyncFiles = await processor.loadRulesyncFiles();
8952
- if (rulesyncFiles.length === 0) {
8953
- rulesyncFiles = await processor.loadRulesyncFilesLegacy();
8954
- }
8846
+ const rulesyncFiles = await processor.loadRulesyncFiles();
8955
8847
  const toolFiles = await processor.convertRulesyncFilesToToolFiles(rulesyncFiles);
8956
8848
  const writtenCount = await processor.writeAiFiles(toolFiles);
8957
8849
  totalRulesOutputs += writtenCount;
@@ -10709,7 +10601,7 @@ async function mcpCommand({ version }) {
10709
10601
  }
10710
10602
 
10711
10603
  // src/cli/index.ts
10712
- var getVersion = () => "3.34.0";
10604
+ var getVersion = () => "4.0.0";
10713
10605
  var main = async () => {
10714
10606
  const program = new import_commander.Command();
10715
10607
  const version = getVersion();
@@ -10733,18 +10625,14 @@ var main = async () => {
10733
10625
  (value) => {
10734
10626
  return value.split(",").map((f) => f.trim());
10735
10627
  }
10736
- ).option("-V, --verbose", "Verbose output").option("-g, --global", "Import for global(user scope) configuration files").option(
10737
- "--experimental-global",
10738
- "Import for global(user scope) configuration files (deprecated: use --global instead)"
10739
- ).action(async (options) => {
10628
+ ).option("-V, --verbose", "Verbose output").option("-g, --global", "Import for global(user scope) configuration files").action(async (options) => {
10740
10629
  try {
10741
10630
  await importCommand({
10742
10631
  targets: options.targets,
10743
10632
  features: options.features,
10744
10633
  verbose: options.verbose,
10745
10634
  configPath: options.config,
10746
- global: options.global,
10747
- experimentalGlobal: options.experimentalGlobal
10635
+ global: options.global
10748
10636
  });
10749
10637
  } catch (error) {
10750
10638
  logger.error(formatError(error));
@@ -10783,15 +10671,6 @@ var main = async () => {
10783
10671
  ).option(
10784
10672
  "--simulate-skills",
10785
10673
  "Generate simulated skills. This feature is only available for copilot, cursor and codexcli."
10786
- ).option(
10787
- "--experimental-global",
10788
- "Generate for global(user scope) configuration files (deprecated: use --global instead)"
10789
- ).option(
10790
- "--experimental-simulate-commands",
10791
- "Generate simulated commands (deprecated: use --simulate-commands instead)"
10792
- ).option(
10793
- "--experimental-simulate-subagents",
10794
- "Generate simulated subagents (deprecated: use --simulate-subagents instead)"
10795
10674
  ).option(
10796
10675
  "--modular-mcp",
10797
10676
  "Generate modular-mcp configuration for context compression (experimental)"
@@ -10808,10 +10687,7 @@ var main = async () => {
10808
10687
  simulateCommands: options.simulateCommands,
10809
10688
  simulateSubagents: options.simulateSubagents,
10810
10689
  simulateSkills: options.simulateSkills,
10811
- modularMcp: options.modularMcp,
10812
- experimentalGlobal: options.experimentalGlobal,
10813
- experimentalSimulateCommands: options.experimentalSimulateCommands,
10814
- experimentalSimulateSubagents: options.experimentalSimulateSubagents
10690
+ modularMcp: options.modularMcp
10815
10691
  });
10816
10692
  } catch (error) {
10817
10693
  logger.error(formatError(error));
package/dist/index.js CHANGED
@@ -89,7 +89,7 @@ import { parse as parseJsonc } from "jsonc-parser";
89
89
  import { globSync } from "fs";
90
90
  import { mkdir, readdir, readFile, rm, stat, writeFile } from "fs/promises";
91
91
  import os from "os";
92
- import { basename, dirname, join, relative, resolve } from "path";
92
+ import { dirname, join, relative, resolve } from "path";
93
93
  import { kebabCase } from "es-toolkit";
94
94
  async function ensureDir(dirPath) {
95
95
  try {
@@ -269,11 +269,7 @@ var ConfigParamsSchema = z3.object({
269
269
  simulateCommands: optional(z3.boolean()),
270
270
  simulateSubagents: optional(z3.boolean()),
271
271
  simulateSkills: optional(z3.boolean()),
272
- modularMcp: optional(z3.boolean()),
273
- // Deprecated experimental options (for backward compatibility)
274
- experimentalGlobal: optional(z3.boolean()),
275
- experimentalSimulateCommands: optional(z3.boolean()),
276
- experimentalSimulateSubagents: optional(z3.boolean())
272
+ modularMcp: optional(z3.boolean())
277
273
  });
278
274
  var PartialConfigParamsSchema = z3.partial(ConfigParamsSchema);
279
275
  var ConfigFileSchema = z3.object({
@@ -307,10 +303,7 @@ var Config = class {
307
303
  simulateCommands,
308
304
  simulateSubagents,
309
305
  simulateSkills,
310
- modularMcp,
311
- experimentalGlobal,
312
- experimentalSimulateCommands,
313
- experimentalSimulateSubagents
306
+ modularMcp
314
307
  }) {
315
308
  this.validateConflictingTargets(targets);
316
309
  this.baseDirs = baseDirs;
@@ -318,9 +311,9 @@ var Config = class {
318
311
  this.features = features;
319
312
  this.verbose = verbose;
320
313
  this.delete = isDelete;
321
- this.global = global ?? experimentalGlobal ?? false;
322
- this.simulateCommands = simulateCommands ?? experimentalSimulateCommands ?? false;
323
- this.simulateSubagents = simulateSubagents ?? experimentalSimulateSubagents ?? false;
314
+ this.global = global ?? false;
315
+ this.simulateCommands = simulateCommands ?? false;
316
+ this.simulateSubagents = simulateSubagents ?? false;
324
317
  this.simulateSkills = simulateSkills ?? false;
325
318
  this.modularMcp = modularMcp ?? false;
326
319
  }
@@ -374,19 +367,6 @@ var Config = class {
374
367
  getModularMcp() {
375
368
  return this.modularMcp;
376
369
  }
377
- // Deprecated getters for backward compatibility
378
- /** @deprecated Use getGlobal() instead */
379
- getExperimentalGlobal() {
380
- return this.global;
381
- }
382
- /** @deprecated Use getSimulateCommands() instead */
383
- getExperimentalSimulateCommands() {
384
- return this.simulateCommands;
385
- }
386
- /** @deprecated Use getSimulateSubagents() instead */
387
- getExperimentalSimulateSubagents() {
388
- return this.simulateSubagents;
389
- }
390
370
  };
391
371
 
392
372
  // src/config/config-resolver.ts
@@ -401,10 +381,7 @@ var getDefaults = () => ({
401
381
  simulateCommands: false,
402
382
  simulateSubagents: false,
403
383
  simulateSkills: false,
404
- modularMcp: false,
405
- experimentalGlobal: false,
406
- experimentalSimulateCommands: false,
407
- experimentalSimulateSubagents: false
384
+ modularMcp: false
408
385
  });
409
386
  var ConfigResolver = class {
410
387
  static async resolve({
@@ -418,10 +395,7 @@ var ConfigResolver = class {
418
395
  simulateCommands,
419
396
  simulateSubagents,
420
397
  simulateSkills,
421
- modularMcp,
422
- experimentalGlobal,
423
- experimentalSimulateCommands,
424
- experimentalSimulateSubagents
398
+ modularMcp
425
399
  }) {
426
400
  const validatedConfigPath = resolvePath(configPath, process.cwd());
427
401
  let configByFile = {};
@@ -437,21 +411,9 @@ var ConfigResolver = class {
437
411
  throw error;
438
412
  }
439
413
  }
440
- const deprecatedGlobal = experimentalGlobal ?? configByFile.experimentalGlobal;
441
- const deprecatedCommands = experimentalSimulateCommands ?? configByFile.experimentalSimulateCommands;
442
- const deprecatedSubagents = experimentalSimulateSubagents ?? configByFile.experimentalSimulateSubagents;
443
- if (deprecatedGlobal !== void 0) {
444
- warnDeprecatedOptions({ experimentalGlobal: deprecatedGlobal });
445
- }
446
- if (deprecatedCommands !== void 0) {
447
- warnDeprecatedOptions({ experimentalSimulateCommands: deprecatedCommands });
448
- }
449
- if (deprecatedSubagents !== void 0) {
450
- warnDeprecatedOptions({ experimentalSimulateSubagents: deprecatedSubagents });
451
- }
452
- const resolvedGlobal = global ?? configByFile.global ?? experimentalGlobal ?? configByFile.experimentalGlobal ?? getDefaults().global;
453
- const resolvedSimulateCommands = simulateCommands ?? configByFile.simulateCommands ?? experimentalSimulateCommands ?? configByFile.experimentalSimulateCommands ?? getDefaults().simulateCommands;
454
- const resolvedSimulateSubagents = simulateSubagents ?? configByFile.simulateSubagents ?? experimentalSimulateSubagents ?? configByFile.experimentalSimulateSubagents ?? getDefaults().simulateSubagents;
414
+ const resolvedGlobal = global ?? configByFile.global ?? getDefaults().global;
415
+ const resolvedSimulateCommands = simulateCommands ?? configByFile.simulateCommands ?? getDefaults().simulateCommands;
416
+ const resolvedSimulateSubagents = simulateSubagents ?? configByFile.simulateSubagents ?? getDefaults().simulateSubagents;
455
417
  const resolvedSimulateSkills = simulateSkills ?? configByFile.simulateSkills ?? getDefaults().simulateSkills;
456
418
  const configParams = {
457
419
  targets: targets ?? configByFile.targets ?? getDefaults().targets,
@@ -471,25 +433,6 @@ var ConfigResolver = class {
471
433
  return new Config(configParams);
472
434
  }
473
435
  };
474
- function warnDeprecatedOptions({
475
- experimentalGlobal,
476
- experimentalSimulateCommands,
477
- experimentalSimulateSubagents
478
- }) {
479
- if (experimentalGlobal !== void 0) {
480
- logger.warn("'experimentalGlobal' option is deprecated. Please use 'global' instead.");
481
- }
482
- if (experimentalSimulateCommands !== void 0) {
483
- logger.warn(
484
- "'experimentalSimulateCommands' option is deprecated. Please use 'simulateCommands' instead."
485
- );
486
- }
487
- if (experimentalSimulateSubagents !== void 0) {
488
- logger.warn(
489
- "'experimentalSimulateSubagents' option is deprecated. Please use 'simulateSubagents' instead."
490
- );
491
- }
492
- }
493
436
  function getBaseDirsInLightOfGlobal({
494
437
  baseDirs,
495
438
  global
@@ -519,7 +462,7 @@ var RULESYNC_OVERVIEW_FILE_NAME = "overview.md";
519
462
  var RULESYNC_SKILLS_RELATIVE_DIR_PATH = join2(RULESYNC_RELATIVE_DIR_PATH, "skills");
520
463
 
521
464
  // src/features/commands/commands-processor.ts
522
- import { basename as basename13, join as join14 } from "path";
465
+ import { basename as basename12, join as join14 } from "path";
523
466
  import { z as z12 } from "zod/mini";
524
467
 
525
468
  // src/types/feature-processor.ts
@@ -553,7 +496,7 @@ var FeatureProcessor = class {
553
496
  };
554
497
 
555
498
  // src/features/commands/agentsmd-command.ts
556
- import { basename as basename3, join as join4 } from "path";
499
+ import { basename as basename2, join as join4 } from "path";
557
500
 
558
501
  // src/utils/frontmatter.ts
559
502
  import matter from "gray-matter";
@@ -605,7 +548,7 @@ function parseFrontmatter(content) {
605
548
  }
606
549
 
607
550
  // src/features/commands/simulated-command.ts
608
- import { basename as basename2, join as join3 } from "path";
551
+ import { basename, join as join3 } from "path";
609
552
  import { z as z4 } from "zod/mini";
610
553
 
611
554
  // src/types/ai-file.ts
@@ -842,7 +785,7 @@ var SimulatedCommand = class _SimulatedCommand extends ToolCommand {
842
785
  return {
843
786
  baseDir,
844
787
  relativeDirPath: _SimulatedCommand.getSettablePaths().relativeDirPath,
845
- relativeFilePath: basename2(relativeFilePath),
788
+ relativeFilePath: basename(relativeFilePath),
846
789
  frontmatter: result.data,
847
790
  body: content.trim(),
848
791
  validate
@@ -885,7 +828,7 @@ var AgentsmdCommand = class _AgentsmdCommand extends SimulatedCommand {
885
828
  return new _AgentsmdCommand({
886
829
  baseDir,
887
830
  relativeDirPath: _AgentsmdCommand.getSettablePaths().relativeDirPath,
888
- relativeFilePath: basename3(relativeFilePath),
831
+ relativeFilePath: basename2(relativeFilePath),
889
832
  frontmatter: result.data,
890
833
  body: content.trim(),
891
834
  validate
@@ -900,11 +843,11 @@ var AgentsmdCommand = class _AgentsmdCommand extends SimulatedCommand {
900
843
  };
901
844
 
902
845
  // src/features/commands/antigravity-command.ts
903
- import { basename as basename5, join as join6 } from "path";
846
+ import { basename as basename4, join as join6 } from "path";
904
847
  import { z as z6 } from "zod/mini";
905
848
 
906
849
  // src/features/commands/rulesync-command.ts
907
- import { basename as basename4, join as join5 } from "path";
850
+ import { basename as basename3, join as join5 } from "path";
908
851
  import { z as z5 } from "zod/mini";
909
852
 
910
853
  // src/types/rulesync-file.ts
@@ -982,7 +925,7 @@ var RulesyncCommand = class _RulesyncCommand extends RulesyncFile {
982
925
  if (!result.success) {
983
926
  throw new Error(`Invalid frontmatter in ${relativeFilePath}: ${formatError(result.error)}`);
984
927
  }
985
- const filename = basename4(relativeFilePath);
928
+ const filename = basename3(relativeFilePath);
986
929
  return new _RulesyncCommand({
987
930
  baseDir: process.cwd(),
988
931
  relativeDirPath: _RulesyncCommand.getSettablePaths().relativeDirPath,
@@ -1107,7 +1050,7 @@ var AntigravityCommand = class _AntigravityCommand extends ToolCommand {
1107
1050
  return new _AntigravityCommand({
1108
1051
  baseDir,
1109
1052
  relativeDirPath: _AntigravityCommand.getSettablePaths().relativeDirPath,
1110
- relativeFilePath: basename5(relativeFilePath),
1053
+ relativeFilePath: basename4(relativeFilePath),
1111
1054
  frontmatter: result.data,
1112
1055
  body: content.trim(),
1113
1056
  fileContent,
@@ -1117,7 +1060,7 @@ var AntigravityCommand = class _AntigravityCommand extends ToolCommand {
1117
1060
  };
1118
1061
 
1119
1062
  // src/features/commands/claudecode-command.ts
1120
- import { basename as basename6, join as join7 } from "path";
1063
+ import { basename as basename5, join as join7 } from "path";
1121
1064
  import { z as z7 } from "zod/mini";
1122
1065
  var ClaudecodeCommandFrontmatterSchema = z7.looseObject({
1123
1066
  description: z7.string(),
@@ -1238,7 +1181,7 @@ var ClaudecodeCommand = class _ClaudecodeCommand extends ToolCommand {
1238
1181
  return new _ClaudecodeCommand({
1239
1182
  baseDir,
1240
1183
  relativeDirPath: paths.relativeDirPath,
1241
- relativeFilePath: basename6(relativeFilePath),
1184
+ relativeFilePath: basename5(relativeFilePath),
1242
1185
  frontmatter: result.data,
1243
1186
  body: content.trim(),
1244
1187
  validate
@@ -1247,7 +1190,7 @@ var ClaudecodeCommand = class _ClaudecodeCommand extends ToolCommand {
1247
1190
  };
1248
1191
 
1249
1192
  // src/features/commands/codexcli-command.ts
1250
- import { basename as basename7, join as join8 } from "path";
1193
+ import { basename as basename6, join as join8 } from "path";
1251
1194
  var CodexcliCommand = class _CodexcliCommand extends ToolCommand {
1252
1195
  static getSettablePaths({ global } = {}) {
1253
1196
  if (!global) {
@@ -1313,7 +1256,7 @@ var CodexcliCommand = class _CodexcliCommand extends ToolCommand {
1313
1256
  return new _CodexcliCommand({
1314
1257
  baseDir,
1315
1258
  relativeDirPath: paths.relativeDirPath,
1316
- relativeFilePath: basename7(relativeFilePath),
1259
+ relativeFilePath: basename6(relativeFilePath),
1317
1260
  fileContent: content.trim(),
1318
1261
  validate
1319
1262
  });
@@ -1321,7 +1264,7 @@ var CodexcliCommand = class _CodexcliCommand extends ToolCommand {
1321
1264
  };
1322
1265
 
1323
1266
  // src/features/commands/copilot-command.ts
1324
- import { basename as basename8, join as join9 } from "path";
1267
+ import { basename as basename7, join as join9 } from "path";
1325
1268
  import { z as z8 } from "zod/mini";
1326
1269
  var CopilotCommandFrontmatterSchema = z8.looseObject({
1327
1270
  mode: z8.literal("agent"),
@@ -1434,7 +1377,7 @@ var CopilotCommand = class _CopilotCommand extends ToolCommand {
1434
1377
  return new _CopilotCommand({
1435
1378
  baseDir,
1436
1379
  relativeDirPath: paths.relativeDirPath,
1437
- relativeFilePath: basename8(relativeFilePath),
1380
+ relativeFilePath: basename7(relativeFilePath),
1438
1381
  frontmatter: result.data,
1439
1382
  body: content.trim(),
1440
1383
  validate
@@ -1449,7 +1392,7 @@ var CopilotCommand = class _CopilotCommand extends ToolCommand {
1449
1392
  };
1450
1393
 
1451
1394
  // src/features/commands/cursor-command.ts
1452
- import { basename as basename9, join as join10 } from "path";
1395
+ import { basename as basename8, join as join10 } from "path";
1453
1396
  var CursorCommand = class _CursorCommand extends ToolCommand {
1454
1397
  static getSettablePaths(_options = {}) {
1455
1398
  return {
@@ -1512,7 +1455,7 @@ var CursorCommand = class _CursorCommand extends ToolCommand {
1512
1455
  return new _CursorCommand({
1513
1456
  baseDir,
1514
1457
  relativeDirPath: paths.relativeDirPath,
1515
- relativeFilePath: basename9(relativeFilePath),
1458
+ relativeFilePath: basename8(relativeFilePath),
1516
1459
  fileContent: content.trim(),
1517
1460
  validate
1518
1461
  });
@@ -1520,7 +1463,7 @@ var CursorCommand = class _CursorCommand extends ToolCommand {
1520
1463
  };
1521
1464
 
1522
1465
  // src/features/commands/geminicli-command.ts
1523
- import { basename as basename10, join as join11 } from "path";
1466
+ import { basename as basename9, join as join11 } from "path";
1524
1467
  import { parse as parseToml } from "smol-toml";
1525
1468
  import { z as z9 } from "zod/mini";
1526
1469
  var GeminiCliCommandFrontmatterSchema = z9.looseObject({
@@ -1625,7 +1568,7 @@ ${geminiFrontmatter.prompt}
1625
1568
  return new _GeminiCliCommand({
1626
1569
  baseDir,
1627
1570
  relativeDirPath: paths.relativeDirPath,
1628
- relativeFilePath: basename10(relativeFilePath),
1571
+ relativeFilePath: basename9(relativeFilePath),
1629
1572
  fileContent,
1630
1573
  validate
1631
1574
  });
@@ -1647,7 +1590,7 @@ ${geminiFrontmatter.prompt}
1647
1590
  };
1648
1591
 
1649
1592
  // src/features/commands/opencode-command.ts
1650
- import { basename as basename11, join as join12 } from "path";
1593
+ import { basename as basename10, join as join12 } from "path";
1651
1594
  import { optional as optional2, z as z10 } from "zod/mini";
1652
1595
  var OpenCodeCommandFrontmatterSchema = z10.looseObject({
1653
1596
  description: z10.string(),
@@ -1758,7 +1701,7 @@ var OpenCodeCommand = class _OpenCodeCommand extends ToolCommand {
1758
1701
  return new _OpenCodeCommand({
1759
1702
  baseDir,
1760
1703
  relativeDirPath: paths.relativeDirPath,
1761
- relativeFilePath: basename11(relativeFilePath),
1704
+ relativeFilePath: basename10(relativeFilePath),
1762
1705
  frontmatter: result.data,
1763
1706
  body: content.trim(),
1764
1707
  validate
@@ -1773,7 +1716,7 @@ var OpenCodeCommand = class _OpenCodeCommand extends ToolCommand {
1773
1716
  };
1774
1717
 
1775
1718
  // src/features/commands/roo-command.ts
1776
- import { basename as basename12, join as join13 } from "path";
1719
+ import { basename as basename11, join as join13 } from "path";
1777
1720
  import { optional as optional3, z as z11 } from "zod/mini";
1778
1721
  var RooCommandFrontmatterSchema = z11.looseObject({
1779
1722
  description: z11.string(),
@@ -1889,7 +1832,7 @@ var RooCommand = class _RooCommand extends ToolCommand {
1889
1832
  return new _RooCommand({
1890
1833
  baseDir,
1891
1834
  relativeDirPath: _RooCommand.getSettablePaths().relativeDirPath,
1892
- relativeFilePath: basename12(relativeFilePath),
1835
+ relativeFilePath: basename11(relativeFilePath),
1893
1836
  frontmatter: result.data,
1894
1837
  body: content.trim(),
1895
1838
  fileContent,
@@ -2060,7 +2003,7 @@ var CommandsProcessor = class extends FeatureProcessor {
2060
2003
  );
2061
2004
  const rulesyncCommands = await Promise.all(
2062
2005
  rulesyncCommandPaths.map(
2063
- (path3) => RulesyncCommand.fromFile({ relativeFilePath: basename13(path3) })
2006
+ (path3) => RulesyncCommand.fromFile({ relativeFilePath: basename12(path3) })
2064
2007
  )
2065
2008
  );
2066
2009
  logger.info(`Successfully loaded ${rulesyncCommands.length} rulesync commands`);
@@ -2082,7 +2025,7 @@ var CommandsProcessor = class extends FeatureProcessor {
2082
2025
  commandFilePaths.map(
2083
2026
  (path3) => factory.class.fromFile({
2084
2027
  baseDir: this.baseDir,
2085
- relativeFilePath: basename13(path3),
2028
+ relativeFilePath: basename12(path3),
2086
2029
  global: this.global
2087
2030
  })
2088
2031
  )
@@ -4298,7 +4241,7 @@ var McpProcessor = class extends FeatureProcessor {
4298
4241
  };
4299
4242
 
4300
4243
  // src/features/rules/rules-processor.ts
4301
- import { basename as basename21, join as join82 } from "path";
4244
+ import { basename as basename20, join as join82 } from "path";
4302
4245
  import { encode } from "@toon-format/toon";
4303
4246
  import { z as z34 } from "zod/mini";
4304
4247
 
@@ -4316,7 +4259,7 @@ import { z as z19 } from "zod/mini";
4316
4259
  import { join as join40 } from "path";
4317
4260
 
4318
4261
  // src/types/ai-dir.ts
4319
- import path2, { basename as basename14, join as join39, relative as relative3, resolve as resolve4 } from "path";
4262
+ import path2, { basename as basename13, join as join39, relative as relative3, resolve as resolve4 } from "path";
4320
4263
  var AiDir = class {
4321
4264
  /**
4322
4265
  * @example "."
@@ -4413,7 +4356,7 @@ var AiDir = class {
4413
4356
  const dirPath = join39(baseDir, relativeDirPath, dirName);
4414
4357
  const glob = join39(dirPath, "**", "*");
4415
4358
  const filePaths = await findFilesByGlobs(glob, { type: "file" });
4416
- const filteredPaths = filePaths.filter((filePath) => basename14(filePath) !== excludeFileName);
4359
+ const filteredPaths = filePaths.filter((filePath) => basename13(filePath) !== excludeFileName);
4417
4360
  const files = await Promise.all(
4418
4361
  filteredPaths.map(async (filePath) => {
4419
4362
  const fileBuffer = await readFileBuffer(filePath);
@@ -5040,7 +4983,7 @@ var GeminiCliSkill = class _GeminiCliSkill extends SimulatedSkill {
5040
4983
  };
5041
4984
 
5042
4985
  // src/features/skills/skills-processor.ts
5043
- import { basename as basename15, join as join50 } from "path";
4986
+ import { basename as basename14, join as join50 } from "path";
5044
4987
  import { z as z23 } from "zod/mini";
5045
4988
 
5046
4989
  // src/types/dir-feature-processor.ts
@@ -5367,7 +5310,7 @@ var SkillsProcessor = class extends DirFeatureProcessor {
5367
5310
  const paths = RulesyncSkill.getSettablePaths();
5368
5311
  const rulesyncSkillsDirPath = join50(this.baseDir, paths.relativeDirPath);
5369
5312
  const dirPaths = await findFilesByGlobs(join50(rulesyncSkillsDirPath, "*"), { type: "dir" });
5370
- const dirNames = dirPaths.map((path3) => basename15(path3));
5313
+ const dirNames = dirPaths.map((path3) => basename14(path3));
5371
5314
  const rulesyncSkills = await Promise.all(
5372
5315
  dirNames.map(
5373
5316
  (dirName) => RulesyncSkill.fromDir({ baseDir: this.baseDir, dirName, global: this.global })
@@ -5385,7 +5328,7 @@ var SkillsProcessor = class extends DirFeatureProcessor {
5385
5328
  const paths = factory.class.getSettablePaths({ global: this.global });
5386
5329
  const skillsDirPath = join50(this.baseDir, paths.relativeDirPath);
5387
5330
  const dirPaths = await findFilesByGlobs(join50(skillsDirPath, "*"), { type: "dir" });
5388
- const dirNames = dirPaths.map((path3) => basename15(path3));
5331
+ const dirNames = dirPaths.map((path3) => basename14(path3));
5389
5332
  const toolSkills = await Promise.all(
5390
5333
  dirNames.map(
5391
5334
  (dirName) => factory.class.fromDir({
@@ -5438,7 +5381,7 @@ var SkillsProcessor = class extends DirFeatureProcessor {
5438
5381
  import { join as join52 } from "path";
5439
5382
 
5440
5383
  // src/features/subagents/simulated-subagent.ts
5441
- import { basename as basename16, join as join51 } from "path";
5384
+ import { basename as basename15, join as join51 } from "path";
5442
5385
  import { z as z24 } from "zod/mini";
5443
5386
 
5444
5387
  // src/features/subagents/tool-subagent.ts
@@ -5557,7 +5500,7 @@ var SimulatedSubagent = class extends ToolSubagent {
5557
5500
  return {
5558
5501
  baseDir,
5559
5502
  relativeDirPath: this.getSettablePaths().relativeDirPath,
5560
- relativeFilePath: basename16(relativeFilePath),
5503
+ relativeFilePath: basename15(relativeFilePath),
5561
5504
  frontmatter: result.data,
5562
5505
  body: content.trim(),
5563
5506
  validate
@@ -5709,7 +5652,7 @@ var RooSubagent = class _RooSubagent extends SimulatedSubagent {
5709
5652
  };
5710
5653
 
5711
5654
  // src/features/subagents/subagents-processor.ts
5712
- import { basename as basename18, join as join60 } from "path";
5655
+ import { basename as basename17, join as join60 } from "path";
5713
5656
  import { z as z27 } from "zod/mini";
5714
5657
 
5715
5658
  // src/features/subagents/claudecode-subagent.ts
@@ -5717,7 +5660,7 @@ import { join as join59 } from "path";
5717
5660
  import { z as z26 } from "zod/mini";
5718
5661
 
5719
5662
  // src/features/subagents/rulesync-subagent.ts
5720
- import { basename as basename17, join as join58 } from "path";
5663
+ import { basename as basename16, join as join58 } from "path";
5721
5664
  import { z as z25 } from "zod/mini";
5722
5665
  var RulesyncSubagentFrontmatterSchema = z25.looseObject({
5723
5666
  targets: RulesyncTargetsSchema,
@@ -5781,7 +5724,7 @@ var RulesyncSubagent = class _RulesyncSubagent extends RulesyncFile {
5781
5724
  if (!result.success) {
5782
5725
  throw new Error(`Invalid frontmatter in ${relativeFilePath}: ${formatError(result.error)}`);
5783
5726
  }
5784
- const filename = basename17(relativeFilePath);
5727
+ const filename = basename16(relativeFilePath);
5785
5728
  return new _RulesyncSubagent({
5786
5729
  baseDir: process.cwd(),
5787
5730
  relativeDirPath: this.getSettablePaths().relativeDirPath,
@@ -6096,7 +6039,7 @@ var SubagentsProcessor = class extends FeatureProcessor {
6096
6039
  subagentFilePaths.map(
6097
6040
  (path3) => factory.class.fromFile({
6098
6041
  baseDir: this.baseDir,
6099
- relativeFilePath: basename18(path3),
6042
+ relativeFilePath: basename17(path3),
6100
6043
  global: this.global
6101
6044
  })
6102
6045
  )
@@ -6135,7 +6078,7 @@ import { join as join63 } from "path";
6135
6078
  import { join as join62 } from "path";
6136
6079
 
6137
6080
  // src/features/rules/rulesync-rule.ts
6138
- import { basename as basename19, join as join61 } from "path";
6081
+ import { basename as basename18, join as join61 } from "path";
6139
6082
  import { z as z28 } from "zod/mini";
6140
6083
  var RulesyncRuleFrontmatterSchema = z28.object({
6141
6084
  root: z28.optional(z28.optional(z28.boolean())),
@@ -6197,9 +6140,6 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
6197
6140
  return {
6198
6141
  recommended: {
6199
6142
  relativeDirPath: RULESYNC_RULES_RELATIVE_DIR_PATH
6200
- },
6201
- legacy: {
6202
- relativeDirPath: RULESYNC_RELATIVE_DIR_PATH
6203
6143
  }
6204
6144
  };
6205
6145
  }
@@ -6222,44 +6162,6 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
6222
6162
  };
6223
6163
  }
6224
6164
  }
6225
- static async fromFileLegacy({
6226
- relativeFilePath,
6227
- validate = true
6228
- }) {
6229
- const legacyPath = join61(
6230
- process.cwd(),
6231
- this.getSettablePaths().legacy.relativeDirPath,
6232
- relativeFilePath
6233
- );
6234
- const recommendedPath = join61(
6235
- this.getSettablePaths().recommended.relativeDirPath,
6236
- relativeFilePath
6237
- );
6238
- logger.warn(`\u26A0\uFE0F Using deprecated path "${legacyPath}". Please migrate to "${recommendedPath}"`);
6239
- const fileContent = await readFileContent(legacyPath);
6240
- const { frontmatter, body: content } = parseFrontmatter(fileContent);
6241
- const result = RulesyncRuleFrontmatterSchema.safeParse(frontmatter);
6242
- if (!result.success) {
6243
- throw new Error(`Invalid frontmatter in ${legacyPath}: ${formatError(result.error)}`);
6244
- }
6245
- const validatedFrontmatter = {
6246
- root: result.data.root ?? false,
6247
- targets: result.data.targets ?? ["*"],
6248
- description: result.data.description ?? "",
6249
- globs: result.data.globs ?? [],
6250
- agentsmd: result.data.agentsmd,
6251
- cursor: result.data.cursor
6252
- };
6253
- const filename = basename19(legacyPath);
6254
- return new _RulesyncRule({
6255
- baseDir: process.cwd(),
6256
- relativeDirPath: this.getSettablePaths().recommended.relativeDirPath,
6257
- relativeFilePath: filename,
6258
- frontmatter: validatedFrontmatter,
6259
- body: content.trim(),
6260
- validate
6261
- });
6262
- }
6263
6165
  static async fromFile({
6264
6166
  relativeFilePath,
6265
6167
  validate = true
@@ -6283,7 +6185,7 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
6283
6185
  agentsmd: result.data.agentsmd,
6284
6186
  cursor: result.data.cursor
6285
6187
  };
6286
- const filename = basename19(filePath);
6188
+ const filename = basename18(filePath);
6287
6189
  return new _RulesyncRule({
6288
6190
  baseDir: process.cwd(),
6289
6191
  relativeDirPath: this.getSettablePaths().recommended.relativeDirPath,
@@ -7583,7 +7485,7 @@ var CopilotRule = class _CopilotRule extends ToolRule {
7583
7485
  };
7584
7486
 
7585
7487
  // src/features/rules/cursor-rule.ts
7586
- import { basename as basename20, join as join73 } from "path";
7488
+ import { basename as basename19, join as join73 } from "path";
7587
7489
  import { z as z33 } from "zod/mini";
7588
7490
  var CursorRuleFrontmatterSchema = z33.object({
7589
7491
  description: z33.optional(z33.string()),
@@ -7734,7 +7636,7 @@ var CursorRule = class _CursorRule extends ToolRule {
7734
7636
  return new _CursorRule({
7735
7637
  baseDir,
7736
7638
  relativeDirPath: this.getSettablePaths().nonRoot.relativeDirPath,
7737
- relativeFilePath: basename20(relativeFilePath),
7639
+ relativeFilePath: basename19(relativeFilePath),
7738
7640
  frontmatter: result.data,
7739
7641
  body: content.trim(),
7740
7642
  validate
@@ -8670,7 +8572,7 @@ var RulesProcessor = class extends FeatureProcessor {
8670
8572
  const files = await findFilesByGlobs(join82(RULESYNC_RULES_RELATIVE_DIR_PATH, "*.md"));
8671
8573
  logger.debug(`Found ${files.length} rulesync files`);
8672
8574
  const rulesyncRules = await Promise.all(
8673
- files.map((file) => RulesyncRule.fromFile({ relativeFilePath: basename21(file) }))
8575
+ files.map((file) => RulesyncRule.fromFile({ relativeFilePath: basename20(file) }))
8674
8576
  );
8675
8577
  const rootRules = rulesyncRules.filter((rule) => rule.getFrontmatter().root);
8676
8578
  if (rootRules.length > 1) {
@@ -8687,13 +8589,6 @@ var RulesProcessor = class extends FeatureProcessor {
8687
8589
  }
8688
8590
  return rulesyncRules;
8689
8591
  }
8690
- async loadRulesyncFilesLegacy() {
8691
- const legacyFiles = await findFilesByGlobs(join82(RULESYNC_RELATIVE_DIR_PATH, "*.md"));
8692
- logger.debug(`Found ${legacyFiles.length} legacy rulesync files`);
8693
- return Promise.all(
8694
- legacyFiles.map((file) => RulesyncRule.fromFileLegacy({ relativeFilePath: basename21(file) }))
8695
- );
8696
- }
8697
8592
  /**
8698
8593
  * Implementation of abstract method from FeatureProcessor
8699
8594
  * Load tool-specific rule configurations and parse them into ToolRule instances
@@ -8719,7 +8614,7 @@ var RulesProcessor = class extends FeatureProcessor {
8719
8614
  rootFilePaths.map(
8720
8615
  (filePath) => factory.class.fromFile({
8721
8616
  baseDir: this.baseDir,
8722
- relativeFilePath: basename21(filePath),
8617
+ relativeFilePath: basename20(filePath),
8723
8618
  global: this.global
8724
8619
  })
8725
8620
  )
@@ -8737,7 +8632,7 @@ var RulesProcessor = class extends FeatureProcessor {
8737
8632
  nonRootFilePaths.map(
8738
8633
  (filePath) => factory.class.fromFile({
8739
8634
  baseDir: this.baseDir,
8740
- relativeFilePath: basename21(filePath),
8635
+ relativeFilePath: basename20(filePath),
8741
8636
  global: this.global
8742
8637
  })
8743
8638
  )
@@ -8925,10 +8820,7 @@ async function generateRules(config, options) {
8925
8820
  const oldToolFiles = await processor.loadToolFiles({ forDeletion: true });
8926
8821
  await processor.removeAiFiles(oldToolFiles);
8927
8822
  }
8928
- let rulesyncFiles = await processor.loadRulesyncFiles();
8929
- if (rulesyncFiles.length === 0) {
8930
- rulesyncFiles = await processor.loadRulesyncFilesLegacy();
8931
- }
8823
+ const rulesyncFiles = await processor.loadRulesyncFiles();
8932
8824
  const toolFiles = await processor.convertRulesyncFilesToToolFiles(rulesyncFiles);
8933
8825
  const writtenCount = await processor.writeAiFiles(toolFiles);
8934
8826
  totalRulesOutputs += writtenCount;
@@ -9654,7 +9546,7 @@ Attention, again, you are just the planner, so though you can read any files and
9654
9546
  import { FastMCP } from "fastmcp";
9655
9547
 
9656
9548
  // src/mcp/commands.ts
9657
- import { basename as basename22, join as join85 } from "path";
9549
+ import { basename as basename21, join as join85 } from "path";
9658
9550
  import { z as z35 } from "zod/mini";
9659
9551
  var maxCommandSizeBytes = 1024 * 1024;
9660
9552
  var maxCommandsCount = 1e3;
@@ -9691,7 +9583,7 @@ async function getCommand({ relativePathFromCwd }) {
9691
9583
  relativePath: relativePathFromCwd,
9692
9584
  intendedRootDir: process.cwd()
9693
9585
  });
9694
- const filename = basename22(relativePathFromCwd);
9586
+ const filename = basename21(relativePathFromCwd);
9695
9587
  try {
9696
9588
  const command = await RulesyncCommand.fromFile({
9697
9589
  relativeFilePath: filename
@@ -9716,7 +9608,7 @@ async function putCommand({
9716
9608
  relativePath: relativePathFromCwd,
9717
9609
  intendedRootDir: process.cwd()
9718
9610
  });
9719
- const filename = basename22(relativePathFromCwd);
9611
+ const filename = basename21(relativePathFromCwd);
9720
9612
  const estimatedSize = JSON.stringify(frontmatter).length + body.length;
9721
9613
  if (estimatedSize > maxCommandSizeBytes) {
9722
9614
  throw new Error(
@@ -9760,7 +9652,7 @@ async function deleteCommand({ relativePathFromCwd }) {
9760
9652
  relativePath: relativePathFromCwd,
9761
9653
  intendedRootDir: process.cwd()
9762
9654
  });
9763
- const filename = basename22(relativePathFromCwd);
9655
+ const filename = basename21(relativePathFromCwd);
9764
9656
  const fullPath = join85(process.cwd(), RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename);
9765
9657
  try {
9766
9658
  await removeFile(fullPath);
@@ -10055,7 +9947,7 @@ var mcpTools = {
10055
9947
  };
10056
9948
 
10057
9949
  // src/mcp/rules.ts
10058
- import { basename as basename23, join as join88 } from "path";
9950
+ import { basename as basename22, join as join88 } from "path";
10059
9951
  import { z as z38 } from "zod/mini";
10060
9952
  var maxRuleSizeBytes = 1024 * 1024;
10061
9953
  var maxRulesCount = 1e3;
@@ -10093,7 +9985,7 @@ async function getRule({ relativePathFromCwd }) {
10093
9985
  relativePath: relativePathFromCwd,
10094
9986
  intendedRootDir: process.cwd()
10095
9987
  });
10096
- const filename = basename23(relativePathFromCwd);
9988
+ const filename = basename22(relativePathFromCwd);
10097
9989
  try {
10098
9990
  const rule = await RulesyncRule.fromFile({
10099
9991
  relativeFilePath: filename,
@@ -10119,7 +10011,7 @@ async function putRule({
10119
10011
  relativePath: relativePathFromCwd,
10120
10012
  intendedRootDir: process.cwd()
10121
10013
  });
10122
- const filename = basename23(relativePathFromCwd);
10014
+ const filename = basename22(relativePathFromCwd);
10123
10015
  const estimatedSize = JSON.stringify(frontmatter).length + body.length;
10124
10016
  if (estimatedSize > maxRuleSizeBytes) {
10125
10017
  throw new Error(
@@ -10161,7 +10053,7 @@ async function deleteRule({ relativePathFromCwd }) {
10161
10053
  relativePath: relativePathFromCwd,
10162
10054
  intendedRootDir: process.cwd()
10163
10055
  });
10164
- const filename = basename23(relativePathFromCwd);
10056
+ const filename = basename22(relativePathFromCwd);
10165
10057
  const fullPath = join88(process.cwd(), RULESYNC_RULES_RELATIVE_DIR_PATH, filename);
10166
10058
  try {
10167
10059
  await removeFile(fullPath);
@@ -10233,7 +10125,7 @@ var ruleTools = {
10233
10125
  };
10234
10126
 
10235
10127
  // src/mcp/skills.ts
10236
- import { basename as basename24, dirname as dirname2, join as join89 } from "path";
10128
+ import { basename as basename23, dirname as dirname2, join as join89 } from "path";
10237
10129
  import { z as z39 } from "zod/mini";
10238
10130
  var maxSkillSizeBytes = 1024 * 1024;
10239
10131
  var maxSkillsCount = 1e3;
@@ -10250,7 +10142,7 @@ function mcpSkillFileToAiDirFile(file) {
10250
10142
  };
10251
10143
  }
10252
10144
  function extractDirName(relativeDirPathFromCwd) {
10253
- const dirName = basename24(relativeDirPathFromCwd);
10145
+ const dirName = basename23(relativeDirPathFromCwd);
10254
10146
  if (!dirName) {
10255
10147
  throw new Error(`Invalid path: ${relativeDirPathFromCwd}`);
10256
10148
  }
@@ -10262,7 +10154,7 @@ async function listSkills() {
10262
10154
  const skillDirPaths = await findFilesByGlobs(join89(skillsDir, "*"), { type: "dir" });
10263
10155
  const skills = await Promise.all(
10264
10156
  skillDirPaths.map(async (dirPath) => {
10265
- const dirName = basename24(dirPath);
10157
+ const dirName = basename23(dirPath);
10266
10158
  if (!dirName) return null;
10267
10159
  try {
10268
10160
  const skill = await RulesyncSkill.fromDir({
@@ -10467,7 +10359,7 @@ var skillTools = {
10467
10359
  };
10468
10360
 
10469
10361
  // src/mcp/subagents.ts
10470
- import { basename as basename25, join as join90 } from "path";
10362
+ import { basename as basename24, join as join90 } from "path";
10471
10363
  import { z as z40 } from "zod/mini";
10472
10364
  var maxSubagentSizeBytes = 1024 * 1024;
10473
10365
  var maxSubagentsCount = 1e3;
@@ -10507,7 +10399,7 @@ async function getSubagent({ relativePathFromCwd }) {
10507
10399
  relativePath: relativePathFromCwd,
10508
10400
  intendedRootDir: process.cwd()
10509
10401
  });
10510
- const filename = basename25(relativePathFromCwd);
10402
+ const filename = basename24(relativePathFromCwd);
10511
10403
  try {
10512
10404
  const subagent = await RulesyncSubagent.fromFile({
10513
10405
  relativeFilePath: filename,
@@ -10533,7 +10425,7 @@ async function putSubagent({
10533
10425
  relativePath: relativePathFromCwd,
10534
10426
  intendedRootDir: process.cwd()
10535
10427
  });
10536
- const filename = basename25(relativePathFromCwd);
10428
+ const filename = basename24(relativePathFromCwd);
10537
10429
  const estimatedSize = JSON.stringify(frontmatter).length + body.length;
10538
10430
  if (estimatedSize > maxSubagentSizeBytes) {
10539
10431
  throw new Error(
@@ -10575,7 +10467,7 @@ async function deleteSubagent({ relativePathFromCwd }) {
10575
10467
  relativePath: relativePathFromCwd,
10576
10468
  intendedRootDir: process.cwd()
10577
10469
  });
10578
- const filename = basename25(relativePathFromCwd);
10470
+ const filename = basename24(relativePathFromCwd);
10579
10471
  const fullPath = join90(process.cwd(), RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename);
10580
10472
  try {
10581
10473
  await removeFile(fullPath);
@@ -10686,7 +10578,7 @@ async function mcpCommand({ version }) {
10686
10578
  }
10687
10579
 
10688
10580
  // src/cli/index.ts
10689
- var getVersion = () => "3.34.0";
10581
+ var getVersion = () => "4.0.0";
10690
10582
  var main = async () => {
10691
10583
  const program = new Command();
10692
10584
  const version = getVersion();
@@ -10710,18 +10602,14 @@ var main = async () => {
10710
10602
  (value) => {
10711
10603
  return value.split(",").map((f) => f.trim());
10712
10604
  }
10713
- ).option("-V, --verbose", "Verbose output").option("-g, --global", "Import for global(user scope) configuration files").option(
10714
- "--experimental-global",
10715
- "Import for global(user scope) configuration files (deprecated: use --global instead)"
10716
- ).action(async (options) => {
10605
+ ).option("-V, --verbose", "Verbose output").option("-g, --global", "Import for global(user scope) configuration files").action(async (options) => {
10717
10606
  try {
10718
10607
  await importCommand({
10719
10608
  targets: options.targets,
10720
10609
  features: options.features,
10721
10610
  verbose: options.verbose,
10722
10611
  configPath: options.config,
10723
- global: options.global,
10724
- experimentalGlobal: options.experimentalGlobal
10612
+ global: options.global
10725
10613
  });
10726
10614
  } catch (error) {
10727
10615
  logger.error(formatError(error));
@@ -10760,15 +10648,6 @@ var main = async () => {
10760
10648
  ).option(
10761
10649
  "--simulate-skills",
10762
10650
  "Generate simulated skills. This feature is only available for copilot, cursor and codexcli."
10763
- ).option(
10764
- "--experimental-global",
10765
- "Generate for global(user scope) configuration files (deprecated: use --global instead)"
10766
- ).option(
10767
- "--experimental-simulate-commands",
10768
- "Generate simulated commands (deprecated: use --simulate-commands instead)"
10769
- ).option(
10770
- "--experimental-simulate-subagents",
10771
- "Generate simulated subagents (deprecated: use --simulate-subagents instead)"
10772
10651
  ).option(
10773
10652
  "--modular-mcp",
10774
10653
  "Generate modular-mcp configuration for context compression (experimental)"
@@ -10785,10 +10664,7 @@ var main = async () => {
10785
10664
  simulateCommands: options.simulateCommands,
10786
10665
  simulateSubagents: options.simulateSubagents,
10787
10666
  simulateSkills: options.simulateSkills,
10788
- modularMcp: options.modularMcp,
10789
- experimentalGlobal: options.experimentalGlobal,
10790
- experimentalSimulateCommands: options.experimentalSimulateCommands,
10791
- experimentalSimulateSubagents: options.experimentalSimulateSubagents
10667
+ modularMcp: options.modularMcp
10792
10668
  });
10793
10669
  } catch (error) {
10794
10670
  logger.error(formatError(error));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rulesync",
3
- "version": "3.34.0",
3
+ "version": "4.0.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",
@@ -49,33 +49,33 @@
49
49
  "zod": "4.1.13"
50
50
  },
51
51
  "devDependencies": {
52
- "@anthropic-ai/claude-agent-sdk": "0.1.69",
53
- "@biomejs/biome": "2.3.8",
52
+ "@anthropic-ai/claude-agent-sdk": "0.1.75",
53
+ "@biomejs/biome": "2.3.10",
54
54
  "@eslint/js": "9.39.2",
55
55
  "@secretlint/secretlint-rule-preset-recommend": "11.2.5",
56
56
  "@tsconfig/node24": "24.0.3",
57
57
  "@types/js-yaml": "4.0.9",
58
- "@types/node": "25.0.2",
59
- "@typescript/native-preview": "7.0.0-dev.20251213.1",
60
- "@vitest/coverage-v8": "4.0.15",
58
+ "@types/node": "25.0.3",
59
+ "@typescript/native-preview": "7.0.0-dev.20251220.1",
60
+ "@vitest/coverage-v8": "4.0.16",
61
61
  "cspell": "9.4.0",
62
62
  "eslint": "9.39.2",
63
63
  "eslint-plugin-import": "2.32.0",
64
64
  "eslint-plugin-no-type-assertion": "1.3.0",
65
- "eslint-plugin-oxlint": "1.32.0",
66
- "eslint-plugin-strict-dependencies": "1.3.28",
65
+ "eslint-plugin-oxlint": "1.34.0",
66
+ "eslint-plugin-strict-dependencies": "1.3.29",
67
67
  "eslint-plugin-zod-import": "0.3.0",
68
- "knip": "5.73.4",
68
+ "knip": "5.76.1",
69
69
  "lint-staged": "16.2.7",
70
- "oxlint": "1.32.0",
70
+ "oxlint": "1.34.0",
71
71
  "secretlint": "11.2.5",
72
72
  "simple-git-hooks": "2.13.1",
73
- "sort-package-json": "3.5.1",
73
+ "sort-package-json": "3.6.0",
74
74
  "tsup": "8.5.1",
75
75
  "tsx": "4.21.0",
76
76
  "typescript": "5.9.3",
77
- "typescript-eslint": "8.49.0",
78
- "vitest": "4.0.15"
77
+ "typescript-eslint": "8.50.0",
78
+ "vitest": "4.0.16"
79
79
  },
80
80
  "engines": {
81
81
  "node": ">=22.0.0"