rulesync 3.27.1 → 3.28.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/index.cjs CHANGED
@@ -249,6 +249,7 @@ var import_mini2 = require("zod/mini");
249
249
  var ALL_TOOL_TARGETS = [
250
250
  "agentsmd",
251
251
  "amazonqcli",
252
+ "antigravity",
252
253
  "augmentcode",
253
254
  "augmentcode-legacy",
254
255
  "copilot",
@@ -506,8 +507,8 @@ var RULESYNC_OVERVIEW_FILE_NAME = "overview.md";
506
507
  var RULESYNC_SKILLS_RELATIVE_DIR_PATH = (0, import_node_path3.join)(RULESYNC_RELATIVE_DIR_PATH, "skills");
507
508
 
508
509
  // src/features/commands/commands-processor.ts
509
- var import_node_path14 = require("path");
510
- var import_mini10 = require("zod/mini");
510
+ var import_node_path15 = require("path");
511
+ var import_mini11 = require("zod/mini");
511
512
 
512
513
  // src/types/feature-processor.ts
513
514
  var FeatureProcessor = class {
@@ -879,7 +880,7 @@ var AgentsmdCommand = class _AgentsmdCommand extends SimulatedCommand {
879
880
  }
880
881
  };
881
882
 
882
- // src/features/commands/claudecode-command.ts
883
+ // src/features/commands/antigravity-command.ts
883
884
  var import_node_path8 = require("path");
884
885
  var import_mini6 = require("zod/mini");
885
886
 
@@ -974,10 +975,134 @@ var RulesyncCommand = class _RulesyncCommand extends RulesyncFile {
974
975
  }
975
976
  };
976
977
 
