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/README.md +1 -0
- package/dist/index.cjs +723 -507
- package/dist/index.js +716 -500
- package/package.json +1 -1
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
|
|
510
|
-
var
|
|
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/
|
|
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/
|
|
978
|
-
var
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
1172
|
-
var
|
|
1173
|
-
var CopilotCommandFrontmatterSchema =
|
|
1174
|
-
mode:
|
|
1175
|
-
description:
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
1490
|
+
var import_node_path13 = require("path");
|
|
1366
1491
|
var import_smol_toml = require("smol-toml");
|
|
1367
|
-
var
|
|
1368
|
-
var GeminiCliCommandFrontmatterSchema =
|
|
1369
|
-
description:
|
|
1370
|
-
prompt:
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
1488
|
-
var
|
|
1489
|
-
var RooCommandFrontmatterSchema =
|
|
1490
|
-
description:
|
|
1491
|
-
"argument-hint": (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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 =
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
2077
|
+
var import_mini12 = require("zod/mini");
|
|
1927
2078
|
|
|
1928
2079
|
// src/features/ignore/amazonqcli-ignore.ts
|
|
1929
|
-
var
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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 =
|
|
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
|
|
2938
|
+
var import_mini17 = require("zod/mini");
|
|
2788
2939
|
|
|
2789
2940
|
// src/features/mcp/amazonqcli-mcp.ts
|
|
2790
|
-
var
|
|
2941
|
+
var import_node_path29 = require("path");
|
|
2791
2942
|
|
|
2792
2943
|
// src/features/mcp/rulesync-mcp.ts
|
|
2793
|
-
var
|
|
2944
|
+
var import_node_path28 = require("path");
|
|
2794
2945
|
var import_object = require("es-toolkit/object");
|
|
2795
|
-
var
|
|
2946
|
+
var import_mini14 = require("zod/mini");
|
|
2796
2947
|
|
|
2797
2948
|
// src/types/mcp.ts
|
|
2798
|
-
var
|
|
2799
|
-
var McpServerSchema =
|
|
2800
|
-
type:
|
|
2801
|
-
command:
|
|
2802
|
-
args:
|
|
2803
|
-
url:
|
|
2804
|
-
httpUrl:
|
|
2805
|
-
env:
|
|
2806
|
-
disabled:
|
|
2807
|
-
networkTimeout:
|
|
2808
|
-
timeout:
|
|
2809
|
-
trust:
|
|
2810
|
-
cwd:
|
|
2811
|
-
transport:
|
|
2812
|
-
alwaysAllow:
|
|
2813
|
-
tools:
|
|
2814
|
-
kiroAutoApprove:
|
|
2815
|
-
kiroAutoBlock:
|
|
2816
|
-
headers:
|
|
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 =
|
|
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 =
|
|
2822
|
-
|
|
2823
|
-
targets:
|
|
2824
|
-
description:
|
|
2825
|
-
exposed:
|
|
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
|
-
|
|
2828
|
-
targets:
|
|
2829
|
-
description:
|
|
2830
|
-
exposed:
|
|
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 =
|
|
2834
|
-
mcpServers:
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
3187
|
+
var import_node_path31 = require("path");
|
|
3037
3188
|
|
|
3038
3189
|
// src/features/mcp/modular-mcp.ts
|
|
3039
|
-
var
|
|
3040
|
-
var
|
|
3041
|
-
var ModularMcpServerSchema =
|
|
3042
|
-
description:
|
|
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 =
|
|
3046
|
-
mcpServers:
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
3632
|
-
var
|
|
3633
|
-
var OpencodeMcpLocalServerSchema =
|
|
3634
|
-
type:
|
|
3635
|
-
command:
|
|
3636
|
-
environment:
|
|
3637
|
-
enabled:
|
|
3638
|
-
cwd:
|
|
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 =
|
|
3641
|
-
type:
|
|
3642
|
-
url:
|
|
3643
|
-
headers:
|
|
3644
|
-
enabled:
|
|
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 =
|
|
3797
|
+
var OpencodeMcpServerSchema = import_mini16.z.union([
|
|
3647
3798
|
OpencodeMcpLocalServerSchema,
|
|
3648
3799
|
OpencodeMcpRemoteServerSchema
|
|
3649
3800
|
]);
|
|
3650
|
-
var OpencodeConfigSchema =
|
|
3651
|
-
$schema:
|
|
3652
|
-
mcp:
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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 =
|
|
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
|
|
4293
|
+
var import_node_path81 = require("path");
|
|
4143
4294
|
var import_fast_xml_parser = require("fast-xml-parser");
|
|
4144
|
-
var
|
|
4295
|
+
var import_mini30 = require("zod/mini");
|
|
4145
4296
|
|
|
4146
4297
|
// src/features/skills/codexcli-skill.ts
|
|
4147
|
-
var
|
|
4298
|
+
var import_node_path42 = require("path");
|
|
4148
4299
|
|
|
4149
4300
|
// src/features/skills/simulated-skill.ts
|
|
4150
|
-
var
|
|
4151
|
-
var
|
|
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
|
|
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(
|
|
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 =
|
|
4215
|
-
const resolvedFull = (0,
|
|
4216
|
-
const resolvedBase = (0,
|
|
4217
|
-
const rel = (0,
|
|
4218
|
-
if (rel.startsWith("..") ||
|
|
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
|
|
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,
|
|
4252
|
-
const glob = (0,
|
|
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,
|
|
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,
|
|
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 =
|
|
4326
|
-
name:
|
|
4327
|
-
description:
|
|
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,
|
|
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,
|
|
4424
|
-
const skillFilePath = (0,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
4560
|
-
var
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
4638
|
-
var
|
|
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
|
|
4642
|
-
var
|
|
4643
|
-
var RulesyncSkillFrontmatterSchemaInternal =
|
|
4644
|
-
name:
|
|
4645
|
-
description:
|
|
4646
|
-
targets:
|
|
4647
|
-
claudecode:
|
|
4648
|
-
|
|
4649
|
-
"allowed-tools":
|
|
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,
|
|
4718
|
-
const skillFilePath = (0,
|
|
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 =
|
|
4749
|
-
name:
|
|
4750
|
-
description:
|
|
4751
|
-
"allowed-tools":
|
|
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,
|
|
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,
|
|
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,
|
|
4876
|
-
const skillFilePath = (0,
|
|
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
|
|
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,
|
|
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 =
|
|
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,
|
|
5064
|
-
const dirPaths = await findFilesByGlobs((0,
|
|
5065
|
-
const dirNames = dirPaths.map((path3) => (0,
|
|
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,
|
|
5105
|
-
const dirPaths = await findFilesByGlobs((0,
|
|
5106
|
-
const dirNames = dirPaths.map((path3) => (0,
|
|
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,
|
|
5125
|
-
const dirPaths = await findFilesByGlobs((0,
|
|
5126
|
-
const dirNames = dirPaths.map((path3) => (0,
|
|
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
|
|
5322
|
+
var import_node_path52 = require("path");
|
|
5172
5323
|
|
|
5173
5324
|
// src/features/subagents/simulated-subagent.ts
|
|
5174
|
-
var
|
|
5175
|
-
var
|
|
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 =
|
|
5211
|
-
name:
|
|
5212
|
-
description:
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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/
|
|
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
|
-
|
|
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:
|
|
5459
|
-
description:
|
|
5460
|
-
claudecode:
|
|
5461
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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 =
|
|
5536
|
-
name:
|
|
5537
|
-
description:
|
|
5538
|
-
model:
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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 =
|
|
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,
|
|
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,
|
|
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,
|
|
5932
|
-
const subagents = await Promise.all(paths.map((path3) => fromFile((0,
|
|
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
|
|
6111
|
+
var import_node_path63 = require("path");
|
|
5961
6112
|
|
|
5962
6113
|
// src/features/rules/tool-rule.ts
|
|
5963
|
-
var
|
|
6114
|
+
var import_node_path62 = require("path");
|
|
5964
6115
|
|
|
5965
6116
|
// src/features/rules/rulesync-rule.ts
|
|
5966
|
-
var
|
|
5967
|
-
var
|
|
5968
|
-
var RulesyncRuleFrontmatterSchema =
|
|
5969
|
-
root:
|
|
5970
|
-
targets:
|
|
5971
|
-
description:
|
|
5972
|
-
globs:
|
|
5973
|
-
agentsmd:
|
|
5974
|
-
|
|
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:
|
|
6127
|
+
subprojectPath: import_mini26.z.optional(import_mini26.z.string())
|
|
5977
6128
|
})
|
|
5978
6129
|
),
|
|
5979
|
-
cursor:
|
|
5980
|
-
|
|
5981
|
-
alwaysApply:
|
|
5982
|
-
description:
|
|
5983
|
-
globs:
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
6258
|
-
const fileContent = await readFileContent((0,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
6415
|
-
const fileContent = await readFileContent((0,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
6532
|
-
const fileContent = await readFileContent((0,
|
|
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
|
|
6575
|
-
var
|
|
6576
|
-
var ClineRuleFrontmatterSchema =
|
|
6577
|
-
description:
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
6681
|
-
const fileContent = await readFileContent((0,
|
|
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
|
|
6724
|
-
var
|
|
6725
|
-
var CopilotRuleFrontmatterSchema =
|
|
6726
|
-
description:
|
|
6727
|
-
applyTo:
|
|
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,
|
|
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,
|
|
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,
|
|
7032
|
+
const relativePath = isRoot ? (0, import_node_path71.join)(
|
|
6827
7033
|
this.getSettablePaths().root.relativeDirPath,
|
|
6828
7034
|
this.getSettablePaths().root.relativeFilePath
|
|
6829
|
-
) : (0,
|
|
6830
|
-
const fileContent = await readFileContent((0,
|
|
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,
|
|
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,
|
|
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
|
|
6894
|
-
var
|
|
6895
|
-
var CursorRuleFrontmatterSchema =
|
|
6896
|
-
description:
|
|
6897
|
-
globs:
|
|
6898
|
-
alwaysApply:
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
7130
|
-
const fileContent = await readFileContent((0,
|
|
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
|
|
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,
|
|
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,
|
|
7192
|
-
const fileContent = await readFileContent((0,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
7307
|
-
const fileContent = await readFileContent((0,
|
|
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
|
|
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,
|
|
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,
|
|
7367
|
-
const fileContent = await readFileContent((0,
|
|
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
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
7501
|
-
const fileContent = await readFileContent((0,
|
|
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
|
|
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,
|
|
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,
|
|
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 =
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
8942
|
+
var import_node_path82 = require("path");
|
|
8727
8943
|
var gitignoreCommand = async () => {
|
|
8728
|
-
const gitignorePath = (0,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
9212
|
-
var
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
9318
|
-
const fullPath = (0,
|
|
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,
|
|
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:
|
|
9332
|
-
getCommand:
|
|
9333
|
-
relativePathFromCwd:
|
|
9547
|
+
listCommands: import_mini31.z.object({}),
|
|
9548
|
+
getCommand: import_mini31.z.object({
|
|
9549
|
+
relativePathFromCwd: import_mini31.z.string()
|
|
9334
9550
|
}),
|
|
9335
|
-
putCommand:
|
|
9336
|
-
relativePathFromCwd:
|
|
9551
|
+
putCommand: import_mini31.z.object({
|
|
9552
|
+
relativePathFromCwd: import_mini31.z.string(),
|
|
9337
9553
|
frontmatter: RulesyncCommandFrontmatterSchema,
|
|
9338
|
-
body:
|
|
9554
|
+
body: import_mini31.z.string()
|
|
9339
9555
|
}),
|
|
9340
|
-
deleteCommand:
|
|
9341
|
-
relativePathFromCwd:
|
|
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,
|
|
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
|
|
9390
|
-
var
|
|
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,
|
|
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,
|
|
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,
|
|
9429
|
-
const legacyIgnorePath = (0,
|
|
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:
|
|
9448
|
-
putIgnoreFile:
|
|
9449
|
-
content:
|
|
9663
|
+
getIgnoreFile: import_mini32.z.object({}),
|
|
9664
|
+
putIgnoreFile: import_mini32.z.object({
|
|
9665
|
+
content: import_mini32.z.string()
|
|
9450
9666
|
}),
|
|
9451
|
-
deleteIgnoreFile:
|
|
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
|
|
9485
|
-
var
|
|
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,
|
|
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,
|
|
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,
|
|
9752
|
+
await ensureDir((0, import_node_path86.join)(baseDir, relativeDirPath));
|
|
9537
9753
|
await writeFileContent(fullPath, content);
|
|
9538
|
-
const relativePathFromCwd = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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:
|
|
9576
|
-
putMcpFile:
|
|
9577
|
-
content:
|
|
9791
|
+
getMcpFile: import_mini33.z.object({}),
|
|
9792
|
+
putMcpFile: import_mini33.z.object({
|
|
9793
|
+
content: import_mini33.z.string()
|
|
9578
9794
|
}),
|
|
9579
|
-
deleteMcpFile:
|
|
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
|
|
9613
|
-
var
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
9719
|
-
const fullPath = (0,
|
|
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,
|
|
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:
|
|
9733
|
-
getRule:
|
|
9734
|
-
relativePathFromCwd:
|
|
9948
|
+
listRules: import_mini34.z.object({}),
|
|
9949
|
+
getRule: import_mini34.z.object({
|
|
9950
|
+
relativePathFromCwd: import_mini34.z.string()
|
|
9735
9951
|
}),
|
|
9736
|
-
putRule:
|
|
9737
|
-
relativePathFromCwd:
|
|
9952
|
+
putRule: import_mini34.z.object({
|
|
9953
|
+
relativePathFromCwd: import_mini34.z.string(),
|
|
9738
9954
|
frontmatter: RulesyncRuleFrontmatterSchema,
|
|
9739
|
-
body:
|
|
9955
|
+
body: import_mini34.z.string()
|
|
9740
9956
|
}),
|
|
9741
|
-
deleteRule:
|
|
9742
|
-
relativePathFromCwd:
|
|
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,
|
|
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
|
|
9791
|
-
var
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
9899
|
-
const fullPath = (0,
|
|
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,
|
|
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:
|
|
9916
|
-
getSubagent:
|
|
9917
|
-
relativePathFromCwd:
|
|
10131
|
+
listSubagents: import_mini35.z.object({}),
|
|
10132
|
+
getSubagent: import_mini35.z.object({
|
|
10133
|
+
relativePathFromCwd: import_mini35.z.string()
|
|
9918
10134
|
}),
|
|
9919
|
-
putSubagent:
|
|
9920
|
-
relativePathFromCwd:
|
|
10135
|
+
putSubagent: import_mini35.z.object({
|
|
10136
|
+
relativePathFromCwd: import_mini35.z.string(),
|
|
9921
10137
|
frontmatter: RulesyncSubagentFrontmatterSchema,
|
|
9922
|
-
body:
|
|
10138
|
+
body: import_mini35.z.string()
|
|
9923
10139
|
}),
|
|
9924
|
-
deleteSubagent:
|
|
9925
|
-
relativePathFromCwd:
|
|
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,
|
|
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.
|
|
10221
|
+
var getVersion = () => "3.28.0";
|
|
10006
10222
|
var main = async () => {
|
|
10007
10223
|
const program = new import_commander.Command();
|
|
10008
10224
|
const version = getVersion();
|