977
- // src/features/commands/claudecode-command.ts
978
- var ClaudecodeCommandFrontmatterSchema = import_mini6.z.object({
978
+ // src/features/commands/antigravity-command.ts
979
+ var AntigravityCommandFrontmatterSchema = import_mini6.z.object({
979
980
  description: import_mini6.z.string()
980
981
  });
982
+ var AntigravityCommand = class _AntigravityCommand extends ToolCommand {
983
+ frontmatter;
984
+ body;
985
+ static getSettablePaths() {
986
+ return {
987
+ relativeDirPath: (0, import_node_path8.join)(".agent", "workflows")
988
+ };
989
+ }
990
+ constructor({ frontmatter, body, ...rest }) {
991
+ if (rest.validate) {
992
+ const result = AntigravityCommandFrontmatterSchema.safeParse(frontmatter);
993
+ if (!result.success) {
994
+ throw new Error(
995
+ `Invalid frontmatter in ${(0, import_node_path8.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
996
+ );
997
+ }
998
+ }
999
+ super({
1000
+ ...rest,
1001
+ fileContent: stringifyFrontmatter(body, frontmatter)
1002
+ });
1003
+ this.frontmatter = frontmatter;
1004
+ this.body = body;
1005
+ }
1006
+ getBody() {
1007
+ return this.body;
1008
+ }
1009
+ getFrontmatter() {
1010
+ return this.frontmatter;
1011
+ }
1012
+ toRulesyncCommand() {
1013
+ const rulesyncFrontmatter = {
1014
+ targets: ["antigravity"],
1015
+ description: this.frontmatter.description
1016
+ };
1017
+ const fileContent = stringifyFrontmatter(this.body, rulesyncFrontmatter);
1018
+ return new RulesyncCommand({
1019
+ baseDir: ".",
1020
+ // RulesyncCommand baseDir is always the project root directory
1021
+ frontmatter: rulesyncFrontmatter,
1022
+ body: this.body,
1023
+ relativeDirPath: RulesyncCommand.getSettablePaths().relativeDirPath,
1024
+ relativeFilePath: this.relativeFilePath,
1025
+ fileContent,
1026
+ validate: true
1027
+ });
1028
+ }
1029
+ static fromRulesyncCommand({
1030
+ baseDir = process.cwd(),
1031
+ rulesyncCommand,
1032
+ validate = true
1033
+ }) {
1034
+ const rulesyncFrontmatter = rulesyncCommand.getFrontmatter();
1035
+ const antigravityFrontmatter = {
1036
+ description: rulesyncFrontmatter.description
1037
+ };
1038
+ const body = rulesyncCommand.getBody();
1039
+ const fileContent = stringifyFrontmatter(body, antigravityFrontmatter);
1040
+ return new _AntigravityCommand({
1041
+ baseDir,
1042
+ frontmatter: antigravityFrontmatter,
1043
+ body,
1044
+ relativeDirPath: _AntigravityCommand.getSettablePaths().relativeDirPath,
1045
+ relativeFilePath: rulesyncCommand.getRelativeFilePath(),
1046
+ fileContent,
1047
+ validate
1048
+ });
1049
+ }
1050
+ validate() {
1051
+ if (!this.frontmatter) {
1052
+ return { success: true, error: null };
1053
+ }
1054
+ const result = AntigravityCommandFrontmatterSchema.safeParse(this.frontmatter);
1055
+ if (result.success) {
1056
+ return { success: true, error: null };
1057
+ } else {
1058
+ return {
1059
+ success: false,
1060
+ error: new Error(
1061
+ `Invalid frontmatter in ${(0, import_node_path8.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
1062
+ )
1063
+ };
1064
+ }
1065
+ }
1066
+ static isTargetedByRulesyncCommand(rulesyncCommand) {
1067
+ return this.isTargetedByRulesyncCommandDefault({
1068
+ rulesyncCommand,
1069
+ toolTarget: "antigravity"
1070
+ });
1071
+ }
1072
+ static async fromFile({
1073
+ baseDir = process.cwd(),
1074
+ relativeFilePath,
1075
+ validate = true
1076
+ }) {
1077
+ const filePath = (0, import_node_path8.join)(
1078
+ baseDir,
1079
+ _AntigravityCommand.getSettablePaths().relativeDirPath,
1080
+ relativeFilePath
1081
+ );
1082
+ const fileContent = await readFileContent(filePath);
1083
+ const { frontmatter, body: content } = parseFrontmatter(fileContent);
1084
+ const result = AntigravityCommandFrontmatterSchema.safeParse(frontmatter);
1085
+ if (!result.success) {
1086
+ throw new Error(`Invalid frontmatter in ${filePath}: ${formatError(result.error)}`);
1087
+ }
1088
+ return new _AntigravityCommand({
1089
+ baseDir,
1090
+ relativeDirPath: _AntigravityCommand.getSettablePaths().relativeDirPath,
1091
+ relativeFilePath: (0, import_node_path8.basename)(relativeFilePath),
1092
+ frontmatter: result.data,
1093
+ body: content.trim(),
1094
+ fileContent,
1095
+ validate
1096
+ });
1097
+ }
1098
+ };
1099
+
1100
+ // src/features/commands/claudecode-command.ts
1101
+ var import_node_path9 = require("path");
1102
+ var import_mini7 = require("zod/mini");
1103
+ var ClaudecodeCommandFrontmatterSchema = import_mini7.z.object({
1104
+ description: import_mini7.z.string()
1105
+ });
981
1106
  var ClaudecodeCommand = class _ClaudecodeCommand extends ToolCommand {
982
1107
  frontmatter;
983
1108
  body;
@@ -986,7 +1111,7 @@ var ClaudecodeCommand = class _ClaudecodeCommand extends ToolCommand {
986
1111
  const result = ClaudecodeCommandFrontmatterSchema.safeParse(frontmatter);
987
1112
  if (!result.success) {
988
1113
  throw new Error(
989
- `Invalid frontmatter in ${(0, import_node_path8.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
1114
+ `Invalid frontmatter in ${(0, import_node_path9.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
990
1115
  );
991
1116
  }
992
1117
  }
@@ -999,7 +1124,7 @@ var ClaudecodeCommand = class _ClaudecodeCommand extends ToolCommand {
999
1124
  }
1000
1125
  static getSettablePaths(_options = {}) {
1001
1126
  return {
1002
- relativeDirPath: (0, import_node_path8.join)(".claude", "commands")
1127
+ relativeDirPath: (0, import_node_path9.join)(".claude", "commands")
1003
1128
  };
1004
1129
  }
1005
1130
  getBody() {
@@ -1057,7 +1182,7 @@ var ClaudecodeCommand = class _ClaudecodeCommand extends ToolCommand {
1057
1182
  return {
1058
1183
  success: false,
1059
1184
  error: new Error(
1060
- `Invalid frontmatter in ${(0, import_node_path8.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
1185
+ `Invalid frontmatter in ${(0, import_node_path9.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
1061
1186
  )
1062
1187
  };
1063
1188
  }
@@ -1075,7 +1200,7 @@ var ClaudecodeCommand = class _ClaudecodeCommand extends ToolCommand {
1075
1200
  global = false
1076
1201
  }) {
1077
1202
  const paths = this.getSettablePaths({ global });
1078
- const filePath = (0, import_node_path8.join)(baseDir, paths.relativeDirPath, relativeFilePath);
1203
+ const filePath = (0, import_node_path9.join)(baseDir, paths.relativeDirPath, relativeFilePath);
1079
1204
  const fileContent = await readFileContent(filePath);
1080
1205
  const { frontmatter, body: content } = parseFrontmatter(fileContent);
1081
1206
  const result = ClaudecodeCommandFrontmatterSchema.safeParse(frontmatter);
@@ -1085,7 +1210,7 @@ var ClaudecodeCommand = class _ClaudecodeCommand extends ToolCommand {
1085
1210
  return new _ClaudecodeCommand({
1086
1211
  baseDir,
1087
1212
  relativeDirPath: paths.relativeDirPath,
1088
- relativeFilePath: (0, import_node_path8.basename)(relativeFilePath),
1213
+ relativeFilePath: (0, import_node_path9.basename)(relativeFilePath),
1089
1214
  frontmatter: result.data,
1090
1215
  body: content.trim(),
1091
1216
  validate
@@ -1094,14 +1219,14 @@ var ClaudecodeCommand = class _ClaudecodeCommand extends ToolCommand {
1094
1219
  };
1095
1220
 
1096
1221
  // src/features/commands/codexcli-command.ts
1097
- var import_node_path9 = require("path");
1222
+ var import_node_path10 = require("path");
1098
1223
  var CodexcliCommand = class _CodexcliCommand extends ToolCommand {
1099
1224
  static getSettablePaths({ global } = {}) {
1100
1225
  if (!global) {
1101
1226
  throw new Error("CodexcliCommand only supports global mode. Please pass { global: true }.");
1102
1227
  }
1103
1228
  return {
1104
- relativeDirPath: (0, import_node_path9.join)(".codex", "prompts")
1229
+ relativeDirPath: (0, import_node_path10.join)(".codex", "prompts")
1105
1230
  };
1106
1231
  }
1107
1232
  toRulesyncCommand() {
@@ -1154,13 +1279,13 @@ var CodexcliCommand = class _CodexcliCommand extends ToolCommand {
1154
1279
  global = false
1155
1280
  }) {
1156
1281
  const paths = this.getSettablePaths({ global });
1157
- const filePath = (0, import_node_path9.join)(baseDir, paths.relativeDirPath, relativeFilePath);
1282
+ const filePath = (0, import_node_path10.join)(baseDir, paths.relativeDirPath, relativeFilePath);
1158
1283
  const fileContent = await readFileContent(filePath);
1159
1284
  const { body: content } = parseFrontmatter(fileContent);
1160
1285
  return new _CodexcliCommand({
1161
1286
  baseDir,
1162
1287
  relativeDirPath: paths.relativeDirPath,
1163
- relativeFilePath: (0, import_node_path9.basename)(relativeFilePath),
1288
+ relativeFilePath: (0, import_node_path10.basename)(relativeFilePath),
1164
1289
  fileContent: content.trim(),
1165
1290
  validate
1166
1291
  });
@@ -1168,11 +1293,11 @@ var CodexcliCommand = class _CodexcliCommand extends ToolCommand {
1168
1293
  };
1169
1294
 
1170
1295
  // src/features/commands/copilot-command.ts
1171
- var import_node_path10 = require("path");
1172
- var import_mini7 = require("zod/mini");
1173
- var CopilotCommandFrontmatterSchema = import_mini7.z.object({
1174
- mode: import_mini7.z.literal("agent"),
1175
- description: import_mini7.z.string()
1296
+ var import_node_path11 = require("path");
1297
+ var import_mini8 = require("zod/mini");
1298
+ var CopilotCommandFrontmatterSchema = import_mini8.z.object({
1299
+ mode: import_mini8.z.literal("agent"),
1300
+ description: import_mini8.z.string()
1176
1301
  });
1177
1302
  var CopilotCommand = class _CopilotCommand extends ToolCommand {
1178
1303
  frontmatter;
@@ -1182,7 +1307,7 @@ var CopilotCommand = class _CopilotCommand extends ToolCommand {
1182
1307
  const result = CopilotCommandFrontmatterSchema.safeParse(frontmatter);
1183
1308
  if (!result.success) {
1184
1309
  throw new Error(
1185
- `Invalid frontmatter in ${(0, import_node_path10.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
1310
+ `Invalid frontmatter in ${(0, import_node_path11.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
1186
1311
  );
1187
1312
  }
1188
1313
  }
@@ -1195,7 +1320,7 @@ var CopilotCommand = class _CopilotCommand extends ToolCommand {
1195
1320
  }
1196
1321
  static getSettablePaths() {
1197
1322
  return {
1198
- relativeDirPath: (0, import_node_path10.join)(".github", "prompts")
1323
+ relativeDirPath: (0, import_node_path11.join)(".github", "prompts")
1199
1324
  };
1200
1325
  }
1201
1326
  getBody() {
@@ -1232,7 +1357,7 @@ var CopilotCommand = class _CopilotCommand extends ToolCommand {
1232
1357
  return {
1233
1358
  success: false,
1234
1359
  error: new Error(
1235
- `Invalid frontmatter in ${(0, import_node_path10.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
1360
+ `Invalid frontmatter in ${(0, import_node_path11.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
1236
1361
  )
1237
1362
  };
1238
1363
  }
@@ -1266,7 +1391,7 @@ var CopilotCommand = class _CopilotCommand extends ToolCommand {
1266
1391
  validate = true
1267
1392
  }) {
1268
1393
  const paths = this.getSettablePaths();
1269
- const filePath = (0, import_node_path10.join)(baseDir, paths.relativeDirPath, relativeFilePath);
1394
+ const filePath = (0, import_node_path11.join)(baseDir, paths.relativeDirPath, relativeFilePath);
1270
1395
  const fileContent = await readFileContent(filePath);
1271
1396
  const { frontmatter, body: content } = parseFrontmatter(fileContent);
1272
1397
  const result = CopilotCommandFrontmatterSchema.safeParse(frontmatter);
@@ -1276,7 +1401,7 @@ var CopilotCommand = class _CopilotCommand extends ToolCommand {
1276
1401
  return new _CopilotCommand({
1277
1402
  baseDir,
1278
1403
  relativeDirPath: paths.relativeDirPath,
1279
- relativeFilePath: (0, import_node_path10.basename)(relativeFilePath),
1404
+ relativeFilePath: (0, import_node_path11.basename)(relativeFilePath),
1280
1405
  frontmatter: result.data,
1281
1406
  body: content.trim(),
1282
1407
  validate
@@ -1291,11 +1416,11 @@ var CopilotCommand = class _CopilotCommand extends ToolCommand {
1291
1416
  };
1292
1417
 
1293
1418
  // src/features/commands/cursor-command.ts
1294
- var import_node_path11 = require("path");
1419
+ var import_node_path12 = require("path");
1295
1420
  var CursorCommand = class _CursorCommand extends ToolCommand {
1296
1421
  static getSettablePaths(_options = {}) {
1297
1422
  return {
1298
- relativeDirPath: (0, import_node_path11.join)(".cursor", "commands")
1423
+ relativeDirPath: (0, import_node_path12.join)(".cursor", "commands")
1299
1424
  };
1300
1425
  }
1301
1426
  toRulesyncCommand() {
@@ -1348,13 +1473,13 @@ var CursorCommand = class _CursorCommand extends ToolCommand {
1348
1473
  global = false
1349
1474
  }) {
1350
1475
  const paths = this.getSettablePaths({ global });
1351
- const filePath = (0, import_node_path11.join)(baseDir, paths.relativeDirPath, relativeFilePath);
1476
+ const filePath = (0, import_node_path12.join)(baseDir, paths.relativeDirPath, relativeFilePath);
1352
1477
  const fileContent = await readFileContent(filePath);
1353
1478
  const { body: content } = parseFrontmatter(fileContent);
1354
1479
  return new _CursorCommand({
1355
1480
  baseDir,
1356
1481
  relativeDirPath: paths.relativeDirPath,
1357
- relativeFilePath: (0, import_node_path11.basename)(relativeFilePath),
1482
+ relativeFilePath: (0, import_node_path12.basename)(relativeFilePath),
1358
1483
  fileContent: content.trim(),
1359
1484
  validate
1360
1485
  });
@@ -1362,12 +1487,12 @@ var CursorCommand = class _CursorCommand extends ToolCommand {
1362
1487
  };
1363
1488
 
1364
1489
  // src/features/commands/geminicli-command.ts
1365
- var import_node_path12 = require("path");
1490
+ var import_node_path13 = require("path");
1366
1491
  var import_smol_toml = require("smol-toml");
1367
- var import_mini8 = require("zod/mini");
1368
- var GeminiCliCommandFrontmatterSchema = import_mini8.z.object({
1369
- description: import_mini8.z.optional(import_mini8.z.string()),
1370
- prompt: import_mini8.z.string()
1492
+ var import_mini9 = require("zod/mini");
1493
+ var GeminiCliCommandFrontmatterSchema = import_mini9.z.object({
1494
+ description: import_mini9.z.optional(import_mini9.z.string()),
1495
+ prompt: import_mini9.z.string()
1371
1496
  });
1372
1497
  var GeminiCliCommand = class _GeminiCliCommand extends ToolCommand {
1373
1498
  frontmatter;
@@ -1380,7 +1505,7 @@ var GeminiCliCommand = class _GeminiCliCommand extends ToolCommand {
1380
1505
  }
1381
1506
  static getSettablePaths(_options = {}) {
1382
1507
  return {
1383
- relativeDirPath: (0, import_node_path12.join)(".gemini", "commands")
1508
+ relativeDirPath: (0, import_node_path13.join)(".gemini", "commands")
1384
1509
  };
1385
1510
  }
1386
1511
  parseTomlContent(content) {
@@ -1457,12 +1582,12 @@ ${geminiFrontmatter.prompt}
1457
1582
  global = false
1458
1583
  }) {
1459
1584
  const paths = this.getSettablePaths({ global });
1460
- const filePath = (0, import_node_path12.join)(baseDir, paths.relativeDirPath, relativeFilePath);
1585
+ const filePath = (0, import_node_path13.join)(baseDir, paths.relativeDirPath, relativeFilePath);
1461
1586
  const fileContent = await readFileContent(filePath);
1462
1587
  return new _GeminiCliCommand({
1463
1588
  baseDir,
1464
1589
  relativeDirPath: paths.relativeDirPath,
1465
- relativeFilePath: (0, import_node_path12.basename)(relativeFilePath),
1590
+ relativeFilePath: (0, import_node_path13.basename)(relativeFilePath),
1466
1591
  fileContent,
1467
1592
  validate
1468
1593
  });
@@ -1484,18 +1609,18 @@ ${geminiFrontmatter.prompt}
1484
1609
  };
1485
1610
 
1486
1611
  // src/features/commands/roo-command.ts
1487
- var import_node_path13 = require("path");
1488
- var import_mini9 = require("zod/mini");
1489
- var RooCommandFrontmatterSchema = import_mini9.z.object({
1490
- description: import_mini9.z.string(),
1491
- "argument-hint": (0, import_mini9.optional)(import_mini9.z.string())
1612
+ var import_node_path14 = require("path");
1613
+ var import_mini10 = require("zod/mini");
1614
+ var RooCommandFrontmatterSchema = import_mini10.z.object({
1615
+ description: import_mini10.z.string(),
1616
+ "argument-hint": (0, import_mini10.optional)(import_mini10.z.string())
1492
1617
  });
1493
1618
  var RooCommand = class _RooCommand extends ToolCommand {
1494
1619
  frontmatter;
1495
1620
  body;
1496
1621
  static getSettablePaths() {
1497
1622
  return {
1498
- relativeDirPath: (0, import_node_path13.join)(".roo", "commands")
1623
+ relativeDirPath: (0, import_node_path14.join)(".roo", "commands")
1499
1624
  };
1500
1625
  }
1501
1626
  constructor({ frontmatter, body, ...rest }) {
@@ -1503,7 +1628,7 @@ var RooCommand = class _RooCommand extends ToolCommand {
1503
1628
  const result = RooCommandFrontmatterSchema.safeParse(frontmatter);
1504
1629
  if (!result.success) {
1505
1630
  throw new Error(
1506
- `Invalid frontmatter in ${(0, import_node_path13.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
1631
+ `Invalid frontmatter in ${(0, import_node_path14.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
1507
1632
  );
1508
1633
  }
1509
1634
  }
@@ -1569,7 +1694,7 @@ var RooCommand = class _RooCommand extends ToolCommand {
1569
1694
  return {
1570
1695
  success: false,
1571
1696
  error: new Error(
1572
- `Invalid frontmatter in ${(0, import_node_path13.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
1697
+ `Invalid frontmatter in ${(0, import_node_path14.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
1573
1698
  )
1574
1699
  };
1575
1700
  }
@@ -1585,7 +1710,7 @@ var RooCommand = class _RooCommand extends ToolCommand {
1585
1710
  relativeFilePath,
1586
1711
  validate = true
1587
1712
  }) {
1588
- const filePath = (0, import_node_path13.join)(baseDir, _RooCommand.getSettablePaths().relativeDirPath, relativeFilePath);
1713
+ const filePath = (0, import_node_path14.join)(baseDir, _RooCommand.getSettablePaths().relativeDirPath, relativeFilePath);
1589
1714
  const fileContent = await readFileContent(filePath);
1590
1715
  const { frontmatter, body: content } = parseFrontmatter(fileContent);
1591
1716
  const result = RooCommandFrontmatterSchema.safeParse(frontmatter);
@@ -1595,7 +1720,7 @@ var RooCommand = class _RooCommand extends ToolCommand {
1595
1720
  return new _RooCommand({
1596
1721
  baseDir,
1597
1722
  relativeDirPath: _RooCommand.getSettablePaths().relativeDirPath,
1598
- relativeFilePath: (0, import_node_path13.basename)(relativeFilePath),
1723
+ relativeFilePath: (0, import_node_path14.basename)(relativeFilePath),
1599
1724
  frontmatter: result.data,
1600
1725
  body: content.trim(),
1601
1726
  fileContent,
@@ -1607,13 +1732,14 @@ var RooCommand = class _RooCommand extends ToolCommand {
1607
1732
  // src/features/commands/commands-processor.ts
1608
1733
  var commandsProcessorToolTargets = [
1609
1734
  "agentsmd",
1735
+ "antigravity",
1610
1736
  "claudecode",
1611
1737
  "geminicli",
1612
1738
  "roo",
1613
1739
  "copilot",
1614
1740
  "cursor"
1615
1741
  ];
1616
- var CommandsProcessorToolTargetSchema = import_mini10.z.enum(
1742
+ var CommandsProcessorToolTargetSchema = import_mini11.z.enum(
1617
1743
  // codexcli is not in the list of tool targets but we add it here because it is a valid tool target for global mode generation
1618
1744
  commandsProcessorToolTargets.concat("codexcli")
1619
1745
  );
@@ -1656,6 +1782,14 @@ var CommandsProcessor = class extends FeatureProcessor {
1656
1782
  baseDir: this.baseDir,
1657
1783
  rulesyncCommand
1658
1784
  });
1785
+ case "antigravity":
1786
+ if (!AntigravityCommand.isTargetedByRulesyncCommand(rulesyncCommand)) {
1787
+ return null;
1788
+ }
1789
+ return AntigravityCommand.fromRulesyncCommand({
1790
+ baseDir: this.baseDir,
1791
+ rulesyncCommand
1792
+ });
1659
1793
  case "claudecode":
1660
1794
  if (!ClaudecodeCommand.isTargetedByRulesyncCommand(rulesyncCommand)) {
1661
1795
  return null;
@@ -1731,11 +1865,11 @@ var CommandsProcessor = class extends FeatureProcessor {
1731
1865
  */
1732
1866
  async loadRulesyncFiles() {
1733
1867
  const rulesyncCommandPaths = await findFilesByGlobs(
1734
- (0, import_node_path14.join)(RulesyncCommand.getSettablePaths().relativeDirPath, "*.md")
1868
+ (0, import_node_path15.join)(RulesyncCommand.getSettablePaths().relativeDirPath, "*.md")
1735
1869
  );
1736
1870
  const rulesyncCommands = await Promise.all(
1737
1871
  rulesyncCommandPaths.map(
1738
- (path3) => RulesyncCommand.fromFile({ relativeFilePath: (0, import_node_path14.basename)(path3) })
1872
+ (path3) => RulesyncCommand.fromFile({ relativeFilePath: (0, import_node_path15.basename)(path3) })
1739
1873
  )
1740
1874
  );
1741
1875
  logger.info(`Successfully loaded ${rulesyncCommands.length} rulesync commands`);
@@ -1751,6 +1885,8 @@ var CommandsProcessor = class extends FeatureProcessor {
1751
1885
  switch (this.toolTarget) {
1752
1886
  case "agentsmd":
1753
1887
  return await this.loadAgentsmdCommands();
1888
+ case "antigravity":
1889
+ return await this.loadAntigravityCommands();
1754
1890
  case "claudecode":
1755
1891
  return await this.loadClaudecodeCommands();
1756
1892
  case "geminicli":
@@ -1773,7 +1909,7 @@ var CommandsProcessor = class extends FeatureProcessor {
1773
1909
  extension
1774
1910
  }) {
1775
1911
  const commandFilePaths = await findFilesByGlobs(
1776
- (0, import_node_path14.join)(this.baseDir, relativeDirPath, `*.${extension}`)
1912
+ (0, import_node_path15.join)(this.baseDir, relativeDirPath, `*.${extension}`)
1777
1913
  );
1778
1914
  const toolCommands = await Promise.all(
1779
1915
  commandFilePaths.map((path3) => {
@@ -1781,40 +1917,45 @@ var CommandsProcessor = class extends FeatureProcessor {
1781
1917
  case "agentsmd":
1782
1918
  return AgentsmdCommand.fromFile({
1783
1919
  baseDir: this.baseDir,
1784
- relativeFilePath: (0, import_node_path14.basename)(path3)
1920
+ relativeFilePath: (0, import_node_path15.basename)(path3)
1921
+ });
1922
+ case "antigravity":
1923
+ return AntigravityCommand.fromFile({
1924
+ baseDir: this.baseDir,
1925
+ relativeFilePath: (0, import_node_path15.basename)(path3)
1785
1926
  });
1786
1927
  case "claudecode":
1787
1928
  return ClaudecodeCommand.fromFile({
1788
1929
  baseDir: this.baseDir,
1789
- relativeFilePath: (0, import_node_path14.basename)(path3),
1930
+ relativeFilePath: (0, import_node_path15.basename)(path3),
1790
1931
  global: this.global
1791
1932
  });
1792
1933
  case "geminicli":
1793
1934
  return GeminiCliCommand.fromFile({
1794
1935
  baseDir: this.baseDir,
1795
- relativeFilePath: (0, import_node_path14.basename)(path3),
1936
+ relativeFilePath: (0, import_node_path15.basename)(path3),
1796
1937
  global: this.global
1797
1938
  });
1798
1939
  case "roo":
1799
1940
  return RooCommand.fromFile({
1800
1941
  baseDir: this.baseDir,
1801
- relativeFilePath: (0, import_node_path14.basename)(path3)
1942
+ relativeFilePath: (0, import_node_path15.basename)(path3)
1802
1943
  });
1803
1944
  case "copilot":
1804
1945
  return CopilotCommand.fromFile({
1805
1946
  baseDir: this.baseDir,
1806
- relativeFilePath: (0, import_node_path14.basename)(path3)
1947
+ relativeFilePath: (0, import_node_path15.basename)(path3)
1807
1948
  });
1808
1949
  case "cursor":
1809
1950
  return CursorCommand.fromFile({
1810
1951
  baseDir: this.baseDir,
1811
- relativeFilePath: (0, import_node_path14.basename)(path3),
1952
+ relativeFilePath: (0, import_node_path15.basename)(path3),
1812
1953
  global: this.global
1813
1954
  });
1814
1955
  case "codexcli":
1815
1956
  return CodexcliCommand.fromFile({
1816
1957
  baseDir: this.baseDir,
1817
- relativeFilePath: (0, import_node_path14.basename)(path3),
1958
+ relativeFilePath: (0, import_node_path15.basename)(path3),
1818
1959
  global: this.global
1819
1960
  });
1820
1961
  default:
@@ -1835,6 +1976,16 @@ var CommandsProcessor = class extends FeatureProcessor {
1835
1976
  extension: "md"
1836
1977
  });
1837
1978
  }
1979
+ /**
1980
+ * Load Antigravity workflow configurations from .agent/workflows/ directory
1981
+ */
1982
+ async loadAntigravityCommands() {
1983
+ return await this.loadToolCommandDefault({
1984
+ toolTarget: "antigravity",
1985
+ relativeDirPath: AntigravityCommand.getSettablePaths().relativeDirPath,
1986
+ extension: "md"
1987
+ });
1988
+ }
1838
1989
  /**
1839
1990
  * Load Copilot command configurations from .github/prompts/ directory
1840
1991
  */
@@ -1923,17 +2074,17 @@ var CommandsProcessor = class extends FeatureProcessor {
1923
2074
  };
1924
2075
 
1925
2076
  // src/features/ignore/ignore-processor.ts
1926
- var import_mini11 = require("zod/mini");
2077
+ var import_mini12 = require("zod/mini");
1927
2078
 
1928
2079
  // src/features/ignore/amazonqcli-ignore.ts
1929
- var import_node_path16 = require("path");
2080
+ var import_node_path17 = require("path");
1930
2081
 
1931
2082
  // src/types/tool-file.ts
1932
2083
  var ToolFile = class extends AiFile {
1933
2084
  };
1934
2085
 
1935
2086
  // src/features/ignore/rulesync-ignore.ts
1936
- var import_node_path15 = require("path");
2087
+ var import_node_path16 = require("path");
1937
2088
  var RulesyncIgnore = class _RulesyncIgnore extends RulesyncFile {
1938
2089
  validate() {
1939
2090
  return { success: true, error: null };
@@ -1953,12 +2104,12 @@ var RulesyncIgnore = class _RulesyncIgnore extends RulesyncFile {
1953
2104
  static async fromFile() {
1954
2105
  const baseDir = process.cwd();
1955
2106
  const paths = this.getSettablePaths();
1956
- const recommendedPath = (0, import_node_path15.join)(
2107
+ const recommendedPath = (0, import_node_path16.join)(
1957
2108
  baseDir,
1958
2109
  paths.recommended.relativeDirPath,
1959
2110
  paths.recommended.relativeFilePath
1960
2111
  );
1961
- const legacyPath = (0, import_node_path15.join)(baseDir, paths.legacy.relativeDirPath, paths.legacy.relativeFilePath);
2112
+ const legacyPath = (0, import_node_path16.join)(baseDir, paths.legacy.relativeDirPath, paths.legacy.relativeFilePath);
1962
2113
  if (await fileExists(recommendedPath)) {
1963
2114
  const fileContent2 = await readFileContent(recommendedPath);
1964
2115
  return new _RulesyncIgnore({
@@ -2067,7 +2218,7 @@ var AmazonqcliIgnore = class _AmazonqcliIgnore extends ToolIgnore {
2067
2218
  validate = true
2068
2219
  }) {
2069
2220
  const fileContent = await readFileContent(
2070
- (0, import_node_path16.join)(
2221
+ (0, import_node_path17.join)(
2071
2222
  baseDir,
2072
2223
  this.getSettablePaths().relativeDirPath,
2073
2224
  this.getSettablePaths().relativeFilePath
@@ -2084,7 +2235,7 @@ var AmazonqcliIgnore = class _AmazonqcliIgnore extends ToolIgnore {
2084
2235
  };
2085
2236
 
2086
2237
  // src/features/ignore/augmentcode-ignore.ts
2087
- var import_node_path17 = require("path");
2238
+ var import_node_path18 = require("path");
2088
2239
  var AugmentcodeIgnore = class _AugmentcodeIgnore extends ToolIgnore {
2089
2240
  static getSettablePaths() {
2090
2241
  return {
@@ -2122,7 +2273,7 @@ var AugmentcodeIgnore = class _AugmentcodeIgnore extends ToolIgnore {
2122
2273
  validate = true
2123
2274
  }) {
2124
2275
  const fileContent = await readFileContent(
2125
- (0, import_node_path17.join)(
2276
+ (0, import_node_path18.join)(
2126
2277
  baseDir,
2127
2278
  this.getSettablePaths().relativeDirPath,
2128
2279
  this.getSettablePaths().relativeFilePath
@@ -2139,7 +2290,7 @@ var AugmentcodeIgnore = class _AugmentcodeIgnore extends ToolIgnore {
2139
2290
  };
2140
2291
 
2141
2292
  // src/features/ignore/claudecode-ignore.ts
2142
- var import_node_path18 = require("path");
2293
+ var import_node_path19 = require("path");
2143
2294
  var import_es_toolkit = require("es-toolkit");
2144
2295
  var ClaudecodeIgnore = class _ClaudecodeIgnore extends ToolIgnore {
2145
2296
  constructor(params) {
@@ -2175,7 +2326,7 @@ var ClaudecodeIgnore = class _ClaudecodeIgnore extends ToolIgnore {
2175
2326
  const fileContent = rulesyncIgnore.getFileContent();
2176
2327
  const patterns = fileContent.split(/\r?\n|\r/).map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#"));
2177
2328
  const deniedValues = patterns.map((pattern) => `Read(${pattern})`);
2178
- const filePath = (0, import_node_path18.join)(
2329
+ const filePath = (0, import_node_path19.join)(
2179
2330
  baseDir,
2180
2331
  this.getSettablePaths().relativeDirPath,
2181
2332
  this.getSettablePaths().relativeFilePath
@@ -2203,7 +2354,7 @@ var ClaudecodeIgnore = class _ClaudecodeIgnore extends ToolIgnore {
2203
2354
  validate = true
2204
2355
  }) {
2205
2356
  const fileContent = await readFileContent(
2206
- (0, import_node_path18.join)(
2357
+ (0, import_node_path19.join)(
2207
2358
  baseDir,
2208
2359
  this.getSettablePaths().relativeDirPath,
2209
2360
  this.getSettablePaths().relativeFilePath
@@ -2220,7 +2371,7 @@ var ClaudecodeIgnore = class _ClaudecodeIgnore extends ToolIgnore {
2220
2371
  };
2221
2372
 
2222
2373
  // src/features/ignore/cline-ignore.ts
2223
- var import_node_path19 = require("path");
2374
+ var import_node_path20 = require("path");
2224
2375
  var ClineIgnore = class _ClineIgnore extends ToolIgnore {
2225
2376
  static getSettablePaths() {
2226
2377
  return {
@@ -2257,7 +2408,7 @@ var ClineIgnore = class _ClineIgnore extends ToolIgnore {
2257
2408
  validate = true
2258
2409
  }) {
2259
2410
  const fileContent = await readFileContent(
2260
- (0, import_node_path19.join)(
2411
+ (0, import_node_path20.join)(
2261
2412
  baseDir,
2262
2413
  this.getSettablePaths().relativeDirPath,
2263
2414
  this.getSettablePaths().relativeFilePath
@@ -2274,7 +2425,7 @@ var ClineIgnore = class _ClineIgnore extends ToolIgnore {
2274
2425
  };
2275
2426
 
2276
2427
  // src/features/ignore/cursor-ignore.ts
2277
- var import_node_path20 = require("path");
2428
+ var import_node_path21 = require("path");
2278
2429
  var CursorIgnore = class _CursorIgnore extends ToolIgnore {
2279
2430
  static getSettablePaths() {
2280
2431
  return {
@@ -2307,7 +2458,7 @@ var CursorIgnore = class _CursorIgnore extends ToolIgnore {
2307
2458
  validate = true
2308
2459
  }) {
2309
2460
  const fileContent = await readFileContent(
2310
- (0, import_node_path20.join)(
2461
+ (0, import_node_path21.join)(
2311
2462
  baseDir,
2312
2463
  this.getSettablePaths().relativeDirPath,
2313
2464
  this.getSettablePaths().relativeFilePath
@@ -2324,7 +2475,7 @@ var CursorIgnore = class _CursorIgnore extends ToolIgnore {
2324
2475
  };
2325
2476
 
2326
2477
  // src/features/ignore/geminicli-ignore.ts
2327
- var import_node_path21 = require("path");
2478
+ var import_node_path22 = require("path");
2328
2479
  var GeminiCliIgnore = class _GeminiCliIgnore extends ToolIgnore {
2329
2480
  static getSettablePaths() {
2330
2481
  return {
@@ -2351,7 +2502,7 @@ var GeminiCliIgnore = class _GeminiCliIgnore extends ToolIgnore {
2351
2502
  validate = true
2352
2503
  }) {
2353
2504
  const fileContent = await readFileContent(
2354
- (0, import_node_path21.join)(
2505
+ (0, import_node_path22.join)(
2355
2506
  baseDir,
2356
2507
  this.getSettablePaths().relativeDirPath,
2357
2508
  this.getSettablePaths().relativeFilePath
@@ -2368,7 +2519,7 @@ var GeminiCliIgnore = class _GeminiCliIgnore extends ToolIgnore {
2368
2519
  };
2369
2520
 
2370
2521
  // src/features/ignore/junie-ignore.ts
2371
- var import_node_path22 = require("path");
2522
+ var import_node_path23 = require("path");
2372
2523
  var JunieIgnore = class _JunieIgnore extends ToolIgnore {
2373
2524
  static getSettablePaths() {
2374
2525
  return {
@@ -2395,7 +2546,7 @@ var JunieIgnore = class _JunieIgnore extends ToolIgnore {
2395
2546
  validate = true
2396
2547
  }) {
2397
2548
  const fileContent = await readFileContent(
2398
- (0, import_node_path22.join)(
2549
+ (0, import_node_path23.join)(
2399
2550
  baseDir,
2400
2551
  this.getSettablePaths().relativeDirPath,
2401
2552
  this.getSettablePaths().relativeFilePath
@@ -2412,7 +2563,7 @@ var JunieIgnore = class _JunieIgnore extends ToolIgnore {
2412
2563
  };
2413
2564
 
2414
2565
  // src/features/ignore/kiro-ignore.ts
2415
- var import_node_path23 = require("path");
2566
+ var import_node_path24 = require("path");
2416
2567
  var KiroIgnore = class _KiroIgnore extends ToolIgnore {
2417
2568
  static getSettablePaths() {
2418
2569
  return {
@@ -2439,7 +2590,7 @@ var KiroIgnore = class _KiroIgnore extends ToolIgnore {
2439
2590
  validate = true
2440
2591
  }) {
2441
2592
  const fileContent = await readFileContent(
2442
- (0, import_node_path23.join)(
2593
+ (0, import_node_path24.join)(
2443
2594
  baseDir,
2444
2595
  this.getSettablePaths().relativeDirPath,
2445
2596
  this.getSettablePaths().relativeFilePath
@@ -2456,7 +2607,7 @@ var KiroIgnore = class _KiroIgnore extends ToolIgnore {
2456
2607
  };
2457
2608
 
2458
2609
  // src/features/ignore/qwencode-ignore.ts
2459
- var import_node_path24 = require("path");
2610
+ var import_node_path25 = require("path");
2460
2611
  var QwencodeIgnore = class _QwencodeIgnore extends ToolIgnore {
2461
2612
  static getSettablePaths() {
2462
2613
  return {
@@ -2483,7 +2634,7 @@ var QwencodeIgnore = class _QwencodeIgnore extends ToolIgnore {
2483
2634
  validate = true
2484
2635
  }) {
2485
2636
  const fileContent = await readFileContent(
2486
- (0, import_node_path24.join)(
2637
+ (0, import_node_path25.join)(
2487
2638
  baseDir,
2488
2639
  this.getSettablePaths().relativeDirPath,
2489
2640
  this.getSettablePaths().relativeFilePath
@@ -2500,7 +2651,7 @@ var QwencodeIgnore = class _QwencodeIgnore extends ToolIgnore {
2500
2651
  };
2501
2652
 
2502
2653
  // src/features/ignore/roo-ignore.ts
2503
- var import_node_path25 = require("path");
2654
+ var import_node_path26 = require("path");
2504
2655
  var RooIgnore = class _RooIgnore extends ToolIgnore {
2505
2656
  static getSettablePaths() {
2506
2657
  return {
@@ -2527,7 +2678,7 @@ var RooIgnore = class _RooIgnore extends ToolIgnore {
2527
2678
  validate = true
2528
2679
  }) {
2529
2680
  const fileContent = await readFileContent(
2530
- (0, import_node_path25.join)(
2681
+ (0, import_node_path26.join)(
2531
2682
  baseDir,
2532
2683
  this.getSettablePaths().relativeDirPath,
2533
2684
  this.getSettablePaths().relativeFilePath
@@ -2544,7 +2695,7 @@ var RooIgnore = class _RooIgnore extends ToolIgnore {
2544
2695
  };
2545
2696
 
2546
2697
  // src/features/ignore/windsurf-ignore.ts
2547
- var import_node_path26 = require("path");
2698
+ var import_node_path27 = require("path");
2548
2699
  var WindsurfIgnore = class _WindsurfIgnore extends ToolIgnore {
2549
2700
  static getSettablePaths() {
2550
2701
  return {
@@ -2571,7 +2722,7 @@ var WindsurfIgnore = class _WindsurfIgnore extends ToolIgnore {
2571
2722
  validate = true
2572
2723
  }) {
2573
2724
  const fileContent = await readFileContent(
2574
- (0, import_node_path26.join)(
2725
+ (0, import_node_path27.join)(
2575
2726
  baseDir,
2576
2727
  this.getSettablePaths().relativeDirPath,
2577
2728
  this.getSettablePaths().relativeFilePath
@@ -2601,7 +2752,7 @@ var ignoreProcessorToolTargets = [
2601
2752
  "roo",
2602
2753
  "windsurf"
2603
2754
  ];
2604
- var IgnoreProcessorToolTargetSchema = import_mini11.z.enum(ignoreProcessorToolTargets);
2755
+ var IgnoreProcessorToolTargetSchema = import_mini12.z.enum(ignoreProcessorToolTargets);
2605
2756
  var IgnoreProcessor = class extends FeatureProcessor {
2606
2757
  toolTarget;
2607
2758
  constructor({
@@ -2784,54 +2935,54 @@ var IgnoreProcessor = class extends FeatureProcessor {
2784
2935
  };
2785
2936
 
2786
2937
  // src/features/mcp/mcp-processor.ts
2787
- var import_mini16 = require("zod/mini");
2938
+ var import_mini17 = require("zod/mini");
2788
2939
 
2789
2940
  // src/features/mcp/amazonqcli-mcp.ts
2790
- var import_node_path28 = require("path");
2941
+ var import_node_path29 = require("path");
2791
2942
 
2792
2943
  // src/features/mcp/rulesync-mcp.ts
2793
- var import_node_path27 = require("path");
2944
+ var import_node_path28 = require("path");
2794
2945
  var import_object = require("es-toolkit/object");
2795
- var import_mini13 = require("zod/mini");
2946
+ var import_mini14 = require("zod/mini");
2796
2947
 
2797
2948
  // src/types/mcp.ts
2798
- var import_mini12 = require("zod/mini");
2799
- var McpServerSchema = import_mini12.z.object({
2800
- type: import_mini12.z.optional(import_mini12.z.enum(["stdio", "sse", "http"])),
2801
- command: import_mini12.z.optional(import_mini12.z.union([import_mini12.z.string(), import_mini12.z.array(import_mini12.z.string())])),
2802
- args: import_mini12.z.optional(import_mini12.z.array(import_mini12.z.string())),
2803
- url: import_mini12.z.optional(import_mini12.z.string()),
2804
- httpUrl: import_mini12.z.optional(import_mini12.z.string()),
2805
- env: import_mini12.z.optional(import_mini12.z.record(import_mini12.z.string(), import_mini12.z.string())),
2806
- disabled: import_mini12.z.optional(import_mini12.z.boolean()),
2807
- networkTimeout: import_mini12.z.optional(import_mini12.z.number()),
2808
- timeout: import_mini12.z.optional(import_mini12.z.number()),
2809
- trust: import_mini12.z.optional(import_mini12.z.boolean()),
2810
- cwd: import_mini12.z.optional(import_mini12.z.string()),
2811
- transport: import_mini12.z.optional(import_mini12.z.enum(["stdio", "sse", "http"])),
2812
- alwaysAllow: import_mini12.z.optional(import_mini12.z.array(import_mini12.z.string())),
2813
- tools: import_mini12.z.optional(import_mini12.z.array(import_mini12.z.string())),
2814
- kiroAutoApprove: import_mini12.z.optional(import_mini12.z.array(import_mini12.z.string())),
2815
- kiroAutoBlock: import_mini12.z.optional(import_mini12.z.array(import_mini12.z.string())),
2816
- headers: import_mini12.z.optional(import_mini12.z.record(import_mini12.z.string(), import_mini12.z.string()))
2949
+ var import_mini13 = require("zod/mini");
2950
+ var McpServerSchema = import_mini13.z.object({
2951
+ type: import_mini13.z.optional(import_mini13.z.enum(["stdio", "sse", "http"])),
2952
+ command: import_mini13.z.optional(import_mini13.z.union([import_mini13.z.string(), import_mini13.z.array(import_mini13.z.string())])),
2953
+ args: import_mini13.z.optional(import_mini13.z.array(import_mini13.z.string())),
2954
+ url: import_mini13.z.optional(import_mini13.z.string()),
2955
+ httpUrl: import_mini13.z.optional(import_mini13.z.string()),
2956
+ env: import_mini13.z.optional(import_mini13.z.record(import_mini13.z.string(), import_mini13.z.string())),
2957
+ disabled: import_mini13.z.optional(import_mini13.z.boolean()),
2958
+ networkTimeout: import_mini13.z.optional(import_mini13.z.number()),
2959
+ timeout: import_mini13.z.optional(import_mini13.z.number()),
2960
+ trust: import_mini13.z.optional(import_mini13.z.boolean()),
2961
+ cwd: import_mini13.z.optional(import_mini13.z.string()),
2962
+ transport: import_mini13.z.optional(import_mini13.z.enum(["stdio", "sse", "http"])),
2963
+ alwaysAllow: import_mini13.z.optional(import_mini13.z.array(import_mini13.z.string())),
2964
+ tools: import_mini13.z.optional(import_mini13.z.array(import_mini13.z.string())),
2965
+ kiroAutoApprove: import_mini13.z.optional(import_mini13.z.array(import_mini13.z.string())),
2966
+ kiroAutoBlock: import_mini13.z.optional(import_mini13.z.array(import_mini13.z.string())),
2967
+ headers: import_mini13.z.optional(import_mini13.z.record(import_mini13.z.string(), import_mini13.z.string()))
2817
2968
  });
2818
- var McpServersSchema = import_mini12.z.record(import_mini12.z.string(), McpServerSchema);
2969
+ var McpServersSchema = import_mini13.z.record(import_mini13.z.string(), McpServerSchema);
2819
2970
 
2820
2971
  // src/features/mcp/rulesync-mcp.ts
2821
- var RulesyncMcpServerSchema = import_mini13.z.union([
2822
- import_mini13.z.extend(McpServerSchema, {
2823
- targets: import_mini13.z.optional(RulesyncTargetsSchema),
2824
- description: import_mini13.z.optional(import_mini13.z.string()),
2825
- exposed: import_mini13.z.optional(import_mini13.z.literal(false))
2972
+ var RulesyncMcpServerSchema = import_mini14.z.union([
2973
+ import_mini14.z.extend(McpServerSchema, {
2974
+ targets: import_mini14.z.optional(RulesyncTargetsSchema),
2975
+ description: import_mini14.z.optional(import_mini14.z.string()),
2976
+ exposed: import_mini14.z.optional(import_mini14.z.literal(false))
2826
2977
  }),
2827
- import_mini13.z.extend(McpServerSchema, {
2828
- targets: import_mini13.z.optional(RulesyncTargetsSchema),
2829
- description: import_mini13.z.undefined(),
2830
- exposed: import_mini13.z.literal(true)
2978
+ import_mini14.z.extend(McpServerSchema, {
2979
+ targets: import_mini14.z.optional(RulesyncTargetsSchema),
2980
+ description: import_mini14.z.undefined(),
2981
+ exposed: import_mini14.z.literal(true)
2831
2982
  })
2832
2983
  ]);
2833
- var RulesyncMcpConfigSchema = import_mini13.z.object({
2834
- mcpServers: import_mini13.z.record(import_mini13.z.string(), RulesyncMcpServerSchema)
2984
+ var RulesyncMcpConfigSchema = import_mini14.z.object({
2985
+ mcpServers: import_mini14.z.record(import_mini14.z.string(), RulesyncMcpServerSchema)
2835
2986
  });
2836
2987
  var RulesyncMcp = class _RulesyncMcp extends RulesyncFile {
2837
2988
  json;
@@ -2872,12 +3023,12 @@ var RulesyncMcp = class _RulesyncMcp extends RulesyncFile {
2872
3023
  }) {
2873
3024
  const baseDir = process.cwd();
2874
3025
  const paths = this.getSettablePaths();
2875
- const recommendedPath = (0, import_node_path27.join)(
3026
+ const recommendedPath = (0, import_node_path28.join)(
2876
3027
  baseDir,
2877
3028
  paths.recommended.relativeDirPath,
2878
3029
  paths.recommended.relativeFilePath
2879
3030
  );
2880
- const legacyPath = (0, import_node_path27.join)(baseDir, paths.legacy.relativeDirPath, paths.legacy.relativeFilePath);
3031
+ const legacyPath = (0, import_node_path28.join)(baseDir, paths.legacy.relativeDirPath, paths.legacy.relativeFilePath);
2881
3032
  if (await fileExists(recommendedPath)) {
2882
3033
  const fileContent2 = await readFileContent(recommendedPath);
2883
3034
  return new _RulesyncMcp({
@@ -2997,7 +3148,7 @@ var AmazonqcliMcp = class _AmazonqcliMcp extends ToolMcp {
2997
3148
  validate = true
2998
3149
  }) {
2999
3150
  const fileContent = await readFileContent(
3000
- (0, import_node_path28.join)(
3151
+ (0, import_node_path29.join)(
3001
3152
  baseDir,
3002
3153
  this.getSettablePaths().relativeDirPath,
3003
3154
  this.getSettablePaths().relativeFilePath
@@ -3033,17 +3184,17 @@ var AmazonqcliMcp = class _AmazonqcliMcp extends ToolMcp {
3033
3184
  };
3034
3185
 
3035
3186
  // src/features/mcp/claudecode-mcp.ts
3036
- var import_node_path30 = require("path");
3187
+ var import_node_path31 = require("path");
3037
3188
 
3038
3189
  // src/features/mcp/modular-mcp.ts
3039
- var import_node_path29 = require("path");
3040
- var import_mini14 = require("zod/mini");
3041
- var ModularMcpServerSchema = import_mini14.z.extend(McpServerSchema, {
3042
- description: import_mini14.z.string()
3190
+ var import_node_path30 = require("path");
3191
+ var import_mini15 = require("zod/mini");
3192
+ var ModularMcpServerSchema = import_mini15.z.extend(McpServerSchema, {
3193
+ description: import_mini15.z.string()
3043
3194
  // Required for modular-mcp
3044
3195
  });
3045
- var ModularMcpConfigSchema = import_mini14.z.object({
3046
- mcpServers: import_mini14.z.record(import_mini14.z.string(), ModularMcpServerSchema)
3196
+ var ModularMcpConfigSchema = import_mini15.z.object({
3197
+ mcpServers: import_mini15.z.record(import_mini15.z.string(), ModularMcpServerSchema)
3047
3198
  });
3048
3199
  var ModularMcp = class _ModularMcp extends AiFile {
3049
3200
  json;
@@ -3099,7 +3250,7 @@ var ModularMcp = class _ModularMcp extends AiFile {
3099
3250
  args: [
3100
3251
  "-y",
3101
3252
  "@kimuson/modular-mcp",
3102
- (0, import_node_path29.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath)
3253
+ (0, import_node_path30.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath)
3103
3254
  ],
3104
3255
  env: {}
3105
3256
  }
@@ -3164,7 +3315,7 @@ var ClaudecodeMcp = class _ClaudecodeMcp extends ToolMcp {
3164
3315
  }) {
3165
3316
  const paths = this.getSettablePaths({ global });
3166
3317
  const fileContent = await readOrInitializeFileContent(
3167
- (0, import_node_path30.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3318
+ (0, import_node_path31.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3168
3319
  JSON.stringify({ mcpServers: {} }, null, 2)
3169
3320
  );
3170
3321
  const json = JSON.parse(fileContent);
@@ -3186,7 +3337,7 @@ var ClaudecodeMcp = class _ClaudecodeMcp extends ToolMcp {
3186
3337
  }) {
3187
3338
  const paths = this.getSettablePaths({ global });
3188
3339
  const fileContent = await readOrInitializeFileContent(
3189
- (0, import_node_path30.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3340
+ (0, import_node_path31.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3190
3341
  JSON.stringify({ mcpServers: {} }, null, 2)
3191
3342
  );
3192
3343
  const json = JSON.parse(fileContent);
@@ -3221,7 +3372,7 @@ var ClaudecodeMcp = class _ClaudecodeMcp extends ToolMcp {
3221
3372
  };
3222
3373
 
3223
3374
  // src/features/mcp/cline-mcp.ts
3224
- var import_node_path31 = require("path");
3375
+ var import_node_path32 = require("path");
3225
3376
  var ClineMcp = class _ClineMcp extends ToolMcp {
3226
3377
  json;
3227
3378
  constructor(params) {
@@ -3242,7 +3393,7 @@ var ClineMcp = class _ClineMcp extends ToolMcp {
3242
3393
  validate = true
3243
3394
  }) {
3244
3395
  const fileContent = await readFileContent(
3245
- (0, import_node_path31.join)(
3396
+ (0, import_node_path32.join)(
3246
3397
  baseDir,
3247
3398
  this.getSettablePaths().relativeDirPath,
3248
3399
  this.getSettablePaths().relativeFilePath
@@ -3278,7 +3429,7 @@ var ClineMcp = class _ClineMcp extends ToolMcp {
3278
3429
  };
3279
3430
 
3280
3431
  // src/features/mcp/codexcli-mcp.ts
3281
- var import_node_path32 = require("path");
3432
+ var import_node_path33 = require("path");
3282
3433
  var smolToml = __toESM(require("smol-toml"), 1);
3283
3434
  var CodexcliMcp = class _CodexcliMcp extends ToolMcp {
3284
3435
  toml;
@@ -3314,7 +3465,7 @@ var CodexcliMcp = class _CodexcliMcp extends ToolMcp {
3314
3465
  }) {
3315
3466
  const paths = this.getSettablePaths({ global });
3316
3467
  const fileContent = await readFileContent(
3317
- (0, import_node_path32.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath)
3468
+ (0, import_node_path33.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath)
3318
3469
  );
3319
3470
  return new _CodexcliMcp({
3320
3471
  baseDir,
@@ -3331,7 +3482,7 @@ var CodexcliMcp = class _CodexcliMcp extends ToolMcp {
3331
3482
  global = false
3332
3483
  }) {
3333
3484
  const paths = this.getSettablePaths({ global });
3334
- const configTomlFilePath = (0, import_node_path32.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath);
3485
+ const configTomlFilePath = (0, import_node_path33.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath);
3335
3486
  const configTomlFileContent = await readOrInitializeFileContent(
3336
3487
  configTomlFilePath,
3337
3488
  smolToml.stringify({})
@@ -3372,7 +3523,7 @@ var CodexcliMcp = class _CodexcliMcp extends ToolMcp {
3372
3523
  };
3373
3524
 
3374
3525
  // src/features/mcp/copilot-mcp.ts
3375
- var import_node_path33 = require("path");
3526
+ var import_node_path34 = require("path");
3376
3527
  var CopilotMcp = class _CopilotMcp extends ToolMcp {
3377
3528
  json;
3378
3529
  constructor(params) {
@@ -3393,7 +3544,7 @@ var CopilotMcp = class _CopilotMcp extends ToolMcp {
3393
3544
  validate = true
3394
3545
  }) {
3395
3546
  const fileContent = await readFileContent(
3396
- (0, import_node_path33.join)(
3547
+ (0, import_node_path34.join)(
3397
3548
  baseDir,
3398
3549
  this.getSettablePaths().relativeDirPath,
3399
3550
  this.getSettablePaths().relativeFilePath
@@ -3429,7 +3580,7 @@ var CopilotMcp = class _CopilotMcp extends ToolMcp {
3429
3580
  };
3430
3581
 
3431
3582
  // src/features/mcp/cursor-mcp.ts
3432
- var import_node_path34 = require("path");
3583
+ var import_node_path35 = require("path");
3433
3584
  var CursorMcp = class _CursorMcp extends ToolMcp {
3434
3585
  json;
3435
3586
  constructor(params) {
@@ -3450,7 +3601,7 @@ var CursorMcp = class _CursorMcp extends ToolMcp {
3450
3601
  validate = true
3451
3602
  }) {
3452
3603
  const fileContent = await readFileContent(
3453
- (0, import_node_path34.join)(
3604
+ (0, import_node_path35.join)(
3454
3605
  baseDir,
3455
3606
  this.getSettablePaths().relativeDirPath,
3456
3607
  this.getSettablePaths().relativeFilePath
@@ -3497,7 +3648,7 @@ var CursorMcp = class _CursorMcp extends ToolMcp {
3497
3648
  };
3498
3649
 
3499
3650
  // src/features/mcp/geminicli-mcp.ts
3500
- var import_node_path35 = require("path");
3651
+ var import_node_path36 = require("path");
3501
3652
  var GeminiCliMcp = class _GeminiCliMcp extends ToolMcp {
3502
3653
  json;
3503
3654
  constructor(params) {
@@ -3526,7 +3677,7 @@ var GeminiCliMcp = class _GeminiCliMcp extends ToolMcp {
3526
3677
  }) {
3527
3678
  const paths = this.getSettablePaths({ global });
3528
3679
  const fileContent = await readOrInitializeFileContent(
3529
- (0, import_node_path35.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3680
+ (0, import_node_path36.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3530
3681
  JSON.stringify({ mcpServers: {} }, null, 2)
3531
3682
  );
3532
3683
  const json = JSON.parse(fileContent);
@@ -3547,7 +3698,7 @@ var GeminiCliMcp = class _GeminiCliMcp extends ToolMcp {
3547
3698
  }) {
3548
3699
  const paths = this.getSettablePaths({ global });
3549
3700
  const fileContent = await readOrInitializeFileContent(
3550
- (0, import_node_path35.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3701
+ (0, import_node_path36.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3551
3702
  JSON.stringify({ mcpServers: {} }, null, 2)
3552
3703
  );
3553
3704
  const json = JSON.parse(fileContent);
@@ -3571,7 +3722,7 @@ var GeminiCliMcp = class _GeminiCliMcp extends ToolMcp {
3571
3722
  };
3572
3723
 
3573
3724
  // src/features/mcp/junie-mcp.ts
3574
- var import_node_path36 = require("path");
3725
+ var import_node_path37 = require("path");
3575
3726
  var JunieMcp = class _JunieMcp extends ToolMcp {
3576
3727
  json;
3577
3728
  constructor(params) {
@@ -3583,7 +3734,7 @@ var JunieMcp = class _JunieMcp extends ToolMcp {
3583
3734
  }
3584
3735
  static getSettablePaths() {
3585
3736
  return {
3586
- relativeDirPath: (0, import_node_path36.join)(".junie", "mcp"),
3737
+ relativeDirPath: (0, import_node_path37.join)(".junie", "mcp"),
3587
3738
  relativeFilePath: "mcp.json"
3588
3739
  };
3589
3740
  }
@@ -3592,7 +3743,7 @@ var JunieMcp = class _JunieMcp extends ToolMcp {
3592
3743
  validate = true
3593
3744
  }) {
3594
3745
  const fileContent = await readFileContent(
3595
- (0, import_node_path36.join)(
3746
+ (0, import_node_path37.join)(
3596
3747
  baseDir,
3597
3748
  this.getSettablePaths().relativeDirPath,
3598
3749
  this.getSettablePaths().relativeFilePath
@@ -3628,28 +3779,28 @@ var JunieMcp = class _JunieMcp extends ToolMcp {
3628
3779
  };
3629
3780
 
3630
3781
  // src/features/mcp/opencode-mcp.ts
3631
- var import_node_path37 = require("path");
3632
- var import_mini15 = require("zod/mini");
3633
- var OpencodeMcpLocalServerSchema = import_mini15.z.object({
3634
- type: import_mini15.z.literal("local"),
3635
- command: import_mini15.z.array(import_mini15.z.string()),
3636
- environment: import_mini15.z.optional(import_mini15.z.record(import_mini15.z.string(), import_mini15.z.string())),
3637
- enabled: import_mini15.z._default(import_mini15.z.boolean(), true),
3638
- cwd: import_mini15.z.optional(import_mini15.z.string())
3782
+ var import_node_path38 = require("path");
3783
+ var import_mini16 = require("zod/mini");
3784
+ var OpencodeMcpLocalServerSchema = import_mini16.z.object({
3785
+ type: import_mini16.z.literal("local"),
3786
+ command: import_mini16.z.array(import_mini16.z.string()),
3787
+ environment: import_mini16.z.optional(import_mini16.z.record(import_mini16.z.string(), import_mini16.z.string())),
3788
+ enabled: import_mini16.z._default(import_mini16.z.boolean(), true),
3789
+ cwd: import_mini16.z.optional(import_mini16.z.string())
3639
3790
  });
3640
- var OpencodeMcpRemoteServerSchema = import_mini15.z.object({
3641
- type: import_mini15.z.literal("remote"),
3642
- url: import_mini15.z.string(),
3643
- headers: import_mini15.z.optional(import_mini15.z.record(import_mini15.z.string(), import_mini15.z.string())),
3644
- enabled: import_mini15.z._default(import_mini15.z.boolean(), true)
3791
+ var OpencodeMcpRemoteServerSchema = import_mini16.z.object({
3792
+ type: import_mini16.z.literal("remote"),
3793
+ url: import_mini16.z.string(),
3794
+ headers: import_mini16.z.optional(import_mini16.z.record(import_mini16.z.string(), import_mini16.z.string())),
3795
+ enabled: import_mini16.z._default(import_mini16.z.boolean(), true)
3645
3796
  });
3646
- var OpencodeMcpServerSchema = import_mini15.z.union([
3797
+ var OpencodeMcpServerSchema = import_mini16.z.union([
3647
3798
  OpencodeMcpLocalServerSchema,
3648
3799
  OpencodeMcpRemoteServerSchema
3649
3800
  ]);
3650
- var OpencodeConfigSchema = import_mini15.z.looseObject({
3651
- $schema: import_mini15.z.optional(import_mini15.z.string()),
3652
- mcp: import_mini15.z.optional(import_mini15.z.record(import_mini15.z.string(), OpencodeMcpServerSchema))
3801
+ var OpencodeConfigSchema = import_mini16.z.looseObject({
3802
+ $schema: import_mini16.z.optional(import_mini16.z.string()),
3803
+ mcp: import_mini16.z.optional(import_mini16.z.record(import_mini16.z.string(), OpencodeMcpServerSchema))
3653
3804
  });
3654
3805
  function convertFromOpencodeFormat(opencodeMcp) {
3655
3806
  return Object.fromEntries(
@@ -3746,7 +3897,7 @@ var OpencodeMcp = class _OpencodeMcp extends ToolMcp {
3746
3897
  }) {
3747
3898
  const paths = this.getSettablePaths({ global });
3748
3899
  const fileContent = await readOrInitializeFileContent(
3749
- (0, import_node_path37.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3900
+ (0, import_node_path38.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3750
3901
  JSON.stringify({ mcp: {} }, null, 2)
3751
3902
  );
3752
3903
  const json = JSON.parse(fileContent);
@@ -3767,7 +3918,7 @@ var OpencodeMcp = class _OpencodeMcp extends ToolMcp {
3767
3918
  }) {
3768
3919
  const paths = this.getSettablePaths({ global });
3769
3920
  const fileContent = await readOrInitializeFileContent(
3770
- (0, import_node_path37.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3921
+ (0, import_node_path38.join)(baseDir, paths.relativeDirPath, paths.relativeFilePath),
3771
3922
  JSON.stringify({ mcp: {} }, null, 2)
3772
3923
  );
3773
3924
  const json = JSON.parse(fileContent);
@@ -3798,7 +3949,7 @@ var OpencodeMcp = class _OpencodeMcp extends ToolMcp {
3798
3949
  };
3799
3950
 
3800
3951
  // src/features/mcp/roo-mcp.ts
3801
- var import_node_path38 = require("path");
3952
+ var import_node_path39 = require("path");
3802
3953
  var RooMcp = class _RooMcp extends ToolMcp {
3803
3954
  json;
3804
3955
  constructor(params) {
@@ -3819,7 +3970,7 @@ var RooMcp = class _RooMcp extends ToolMcp {
3819
3970
  validate = true
3820
3971
  }) {
3821
3972
  const fileContent = await readFileContent(
3822
- (0, import_node_path38.join)(
3973
+ (0, import_node_path39.join)(
3823
3974
  baseDir,
3824
3975
  this.getSettablePaths().relativeDirPath,
3825
3976
  this.getSettablePaths().relativeFilePath
@@ -3867,7 +4018,7 @@ var mcpProcessorToolTargets = [
3867
4018
  "opencode",
3868
4019
  "roo"
3869
4020
  ];
3870
- var McpProcessorToolTargetSchema = import_mini16.z.enum(
4021
+ var McpProcessorToolTargetSchema = import_mini17.z.enum(
3871
4022
  // codexcli is not in the list of tool targets but we add it here because it is a valid tool target for global mode generation
3872
4023
  mcpProcessorToolTargets.concat("codexcli")
3873
4024
  );
@@ -4139,22 +4290,22 @@ var McpProcessor = class extends FeatureProcessor {
4139
4290
  };
4140
4291
 
4141
4292
  // src/features/rules/rules-processor.ts
4142
- var import_node_path79 = require("path");
4293
+ var import_node_path81 = require("path");
4143
4294
  var import_fast_xml_parser = require("fast-xml-parser");
4144
- var import_mini29 = require("zod/mini");
4295
+ var import_mini30 = require("zod/mini");
4145
4296
 
4146
4297
  // src/features/skills/codexcli-skill.ts
4147
- var import_node_path41 = require("path");
4298
+ var import_node_path42 = require("path");
4148
4299
 
4149
4300
  // src/features/skills/simulated-skill.ts
4150
- var import_node_path40 = require("path");
4151
- var import_mini17 = require("zod/mini");
4301
+ var import_node_path41 = require("path");
4302
+ var import_mini18 = require("zod/mini");
4152
4303
 
4153
4304
  // src/constants/general.ts
4154
4305
  var SKILL_FILE_NAME = "SKILL.md";
4155
4306
 
4156
4307
  // src/types/ai-dir.ts
4157
- var import_node_path39 = __toESM(require("path"), 1);
4308
+ var import_node_path40 = __toESM(require("path"), 1);
4158
4309
  var AiDir = class {
4159
4310
  /**
4160
4311
  * @example "."
@@ -4188,7 +4339,7 @@ var AiDir = class {
4188
4339
  otherFiles = [],
4189
4340
  global = false
4190
4341
  }) {
4191
- if (dirName.includes(import_node_path39.default.sep) || dirName.includes("/") || dirName.includes("\\")) {
4342
+ if (dirName.includes(import_node_path40.default.sep) || dirName.includes("/") || dirName.includes("\\")) {
4192
4343
  throw new Error(`Directory name cannot contain path separators: dirName="${dirName}"`);
4193
4344
  }
4194
4345
  this.baseDir = baseDir;
@@ -4211,11 +4362,11 @@ var AiDir = class {
4211
4362
  return this.dirName;
4212
4363
  }
4213
4364
  getDirPath() {
4214
- const fullPath = import_node_path39.default.join(this.baseDir, this.relativeDirPath, this.dirName);
4215
- const resolvedFull = (0, import_node_path39.resolve)(fullPath);
4216
- const resolvedBase = (0, import_node_path39.resolve)(this.baseDir);
4217
- const rel = (0, import_node_path39.relative)(resolvedBase, resolvedFull);
4218
- if (rel.startsWith("..") || import_node_path39.default.isAbsolute(rel)) {
4365
+ const fullPath = import_node_path40.default.join(this.baseDir, this.relativeDirPath, this.dirName);
4366
+ const resolvedFull = (0, import_node_path40.resolve)(fullPath);
4367
+ const resolvedBase = (0, import_node_path40.resolve)(this.baseDir);
4368
+ const rel = (0, import_node_path40.relative)(resolvedBase, resolvedFull);
4369
+ if (rel.startsWith("..") || import_node_path40.default.isAbsolute(rel)) {
4219
4370
  throw new Error(
4220
4371
  `Path traversal detected: Final path escapes baseDir. baseDir="${this.baseDir}", relativeDirPath="${this.relativeDirPath}", dirName="${this.dirName}"`
4221
4372
  );
@@ -4229,7 +4380,7 @@ var AiDir = class {
4229
4380
  return this.otherFiles;
4230
4381
  }
4231
4382
  getRelativePathFromCwd() {
4232
- return import_node_path39.default.join(this.relativeDirPath, this.dirName);
4383
+ return import_node_path40.default.join(this.relativeDirPath, this.dirName);
4233
4384
  }
4234
4385
  getGlobal() {
4235
4386
  return this.global;
@@ -4248,15 +4399,15 @@ var AiDir = class {
4248
4399
  * @returns Array of files with their relative paths and buffers
4249
4400
  */
4250
4401
  static async collectOtherFiles(baseDir, relativeDirPath, dirName, excludeFileName) {
4251
- const dirPath = (0, import_node_path39.join)(baseDir, relativeDirPath, dirName);
4252
- const glob = (0, import_node_path39.join)(dirPath, "**", "*");
4402
+ const dirPath = (0, import_node_path40.join)(baseDir, relativeDirPath, dirName);
4403
+ const glob = (0, import_node_path40.join)(dirPath, "**", "*");
4253
4404
  const filePaths = await findFilesByGlobs(glob, { type: "file" });
4254
- const filteredPaths = filePaths.filter((filePath) => (0, import_node_path39.basename)(filePath) !== excludeFileName);
4405
+ const filteredPaths = filePaths.filter((filePath) => (0, import_node_path40.basename)(filePath) !== excludeFileName);
4255
4406
  const files = await Promise.all(
4256
4407
  filteredPaths.map(async (filePath) => {
4257
4408
  const fileBuffer = await readFileBuffer(filePath);
4258
4409
  return {
4259
- relativeFilePathToDirPath: (0, import_node_path39.relative)(dirPath, filePath),
4410
+ relativeFilePathToDirPath: (0, import_node_path40.relative)(dirPath, filePath),
4260
4411
  fileBuffer
4261
4412
  };
4262
4413
  })
@@ -4322,9 +4473,9 @@ var ToolSkill = class extends AiDir {
4322
4473
  };
4323
4474
 
4324
4475
  // src/features/skills/simulated-skill.ts
4325
- var SimulatedSkillFrontmatterSchema = import_mini17.z.object({
4326
- name: import_mini17.z.string(),
4327
- description: import_mini17.z.string()
4476
+ var SimulatedSkillFrontmatterSchema = import_mini18.z.object({
4477
+ name: import_mini18.z.string(),
4478
+ description: import_mini18.z.string()
4328
4479
  });
4329
4480
  var SimulatedSkill = class extends ToolSkill {
4330
4481
  frontmatter;
@@ -4355,7 +4506,7 @@ var SimulatedSkill = class extends ToolSkill {
4355
4506
  const result = SimulatedSkillFrontmatterSchema.safeParse(frontmatter);
4356
4507
  if (!result.success) {
4357
4508
  throw new Error(
4358
- `Invalid frontmatter in ${(0, import_node_path40.join)(relativeDirPath, dirName)}: ${formatError(result.error)}`
4509
+ `Invalid frontmatter in ${(0, import_node_path41.join)(relativeDirPath, dirName)}: ${formatError(result.error)}`
4359
4510
  );
4360
4511
  }
4361
4512
  }
@@ -4420,8 +4571,8 @@ var SimulatedSkill = class extends ToolSkill {
4420
4571
  }) {
4421
4572
  const settablePaths = this.getSettablePaths();
4422
4573
  const actualRelativeDirPath = relativeDirPath ?? settablePaths.relativeDirPath;
4423
- const skillDirPath = (0, import_node_path40.join)(baseDir, actualRelativeDirPath, dirName);
4424
- const skillFilePath = (0, import_node_path40.join)(skillDirPath, SKILL_FILE_NAME);
4574
+ const skillDirPath = (0, import_node_path41.join)(baseDir, actualRelativeDirPath, dirName);
4575
+ const skillFilePath = (0, import_node_path41.join)(skillDirPath, SKILL_FILE_NAME);
4425
4576
  if (!await fileExists(skillFilePath)) {
4426
4577
  throw new Error(`${SKILL_FILE_NAME} not found in ${skillDirPath}`);
4427
4578
  }
@@ -4473,7 +4624,7 @@ var CodexCliSkill = class _CodexCliSkill extends SimulatedSkill {
4473
4624
  throw new Error("CodexCliSkill does not support global mode.");
4474
4625
  }
4475
4626
  return {
4476
- relativeDirPath: (0, import_node_path41.join)(".codex", "skills")
4627
+ relativeDirPath: (0, import_node_path42.join)(".codex", "skills")
4477
4628
  };
4478
4629
  }
4479
4630
  static async fromDir(params) {
@@ -4496,14 +4647,14 @@ var CodexCliSkill = class _CodexCliSkill extends SimulatedSkill {
4496
4647
  };
4497
4648
 
4498
4649
  // src/features/skills/copilot-skill.ts
4499
- var import_node_path42 = require("path");
4650
+ var import_node_path43 = require("path");
4500
4651
  var CopilotSkill = class _CopilotSkill extends SimulatedSkill {
4501
4652
  static getSettablePaths(options) {
4502
4653
  if (options?.global) {
4503
4654
  throw new Error("CopilotSkill does not support global mode.");
4504
4655
  }
4505
4656
  return {
4506
- relativeDirPath: (0, import_node_path42.join)(".github", "skills")
4657
+ relativeDirPath: (0, import_node_path43.join)(".github", "skills")
4507
4658
  };
4508
4659
  }
4509
4660
  static async fromDir(params) {
@@ -4526,14 +4677,14 @@ var CopilotSkill = class _CopilotSkill extends SimulatedSkill {
4526
4677
  };
4527
4678
 
4528
4679
  // src/features/skills/cursor-skill.ts
4529
- var import_node_path43 = require("path");
4680
+ var import_node_path44 = require("path");
4530
4681
  var CursorSkill = class _CursorSkill extends SimulatedSkill {
4531
4682
  static getSettablePaths(options) {
4532
4683
  if (options?.global) {
4533
4684
  throw new Error("CursorSkill does not support global mode.");
4534
4685
  }
4535
4686
  return {
4536
- relativeDirPath: (0, import_node_path43.join)(".cursor", "skills")
4687
+ relativeDirPath: (0, import_node_path44.join)(".cursor", "skills")
4537
4688
  };
4538
4689
  }
4539
4690
  static async fromDir(params) {
@@ -4556,11 +4707,11 @@ var CursorSkill = class _CursorSkill extends SimulatedSkill {
4556
4707
  };
4557
4708
 
4558
4709
  // src/features/skills/skills-processor.ts
4559
- var import_node_path49 = require("path");
4560
- var import_mini20 = require("zod/mini");
4710
+ var import_node_path50 = require("path");
4711
+ var import_mini21 = require("zod/mini");
4561
4712
 
4562
4713
  // src/types/dir-feature-processor.ts
4563
- var import_node_path44 = require("path");
4714
+ var import_node_path45 = require("path");
4564
4715
  var DirFeatureProcessor = class {
4565
4716
  baseDir;
4566
4717
  constructor({ baseDir = process.cwd() }) {
@@ -4582,14 +4733,14 @@ var DirFeatureProcessor = class {
4582
4733
  await ensureDir(dirPath);
4583
4734
  const mainFile = aiDir.getMainFile();
4584
4735
  if (mainFile) {
4585
- const mainFilePath = (0, import_node_path44.join)(dirPath, mainFile.name);
4736
+ const mainFilePath = (0, import_node_path45.join)(dirPath, mainFile.name);
4586
4737
  const content = stringifyFrontmatter(mainFile.body, mainFile.frontmatter);
4587
4738
  const contentWithNewline = addTrailingNewline(content);
4588
4739
  await writeFileContent(mainFilePath, contentWithNewline);
4589
4740
  }
4590
4741
  const otherFiles = aiDir.getOtherFiles();
4591
4742
  for (const file of otherFiles) {
4592
- const filePath = (0, import_node_path44.join)(dirPath, file.relativeFilePathToDirPath);
4743
+ const filePath = (0, import_node_path45.join)(dirPath, file.relativeFilePathToDirPath);
4593
4744
  const contentWithNewline = addTrailingNewline(file.fileBuffer.toString("utf-8"));
4594
4745
  await writeFileContent(filePath, contentWithNewline);
4595
4746
  }
@@ -4604,14 +4755,14 @@ var DirFeatureProcessor = class {
4604
4755
  };
4605
4756
 
4606
4757
  // src/features/skills/agentsmd-skill.ts
4607
- var import_node_path45 = require("path");
4758
+ var import_node_path46 = require("path");
4608
4759
  var AgentsmdSkill = class _AgentsmdSkill extends SimulatedSkill {
4609
4760
  static getSettablePaths(options) {
4610
4761
  if (options?.global) {
4611
4762
  throw new Error("AgentsmdSkill does not support global mode.");
4612
4763
  }
4613
4764
  return {
4614
- relativeDirPath: (0, import_node_path45.join)(".agents", "skills")
4765
+ relativeDirPath: (0, import_node_path46.join)(".agents", "skills")
4615
4766
  };
4616
4767
  }
4617
4768
  static async fromDir(params) {
@@ -4634,19 +4785,19 @@ var AgentsmdSkill = class _AgentsmdSkill extends SimulatedSkill {
4634
4785
  };
4635
4786
 
4636
4787
  // src/features/skills/claudecode-skill.ts
4637
- var import_node_path47 = require("path");
4638
- var import_mini19 = require("zod/mini");
4788
+ var import_node_path48 = require("path");
4789
+ var import_mini20 = require("zod/mini");
4639
4790
 
4640
4791
  // src/features/skills/rulesync-skill.ts
4641
- var import_node_path46 = require("path");
4642
- var import_mini18 = require("zod/mini");
4643
- var RulesyncSkillFrontmatterSchemaInternal = import_mini18.z.object({
4644
- name: import_mini18.z.string(),
4645
- description: import_mini18.z.string(),
4646
- targets: import_mini18.z._default(RulesyncTargetsSchema, ["*"]),
4647
- claudecode: import_mini18.z.optional(
4648
- import_mini18.z.object({
4649
- "allowed-tools": import_mini18.z.optional(import_mini18.z.array(import_mini18.z.string()))
4792
+ var import_node_path47 = require("path");
4793
+ var import_mini19 = require("zod/mini");
4794
+ var RulesyncSkillFrontmatterSchemaInternal = import_mini19.z.object({
4795
+ name: import_mini19.z.string(),
4796
+ description: import_mini19.z.string(),
4797
+ targets: import_mini19.z._default(RulesyncTargetsSchema, ["*"]),
4798
+ claudecode: import_mini19.z.optional(
4799
+ import_mini19.z.object({
4800
+ "allowed-tools": import_mini19.z.optional(import_mini19.z.array(import_mini19.z.string()))
4650
4801
  })
4651
4802
  )
4652
4803
  });
@@ -4714,8 +4865,8 @@ var RulesyncSkill = class _RulesyncSkill extends AiDir {
4714
4865
  dirName,
4715
4866
  global = false
4716
4867
  }) {
4717
- const skillDirPath = (0, import_node_path46.join)(baseDir, relativeDirPath, dirName);
4718
- const skillFilePath = (0, import_node_path46.join)(skillDirPath, SKILL_FILE_NAME);
4868
+ const skillDirPath = (0, import_node_path47.join)(baseDir, relativeDirPath, dirName);
4869
+ const skillFilePath = (0, import_node_path47.join)(skillDirPath, SKILL_FILE_NAME);
4719
4870
  if (!await fileExists(skillFilePath)) {
4720
4871
  throw new Error(`${SKILL_FILE_NAME} not found in ${skillDirPath}`);
4721
4872
  }
@@ -4745,15 +4896,15 @@ var RulesyncSkill = class _RulesyncSkill extends AiDir {
4745
4896
  };
4746
4897
 
4747
4898
  // src/features/skills/claudecode-skill.ts
4748
- var ClaudecodeSkillFrontmatterSchema = import_mini19.z.object({
4749
- name: import_mini19.z.string(),
4750
- description: import_mini19.z.string(),
4751
- "allowed-tools": import_mini19.z.optional(import_mini19.z.array(import_mini19.z.string()))
4899
+ var ClaudecodeSkillFrontmatterSchema = import_mini20.z.object({
4900
+ name: import_mini20.z.string(),
4901
+ description: import_mini20.z.string(),
4902
+ "allowed-tools": import_mini20.z.optional(import_mini20.z.array(import_mini20.z.string()))
4752
4903
  });
4753
4904
  var ClaudecodeSkill = class _ClaudecodeSkill extends ToolSkill {
4754
4905
  constructor({
4755
4906
  baseDir = process.cwd(),
4756
- relativeDirPath = (0, import_node_path47.join)(".claude", "skills"),
4907
+ relativeDirPath = (0, import_node_path48.join)(".claude", "skills"),
4757
4908
  dirName,
4758
4909
  frontmatter,
4759
4910
  body,
@@ -4784,7 +4935,7 @@ var ClaudecodeSkill = class _ClaudecodeSkill extends ToolSkill {
4784
4935
  global: _global = false
4785
4936
  } = {}) {
4786
4937
  return {
4787
- relativeDirPath: (0, import_node_path47.join)(".claude", "skills")
4938
+ relativeDirPath: (0, import_node_path48.join)(".claude", "skills")
4788
4939
  };
4789
4940
  }
4790
4941
  getFrontmatter() {
@@ -4872,8 +5023,8 @@ var ClaudecodeSkill = class _ClaudecodeSkill extends ToolSkill {
4872
5023
  }) {
4873
5024
  const settablePaths = this.getSettablePaths({ global });
4874
5025
  const actualRelativeDirPath = relativeDirPath ?? settablePaths.relativeDirPath;
4875
- const skillDirPath = (0, import_node_path47.join)(baseDir, actualRelativeDirPath, dirName);
4876
- const skillFilePath = (0, import_node_path47.join)(skillDirPath, SKILL_FILE_NAME);
5026
+ const skillDirPath = (0, import_node_path48.join)(baseDir, actualRelativeDirPath, dirName);
5027
+ const skillFilePath = (0, import_node_path48.join)(skillDirPath, SKILL_FILE_NAME);
4877
5028
  if (!await fileExists(skillFilePath)) {
4878
5029
  throw new Error(`${SKILL_FILE_NAME} not found in ${skillDirPath}`);
4879
5030
  }
@@ -4903,14 +5054,14 @@ var ClaudecodeSkill = class _ClaudecodeSkill extends ToolSkill {
4903
5054
  };
4904
5055
 
4905
5056
  // src/features/skills/geminicli-skill.ts
4906
- var import_node_path48 = require("path");
5057
+ var import_node_path49 = require("path");
4907
5058
  var GeminiCliSkill = class _GeminiCliSkill extends SimulatedSkill {
4908
5059
  static getSettablePaths(options) {
4909
5060
  if (options?.global) {
4910
5061
  throw new Error("GeminiCliSkill does not support global mode.");
4911
5062
  }
4912
5063
  return {
4913
- relativeDirPath: (0, import_node_path48.join)(".gemini", "skills")
5064
+ relativeDirPath: (0, import_node_path49.join)(".gemini", "skills")
4914
5065
  };
4915
5066
  }
4916
5067
  static async fromDir(params) {
@@ -4949,7 +5100,7 @@ var skillsProcessorToolTargetsSimulated = [
4949
5100
  "agentsmd"
4950
5101
  ];
4951
5102
  var skillsProcessorToolTargetsGlobal = ["claudecode"];
4952
- var SkillsProcessorToolTargetSchema = import_mini20.z.enum(skillsProcessorToolTargets);
5103
+ var SkillsProcessorToolTargetSchema = import_mini21.z.enum(skillsProcessorToolTargets);
4953
5104
  var SkillsProcessor = class extends DirFeatureProcessor {
4954
5105
  toolTarget;
4955
5106
  global;
@@ -5060,9 +5211,9 @@ var SkillsProcessor = class extends DirFeatureProcessor {
5060
5211
  */
5061
5212
  async loadRulesyncDirs() {
5062
5213
  const paths = RulesyncSkill.getSettablePaths();
5063
- const rulesyncSkillsDirPath = (0, import_node_path49.join)(this.baseDir, paths.relativeDirPath);
5064
- const dirPaths = await findFilesByGlobs((0, import_node_path49.join)(rulesyncSkillsDirPath, "*"), { type: "dir" });
5065
- const dirNames = dirPaths.map((path3) => (0, import_node_path49.basename)(path3));
5214
+ const rulesyncSkillsDirPath = (0, import_node_path50.join)(this.baseDir, paths.relativeDirPath);
5215
+ const dirPaths = await findFilesByGlobs((0, import_node_path50.join)(rulesyncSkillsDirPath, "*"), { type: "dir" });
5216
+ const dirNames = dirPaths.map((path3) => (0, import_node_path50.basename)(path3));
5066
5217
  const rulesyncSkills = await Promise.all(
5067
5218
  dirNames.map(
5068
5219
  (dirName) => RulesyncSkill.fromDir({ baseDir: this.baseDir, dirName, global: this.global })
@@ -5101,9 +5252,9 @@ var SkillsProcessor = class extends DirFeatureProcessor {
5101
5252
  */
5102
5253
  async loadClaudecodeSkills() {
5103
5254
  const paths = ClaudecodeSkill.getSettablePaths({ global: this.global });
5104
- const skillsDirPath = (0, import_node_path49.join)(this.baseDir, paths.relativeDirPath);
5105
- const dirPaths = await findFilesByGlobs((0, import_node_path49.join)(skillsDirPath, "*"), { type: "dir" });
5106
- const dirNames = dirPaths.map((path3) => (0, import_node_path49.basename)(path3));
5255
+ const skillsDirPath = (0, import_node_path50.join)(this.baseDir, paths.relativeDirPath);
5256
+ const dirPaths = await findFilesByGlobs((0, import_node_path50.join)(skillsDirPath, "*"), { type: "dir" });
5257
+ const dirNames = dirPaths.map((path3) => (0, import_node_path50.basename)(path3));
5107
5258
  const toolSkills = await Promise.all(
5108
5259
  dirNames.map(
5109
5260
  (dirName) => ClaudecodeSkill.fromDir({
@@ -5121,9 +5272,9 @@ var SkillsProcessor = class extends DirFeatureProcessor {
5121
5272
  */
5122
5273
  async loadSimulatedSkills(SkillClass) {
5123
5274
  const paths = SkillClass.getSettablePaths();
5124
- const skillsDirPath = (0, import_node_path49.join)(this.baseDir, paths.relativeDirPath);
5125
- const dirPaths = await findFilesByGlobs((0, import_node_path49.join)(skillsDirPath, "*"), { type: "dir" });
5126
- const dirNames = dirPaths.map((path3) => (0, import_node_path49.basename)(path3));
5275
+ const skillsDirPath = (0, import_node_path50.join)(this.baseDir, paths.relativeDirPath);
5276
+ const dirPaths = await findFilesByGlobs((0, import_node_path50.join)(skillsDirPath, "*"), { type: "dir" });
5277
+ const dirNames = dirPaths.map((path3) => (0, import_node_path50.basename)(path3));
5127
5278
  const toolSkills = await Promise.all(
5128
5279
  dirNames.map(
5129
5280
  (dirName) => SkillClass.fromDir({
@@ -5168,11 +5319,11 @@ var SkillsProcessor = class extends DirFeatureProcessor {
5168
5319
  };
5169
5320
 
5170
5321
  // src/features/subagents/agentsmd-subagent.ts
5171
- var import_node_path51 = require("path");
5322
+ var import_node_path52 = require("path");
5172
5323
 
5173
5324
  // src/features/subagents/simulated-subagent.ts
5174
- var import_node_path50 = require("path");
5175
- var import_mini21 = require("zod/mini");
5325
+ var import_node_path51 = require("path");
5326
+ var import_mini22 = require("zod/mini");
5176
5327
 
5177
5328
  // src/features/subagents/tool-subagent.ts
5178
5329
  var ToolSubagent = class extends ToolFile {
@@ -5207,9 +5358,9 @@ var ToolSubagent = class extends ToolFile {
5207
5358
  };
5208
5359
 
5209
5360
  // src/features/subagents/simulated-subagent.ts
5210
- var SimulatedSubagentFrontmatterSchema = import_mini21.z.object({
5211
- name: import_mini21.z.string(),
5212
- description: import_mini21.z.string()
5361
+ var SimulatedSubagentFrontmatterSchema = import_mini22.z.object({
5362
+ name: import_mini22.z.string(),
5363
+ description: import_mini22.z.string()
5213
5364
  });
5214
5365
  var SimulatedSubagent = class extends ToolSubagent {
5215
5366
  frontmatter;
@@ -5219,7 +5370,7 @@ var SimulatedSubagent = class extends ToolSubagent {
5219
5370
  const result = SimulatedSubagentFrontmatterSchema.safeParse(frontmatter);
5220
5371
  if (!result.success) {
5221
5372
  throw new Error(
5222
- `Invalid frontmatter in ${(0, import_node_path50.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
5373
+ `Invalid frontmatter in ${(0, import_node_path51.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
5223
5374
  );
5224
5375
  }
5225
5376
  }
@@ -5270,7 +5421,7 @@ var SimulatedSubagent = class extends ToolSubagent {
5270
5421
  return {
5271
5422
  success: false,
5272
5423
  error: new Error(
5273
- `Invalid frontmatter in ${(0, import_node_path50.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
5424
+ `Invalid frontmatter in ${(0, import_node_path51.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
5274
5425
  )
5275
5426
  };
5276
5427
  }
@@ -5280,7 +5431,7 @@ var SimulatedSubagent = class extends ToolSubagent {
5280
5431
  relativeFilePath,
5281
5432
  validate = true
5282
5433
  }) {
5283
- const filePath = (0, import_node_path50.join)(baseDir, this.getSettablePaths().relativeDirPath, relativeFilePath);
5434
+ const filePath = (0, import_node_path51.join)(baseDir, this.getSettablePaths().relativeDirPath, relativeFilePath);
5284
5435
  const fileContent = await readFileContent(filePath);
5285
5436
  const { frontmatter, body: content } = parseFrontmatter(fileContent);
5286
5437
  const result = SimulatedSubagentFrontmatterSchema.safeParse(frontmatter);
@@ -5290,7 +5441,7 @@ var SimulatedSubagent = class extends ToolSubagent {
5290
5441
  return {
5291
5442
  baseDir,
5292
5443
  relativeDirPath: this.getSettablePaths().relativeDirPath,
5293
- relativeFilePath: (0, import_node_path50.basename)(relativeFilePath),
5444
+ relativeFilePath: (0, import_node_path51.basename)(relativeFilePath),
5294
5445
  frontmatter: result.data,
5295
5446
  body: content.trim(),
5296
5447
  validate
@@ -5302,7 +5453,7 @@ var SimulatedSubagent = class extends ToolSubagent {
5302
5453
  var AgentsmdSubagent = class _AgentsmdSubagent extends SimulatedSubagent {
5303
5454
  static getSettablePaths() {
5304
5455
  return {
5305
- relativeDirPath: (0, import_node_path51.join)(".agents", "subagents")
5456
+ relativeDirPath: (0, import_node_path52.join)(".agents", "subagents")
5306
5457
  };
5307
5458
  }
5308
5459
  static async fromFile(params) {
@@ -5322,11 +5473,11 @@ var AgentsmdSubagent = class _AgentsmdSubagent extends SimulatedSubagent {
5322
5473
  };
5323
5474
 
5324
5475
  // src/features/subagents/codexcli-subagent.ts
5325
- var import_node_path52 = require("path");
5476
+ var import_node_path53 = require("path");
5326
5477
  var CodexCliSubagent = class _CodexCliSubagent extends SimulatedSubagent {
5327
5478
  static getSettablePaths() {
5328
5479
  return {
5329
- relativeDirPath: (0, import_node_path52.join)(".codex", "subagents")
5480
+ relativeDirPath: (0, import_node_path53.join)(".codex", "subagents")
5330
5481
  };
5331
5482
  }
5332
5483
  static async fromFile(params) {
@@ -5346,11 +5497,11 @@ var CodexCliSubagent = class _CodexCliSubagent extends SimulatedSubagent {
5346
5497
  };
5347
5498
 
5348
5499
  // src/features/subagents/copilot-subagent.ts
5349
- var import_node_path53 = require("path");
5500
+ var import_node_path54 = require("path");
5350
5501
  var CopilotSubagent = class _CopilotSubagent extends SimulatedSubagent {
5351
5502
  static getSettablePaths() {
5352
5503
  return {
5353
- relativeDirPath: (0, import_node_path53.join)(".github", "subagents")
5504
+ relativeDirPath: (0, import_node_path54.join)(".github", "subagents")
5354
5505
  };
5355
5506
  }
5356
5507
  static async fromFile(params) {
@@ -5370,11 +5521,11 @@ var CopilotSubagent = class _CopilotSubagent extends SimulatedSubagent {
5370
5521
  };
5371
5522
 
5372
5523
  // src/features/subagents/cursor-subagent.ts
5373
- var import_node_path54 = require("path");
5524
+ var import_node_path55 = require("path");
5374
5525
  var CursorSubagent = class _CursorSubagent extends SimulatedSubagent {
5375
5526
  static getSettablePaths() {
5376
5527
  return {
5377
- relativeDirPath: (0, import_node_path54.join)(".cursor", "subagents")
5528
+ relativeDirPath: (0, import_node_path55.join)(".cursor", "subagents")
5378
5529
  };
5379
5530
  }
5380
5531
  static async fromFile(params) {
@@ -5394,11 +5545,11 @@ var CursorSubagent = class _CursorSubagent extends SimulatedSubagent {
5394
5545
  };
5395
5546
 
5396
5547
  // src/features/subagents/geminicli-subagent.ts
5397
- var import_node_path55 = require("path");
5548
+ var import_node_path56 = require("path");
5398
5549
  var GeminiCliSubagent = class _GeminiCliSubagent extends SimulatedSubagent {
5399
5550
  static getSettablePaths() {
5400
5551
  return {
5401
- relativeDirPath: (0, import_node_path55.join)(".gemini", "subagents")
5552
+ relativeDirPath: (0, import_node_path56.join)(".gemini", "subagents")
5402
5553
  };
5403
5554
  }
5404
5555
  static async fromFile(params) {
@@ -5418,11 +5569,11 @@ var GeminiCliSubagent = class _GeminiCliSubagent extends SimulatedSubagent {
5418
5569
  };
5419
5570
 
5420
5571
  // src/features/subagents/roo-subagent.ts
5421
- var import_node_path56 = require("path");
5572
+ var import_node_path57 = require("path");
5422
5573
  var RooSubagent = class _RooSubagent extends SimulatedSubagent {
5423
5574
  static getSettablePaths() {
5424
5575
  return {
5425
- relativeDirPath: (0, import_node_path56.join)(".roo", "subagents")
5576
+ relativeDirPath: (0, import_node_path57.join)(".roo", "subagents")
5426
5577
  };
5427
5578
  }
5428
5579
  static async fromFile(params) {
@@ -5442,23 +5593,23 @@ var RooSubagent = class _RooSubagent extends SimulatedSubagent {
5442
5593
  };
5443
5594
 
5444
5595
  // src/features/subagents/subagents-processor.ts
5596
+ var import_node_path60 = require("path");
5597
+ var import_mini25 = require("zod/mini");
5598
+
5599
+ // src/features/subagents/claudecode-subagent.ts
5445
5600
  var import_node_path59 = require("path");
5446
5601
  var import_mini24 = require("zod/mini");
5447
5602
 
5448
- // src/features/subagents/claudecode-subagent.ts
5603
+ // src/features/subagents/rulesync-subagent.ts
5449
5604
  var import_node_path58 = require("path");
5450
5605
  var import_mini23 = require("zod/mini");
5451
-
5452
- // src/features/subagents/rulesync-subagent.ts
5453
- var import_node_path57 = require("path");
5454
- var import_mini22 = require("zod/mini");
5455
- var RulesyncSubagentModelSchema = import_mini22.z.enum(["opus", "sonnet", "haiku", "inherit"]);
5456
- var RulesyncSubagentFrontmatterSchema = import_mini22.z.object({
5606
+ var RulesyncSubagentModelSchema = import_mini23.z.enum(["opus", "sonnet", "haiku", "inherit"]);
5607
+ var RulesyncSubagentFrontmatterSchema = import_mini23.z.object({
5457
5608
  targets: RulesyncTargetsSchema,
5458
- name: import_mini22.z.string(),
5459
- description: import_mini22.z.string(),
5460
- claudecode: import_mini22.z.optional(
5461
- import_mini22.z.object({
5609
+ name: import_mini23.z.string(),
5610
+ description: import_mini23.z.string(),
5611
+ claudecode: import_mini23.z.optional(
5612
+ import_mini23.z.object({
5462
5613
  model: RulesyncSubagentModelSchema
5463
5614
  })
5464
5615
  )
@@ -5471,7 +5622,7 @@ var RulesyncSubagent = class _RulesyncSubagent extends RulesyncFile {
5471
5622
  const result = RulesyncSubagentFrontmatterSchema.safeParse(frontmatter);
5472
5623
  if (!result.success) {
5473
5624
  throw new Error(
5474
- `Invalid frontmatter in ${(0, import_node_path57.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
5625
+ `Invalid frontmatter in ${(0, import_node_path58.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
5475
5626
  );
5476
5627
  }
5477
5628
  }
@@ -5504,7 +5655,7 @@ var RulesyncSubagent = class _RulesyncSubagent extends RulesyncFile {
5504
5655
  return {
5505
5656
  success: false,
5506
5657
  error: new Error(
5507
- `Invalid frontmatter in ${(0, import_node_path57.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
5658
+ `Invalid frontmatter in ${(0, import_node_path58.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
5508
5659
  )
5509
5660
  };
5510
5661
  }
@@ -5513,14 +5664,14 @@ var RulesyncSubagent = class _RulesyncSubagent extends RulesyncFile {
5513
5664
  relativeFilePath
5514
5665
  }) {
5515
5666
  const fileContent = await readFileContent(
5516
- (0, import_node_path57.join)(process.cwd(), RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, relativeFilePath)
5667
+ (0, import_node_path58.join)(process.cwd(), RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, relativeFilePath)
5517
5668
  );
5518
5669
  const { frontmatter, body: content } = parseFrontmatter(fileContent);
5519
5670
  const result = RulesyncSubagentFrontmatterSchema.safeParse(frontmatter);
5520
5671
  if (!result.success) {
5521
5672
  throw new Error(`Invalid frontmatter in ${relativeFilePath}: ${formatError(result.error)}`);
5522
5673
  }
5523
- const filename = (0, import_node_path57.basename)(relativeFilePath);
5674
+ const filename = (0, import_node_path58.basename)(relativeFilePath);
5524
5675
  return new _RulesyncSubagent({
5525
5676
  baseDir: process.cwd(),
5526
5677
  relativeDirPath: this.getSettablePaths().relativeDirPath,
@@ -5532,10 +5683,10 @@ var RulesyncSubagent = class _RulesyncSubagent extends RulesyncFile {
5532
5683
  };
5533
5684
 
5534
5685
  // src/features/subagents/claudecode-subagent.ts
5535
- var ClaudecodeSubagentFrontmatterSchema = import_mini23.z.object({
5536
- name: import_mini23.z.string(),
5537
- description: import_mini23.z.string(),
5538
- model: import_mini23.z.optional(import_mini23.z.enum(["opus", "sonnet", "haiku", "inherit"]))
5686
+ var ClaudecodeSubagentFrontmatterSchema = import_mini24.z.object({
5687
+ name: import_mini24.z.string(),
5688
+ description: import_mini24.z.string(),
5689
+ model: import_mini24.z.optional(import_mini24.z.enum(["opus", "sonnet", "haiku", "inherit"]))
5539
5690
  });
5540
5691
  var ClaudecodeSubagent = class _ClaudecodeSubagent extends ToolSubagent {
5541
5692
  frontmatter;
@@ -5545,7 +5696,7 @@ var ClaudecodeSubagent = class _ClaudecodeSubagent extends ToolSubagent {
5545
5696
  const result = ClaudecodeSubagentFrontmatterSchema.safeParse(frontmatter);
5546
5697
  if (!result.success) {
5547
5698
  throw new Error(
5548
- `Invalid frontmatter in ${(0, import_node_path58.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
5699
+ `Invalid frontmatter in ${(0, import_node_path59.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
5549
5700
  );
5550
5701
  }
5551
5702
  }
@@ -5557,7 +5708,7 @@ var ClaudecodeSubagent = class _ClaudecodeSubagent extends ToolSubagent {
5557
5708
  }
5558
5709
  static getSettablePaths(_options = {}) {
5559
5710
  return {
5560
- relativeDirPath: (0, import_node_path58.join)(".claude", "agents")
5711
+ relativeDirPath: (0, import_node_path59.join)(".claude", "agents")
5561
5712
  };
5562
5713
  }
5563
5714
  getFrontmatter() {
@@ -5623,7 +5774,7 @@ var ClaudecodeSubagent = class _ClaudecodeSubagent extends ToolSubagent {
5623
5774
  return {
5624
5775
  success: false,
5625
5776
  error: new Error(
5626
- `Invalid frontmatter in ${(0, import_node_path58.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
5777
+ `Invalid frontmatter in ${(0, import_node_path59.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
5627
5778
  )
5628
5779
  };
5629
5780
  }
@@ -5641,7 +5792,7 @@ var ClaudecodeSubagent = class _ClaudecodeSubagent extends ToolSubagent {
5641
5792
  global = false
5642
5793
  }) {
5643
5794
  const paths = this.getSettablePaths({ global });
5644
- const filePath = (0, import_node_path58.join)(baseDir, paths.relativeDirPath, relativeFilePath);
5795
+ const filePath = (0, import_node_path59.join)(baseDir, paths.relativeDirPath, relativeFilePath);
5645
5796
  const fileContent = await readFileContent(filePath);
5646
5797
  const { frontmatter, body: content } = parseFrontmatter(fileContent);
5647
5798
  const result = ClaudecodeSubagentFrontmatterSchema.safeParse(frontmatter);
@@ -5679,7 +5830,7 @@ var subagentsProcessorToolTargetsSimulated = [
5679
5830
  "roo"
5680
5831
  ];
5681
5832
  var subagentsProcessorToolTargetsGlobal = ["claudecode"];
5682
- var SubagentsProcessorToolTargetSchema = import_mini24.z.enum(subagentsProcessorToolTargets);
5833
+ var SubagentsProcessorToolTargetSchema = import_mini25.z.enum(subagentsProcessorToolTargets);
5683
5834
  var SubagentsProcessor = class extends FeatureProcessor {
5684
5835
  toolTarget;
5685
5836
  global;
@@ -5795,7 +5946,7 @@ var SubagentsProcessor = class extends FeatureProcessor {
5795
5946
  * Load and parse rulesync subagent files from .rulesync/subagents/ directory
5796
5947
  */
5797
5948
  async loadRulesyncFiles() {
5798
- const subagentsDir = (0, import_node_path59.join)(this.baseDir, RulesyncSubagent.getSettablePaths().relativeDirPath);
5949
+ const subagentsDir = (0, import_node_path60.join)(this.baseDir, RulesyncSubagent.getSettablePaths().relativeDirPath);
5799
5950
  const dirExists = await directoryExists(subagentsDir);
5800
5951
  if (!dirExists) {
5801
5952
  logger.debug(`Rulesync subagents directory not found: ${subagentsDir}`);
@@ -5810,7 +5961,7 @@ var SubagentsProcessor = class extends FeatureProcessor {
5810
5961
  logger.info(`Found ${mdFiles.length} subagent files in ${subagentsDir}`);
5811
5962
  const rulesyncSubagents = [];
5812
5963
  for (const mdFile of mdFiles) {
5813
- const filepath = (0, import_node_path59.join)(subagentsDir, mdFile);
5964
+ const filepath = (0, import_node_path60.join)(subagentsDir, mdFile);
5814
5965
  try {
5815
5966
  const rulesyncSubagent = await RulesyncSubagent.fromFile({
5816
5967
  relativeFilePath: mdFile,
@@ -5928,8 +6079,8 @@ var SubagentsProcessor = class extends FeatureProcessor {
5928
6079
  relativeDirPath,
5929
6080
  fromFile
5930
6081
  }) {
5931
- const paths = await findFilesByGlobs((0, import_node_path59.join)(this.baseDir, relativeDirPath, "*.md"));
5932
- const subagents = await Promise.all(paths.map((path3) => fromFile((0, import_node_path59.basename)(path3))));
6082
+ const paths = await findFilesByGlobs((0, import_node_path60.join)(this.baseDir, relativeDirPath, "*.md"));
6083
+ const subagents = await Promise.all(paths.map((path3) => fromFile((0, import_node_path60.basename)(path3))));
5933
6084
  logger.info(`Successfully loaded ${subagents.length} ${relativeDirPath} subagents`);
5934
6085
  return subagents;
5935
6086
  }
@@ -5957,30 +6108,30 @@ var SubagentsProcessor = class extends FeatureProcessor {
5957
6108
  };
5958
6109
 
5959
6110
  // src/features/rules/agentsmd-rule.ts
5960
- var import_node_path62 = require("path");
6111
+ var import_node_path63 = require("path");
5961
6112
 
5962
6113
  // src/features/rules/tool-rule.ts
5963
- var import_node_path61 = require("path");
6114
+ var import_node_path62 = require("path");
5964
6115
 
5965
6116
  // src/features/rules/rulesync-rule.ts
5966
- var import_node_path60 = require("path");
5967
- var import_mini25 = require("zod/mini");
5968
- var RulesyncRuleFrontmatterSchema = import_mini25.z.object({
5969
- root: import_mini25.z.optional(import_mini25.z.optional(import_mini25.z.boolean())),
5970
- targets: import_mini25.z.optional(RulesyncTargetsSchema),
5971
- description: import_mini25.z.optional(import_mini25.z.string()),
5972
- globs: import_mini25.z.optional(import_mini25.z.array(import_mini25.z.string())),
5973
- agentsmd: import_mini25.z.optional(
5974
- import_mini25.z.object({
6117
+ var import_node_path61 = require("path");
6118
+ var import_mini26 = require("zod/mini");
6119
+ var RulesyncRuleFrontmatterSchema = import_mini26.z.object({
6120
+ root: import_mini26.z.optional(import_mini26.z.optional(import_mini26.z.boolean())),
6121
+ targets: import_mini26.z.optional(RulesyncTargetsSchema),
6122
+ description: import_mini26.z.optional(import_mini26.z.string()),
6123
+ globs: import_mini26.z.optional(import_mini26.z.array(import_mini26.z.string())),
6124
+ agentsmd: import_mini26.z.optional(
6125
+ import_mini26.z.object({
5975
6126
  // @example "path/to/subproject"
5976
- subprojectPath: import_mini25.z.optional(import_mini25.z.string())
6127
+ subprojectPath: import_mini26.z.optional(import_mini26.z.string())
5977
6128
  })
5978
6129
  ),
5979
- cursor: import_mini25.z.optional(
5980
- import_mini25.z.object({
5981
- alwaysApply: import_mini25.z.optional(import_mini25.z.boolean()),
5982
- description: import_mini25.z.optional(import_mini25.z.string()),
5983
- globs: import_mini25.z.optional(import_mini25.z.array(import_mini25.z.string()))
6130
+ cursor: import_mini26.z.optional(
6131
+ import_mini26.z.object({
6132
+ alwaysApply: import_mini26.z.optional(import_mini26.z.boolean()),
6133
+ description: import_mini26.z.optional(import_mini26.z.string()),
6134
+ globs: import_mini26.z.optional(import_mini26.z.array(import_mini26.z.string()))
5984
6135
  })
5985
6136
  )
5986
6137
  });
@@ -5992,7 +6143,7 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
5992
6143
  const result = RulesyncRuleFrontmatterSchema.safeParse(frontmatter);
5993
6144
  if (!result.success) {
5994
6145
  throw new Error(
5995
- `Invalid frontmatter in ${(0, import_node_path60.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
6146
+ `Invalid frontmatter in ${(0, import_node_path61.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
5996
6147
  );
5997
6148
  }
5998
6149
  }
@@ -6027,7 +6178,7 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
6027
6178
  return {
6028
6179
  success: false,
6029
6180
  error: new Error(
6030
- `Invalid frontmatter in ${(0, import_node_path60.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
6181
+ `Invalid frontmatter in ${(0, import_node_path61.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
6031
6182
  )
6032
6183
  };
6033
6184
  }
@@ -6036,12 +6187,12 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
6036
6187
  relativeFilePath,
6037
6188
  validate = true
6038
6189
  }) {
6039
- const legacyPath = (0, import_node_path60.join)(
6190
+ const legacyPath = (0, import_node_path61.join)(
6040
6191
  process.cwd(),
6041
6192
  this.getSettablePaths().legacy.relativeDirPath,
6042
6193
  relativeFilePath
6043
6194
  );
6044
- const recommendedPath = (0, import_node_path60.join)(
6195
+ const recommendedPath = (0, import_node_path61.join)(
6045
6196
  this.getSettablePaths().recommended.relativeDirPath,
6046
6197
  relativeFilePath
6047
6198
  );
@@ -6060,7 +6211,7 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
6060
6211
  agentsmd: result.data.agentsmd,
6061
6212
  cursor: result.data.cursor
6062
6213
  };
6063
- const filename = (0, import_node_path60.basename)(legacyPath);
6214
+ const filename = (0, import_node_path61.basename)(legacyPath);
6064
6215
  return new _RulesyncRule({
6065
6216
  baseDir: process.cwd(),
6066
6217
  relativeDirPath: this.getSettablePaths().recommended.relativeDirPath,
@@ -6074,7 +6225,7 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
6074
6225
  relativeFilePath,
6075
6226
  validate = true
6076
6227
  }) {
6077
- const filePath = (0, import_node_path60.join)(
6228
+ const filePath = (0, import_node_path61.join)(
6078
6229
  process.cwd(),
6079
6230
  this.getSettablePaths().recommended.relativeDirPath,
6080
6231
  relativeFilePath
@@ -6093,7 +6244,7 @@ var RulesyncRule = class _RulesyncRule extends RulesyncFile {
6093
6244
  agentsmd: result.data.agentsmd,
6094
6245
  cursor: result.data.cursor
6095
6246
  };
6096
- const filename = (0, import_node_path60.basename)(filePath);
6247
+ const filename = (0, import_node_path61.basename)(filePath);
6097
6248
  return new _RulesyncRule({
6098
6249
  baseDir: process.cwd(),
6099
6250
  relativeDirPath: this.getSettablePaths().recommended.relativeDirPath,
@@ -6168,7 +6319,7 @@ var ToolRule = class extends ToolFile {
6168
6319
  rulesyncRule,
6169
6320
  validate = true,
6170
6321
  rootPath = { relativeDirPath: ".", relativeFilePath: "AGENTS.md" },
6171
- nonRootPath = { relativeDirPath: (0, import_node_path61.join)(".agents", "memories") }
6322
+ nonRootPath = { relativeDirPath: (0, import_node_path62.join)(".agents", "memories") }
6172
6323
  }) {
6173
6324
  const params = this.buildToolRuleParamsDefault({
6174
6325
  baseDir,
@@ -6179,7 +6330,7 @@ var ToolRule = class extends ToolFile {
6179
6330
  });
6180
6331
  const rulesyncFrontmatter = rulesyncRule.getFrontmatter();
6181
6332
  if (!rulesyncFrontmatter.root && rulesyncFrontmatter.agentsmd?.subprojectPath) {
6182
- params.relativeDirPath = (0, import_node_path61.join)(rulesyncFrontmatter.agentsmd.subprojectPath);
6333
+ params.relativeDirPath = (0, import_node_path62.join)(rulesyncFrontmatter.agentsmd.subprojectPath);
6183
6334
  params.relativeFilePath = "AGENTS.md";
6184
6335
  }
6185
6336
  return params;
@@ -6244,7 +6395,7 @@ var AgentsMdRule = class _AgentsMdRule extends ToolRule {
6244
6395
  relativeFilePath: "AGENTS.md"
6245
6396
  },
6246
6397
  nonRoot: {
6247
- relativeDirPath: (0, import_node_path62.join)(".agents", "memories")
6398
+ relativeDirPath: (0, import_node_path63.join)(".agents", "memories")
6248
6399
  }
6249
6400
  };
6250
6401
  }
@@ -6254,8 +6405,8 @@ var AgentsMdRule = class _AgentsMdRule extends ToolRule {
6254
6405
  validate = true
6255
6406
  }) {
6256
6407
  const isRoot = relativeFilePath === "AGENTS.md";
6257
- const relativePath = isRoot ? "AGENTS.md" : (0, import_node_path62.join)(".agents", "memories", relativeFilePath);
6258
- const fileContent = await readFileContent((0, import_node_path62.join)(baseDir, relativePath));
6408
+ const relativePath = isRoot ? "AGENTS.md" : (0, import_node_path63.join)(".agents", "memories", relativeFilePath);
6409
+ const fileContent = await readFileContent((0, import_node_path63.join)(baseDir, relativePath));
6259
6410
  return new _AgentsMdRule({
6260
6411
  baseDir,
6261
6412
  relativeDirPath: isRoot ? this.getSettablePaths().root.relativeDirPath : this.getSettablePaths().nonRoot.relativeDirPath,
@@ -6295,12 +6446,12 @@ var AgentsMdRule = class _AgentsMdRule extends ToolRule {
6295
6446
  };
6296
6447
 
6297
6448
  // src/features/rules/amazonqcli-rule.ts
6298
- var import_node_path63 = require("path");
6449
+ var import_node_path64 = require("path");
6299
6450
  var AmazonQCliRule = class _AmazonQCliRule extends ToolRule {
6300
6451
  static getSettablePaths() {
6301
6452
  return {
6302
6453
  nonRoot: {
6303
- relativeDirPath: (0, import_node_path63.join)(".amazonq", "rules")
6454
+ relativeDirPath: (0, import_node_path64.join)(".amazonq", "rules")
6304
6455
  }
6305
6456
  };
6306
6457
  }
@@ -6310,7 +6461,7 @@ var AmazonQCliRule = class _AmazonQCliRule extends ToolRule {
6310
6461
  validate = true
6311
6462
  }) {
6312
6463
  const fileContent = await readFileContent(
6313
- (0, import_node_path63.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
6464
+ (0, import_node_path64.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
6314
6465
  );
6315
6466
  return new _AmazonQCliRule({
6316
6467
  baseDir,
@@ -6349,8 +6500,63 @@ var AmazonQCliRule = class _AmazonQCliRule extends ToolRule {
6349
6500
  }
6350
6501
  };
6351
6502
 
6503
+ // src/features/rules/antigravity-rule.ts
6504
+ var import_node_path65 = require("path");
6505
+ var AntigravityRule = class _AntigravityRule extends ToolRule {
6506
+ static getSettablePaths() {
6507
+ return {
6508
+ nonRoot: {
6509
+ relativeDirPath: (0, import_node_path65.join)(".agent", "rules")
6510
+ }
6511
+ };
6512
+ }
6513
+ static async fromFile({
6514
+ baseDir = process.cwd(),
6515
+ relativeFilePath,
6516
+ validate = true
6517
+ }) {
6518
+ const fileContent = await readFileContent(
6519
+ (0, import_node_path65.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
6520
+ );
6521
+ return new _AntigravityRule({
6522
+ baseDir,
6523
+ relativeDirPath: this.getSettablePaths().nonRoot.relativeDirPath,
6524
+ relativeFilePath,
6525
+ fileContent,
6526
+ validate,
6527
+ root: false
6528
+ });
6529
+ }
6530
+ static fromRulesyncRule({
6531
+ baseDir = process.cwd(),
6532
+ rulesyncRule,
6533
+ validate = true
6534
+ }) {
6535
+ return new _AntigravityRule(
6536
+ this.buildToolRuleParamsDefault({
6537
+ baseDir,
6538
+ rulesyncRule,
6539
+ validate,
6540
+ nonRootPath: this.getSettablePaths().nonRoot
6541
+ })
6542
+ );
6543
+ }
6544
+ toRulesyncRule() {
6545
+ return this.toRulesyncRuleDefault();
6546
+ }
6547
+ validate() {
6548
+ return { success: true, error: null };
6549
+ }
6550
+ static isTargetedByRulesyncRule(rulesyncRule) {
6551
+ return this.isTargetedByRulesyncRuleDefault({
6552
+ rulesyncRule,
6553
+ toolTarget: "antigravity"
6554
+ });
6555
+ }
6556
+ };
6557
+
6352
6558
  // src/features/rules/augmentcode-legacy-rule.ts
6353
- var import_node_path64 = require("path");
6559
+ var import_node_path66 = require("path");
6354
6560
  var AugmentcodeLegacyRule = class _AugmentcodeLegacyRule extends ToolRule {
6355
6561
  toRulesyncRule() {
6356
6562
  const rulesyncFrontmatter = {
@@ -6376,7 +6582,7 @@ var AugmentcodeLegacyRule = class _AugmentcodeLegacyRule extends ToolRule {
6376
6582
  relativeFilePath: ".augment-guidelines"
6377
6583
  },
6378
6584
  nonRoot: {
6379
- relativeDirPath: (0, import_node_path64.join)(".augment", "rules")
6585
+ relativeDirPath: (0, import_node_path66.join)(".augment", "rules")
6380
6586
  }
6381
6587
  };
6382
6588
  }
@@ -6411,8 +6617,8 @@ var AugmentcodeLegacyRule = class _AugmentcodeLegacyRule extends ToolRule {
6411
6617
  }) {
6412
6618
  const settablePaths = this.getSettablePaths();
6413
6619
  const isRoot = relativeFilePath === settablePaths.root.relativeFilePath;
6414
- const relativePath = isRoot ? settablePaths.root.relativeFilePath : (0, import_node_path64.join)(settablePaths.nonRoot.relativeDirPath, relativeFilePath);
6415
- const fileContent = await readFileContent((0, import_node_path64.join)(baseDir, relativePath));
6620
+ const relativePath = isRoot ? settablePaths.root.relativeFilePath : (0, import_node_path66.join)(settablePaths.nonRoot.relativeDirPath, relativeFilePath);
6621
+ const fileContent = await readFileContent((0, import_node_path66.join)(baseDir, relativePath));
6416
6622
  return new _AugmentcodeLegacyRule({
6417
6623
  baseDir,
6418
6624
  relativeDirPath: isRoot ? settablePaths.root.relativeDirPath : settablePaths.nonRoot.relativeDirPath,
@@ -6425,7 +6631,7 @@ var AugmentcodeLegacyRule = class _AugmentcodeLegacyRule extends ToolRule {
6425
6631
  };
6426
6632
 
6427
6633
  // src/features/rules/augmentcode-rule.ts
6428
- var import_node_path65 = require("path");
6634
+ var import_node_path67 = require("path");
6429
6635
  var AugmentcodeRule = class _AugmentcodeRule extends ToolRule {
6430
6636
  toRulesyncRule() {
6431
6637
  return this.toRulesyncRuleDefault();
@@ -6433,7 +6639,7 @@ var AugmentcodeRule = class _AugmentcodeRule extends ToolRule {
6433
6639
  static getSettablePaths() {
6434
6640
  return {
6435
6641
  nonRoot: {
6436
- relativeDirPath: (0, import_node_path65.join)(".augment", "rules")
6642
+ relativeDirPath: (0, import_node_path67.join)(".augment", "rules")
6437
6643
  }
6438
6644
  };
6439
6645
  }
@@ -6457,7 +6663,7 @@ var AugmentcodeRule = class _AugmentcodeRule extends ToolRule {
6457
6663
  validate = true
6458
6664
  }) {
6459
6665
  const fileContent = await readFileContent(
6460
- (0, import_node_path65.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
6666
+ (0, import_node_path67.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
6461
6667
  );
6462
6668
  const { body: content } = parseFrontmatter(fileContent);
6463
6669
  return new _AugmentcodeRule({
@@ -6480,7 +6686,7 @@ var AugmentcodeRule = class _AugmentcodeRule extends ToolRule {
6480
6686
  };
6481
6687
 
6482
6688
  // src/features/rules/claudecode-rule.ts
6483
- var import_node_path66 = require("path");
6689
+ var import_node_path68 = require("path");
6484
6690
  var ClaudecodeRule = class _ClaudecodeRule extends ToolRule {
6485
6691
  static getSettablePaths({
6486
6692
  global
@@ -6499,7 +6705,7 @@ var ClaudecodeRule = class _ClaudecodeRule extends ToolRule {
6499
6705
  relativeFilePath: "CLAUDE.md"
6500
6706
  },
6501
6707
  nonRoot: {
6502
- relativeDirPath: (0, import_node_path66.join)(".claude", "memories")
6708
+ relativeDirPath: (0, import_node_path68.join)(".claude", "memories")
6503
6709
  }
6504
6710
  };
6505
6711
  }
@@ -6514,7 +6720,7 @@ var ClaudecodeRule = class _ClaudecodeRule extends ToolRule {
6514
6720
  if (isRoot) {
6515
6721
  const relativePath2 = paths.root.relativeFilePath;
6516
6722
  const fileContent2 = await readFileContent(
6517
- (0, import_node_path66.join)(baseDir, paths.root.relativeDirPath, relativePath2)
6723
+ (0, import_node_path68.join)(baseDir, paths.root.relativeDirPath, relativePath2)
6518
6724
  );
6519
6725
  return new _ClaudecodeRule({
6520
6726
  baseDir,
@@ -6528,8 +6734,8 @@ var ClaudecodeRule = class _ClaudecodeRule extends ToolRule {
6528
6734
  if (!paths.nonRoot) {
6529
6735
  throw new Error("nonRoot path is not set");
6530
6736
  }
6531
- const relativePath = (0, import_node_path66.join)(paths.nonRoot.relativeDirPath, relativeFilePath);
6532
- const fileContent = await readFileContent((0, import_node_path66.join)(baseDir, relativePath));
6737
+ const relativePath = (0, import_node_path68.join)(paths.nonRoot.relativeDirPath, relativeFilePath);
6738
+ const fileContent = await readFileContent((0, import_node_path68.join)(baseDir, relativePath));
6533
6739
  return new _ClaudecodeRule({
6534
6740
  baseDir,
6535
6741
  relativeDirPath: paths.nonRoot.relativeDirPath,
@@ -6571,10 +6777,10 @@ var ClaudecodeRule = class _ClaudecodeRule extends ToolRule {
6571
6777
  };
6572
6778
 
6573
6779
  // src/features/rules/cline-rule.ts
6574
- var import_node_path67 = require("path");
6575
- var import_mini26 = require("zod/mini");
6576
- var ClineRuleFrontmatterSchema = import_mini26.z.object({
6577
- description: import_mini26.z.string()
6780
+ var import_node_path69 = require("path");
6781
+ var import_mini27 = require("zod/mini");
6782
+ var ClineRuleFrontmatterSchema = import_mini27.z.object({
6783
+ description: import_mini27.z.string()
6578
6784
  });
6579
6785
  var ClineRule = class _ClineRule extends ToolRule {
6580
6786
  static getSettablePaths() {
@@ -6616,7 +6822,7 @@ var ClineRule = class _ClineRule extends ToolRule {
6616
6822
  validate = true
6617
6823
  }) {
6618
6824
  const fileContent = await readFileContent(
6619
- (0, import_node_path67.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
6825
+ (0, import_node_path69.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
6620
6826
  );
6621
6827
  return new _ClineRule({
6622
6828
  baseDir,
@@ -6629,7 +6835,7 @@ var ClineRule = class _ClineRule extends ToolRule {
6629
6835
  };
6630
6836
 
6631
6837
  // src/features/rules/codexcli-rule.ts
6632
- var import_node_path68 = require("path");
6838
+ var import_node_path70 = require("path");
6633
6839
  var CodexcliRule = class _CodexcliRule extends ToolRule {
6634
6840
  static getSettablePaths({
6635
6841
  global
@@ -6648,7 +6854,7 @@ var CodexcliRule = class _CodexcliRule extends ToolRule {
6648
6854
  relativeFilePath: "AGENTS.md"
6649
6855
  },
6650
6856
  nonRoot: {
6651
- relativeDirPath: (0, import_node_path68.join)(".codex", "memories")
6857
+ relativeDirPath: (0, import_node_path70.join)(".codex", "memories")
6652
6858
  }
6653
6859
  };
6654
6860
  }
@@ -6663,7 +6869,7 @@ var CodexcliRule = class _CodexcliRule extends ToolRule {
6663
6869
  if (isRoot) {
6664
6870
  const relativePath2 = paths.root.relativeFilePath;
6665
6871
  const fileContent2 = await readFileContent(
6666
- (0, import_node_path68.join)(baseDir, paths.root.relativeDirPath, relativePath2)
6872
+ (0, import_node_path70.join)(baseDir, paths.root.relativeDirPath, relativePath2)
6667
6873
  );
6668
6874
  return new _CodexcliRule({
6669
6875
  baseDir,
@@ -6677,8 +6883,8 @@ var CodexcliRule = class _CodexcliRule extends ToolRule {
6677
6883
  if (!paths.nonRoot) {
6678
6884
  throw new Error("nonRoot path is not set");
6679
6885
  }
6680
- const relativePath = (0, import_node_path68.join)(paths.nonRoot.relativeDirPath, relativeFilePath);
6681
- const fileContent = await readFileContent((0, import_node_path68.join)(baseDir, relativePath));
6886
+ const relativePath = (0, import_node_path70.join)(paths.nonRoot.relativeDirPath, relativeFilePath);
6887
+ const fileContent = await readFileContent((0, import_node_path70.join)(baseDir, relativePath));
6682
6888
  return new _CodexcliRule({
6683
6889
  baseDir,
6684
6890
  relativeDirPath: paths.nonRoot.relativeDirPath,
@@ -6720,11 +6926,11 @@ var CodexcliRule = class _CodexcliRule extends ToolRule {
6720
6926
  };
6721
6927
 
6722
6928
  // src/features/rules/copilot-rule.ts
6723
- var import_node_path69 = require("path");
6724
- var import_mini27 = require("zod/mini");
6725
- var CopilotRuleFrontmatterSchema = import_mini27.z.object({
6726
- description: import_mini27.z.optional(import_mini27.z.string()),
6727
- applyTo: import_mini27.z.optional(import_mini27.z.string())
6929
+ var import_node_path71 = require("path");
6930
+ var import_mini28 = require("zod/mini");
6931
+ var CopilotRuleFrontmatterSchema = import_mini28.z.object({
6932
+ description: import_mini28.z.optional(import_mini28.z.string()),
6933
+ applyTo: import_mini28.z.optional(import_mini28.z.string())
6728
6934
  });
6729
6935
  var CopilotRule = class _CopilotRule extends ToolRule {
6730
6936
  frontmatter;
@@ -6736,7 +6942,7 @@ var CopilotRule = class _CopilotRule extends ToolRule {
6736
6942
  relativeFilePath: "copilot-instructions.md"
6737
6943
  },
6738
6944
  nonRoot: {
6739
- relativeDirPath: (0, import_node_path69.join)(".github", "instructions")
6945
+ relativeDirPath: (0, import_node_path71.join)(".github", "instructions")
6740
6946
  }
6741
6947
  };
6742
6948
  }
@@ -6745,7 +6951,7 @@ var CopilotRule = class _CopilotRule extends ToolRule {
6745
6951
  const result = CopilotRuleFrontmatterSchema.safeParse(frontmatter);
6746
6952
  if (!result.success) {
6747
6953
  throw new Error(
6748
- `Invalid frontmatter in ${(0, import_node_path69.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
6954
+ `Invalid frontmatter in ${(0, import_node_path71.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
6749
6955
  );
6750
6956
  }
6751
6957
  }
@@ -6823,11 +7029,11 @@ var CopilotRule = class _CopilotRule extends ToolRule {
6823
7029
  validate = true
6824
7030
  }) {
6825
7031
  const isRoot = relativeFilePath === "copilot-instructions.md";
6826
- const relativePath = isRoot ? (0, import_node_path69.join)(
7032
+ const relativePath = isRoot ? (0, import_node_path71.join)(
6827
7033
  this.getSettablePaths().root.relativeDirPath,
6828
7034
  this.getSettablePaths().root.relativeFilePath
6829
- ) : (0, import_node_path69.join)(this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath);
6830
- const fileContent = await readFileContent((0, import_node_path69.join)(baseDir, relativePath));
7035
+ ) : (0, import_node_path71.join)(this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath);
7036
+ const fileContent = await readFileContent((0, import_node_path71.join)(baseDir, relativePath));
6831
7037
  if (isRoot) {
6832
7038
  return new _CopilotRule({
6833
7039
  baseDir,
@@ -6846,7 +7052,7 @@ var CopilotRule = class _CopilotRule extends ToolRule {
6846
7052
  const result = CopilotRuleFrontmatterSchema.safeParse(frontmatter);
6847
7053
  if (!result.success) {
6848
7054
  throw new Error(
6849
- `Invalid frontmatter in ${(0, import_node_path69.join)(baseDir, relativeFilePath)}: ${formatError(result.error)}`
7055
+ `Invalid frontmatter in ${(0, import_node_path71.join)(baseDir, relativeFilePath)}: ${formatError(result.error)}`
6850
7056
  );
6851
7057
  }
6852
7058
  return new _CopilotRule({
@@ -6870,7 +7076,7 @@ var CopilotRule = class _CopilotRule extends ToolRule {
6870
7076
  return {
6871
7077
  success: false,
6872
7078
  error: new Error(
6873
- `Invalid frontmatter in ${(0, import_node_path69.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
7079
+ `Invalid frontmatter in ${(0, import_node_path71.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
6874
7080
  )
6875
7081
  };
6876
7082
  }
@@ -6890,12 +7096,12 @@ var CopilotRule = class _CopilotRule extends ToolRule {
6890
7096
  };
6891
7097
 
6892
7098
  // src/features/rules/cursor-rule.ts
6893
- var import_node_path70 = require("path");
6894
- var import_mini28 = require("zod/mini");
6895
- var CursorRuleFrontmatterSchema = import_mini28.z.object({
6896
- description: import_mini28.z.optional(import_mini28.z.string()),
6897
- globs: import_mini28.z.optional(import_mini28.z.string()),
6898
- alwaysApply: import_mini28.z.optional(import_mini28.z.boolean())
7099
+ var import_node_path72 = require("path");
7100
+ var import_mini29 = require("zod/mini");
7101
+ var CursorRuleFrontmatterSchema = import_mini29.z.object({
7102
+ description: import_mini29.z.optional(import_mini29.z.string()),
7103
+ globs: import_mini29.z.optional(import_mini29.z.string()),
7104
+ alwaysApply: import_mini29.z.optional(import_mini29.z.boolean())
6899
7105
  });
6900
7106
  var CursorRule = class _CursorRule extends ToolRule {
6901
7107
  frontmatter;
@@ -6903,7 +7109,7 @@ var CursorRule = class _CursorRule extends ToolRule {
6903
7109
  static getSettablePaths() {
6904
7110
  return {
6905
7111
  nonRoot: {
6906
- relativeDirPath: (0, import_node_path70.join)(".cursor", "rules")
7112
+ relativeDirPath: (0, import_node_path72.join)(".cursor", "rules")
6907
7113
  }
6908
7114
  };
6909
7115
  }
@@ -6912,7 +7118,7 @@ var CursorRule = class _CursorRule extends ToolRule {
6912
7118
  const result = CursorRuleFrontmatterSchema.safeParse(frontmatter);
6913
7119
  if (!result.success) {
6914
7120
  throw new Error(
6915
- `Invalid frontmatter in ${(0, import_node_path70.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
7121
+ `Invalid frontmatter in ${(0, import_node_path72.join)(rest.relativeDirPath, rest.relativeFilePath)}: ${formatError(result.error)}`
6916
7122
  );
6917
7123
  }
6918
7124
  }
@@ -7029,19 +7235,19 @@ var CursorRule = class _CursorRule extends ToolRule {
7029
7235
  validate = true
7030
7236
  }) {
7031
7237
  const fileContent = await readFileContent(
7032
- (0, import_node_path70.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
7238
+ (0, import_node_path72.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
7033
7239
  );
7034
7240
  const { frontmatter, body: content } = _CursorRule.parseCursorFrontmatter(fileContent);
7035
7241
  const result = CursorRuleFrontmatterSchema.safeParse(frontmatter);
7036
7242
  if (!result.success) {
7037
7243
  throw new Error(
7038
- `Invalid frontmatter in ${(0, import_node_path70.join)(baseDir, relativeFilePath)}: ${formatError(result.error)}`
7244
+ `Invalid frontmatter in ${(0, import_node_path72.join)(baseDir, relativeFilePath)}: ${formatError(result.error)}`
7039
7245
  );
7040
7246
  }
7041
7247
  return new _CursorRule({
7042
7248
  baseDir,
7043
7249
  relativeDirPath: this.getSettablePaths().nonRoot.relativeDirPath,
7044
- relativeFilePath: (0, import_node_path70.basename)(relativeFilePath),
7250
+ relativeFilePath: (0, import_node_path72.basename)(relativeFilePath),
7045
7251
  frontmatter: result.data,
7046
7252
  body: content.trim(),
7047
7253
  validate
@@ -7058,7 +7264,7 @@ var CursorRule = class _CursorRule extends ToolRule {
7058
7264
  return {
7059
7265
  success: false,
7060
7266
  error: new Error(
7061
- `Invalid frontmatter in ${(0, import_node_path70.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
7267
+ `Invalid frontmatter in ${(0, import_node_path72.join)(this.relativeDirPath, this.relativeFilePath)}: ${formatError(result.error)}`
7062
7268
  )
7063
7269
  };
7064
7270
  }
@@ -7078,7 +7284,7 @@ var CursorRule = class _CursorRule extends ToolRule {
7078
7284
  };
7079
7285
 
7080
7286
  // src/features/rules/geminicli-rule.ts
7081
- var import_node_path71 = require("path");
7287
+ var import_node_path73 = require("path");
7082
7288
  var GeminiCliRule = class _GeminiCliRule extends ToolRule {
7083
7289
  static getSettablePaths({
7084
7290
  global
@@ -7097,7 +7303,7 @@ var GeminiCliRule = class _GeminiCliRule extends ToolRule {
7097
7303
  relativeFilePath: "GEMINI.md"
7098
7304
  },
7099
7305
  nonRoot: {
7100
- relativeDirPath: (0, import_node_path71.join)(".gemini", "memories")
7306
+ relativeDirPath: (0, import_node_path73.join)(".gemini", "memories")
7101
7307
  }
7102
7308
  };
7103
7309
  }
@@ -7112,7 +7318,7 @@ var GeminiCliRule = class _GeminiCliRule extends ToolRule {
7112
7318
  if (isRoot) {
7113
7319
  const relativePath2 = paths.root.relativeFilePath;
7114
7320
  const fileContent2 = await readFileContent(
7115
- (0, import_node_path71.join)(baseDir, paths.root.relativeDirPath, relativePath2)
7321
+ (0, import_node_path73.join)(baseDir, paths.root.relativeDirPath, relativePath2)
7116
7322
  );
7117
7323
  return new _GeminiCliRule({
7118
7324
  baseDir,
@@ -7126,8 +7332,8 @@ var GeminiCliRule = class _GeminiCliRule extends ToolRule {
7126
7332
  if (!paths.nonRoot) {
7127
7333
  throw new Error("nonRoot path is not set");
7128
7334
  }
7129
- const relativePath = (0, import_node_path71.join)(paths.nonRoot.relativeDirPath, relativeFilePath);
7130
- const fileContent = await readFileContent((0, import_node_path71.join)(baseDir, relativePath));
7335
+ const relativePath = (0, import_node_path73.join)(paths.nonRoot.relativeDirPath, relativeFilePath);
7336
+ const fileContent = await readFileContent((0, import_node_path73.join)(baseDir, relativePath));
7131
7337
  return new _GeminiCliRule({
7132
7338
  baseDir,
7133
7339
  relativeDirPath: paths.nonRoot.relativeDirPath,
@@ -7169,7 +7375,7 @@ var GeminiCliRule = class _GeminiCliRule extends ToolRule {
7169
7375
  };
7170
7376
 
7171
7377
  // src/features/rules/junie-rule.ts
7172
- var import_node_path72 = require("path");
7378
+ var import_node_path74 = require("path");
7173
7379
  var JunieRule = class _JunieRule extends ToolRule {
7174
7380
  static getSettablePaths() {
7175
7381
  return {
@@ -7178,7 +7384,7 @@ var JunieRule = class _JunieRule extends ToolRule {
7178
7384
  relativeFilePath: "guidelines.md"
7179
7385
  },
7180
7386
  nonRoot: {
7181
- relativeDirPath: (0, import_node_path72.join)(".junie", "memories")
7387
+ relativeDirPath: (0, import_node_path74.join)(".junie", "memories")
7182
7388
  }
7183
7389
  };
7184
7390
  }
@@ -7188,8 +7394,8 @@ var JunieRule = class _JunieRule extends ToolRule {
7188
7394
  validate = true
7189
7395
  }) {
7190
7396
  const isRoot = relativeFilePath === "guidelines.md";
7191
- const relativePath = isRoot ? "guidelines.md" : (0, import_node_path72.join)(".junie", "memories", relativeFilePath);
7192
- const fileContent = await readFileContent((0, import_node_path72.join)(baseDir, relativePath));
7397
+ const relativePath = isRoot ? "guidelines.md" : (0, import_node_path74.join)(".junie", "memories", relativeFilePath);
7398
+ const fileContent = await readFileContent((0, import_node_path74.join)(baseDir, relativePath));
7193
7399
  return new _JunieRule({
7194
7400
  baseDir,
7195
7401
  relativeDirPath: isRoot ? this.getSettablePaths().root.relativeDirPath : this.getSettablePaths().nonRoot.relativeDirPath,
@@ -7229,12 +7435,12 @@ var JunieRule = class _JunieRule extends ToolRule {
7229
7435
  };
7230
7436
 
7231
7437
  // src/features/rules/kiro-rule.ts
7232
- var import_node_path73 = require("path");
7438
+ var import_node_path75 = require("path");
7233
7439
  var KiroRule = class _KiroRule extends ToolRule {
7234
7440
  static getSettablePaths() {
7235
7441
  return {
7236
7442
  nonRoot: {
7237
- relativeDirPath: (0, import_node_path73.join)(".kiro", "steering")
7443
+ relativeDirPath: (0, import_node_path75.join)(".kiro", "steering")
7238
7444
  }
7239
7445
  };
7240
7446
  }
@@ -7244,7 +7450,7 @@ var KiroRule = class _KiroRule extends ToolRule {
7244
7450
  validate = true
7245
7451
  }) {
7246
7452
  const fileContent = await readFileContent(
7247
- (0, import_node_path73.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
7453
+ (0, import_node_path75.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
7248
7454
  );
7249
7455
  return new _KiroRule({
7250
7456
  baseDir,
@@ -7284,7 +7490,7 @@ var KiroRule = class _KiroRule extends ToolRule {
7284
7490
  };
7285
7491
 
7286
7492
  // src/features/rules/opencode-rule.ts
7287
- var import_node_path74 = require("path");
7493
+ var import_node_path76 = require("path");
7288
7494
  var OpenCodeRule = class _OpenCodeRule extends ToolRule {
7289
7495
  static getSettablePaths() {
7290
7496
  return {
@@ -7293,7 +7499,7 @@ var OpenCodeRule = class _OpenCodeRule extends ToolRule {
7293
7499
  relativeFilePath: "AGENTS.md"
7294
7500
  },
7295
7501
  nonRoot: {
7296
- relativeDirPath: (0, import_node_path74.join)(".opencode", "memories")
7502
+ relativeDirPath: (0, import_node_path76.join)(".opencode", "memories")
7297
7503
  }
7298
7504
  };
7299
7505
  }
@@ -7303,8 +7509,8 @@ var OpenCodeRule = class _OpenCodeRule extends ToolRule {
7303
7509
  validate = true
7304
7510
  }) {
7305
7511
  const isRoot = relativeFilePath === "AGENTS.md";
7306
- const relativePath = isRoot ? "AGENTS.md" : (0, import_node_path74.join)(".opencode", "memories", relativeFilePath);
7307
- const fileContent = await readFileContent((0, import_node_path74.join)(baseDir, relativePath));
7512
+ const relativePath = isRoot ? "AGENTS.md" : (0, import_node_path76.join)(".opencode", "memories", relativeFilePath);
7513
+ const fileContent = await readFileContent((0, import_node_path76.join)(baseDir, relativePath));
7308
7514
  return new _OpenCodeRule({
7309
7515
  baseDir,
7310
7516
  relativeDirPath: isRoot ? this.getSettablePaths().root.relativeDirPath : this.getSettablePaths().nonRoot.relativeDirPath,
@@ -7344,7 +7550,7 @@ var OpenCodeRule = class _OpenCodeRule extends ToolRule {
7344
7550
  };
7345
7551
 
7346
7552
  // src/features/rules/qwencode-rule.ts
7347
- var import_node_path75 = require("path");
7553
+ var import_node_path77 = require("path");
7348
7554
  var QwencodeRule = class _QwencodeRule extends ToolRule {
7349
7555
  static getSettablePaths() {
7350
7556
  return {
@@ -7353,7 +7559,7 @@ var QwencodeRule = class _QwencodeRule extends ToolRule {
7353
7559
  relativeFilePath: "QWEN.md"
7354
7560
  },
7355
7561
  nonRoot: {
7356
- relativeDirPath: (0, import_node_path75.join)(".qwen", "memories")
7562
+ relativeDirPath: (0, import_node_path77.join)(".qwen", "memories")
7357
7563
  }
7358
7564
  };
7359
7565
  }
@@ -7363,8 +7569,8 @@ var QwencodeRule = class _QwencodeRule extends ToolRule {
7363
7569
  validate = true
7364
7570
  }) {
7365
7571
  const isRoot = relativeFilePath === "QWEN.md";
7366
- const relativePath = isRoot ? "QWEN.md" : (0, import_node_path75.join)(".qwen", "memories", relativeFilePath);
7367
- const fileContent = await readFileContent((0, import_node_path75.join)(baseDir, relativePath));
7572
+ const relativePath = isRoot ? "QWEN.md" : (0, import_node_path77.join)(".qwen", "memories", relativeFilePath);
7573
+ const fileContent = await readFileContent((0, import_node_path77.join)(baseDir, relativePath));
7368
7574
  return new _QwencodeRule({
7369
7575
  baseDir,
7370
7576
  relativeDirPath: isRoot ? this.getSettablePaths().root.relativeDirPath : this.getSettablePaths().nonRoot.relativeDirPath,
@@ -7401,12 +7607,12 @@ var QwencodeRule = class _QwencodeRule extends ToolRule {
7401
7607
  };
7402
7608
 
7403
7609
  // src/features/rules/roo-rule.ts
7404
- var import_node_path76 = require("path");
7610
+ var import_node_path78 = require("path");
7405
7611
  var RooRule = class _RooRule extends ToolRule {
7406
7612
  static getSettablePaths() {
7407
7613
  return {
7408
7614
  nonRoot: {
7409
- relativeDirPath: (0, import_node_path76.join)(".roo", "rules")
7615
+ relativeDirPath: (0, import_node_path78.join)(".roo", "rules")
7410
7616
  }
7411
7617
  };
7412
7618
  }
@@ -7416,7 +7622,7 @@ var RooRule = class _RooRule extends ToolRule {
7416
7622
  validate = true
7417
7623
  }) {
7418
7624
  const fileContent = await readFileContent(
7419
- (0, import_node_path76.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
7625
+ (0, import_node_path78.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
7420
7626
  );
7421
7627
  return new _RooRule({
7422
7628
  baseDir,
@@ -7471,7 +7677,7 @@ var RooRule = class _RooRule extends ToolRule {
7471
7677
  };
7472
7678
 
7473
7679
  // src/features/rules/warp-rule.ts
7474
- var import_node_path77 = require("path");
7680
+ var import_node_path79 = require("path");
7475
7681
  var WarpRule = class _WarpRule extends ToolRule {
7476
7682
  constructor({ fileContent, root, ...rest }) {
7477
7683
  super({
@@ -7487,7 +7693,7 @@ var WarpRule = class _WarpRule extends ToolRule {
7487
7693
  relativeFilePath: "WARP.md"
7488
7694
  },
7489
7695
  nonRoot: {
7490
- relativeDirPath: (0, import_node_path77.join)(".warp", "memories")
7696
+ relativeDirPath: (0, import_node_path79.join)(".warp", "memories")
7491
7697
  }
7492
7698
  };
7493
7699
  }
@@ -7497,8 +7703,8 @@ var WarpRule = class _WarpRule extends ToolRule {
7497
7703
  validate = true
7498
7704
  }) {
7499
7705
  const isRoot = relativeFilePath === this.getSettablePaths().root.relativeFilePath;
7500
- const relativePath = isRoot ? this.getSettablePaths().root.relativeFilePath : (0, import_node_path77.join)(this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath);
7501
- const fileContent = await readFileContent((0, import_node_path77.join)(baseDir, relativePath));
7706
+ const relativePath = isRoot ? this.getSettablePaths().root.relativeFilePath : (0, import_node_path79.join)(this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath);
7707
+ const fileContent = await readFileContent((0, import_node_path79.join)(baseDir, relativePath));
7502
7708
  return new _WarpRule({
7503
7709
  baseDir,
7504
7710
  relativeDirPath: isRoot ? this.getSettablePaths().root.relativeDirPath : ".warp",
@@ -7538,12 +7744,12 @@ var WarpRule = class _WarpRule extends ToolRule {
7538
7744
  };
7539
7745
 
7540
7746
  // src/features/rules/windsurf-rule.ts
7541
- var import_node_path78 = require("path");
7747
+ var import_node_path80 = require("path");
7542
7748
  var WindsurfRule = class _WindsurfRule extends ToolRule {
7543
7749
  static getSettablePaths() {
7544
7750
  return {
7545
7751
  nonRoot: {
7546
- relativeDirPath: (0, import_node_path78.join)(".windsurf", "rules")
7752
+ relativeDirPath: (0, import_node_path80.join)(".windsurf", "rules")
7547
7753
  }
7548
7754
  };
7549
7755
  }
@@ -7553,7 +7759,7 @@ var WindsurfRule = class _WindsurfRule extends ToolRule {
7553
7759
  validate = true
7554
7760
  }) {
7555
7761
  const fileContent = await readFileContent(
7556
- (0, import_node_path78.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
7762
+ (0, import_node_path80.join)(baseDir, this.getSettablePaths().nonRoot.relativeDirPath, relativeFilePath)
7557
7763
  );
7558
7764
  return new _WindsurfRule({
7559
7765
  baseDir,
@@ -7595,6 +7801,7 @@ var WindsurfRule = class _WindsurfRule extends ToolRule {
7595
7801
  var rulesProcessorToolTargets = [
7596
7802
  "agentsmd",
7597
7803
  "amazonqcli",
7804
+ "antigravity",
7598
7805
  "augmentcode",
7599
7806
  "augmentcode-legacy",
7600
7807
  "claudecode",
@@ -7611,7 +7818,7 @@ var rulesProcessorToolTargets = [
7611
7818
  "warp",
7612
7819
  "windsurf"
7613
7820
  ];
7614
- var RulesProcessorToolTargetSchema = import_mini29.z.enum(rulesProcessorToolTargets);
7821
+ var RulesProcessorToolTargetSchema = import_mini30.z.enum(rulesProcessorToolTargets);
7615
7822
  var rulesProcessorToolTargetsGlobal = [
7616
7823
  "claudecode",
7617
7824
  "codexcli",
@@ -7668,6 +7875,15 @@ var RulesProcessor = class extends FeatureProcessor {
7668
7875
  rulesyncRule,
7669
7876
  validate: true
7670
7877
  });
7878
+ case "antigravity":
7879
+ if (!AntigravityRule.isTargetedByRulesyncRule(rulesyncRule)) {
7880
+ return null;
7881
+ }
7882
+ return AntigravityRule.fromRulesyncRule({
7883
+ baseDir: this.baseDir,
7884
+ rulesyncRule,
7885
+ validate: true
7886
+ });
7671
7887
  case "augmentcode":
7672
7888
  if (!AugmentcodeRule.isTargetedByRulesyncRule(rulesyncRule)) {
7673
7889
  return null;
@@ -7965,10 +8181,10 @@ var RulesProcessor = class extends FeatureProcessor {
7965
8181
  * Load and parse rulesync rule files from .rulesync/rules/ directory
7966
8182
  */
7967
8183
  async loadRulesyncFiles() {
7968
- const files = await findFilesByGlobs((0, import_node_path79.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, "*.md"));
8184
+ const files = await findFilesByGlobs((0, import_node_path81.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, "*.md"));
7969
8185
  logger.debug(`Found ${files.length} rulesync files`);
7970
8186
  const rulesyncRules = await Promise.all(
7971
- files.map((file) => RulesyncRule.fromFile({ relativeFilePath: (0, import_node_path79.basename)(file) }))
8187
+ files.map((file) => RulesyncRule.fromFile({ relativeFilePath: (0, import_node_path81.basename)(file) }))
7972
8188
  );
7973
8189
  const rootRules = rulesyncRules.filter((rule) => rule.getFrontmatter().root);
7974
8190
  if (rootRules.length > 1) {
@@ -7986,10 +8202,10 @@ var RulesProcessor = class extends FeatureProcessor {
7986
8202
  return rulesyncRules;
7987
8203
  }
7988
8204
  async loadRulesyncFilesLegacy() {
7989
- const legacyFiles = await findFilesByGlobs((0, import_node_path79.join)(RULESYNC_RELATIVE_DIR_PATH, "*.md"));
8205
+ const legacyFiles = await findFilesByGlobs((0, import_node_path81.join)(RULESYNC_RELATIVE_DIR_PATH, "*.md"));
7990
8206
  logger.debug(`Found ${legacyFiles.length} legacy rulesync files`);
7991
8207
  return Promise.all(
7992
- legacyFiles.map((file) => RulesyncRule.fromFileLegacy({ relativeFilePath: (0, import_node_path79.basename)(file) }))
8208
+ legacyFiles.map((file) => RulesyncRule.fromFileLegacy({ relativeFilePath: (0, import_node_path81.basename)(file) }))
7993
8209
  );
7994
8210
  }
7995
8211
  /**
@@ -8052,13 +8268,13 @@ var RulesProcessor = class extends FeatureProcessor {
8052
8268
  return [];
8053
8269
  }
8054
8270
  const rootFilePaths = await findFilesByGlobs(
8055
- (0, import_node_path79.join)(this.baseDir, root.relativeDirPath ?? ".", root.relativeFilePath)
8271
+ (0, import_node_path81.join)(this.baseDir, root.relativeDirPath ?? ".", root.relativeFilePath)
8056
8272
  );
8057
8273
  return await Promise.all(
8058
8274
  rootFilePaths.map(
8059
8275
  (filePath) => root.fromFile({
8060
8276
  baseDir: this.baseDir,
8061
- relativeFilePath: (0, import_node_path79.basename)(filePath),
8277
+ relativeFilePath: (0, import_node_path81.basename)(filePath),
8062
8278
  global: this.global
8063
8279
  })
8064
8280
  )
@@ -8070,13 +8286,13 @@ var RulesProcessor = class extends FeatureProcessor {
8070
8286
  return [];
8071
8287
  }
8072
8288
  const nonRootFilePaths = await findFilesByGlobs(
8073
- (0, import_node_path79.join)(this.baseDir, nonRoot.relativeDirPath, `*.${nonRoot.extension}`)
8289
+ (0, import_node_path81.join)(this.baseDir, nonRoot.relativeDirPath, `*.${nonRoot.extension}`)
8074
8290
  );
8075
8291
  return await Promise.all(
8076
8292
  nonRootFilePaths.map(
8077
8293
  (filePath) => nonRoot.fromFile({
8078
8294
  baseDir: this.baseDir,
8079
- relativeFilePath: (0, import_node_path79.basename)(filePath),
8295
+ relativeFilePath: (0, import_node_path81.basename)(filePath),
8080
8296
  global: this.global
8081
8297
  })
8082
8298
  )
@@ -8447,21 +8663,21 @@ s/<command> [arguments]
8447
8663
  This syntax employs a double slash (\`s/\`) to prevent conflicts with built-in slash commands.
8448
8664
  The \`s\` in \`s/\` stands for *simulate*. Because custom slash commands are not built-in, this syntax provides a pseudo way to invoke them.
8449
8665
 
8450
- When users call a custom slash command, you have to look for the markdown file, \`${(0, import_node_path79.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, "{command}.md")}\`, then execute the contents of that file as the block of operations.` : "";
8666
+ When users call a custom slash command, you have to look for the markdown file, \`${(0, import_node_path81.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, "{command}.md")}\`, then execute the contents of that file as the block of operations.` : "";
8451
8667
  const subagentsSection = subagents ? `## Simulated Subagents
8452
8668
 
8453
8669
  Simulated subagents are specialized AI assistants that can be invoked to handle specific types of tasks. In this case, it can be appear something like custom slash commands simply. Simulated subagents can be called by custom slash commands.
8454
8670
 
8455
- When users call a simulated subagent, it will look for the corresponding markdown file, \`${(0, import_node_path79.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, "{subagent}.md")}\`, and execute its contents as the block of operations.
8671
+ When users call a simulated subagent, it will look for the corresponding markdown file, \`${(0, import_node_path81.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, "{subagent}.md")}\`, and execute its contents as the block of operations.
8456
8672
 
8457
- For example, if the user instructs \`Call planner subagent to plan the refactoring\`, you have to look for the markdown file, \`${(0, import_node_path79.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, "planner.md")}\`, and execute its contents as the block of operations.` : "";
8673
+ For example, if the user instructs \`Call planner subagent to plan the refactoring\`, you have to look for the markdown file, \`${(0, import_node_path81.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, "planner.md")}\`, and execute its contents as the block of operations.` : "";
8458
8674
  const skillsSection = skills ? `## Simulated Skills
8459
8675
 
8460
8676
  Simulated skills are specialized capabilities that can be invoked to handle specific types of tasks.
8461
8677
 
8462
- When users invoke a simulated skill, look for the corresponding SKILL.md file in \`${(0, import_node_path79.join)(RULESYNC_SKILLS_RELATIVE_DIR_PATH, "{skill}/SKILL.md")}\` and execute its contents as the block of operations.
8678
+ When users invoke a simulated skill, look for the corresponding SKILL.md file in \`${(0, import_node_path81.join)(RULESYNC_SKILLS_RELATIVE_DIR_PATH, "{skill}/SKILL.md")}\` and execute its contents as the block of operations.
8463
8679
 
8464
- For example, if the user instructs \`Use the skill example-skill to achieve something\`, look for \`${(0, import_node_path79.join)(RULESYNC_SKILLS_RELATIVE_DIR_PATH, "example-skill/SKILL.md")}\` and execute its contents.
8680
+ For example, if the user instructs \`Use the skill example-skill to achieve something\`, look for \`${(0, import_node_path81.join)(RULESYNC_SKILLS_RELATIVE_DIR_PATH, "example-skill/SKILL.md")}\` and execute its contents.
8465
8681
 
8466
8682
  Additionally, you should proactively consider using available skills when they would help accomplish a task more effectively, even if the user doesn't explicitly request them.` : "";
8467
8683
  const result = [
@@ -8723,9 +8939,9 @@ async function generateSkills(config) {
8723
8939
  }
8724
8940
 
8725
8941
  // src/cli/commands/gitignore.ts
8726
- var import_node_path80 = require("path");
8942
+ var import_node_path82 = require("path");
8727
8943
  var gitignoreCommand = async () => {
8728
- const gitignorePath = (0, import_node_path80.join)(process.cwd(), ".gitignore");
8944
+ const gitignorePath = (0, import_node_path82.join)(process.cwd(), ".gitignore");
8729
8945
  const rulesFilesToIgnore = [
8730
8946
  "# Generated by rulesync - AI tool configuration files",
8731
8947
  // AGENTS.md
@@ -8998,7 +9214,7 @@ async function importSkills(config, tool) {
8998
9214
  }
8999
9215
 
9000
9216
  // src/cli/commands/init.ts
9001
- var import_node_path81 = require("path");
9217
+ var import_node_path83 = require("path");
9002
9218
  async function initCommand() {
9003
9219
  logger.info("Initializing rulesync...");
9004
9220
  await ensureDir(RULESYNC_RELATIVE_DIR_PATH);
@@ -9161,14 +9377,14 @@ Attention, again, you are just the planner, so though you can read any files and
9161
9377
  await ensureDir(commandPaths.relativeDirPath);
9162
9378
  await ensureDir(subagentPaths.relativeDirPath);
9163
9379
  await ensureDir(ignorePaths.recommended.relativeDirPath);
9164
- const ruleFilepath = (0, import_node_path81.join)(rulePaths.recommended.relativeDirPath, sampleRuleFile.filename);
9380
+ const ruleFilepath = (0, import_node_path83.join)(rulePaths.recommended.relativeDirPath, sampleRuleFile.filename);
9165
9381
  if (!await fileExists(ruleFilepath)) {
9166
9382
  await writeFileContent(ruleFilepath, sampleRuleFile.content);
9167
9383
  logger.success(`Created ${ruleFilepath}`);
9168
9384
  } else {
9169
9385
  logger.info(`Skipped ${ruleFilepath} (already exists)`);
9170
9386
  }
9171
- const mcpFilepath = (0, import_node_path81.join)(
9387
+ const mcpFilepath = (0, import_node_path83.join)(
9172
9388
  mcpPaths.recommended.relativeDirPath,
9173
9389
  mcpPaths.recommended.relativeFilePath
9174
9390
  );
@@ -9178,21 +9394,21 @@ Attention, again, you are just the planner, so though you can read any files and
9178
9394
  } else {
9179
9395
  logger.info(`Skipped ${mcpFilepath} (already exists)`);
9180
9396
  }
9181
- const commandFilepath = (0, import_node_path81.join)(commandPaths.relativeDirPath, sampleCommandFile.filename);
9397
+ const commandFilepath = (0, import_node_path83.join)(commandPaths.relativeDirPath, sampleCommandFile.filename);
9182
9398
  if (!await fileExists(commandFilepath)) {
9183
9399
  await writeFileContent(commandFilepath, sampleCommandFile.content);
9184
9400
  logger.success(`Created ${commandFilepath}`);
9185
9401
  } else {
9186
9402
  logger.info(`Skipped ${commandFilepath} (already exists)`);
9187
9403
  }
9188
- const subagentFilepath = (0, import_node_path81.join)(subagentPaths.relativeDirPath, sampleSubagentFile.filename);
9404
+ const subagentFilepath = (0, import_node_path83.join)(subagentPaths.relativeDirPath, sampleSubagentFile.filename);
9189
9405
  if (!await fileExists(subagentFilepath)) {
9190
9406
  await writeFileContent(subagentFilepath, sampleSubagentFile.content);
9191
9407
  logger.success(`Created ${subagentFilepath}`);
9192
9408
  } else {
9193
9409
  logger.info(`Skipped ${subagentFilepath} (already exists)`);
9194
9410
  }
9195
- const ignoreFilepath = (0, import_node_path81.join)(
9411
+ const ignoreFilepath = (0, import_node_path83.join)(
9196
9412
  ignorePaths.recommended.relativeDirPath,
9197
9413
  ignorePaths.recommended.relativeFilePath
9198
9414
  );
@@ -9208,12 +9424,12 @@ Attention, again, you are just the planner, so though you can read any files and
9208
9424
  var import_fastmcp = require("fastmcp");
9209
9425
 
9210
9426
  // src/mcp/commands.ts
9211
- var import_node_path82 = require("path");
9212
- var import_mini30 = require("zod/mini");
9427
+ var import_node_path84 = require("path");
9428
+ var import_mini31 = require("zod/mini");
9213
9429
  var maxCommandSizeBytes = 1024 * 1024;
9214
9430
  var maxCommandsCount = 1e3;
9215
9431
  async function listCommands() {
9216
- const commandsDir = (0, import_node_path82.join)(process.cwd(), RULESYNC_COMMANDS_RELATIVE_DIR_PATH);
9432
+ const commandsDir = (0, import_node_path84.join)(process.cwd(), RULESYNC_COMMANDS_RELATIVE_DIR_PATH);
9217
9433
  try {
9218
9434
  const files = await listDirectoryFiles(commandsDir);
9219
9435
  const mdFiles = files.filter((file) => file.endsWith(".md"));
@@ -9225,7 +9441,7 @@ async function listCommands() {
9225
9441
  });
9226
9442
  const frontmatter = command.getFrontmatter();
9227
9443
  return {
9228
- relativePathFromCwd: (0, import_node_path82.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, file),
9444
+ relativePathFromCwd: (0, import_node_path84.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, file),
9229
9445
  frontmatter
9230
9446
  };
9231
9447
  } catch (error) {
@@ -9245,13 +9461,13 @@ async function getCommand({ relativePathFromCwd }) {
9245
9461
  relativePath: relativePathFromCwd,
9246
9462
  intendedRootDir: process.cwd()
9247
9463
  });
9248
- const filename = (0, import_node_path82.basename)(relativePathFromCwd);
9464
+ const filename = (0, import_node_path84.basename)(relativePathFromCwd);
9249
9465
  try {
9250
9466
  const command = await RulesyncCommand.fromFile({
9251
9467
  relativeFilePath: filename
9252
9468
  });
9253
9469
  return {
9254
- relativePathFromCwd: (0, import_node_path82.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename),
9470
+ relativePathFromCwd: (0, import_node_path84.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename),
9255
9471
  frontmatter: command.getFrontmatter(),
9256
9472
  body: command.getBody()
9257
9473
  };
@@ -9270,7 +9486,7 @@ async function putCommand({
9270
9486
  relativePath: relativePathFromCwd,
9271
9487
  intendedRootDir: process.cwd()
9272
9488
  });
9273
- const filename = (0, import_node_path82.basename)(relativePathFromCwd);
9489
+ const filename = (0, import_node_path84.basename)(relativePathFromCwd);
9274
9490
  const estimatedSize = JSON.stringify(frontmatter).length + body.length;
9275
9491
  if (estimatedSize > maxCommandSizeBytes) {
9276
9492
  throw new Error(
@@ -9280,7 +9496,7 @@ async function putCommand({
9280
9496
  try {
9281
9497
  const existingCommands = await listCommands();
9282
9498
  const isUpdate = existingCommands.some(
9283
- (command2) => command2.relativePathFromCwd === (0, import_node_path82.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename)
9499
+ (command2) => command2.relativePathFromCwd === (0, import_node_path84.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename)
9284
9500
  );
9285
9501
  if (!isUpdate && existingCommands.length >= maxCommandsCount) {
9286
9502
  throw new Error(`Maximum number of commands (${maxCommandsCount}) reached`);
@@ -9295,11 +9511,11 @@ async function putCommand({
9295
9511
  fileContent,
9296
9512
  validate: true
9297
9513
  });
9298
- const commandsDir = (0, import_node_path82.join)(process.cwd(), RULESYNC_COMMANDS_RELATIVE_DIR_PATH);
9514
+ const commandsDir = (0, import_node_path84.join)(process.cwd(), RULESYNC_COMMANDS_RELATIVE_DIR_PATH);
9299
9515
  await ensureDir(commandsDir);
9300
9516
  await writeFileContent(command.getFilePath(), command.getFileContent());
9301
9517
  return {
9302
- relativePathFromCwd: (0, import_node_path82.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename),
9518
+ relativePathFromCwd: (0, import_node_path84.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename),
9303
9519
  frontmatter: command.getFrontmatter(),
9304
9520
  body: command.getBody()
9305
9521
  };
@@ -9314,12 +9530,12 @@ async function deleteCommand({ relativePathFromCwd }) {
9314
9530
  relativePath: relativePathFromCwd,
9315
9531
  intendedRootDir: process.cwd()
9316
9532
  });
9317
- const filename = (0, import_node_path82.basename)(relativePathFromCwd);
9318
- const fullPath = (0, import_node_path82.join)(process.cwd(), RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename);
9533
+ const filename = (0, import_node_path84.basename)(relativePathFromCwd);
9534
+ const fullPath = (0, import_node_path84.join)(process.cwd(), RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename);
9319
9535
  try {
9320
9536
  await removeFile(fullPath);
9321
9537
  return {
9322
- relativePathFromCwd: (0, import_node_path82.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename)
9538
+ relativePathFromCwd: (0, import_node_path84.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, filename)
9323
9539
  };
9324
9540
  } catch (error) {
9325
9541
  throw new Error(`Failed to delete command file ${relativePathFromCwd}: ${formatError(error)}`, {
@@ -9328,23 +9544,23 @@ async function deleteCommand({ relativePathFromCwd }) {
9328
9544
  }
9329
9545
  }
9330
9546
  var commandToolSchemas = {
9331
- listCommands: import_mini30.z.object({}),
9332
- getCommand: import_mini30.z.object({
9333
- relativePathFromCwd: import_mini30.z.string()
9547
+ listCommands: import_mini31.z.object({}),
9548
+ getCommand: import_mini31.z.object({
9549
+ relativePathFromCwd: import_mini31.z.string()
9334
9550
  }),
9335
- putCommand: import_mini30.z.object({
9336
- relativePathFromCwd: import_mini30.z.string(),
9551
+ putCommand: import_mini31.z.object({
9552
+ relativePathFromCwd: import_mini31.z.string(),
9337
9553
  frontmatter: RulesyncCommandFrontmatterSchema,
9338
- body: import_mini30.z.string()
9554
+ body: import_mini31.z.string()
9339
9555
  }),
9340
- deleteCommand: import_mini30.z.object({
9341
- relativePathFromCwd: import_mini30.z.string()
9556
+ deleteCommand: import_mini31.z.object({
9557
+ relativePathFromCwd: import_mini31.z.string()
9342
9558
  })
9343
9559
  };
9344
9560
  var commandTools = {
9345
9561
  listCommands: {
9346
9562
  name: "listCommands",
9347
- description: `List all commands from ${(0, import_node_path82.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, "*.md")} with their frontmatter.`,
9563
+ description: `List all commands from ${(0, import_node_path84.join)(RULESYNC_COMMANDS_RELATIVE_DIR_PATH, "*.md")} with their frontmatter.`,
9348
9564
  parameters: commandToolSchemas.listCommands,
9349
9565
  execute: async () => {
9350
9566
  const commands = await listCommands();
@@ -9386,11 +9602,11 @@ var commandTools = {
9386
9602
  };
9387
9603
 
9388
9604
  // src/mcp/ignore.ts
9389
- var import_node_path83 = require("path");
9390
- var import_mini31 = require("zod/mini");
9605
+ var import_node_path85 = require("path");
9606
+ var import_mini32 = require("zod/mini");
9391
9607
  var maxIgnoreFileSizeBytes = 100 * 1024;
9392
9608
  async function getIgnoreFile() {
9393
- const ignoreFilePath = (0, import_node_path83.join)(process.cwd(), RULESYNC_AIIGNORE_RELATIVE_FILE_PATH);
9609
+ const ignoreFilePath = (0, import_node_path85.join)(process.cwd(), RULESYNC_AIIGNORE_RELATIVE_FILE_PATH);
9394
9610
  try {
9395
9611
  const content = await readFileContent(ignoreFilePath);
9396
9612
  return {
@@ -9404,7 +9620,7 @@ async function getIgnoreFile() {
9404
9620
  }
9405
9621
  }
9406
9622
  async function putIgnoreFile({ content }) {
9407
- const ignoreFilePath = (0, import_node_path83.join)(process.cwd(), RULESYNC_AIIGNORE_RELATIVE_FILE_PATH);
9623
+ const ignoreFilePath = (0, import_node_path85.join)(process.cwd(), RULESYNC_AIIGNORE_RELATIVE_FILE_PATH);
9408
9624
  const contentSizeBytes = Buffer.byteLength(content, "utf8");
9409
9625
  if (contentSizeBytes > maxIgnoreFileSizeBytes) {
9410
9626
  throw new Error(
@@ -9425,8 +9641,8 @@ async function putIgnoreFile({ content }) {
9425
9641
  }
9426
9642
  }
9427
9643
  async function deleteIgnoreFile() {
9428
- const aiignorePath = (0, import_node_path83.join)(process.cwd(), RULESYNC_AIIGNORE_RELATIVE_FILE_PATH);
9429
- const legacyIgnorePath = (0, import_node_path83.join)(process.cwd(), RULESYNC_IGNORE_RELATIVE_FILE_PATH);
9644
+ const aiignorePath = (0, import_node_path85.join)(process.cwd(), RULESYNC_AIIGNORE_RELATIVE_FILE_PATH);
9645
+ const legacyIgnorePath = (0, import_node_path85.join)(process.cwd(), RULESYNC_IGNORE_RELATIVE_FILE_PATH);
9430
9646
  try {
9431
9647
  await Promise.all([removeFile(aiignorePath), removeFile(legacyIgnorePath)]);
9432
9648
  return {
@@ -9444,11 +9660,11 @@ async function deleteIgnoreFile() {
9444
9660
  }
9445
9661
  }
9446
9662
  var ignoreToolSchemas = {
9447
- getIgnoreFile: import_mini31.z.object({}),
9448
- putIgnoreFile: import_mini31.z.object({
9449
- content: import_mini31.z.string()
9663
+ getIgnoreFile: import_mini32.z.object({}),
9664
+ putIgnoreFile: import_mini32.z.object({
9665
+ content: import_mini32.z.string()
9450
9666
  }),
9451
- deleteIgnoreFile: import_mini31.z.object({})
9667
+ deleteIgnoreFile: import_mini32.z.object({})
9452
9668
  };
9453
9669
  var ignoreTools = {
9454
9670
  getIgnoreFile: {
@@ -9481,8 +9697,8 @@ var ignoreTools = {
9481
9697
  };
9482
9698
 
9483
9699
  // src/mcp/mcp.ts
9484
- var import_node_path84 = require("path");
9485
- var import_mini32 = require("zod/mini");
9700
+ var import_node_path86 = require("path");
9701
+ var import_mini33 = require("zod/mini");
9486
9702
  var maxMcpSizeBytes = 1024 * 1024;
9487
9703
  async function getMcpFile() {
9488
9704
  const config = await ConfigResolver.resolve({});
@@ -9491,7 +9707,7 @@ async function getMcpFile() {
9491
9707
  validate: true,
9492
9708
  modularMcp: config.getModularMcp()
9493
9709
  });
9494
- const relativePathFromCwd = (0, import_node_path84.join)(
9710
+ const relativePathFromCwd = (0, import_node_path86.join)(
9495
9711
  rulesyncMcp.getRelativeDirPath(),
9496
9712
  rulesyncMcp.getRelativeFilePath()
9497
9713
  );
@@ -9524,7 +9740,7 @@ async function putMcpFile({ content }) {
9524
9740
  const paths = RulesyncMcp.getSettablePaths();
9525
9741
  const relativeDirPath = paths.recommended.relativeDirPath;
9526
9742
  const relativeFilePath = paths.recommended.relativeFilePath;
9527
- const fullPath = (0, import_node_path84.join)(baseDir, relativeDirPath, relativeFilePath);
9743
+ const fullPath = (0, import_node_path86.join)(baseDir, relativeDirPath, relativeFilePath);
9528
9744
  const rulesyncMcp = new RulesyncMcp({
9529
9745
  baseDir,
9530
9746
  relativeDirPath,
@@ -9533,9 +9749,9 @@ async function putMcpFile({ content }) {
9533
9749
  validate: true,
9534
9750
  modularMcp: config.getModularMcp()
9535
9751
  });
9536
- await ensureDir((0, import_node_path84.join)(baseDir, relativeDirPath));
9752
+ await ensureDir((0, import_node_path86.join)(baseDir, relativeDirPath));
9537
9753
  await writeFileContent(fullPath, content);
9538
- const relativePathFromCwd = (0, import_node_path84.join)(relativeDirPath, relativeFilePath);
9754
+ const relativePathFromCwd = (0, import_node_path86.join)(relativeDirPath, relativeFilePath);
9539
9755
  return {
9540
9756
  relativePathFromCwd,
9541
9757
  content: rulesyncMcp.getFileContent()
@@ -9550,15 +9766,15 @@ async function deleteMcpFile() {
9550
9766
  try {
9551
9767
  const baseDir = process.cwd();
9552
9768
  const paths = RulesyncMcp.getSettablePaths();
9553
- const recommendedPath = (0, import_node_path84.join)(
9769
+ const recommendedPath = (0, import_node_path86.join)(
9554
9770
  baseDir,
9555
9771
  paths.recommended.relativeDirPath,
9556
9772
  paths.recommended.relativeFilePath
9557
9773
  );
9558
- const legacyPath = (0, import_node_path84.join)(baseDir, paths.legacy.relativeDirPath, paths.legacy.relativeFilePath);
9774
+ const legacyPath = (0, import_node_path86.join)(baseDir, paths.legacy.relativeDirPath, paths.legacy.relativeFilePath);
9559
9775
  await removeFile(recommendedPath);
9560
9776
  await removeFile(legacyPath);
9561
- const relativePathFromCwd = (0, import_node_path84.join)(
9777
+ const relativePathFromCwd = (0, import_node_path86.join)(
9562
9778
  paths.recommended.relativeDirPath,
9563
9779
  paths.recommended.relativeFilePath
9564
9780
  );
@@ -9572,11 +9788,11 @@ async function deleteMcpFile() {
9572
9788
  }
9573
9789
  }
9574
9790
  var mcpToolSchemas = {
9575
- getMcpFile: import_mini32.z.object({}),
9576
- putMcpFile: import_mini32.z.object({
9577
- content: import_mini32.z.string()
9791
+ getMcpFile: import_mini33.z.object({}),
9792
+ putMcpFile: import_mini33.z.object({
9793
+ content: import_mini33.z.string()
9578
9794
  }),
9579
- deleteMcpFile: import_mini32.z.object({})
9795
+ deleteMcpFile: import_mini33.z.object({})
9580
9796
  };
9581
9797
  var mcpTools = {
9582
9798
  getMcpFile: {
@@ -9609,12 +9825,12 @@ var mcpTools = {
9609
9825
  };
9610
9826
 
9611
9827
  // src/mcp/rules.ts
9612
- var import_node_path85 = require("path");
9613
- var import_mini33 = require("zod/mini");
9828
+ var import_node_path87 = require("path");
9829
+ var import_mini34 = require("zod/mini");
9614
9830
  var maxRuleSizeBytes = 1024 * 1024;
9615
9831
  var maxRulesCount = 1e3;
9616
9832
  async function listRules() {
9617
- const rulesDir = (0, import_node_path85.join)(process.cwd(), RULESYNC_RULES_RELATIVE_DIR_PATH);
9833
+ const rulesDir = (0, import_node_path87.join)(process.cwd(), RULESYNC_RULES_RELATIVE_DIR_PATH);
9618
9834
  try {
9619
9835
  const files = await listDirectoryFiles(rulesDir);
9620
9836
  const mdFiles = files.filter((file) => file.endsWith(".md"));
@@ -9627,7 +9843,7 @@ async function listRules() {
9627
9843
  });
9628
9844
  const frontmatter = rule.getFrontmatter();
9629
9845
  return {
9630
- relativePathFromCwd: (0, import_node_path85.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, file),
9846
+ relativePathFromCwd: (0, import_node_path87.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, file),
9631
9847
  frontmatter
9632
9848
  };
9633
9849
  } catch (error) {
@@ -9647,14 +9863,14 @@ async function getRule({ relativePathFromCwd }) {
9647
9863
  relativePath: relativePathFromCwd,
9648
9864
  intendedRootDir: process.cwd()
9649
9865
  });
9650
- const filename = (0, import_node_path85.basename)(relativePathFromCwd);
9866
+ const filename = (0, import_node_path87.basename)(relativePathFromCwd);
9651
9867
  try {
9652
9868
  const rule = await RulesyncRule.fromFile({
9653
9869
  relativeFilePath: filename,
9654
9870
  validate: true
9655
9871
  });
9656
9872
  return {
9657
- relativePathFromCwd: (0, import_node_path85.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, filename),
9873
+ relativePathFromCwd: (0, import_node_path87.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, filename),
9658
9874
  frontmatter: rule.getFrontmatter(),
9659
9875
  body: rule.getBody()
9660
9876
  };
@@ -9673,7 +9889,7 @@ async function putRule({
9673
9889
  relativePath: relativePathFromCwd,
9674
9890
  intendedRootDir: process.cwd()
9675
9891
  });
9676
- const filename = (0, import_node_path85.basename)(relativePathFromCwd);
9892
+ const filename = (0, import_node_path87.basename)(relativePathFromCwd);
9677
9893
  const estimatedSize = JSON.stringify(frontmatter).length + body.length;
9678
9894
  if (estimatedSize > maxRuleSizeBytes) {
9679
9895
  throw new Error(
@@ -9683,7 +9899,7 @@ async function putRule({
9683
9899
  try {
9684
9900
  const existingRules = await listRules();
9685
9901
  const isUpdate = existingRules.some(
9686
- (rule2) => rule2.relativePathFromCwd === (0, import_node_path85.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, filename)
9902
+ (rule2) => rule2.relativePathFromCwd === (0, import_node_path87.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, filename)
9687
9903
  );
9688
9904
  if (!isUpdate && existingRules.length >= maxRulesCount) {
9689
9905
  throw new Error(`Maximum number of rules (${maxRulesCount}) reached`);
@@ -9696,11 +9912,11 @@ async function putRule({
9696
9912
  body,
9697
9913
  validate: true
9698
9914
  });
9699
- const rulesDir = (0, import_node_path85.join)(process.cwd(), RULESYNC_RULES_RELATIVE_DIR_PATH);
9915
+ const rulesDir = (0, import_node_path87.join)(process.cwd(), RULESYNC_RULES_RELATIVE_DIR_PATH);
9700
9916
  await ensureDir(rulesDir);
9701
9917
  await writeFileContent(rule.getFilePath(), rule.getFileContent());
9702
9918
  return {
9703
- relativePathFromCwd: (0, import_node_path85.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, filename),
9919
+ relativePathFromCwd: (0, import_node_path87.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, filename),
9704
9920
  frontmatter: rule.getFrontmatter(),
9705
9921
  body: rule.getBody()
9706
9922
  };
@@ -9715,12 +9931,12 @@ async function deleteRule({ relativePathFromCwd }) {
9715
9931
  relativePath: relativePathFromCwd,
9716
9932
  intendedRootDir: process.cwd()
9717
9933
  });
9718
- const filename = (0, import_node_path85.basename)(relativePathFromCwd);
9719
- const fullPath = (0, import_node_path85.join)(process.cwd(), RULESYNC_RULES_RELATIVE_DIR_PATH, filename);
9934
+ const filename = (0, import_node_path87.basename)(relativePathFromCwd);
9935
+ const fullPath = (0, import_node_path87.join)(process.cwd(), RULESYNC_RULES_RELATIVE_DIR_PATH, filename);
9720
9936
  try {
9721
9937
  await removeFile(fullPath);
9722
9938
  return {
9723
- relativePathFromCwd: (0, import_node_path85.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, filename)
9939
+ relativePathFromCwd: (0, import_node_path87.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, filename)
9724
9940
  };
9725
9941
  } catch (error) {
9726
9942
  throw new Error(`Failed to delete rule file ${relativePathFromCwd}: ${formatError(error)}`, {
@@ -9729,23 +9945,23 @@ async function deleteRule({ relativePathFromCwd }) {
9729
9945
  }
9730
9946
  }
9731
9947
  var ruleToolSchemas = {
9732
- listRules: import_mini33.z.object({}),
9733
- getRule: import_mini33.z.object({
9734
- relativePathFromCwd: import_mini33.z.string()
9948
+ listRules: import_mini34.z.object({}),
9949
+ getRule: import_mini34.z.object({
9950
+ relativePathFromCwd: import_mini34.z.string()
9735
9951
  }),
9736
- putRule: import_mini33.z.object({
9737
- relativePathFromCwd: import_mini33.z.string(),
9952
+ putRule: import_mini34.z.object({
9953
+ relativePathFromCwd: import_mini34.z.string(),
9738
9954
  frontmatter: RulesyncRuleFrontmatterSchema,
9739
- body: import_mini33.z.string()
9955
+ body: import_mini34.z.string()
9740
9956
  }),
9741
- deleteRule: import_mini33.z.object({
9742
- relativePathFromCwd: import_mini33.z.string()
9957
+ deleteRule: import_mini34.z.object({
9958
+ relativePathFromCwd: import_mini34.z.string()
9743
9959
  })
9744
9960
  };
9745
9961
  var ruleTools = {
9746
9962
  listRules: {
9747
9963
  name: "listRules",
9748
- description: `List all rules from ${(0, import_node_path85.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, "*.md")} with their frontmatter.`,
9964
+ description: `List all rules from ${(0, import_node_path87.join)(RULESYNC_RULES_RELATIVE_DIR_PATH, "*.md")} with their frontmatter.`,
9749
9965
  parameters: ruleToolSchemas.listRules,
9750
9966
  execute: async () => {
9751
9967
  const rules = await listRules();
@@ -9787,12 +10003,12 @@ var ruleTools = {
9787
10003
  };
9788
10004
 
9789
10005
  // src/mcp/subagents.ts
9790
- var import_node_path86 = require("path");
9791
- var import_mini34 = require("zod/mini");
10006
+ var import_node_path88 = require("path");
10007
+ var import_mini35 = require("zod/mini");
9792
10008
  var maxSubagentSizeBytes = 1024 * 1024;
9793
10009
  var maxSubagentsCount = 1e3;
9794
10010
  async function listSubagents() {
9795
- const subagentsDir = (0, import_node_path86.join)(process.cwd(), RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH);
10011
+ const subagentsDir = (0, import_node_path88.join)(process.cwd(), RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH);
9796
10012
  try {
9797
10013
  const files = await listDirectoryFiles(subagentsDir);
9798
10014
  const mdFiles = files.filter((file) => file.endsWith(".md"));
@@ -9805,7 +10021,7 @@ async function listSubagents() {
9805
10021
  });
9806
10022
  const frontmatter = subagent.getFrontmatter();
9807
10023
  return {
9808
- relativePathFromCwd: (0, import_node_path86.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, file),
10024
+ relativePathFromCwd: (0, import_node_path88.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, file),
9809
10025
  frontmatter
9810
10026
  };
9811
10027
  } catch (error) {
@@ -9827,14 +10043,14 @@ async function getSubagent({ relativePathFromCwd }) {
9827
10043
  relativePath: relativePathFromCwd,
9828
10044
  intendedRootDir: process.cwd()
9829
10045
  });
9830
- const filename = (0, import_node_path86.basename)(relativePathFromCwd);
10046
+ const filename = (0, import_node_path88.basename)(relativePathFromCwd);
9831
10047
  try {
9832
10048
  const subagent = await RulesyncSubagent.fromFile({
9833
10049
  relativeFilePath: filename,
9834
10050
  validate: true
9835
10051
  });
9836
10052
  return {
9837
- relativePathFromCwd: (0, import_node_path86.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename),
10053
+ relativePathFromCwd: (0, import_node_path88.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename),
9838
10054
  frontmatter: subagent.getFrontmatter(),
9839
10055
  body: subagent.getBody()
9840
10056
  };
@@ -9853,7 +10069,7 @@ async function putSubagent({
9853
10069
  relativePath: relativePathFromCwd,
9854
10070
  intendedRootDir: process.cwd()
9855
10071
  });
9856
- const filename = (0, import_node_path86.basename)(relativePathFromCwd);
10072
+ const filename = (0, import_node_path88.basename)(relativePathFromCwd);
9857
10073
  const estimatedSize = JSON.stringify(frontmatter).length + body.length;
9858
10074
  if (estimatedSize > maxSubagentSizeBytes) {
9859
10075
  throw new Error(
@@ -9863,7 +10079,7 @@ async function putSubagent({
9863
10079
  try {
9864
10080
  const existingSubagents = await listSubagents();
9865
10081
  const isUpdate = existingSubagents.some(
9866
- (subagent2) => subagent2.relativePathFromCwd === (0, import_node_path86.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename)
10082
+ (subagent2) => subagent2.relativePathFromCwd === (0, import_node_path88.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename)
9867
10083
  );
9868
10084
  if (!isUpdate && existingSubagents.length >= maxSubagentsCount) {
9869
10085
  throw new Error(`Maximum number of subagents (${maxSubagentsCount}) reached`);
@@ -9876,11 +10092,11 @@ async function putSubagent({
9876
10092
  body,
9877
10093
  validate: true
9878
10094
  });
9879
- const subagentsDir = (0, import_node_path86.join)(process.cwd(), RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH);
10095
+ const subagentsDir = (0, import_node_path88.join)(process.cwd(), RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH);
9880
10096
  await ensureDir(subagentsDir);
9881
10097
  await writeFileContent(subagent.getFilePath(), subagent.getFileContent());
9882
10098
  return {
9883
- relativePathFromCwd: (0, import_node_path86.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename),
10099
+ relativePathFromCwd: (0, import_node_path88.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename),
9884
10100
  frontmatter: subagent.getFrontmatter(),
9885
10101
  body: subagent.getBody()
9886
10102
  };
@@ -9895,12 +10111,12 @@ async function deleteSubagent({ relativePathFromCwd }) {
9895
10111
  relativePath: relativePathFromCwd,
9896
10112
  intendedRootDir: process.cwd()
9897
10113
  });
9898
- const filename = (0, import_node_path86.basename)(relativePathFromCwd);
9899
- const fullPath = (0, import_node_path86.join)(process.cwd(), RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename);
10114
+ const filename = (0, import_node_path88.basename)(relativePathFromCwd);
10115
+ const fullPath = (0, import_node_path88.join)(process.cwd(), RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename);
9900
10116
  try {
9901
10117
  await removeFile(fullPath);
9902
10118
  return {
9903
- relativePathFromCwd: (0, import_node_path86.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename)
10119
+ relativePathFromCwd: (0, import_node_path88.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, filename)
9904
10120
  };
9905
10121
  } catch (error) {
9906
10122
  throw new Error(
@@ -9912,23 +10128,23 @@ async function deleteSubagent({ relativePathFromCwd }) {
9912
10128
  }
9913
10129
  }
9914
10130
  var subagentToolSchemas = {
9915
- listSubagents: import_mini34.z.object({}),
9916
- getSubagent: import_mini34.z.object({
9917
- relativePathFromCwd: import_mini34.z.string()
10131
+ listSubagents: import_mini35.z.object({}),
10132
+ getSubagent: import_mini35.z.object({
10133
+ relativePathFromCwd: import_mini35.z.string()
9918
10134
  }),
9919
- putSubagent: import_mini34.z.object({
9920
- relativePathFromCwd: import_mini34.z.string(),
10135
+ putSubagent: import_mini35.z.object({
10136
+ relativePathFromCwd: import_mini35.z.string(),
9921
10137
  frontmatter: RulesyncSubagentFrontmatterSchema,
9922
- body: import_mini34.z.string()
10138
+ body: import_mini35.z.string()
9923
10139
  }),
9924
- deleteSubagent: import_mini34.z.object({
9925
- relativePathFromCwd: import_mini34.z.string()
10140
+ deleteSubagent: import_mini35.z.object({
10141
+ relativePathFromCwd: import_mini35.z.string()
9926
10142
  })
9927
10143
  };
9928
10144
  var subagentTools = {
9929
10145
  listSubagents: {
9930
10146
  name: "listSubagents",
9931
- description: `List all subagents from ${(0, import_node_path86.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, "*.md")} with their frontmatter.`,
10147
+ description: `List all subagents from ${(0, import_node_path88.join)(RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, "*.md")} with their frontmatter.`,
9932
10148
  parameters: subagentToolSchemas.listSubagents,
9933
10149
  execute: async () => {
9934
10150
  const subagents = await listSubagents();
@@ -10002,7 +10218,7 @@ async function mcpCommand({ version }) {
10002
10218
  }
10003
10219
 
10004
10220
  // src/cli/index.ts
10005
- var getVersion = () => "3.27.1";
10221
+ var getVersion = () => "3.28.0";
10006
10222
  var main = async () => {
10007
10223
  const program = new import_commander.Command();
10008
10224
  const version = getVersion();