rulesync 8.6.0 → 8.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -357,7 +357,13 @@ var SourceEntrySchema = import_mini3.z.object({
357
357
  (0, import_mini3.refine)((v) => !(0, import_node_path3.isAbsolute)(v), "path must not be absolute"),
358
358
  (0, import_mini3.refine)((v) => !hasControlCharacters(v), "path must not contain control characters")
359
359
  )
360
- )
360
+ ),
361
+ // gh-mode-only fields. Ignored by --mode rulesync. Defaults applied at the
362
+ // gh install site (`agent` defaults to "github-copilot", `scope` to "project").
363
+ agent: (0, import_mini3.optional)(
364
+ import_mini3.z.enum(["github-copilot", "claude-code", "cursor", "codex", "gemini", "antigravity"])
365
+ ),
366
+ scope: (0, import_mini3.optional)(import_mini3.z.enum(["project", "user"]))
361
367
  });
362
368
  var ConfigParamsSchema = import_mini3.z.object({
363
369
  baseDirs: import_mini3.z.array(import_mini3.z.string()),
@@ -3607,7 +3613,7 @@ var CommandsProcessor = class extends FeatureProcessor {
3607
3613
  };
3608
3614
 
3609
3615
  // src/features/hooks/hooks-processor.ts
3610
- var import_mini20 = require("zod/mini");
3616
+ var import_mini19 = require("zod/mini");
3611
3617
 
3612
3618
  // src/types/hooks.ts
3613
3619
  var import_mini16 = require("zod/mini");
@@ -3911,22 +3917,34 @@ function canonicalToToolHooks({
3911
3917
  `matcher "${matcherKey}" on "${eventName}" hook will be ignored \u2014 this event does not support matchers`
3912
3918
  );
3913
3919
  }
3914
- const hooks = defs.map((def) => {
3920
+ const hooks = [];
3921
+ for (const def of defs) {
3922
+ const hookType = def.type ?? "command";
3923
+ if (converterConfig.supportedHookTypes && !converterConfig.supportedHookTypes.has(hookType)) {
3924
+ continue;
3925
+ }
3915
3926
  const commandText = def.command;
3916
3927
  const trimmedCommand = typeof commandText === "string" ? commandText.trimStart() : void 0;
3917
- const shouldPrefix = typeof trimmedCommand === "string" && !trimmedCommand.startsWith("$") && (!converterConfig.prefixDotRelativeCommandsOnly || trimmedCommand.startsWith("."));
3928
+ const shouldPrefix = converterConfig.projectDirVar !== "" && typeof trimmedCommand === "string" && !trimmedCommand.startsWith("$") && (!converterConfig.prefixDotRelativeCommandsOnly || trimmedCommand.startsWith("."));
3918
3929
  const command = shouldPrefix && typeof trimmedCommand === "string" ? `${converterConfig.projectDirVar}/${trimmedCommand.replace(/^\.\//, "")}` : def.command;
3919
- return {
3920
- type: def.type ?? "command",
3930
+ hooks.push({
3931
+ type: hookType,
3921
3932
  ...command !== void 0 && command !== null && { command },
3922
3933
  ...def.timeout !== void 0 && def.timeout !== null && { timeout: def.timeout },
3923
- ...def.prompt !== void 0 && def.prompt !== null && { prompt: def.prompt }
3924
- };
3925
- });
3934
+ ...def.prompt !== void 0 && def.prompt !== null && { prompt: def.prompt },
3935
+ ...converterConfig.passthroughFields?.includes("name") && def.name !== void 0 && def.name !== null && { name: def.name },
3936
+ ...converterConfig.passthroughFields?.includes("description") && def.description !== void 0 && def.description !== null && { description: def.description }
3937
+ });
3938
+ }
3939
+ if (hooks.length === 0) {
3940
+ continue;
3941
+ }
3926
3942
  const includeMatcher = matcherKey && !isNoMatcherEvent;
3927
3943
  entries.push(includeMatcher ? { matcher: matcherKey, hooks } : { hooks });
3928
3944
  }
3929
- result[toolEventName] = entries;
3945
+ if (entries.length > 0) {
3946
+ result[toolEventName] = entries;
3947
+ }
3930
3948
  }
3931
3949
  return result;
3932
3950
  }
@@ -3947,7 +3965,7 @@ function toolHooksToCanonical({
3947
3965
  const hookDefs = rawEntry.hooks ?? [];
3948
3966
  for (const h of hookDefs) {
3949
3967
  const cmd = typeof h.command === "string" ? h.command : void 0;
3950
- const command = typeof cmd === "string" && cmd.includes(`${converterConfig.projectDirVar}/`) ? cmd.replace(
3968
+ const command = converterConfig.projectDirVar !== "" && typeof cmd === "string" && cmd.includes(`${converterConfig.projectDirVar}/`) ? cmd.replace(
3951
3969
  new RegExp(
3952
3970
  `^${converterConfig.projectDirVar.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\/?`
3953
3971
  ),
@@ -3961,6 +3979,8 @@ function toolHooksToCanonical({
3961
3979
  ...command !== void 0 && command !== null && { command },
3962
3980
  ...timeout !== void 0 && timeout !== null && { timeout },
3963
3981
  ...prompt !== void 0 && prompt !== null && { prompt },
3982
+ ...converterConfig.passthroughFields?.includes("name") && typeof h.name === "string" && { name: h.name },
3983
+ ...converterConfig.passthroughFields?.includes("description") && typeof h.description === "string" && { description: h.description },
3964
3984
  ...rawEntry.matcher !== void 0 && rawEntry.matcher !== null && rawEntry.matcher !== "" && { matcher: rawEntry.matcher }
3965
3985
  });
3966
3986
  }
@@ -4059,6 +4079,9 @@ var ToolHooks = class extends ToolFile {
4059
4079
  static forDeletion(_params) {
4060
4080
  throw new Error("Please implement this method in the subclass.");
4061
4081
  }
4082
+ static async getAuxiliaryFiles(_params) {
4083
+ return [];
4084
+ }
4062
4085
  };
4063
4086
 
4064
4087
  // src/features/hooks/claudecode-hooks.ts
@@ -4180,89 +4203,28 @@ var ClaudecodeHooks = class _ClaudecodeHooks extends ToolHooks {
4180
4203
  // src/features/hooks/codexcli-hooks.ts
4181
4204
  var import_node_path26 = require("path");
4182
4205
  var smolToml2 = __toESM(require("smol-toml"), 1);
4183
- var import_mini17 = require("zod/mini");
4184
- function canonicalToCodexcliHooks(config) {
4185
- const codexSupported = new Set(CODEXCLI_HOOK_EVENTS);
4186
- const sharedHooks = {};
4187
- for (const [event, defs] of Object.entries(config.hooks)) {
4188
- if (codexSupported.has(event)) {
4189
- sharedHooks[event] = defs;
4190
- }
4191
- }
4192
- const effectiveHooks = {
4193
- ...sharedHooks,
4194
- ...config.codexcli?.hooks
4195
- };
4196
- const codex = {};
4197
- for (const [eventName, definitions] of Object.entries(effectiveHooks)) {
4198
- const codexEventName = CANONICAL_TO_CODEXCLI_EVENT_NAMES[eventName] ?? eventName;
4199
- const byMatcher = /* @__PURE__ */ new Map();
4200
- for (const def of definitions) {
4201
- const key = def.matcher ?? "";
4202
- const list = byMatcher.get(key);
4203
- if (list) list.push(def);
4204
- else byMatcher.set(key, [def]);
4205
- }
4206
- const entries = [];
4207
- for (const [matcherKey, defs] of byMatcher) {
4208
- const commandDefs = defs.filter((def) => !def.type || def.type === "command");
4209
- if (commandDefs.length === 0) continue;
4210
- const hooks = commandDefs.map((def) => ({
4211
- type: "command",
4212
- ...def.command !== void 0 && def.command !== null && { command: def.command },
4213
- ...def.timeout !== void 0 && def.timeout !== null && { timeout: def.timeout }
4214
- }));
4215
- entries.push(matcherKey ? { matcher: matcherKey, hooks } : { hooks });
4216
- }
4217
- if (entries.length > 0) {
4218
- codex[codexEventName] = entries;
4219
- }
4220
- }
4221
- return codex;
4222
- }
4223
- var CodexHookEntrySchema = import_mini17.z.looseObject({
4224
- type: import_mini17.z.optional(import_mini17.z.string()),
4225
- command: import_mini17.z.optional(import_mini17.z.string()),
4226
- timeout: import_mini17.z.optional(import_mini17.z.number())
4227
- });
4228
- var CodexMatcherEntrySchema = import_mini17.z.looseObject({
4229
- matcher: import_mini17.z.optional(import_mini17.z.string()),
4230
- hooks: import_mini17.z.optional(import_mini17.z.array(CodexHookEntrySchema))
4231
- });
4232
- function codexcliHooksToCanonical(codexHooks) {
4233
- if (codexHooks === null || codexHooks === void 0 || typeof codexHooks !== "object") {
4234
- return {};
4235
- }
4236
- const canonical = {};
4237
- for (const [codexEventName, matcherEntries] of Object.entries(codexHooks)) {
4238
- const eventName = CODEXCLI_TO_CANONICAL_EVENT_NAMES[codexEventName] ?? codexEventName;
4239
- if (!Array.isArray(matcherEntries)) continue;
4240
- const defs = [];
4241
- for (const rawEntry of matcherEntries) {
4242
- const parseResult = CodexMatcherEntrySchema.safeParse(rawEntry);
4243
- if (!parseResult.success) continue;
4244
- const entry = parseResult.data;
4245
- const hooks = entry.hooks ?? [];
4246
- for (const h of hooks) {
4247
- const hookType = h.type === "command" || h.type === "prompt" ? h.type : "command";
4248
- defs.push({
4249
- type: hookType,
4250
- ...h.command !== void 0 && h.command !== null && { command: h.command },
4251
- ...h.timeout !== void 0 && h.timeout !== null && { timeout: h.timeout },
4252
- ...entry.matcher !== void 0 && entry.matcher !== null && entry.matcher !== "" && { matcher: entry.matcher }
4253
- });
4254
- }
4255
- }
4256
- if (defs.length > 0) {
4257
- canonical[eventName] = defs;
4258
- }
4259
- }
4260
- return canonical;
4261
- }
4206
+ var CODEXCLI_CONVERTER_CONFIG = {
4207
+ supportedEvents: CODEXCLI_HOOK_EVENTS,
4208
+ canonicalToToolEventNames: CANONICAL_TO_CODEXCLI_EVENT_NAMES,
4209
+ toolToCanonicalEventNames: CODEXCLI_TO_CANONICAL_EVENT_NAMES,
4210
+ projectDirVar: "",
4211
+ supportedHookTypes: /* @__PURE__ */ new Set(["command"]),
4212
+ passthroughFields: ["name", "description"]
4213
+ };
4262
4214
  async function buildCodexConfigTomlContent({ baseDir }) {
4263
4215
  const configPath = (0, import_node_path26.join)(baseDir, ".codex", "config.toml");
4264
4216
  const existingContent = await readFileContentOrNull(configPath) ?? smolToml2.stringify({});
4265
- const configToml = smolToml2.parse(existingContent);
4217
+ let configToml;
4218
+ try {
4219
+ configToml = smolToml2.parse(existingContent);
4220
+ } catch (error) {
4221
+ throw new Error(
4222
+ `Failed to parse existing Codex CLI config at ${configPath}: ${formatError(error)}`,
4223
+ {
4224
+ cause: error
4225
+ }
4226
+ );
4227
+ }
4266
4228
  if (typeof configToml.features !== "object" || configToml.features === null) {
4267
4229
  configToml.features = {};
4268
4230
  }
@@ -4317,7 +4279,11 @@ var CodexcliHooks = class _CodexcliHooks extends ToolHooks {
4317
4279
  }) {
4318
4280
  const paths = _CodexcliHooks.getSettablePaths({ global });
4319
4281
  const config = rulesyncHooks.getJson();
4320
- const codexHooks = canonicalToCodexcliHooks(config);
4282
+ const codexHooks = canonicalToToolHooks({
4283
+ config,
4284
+ toolOverrideHooks: config.codexcli?.hooks,
4285
+ converterConfig: CODEXCLI_CONVERTER_CONFIG
4286
+ });
4321
4287
  const fileContent = JSON.stringify({ hooks: codexHooks }, null, 2);
4322
4288
  return new _CodexcliHooks({
4323
4289
  baseDir,
@@ -4339,7 +4305,10 @@ var CodexcliHooks = class _CodexcliHooks extends ToolHooks {
4339
4305
  }
4340
4306
  );
4341
4307
  }
4342
- const hooks = codexcliHooksToCanonical(parsed.hooks);
4308
+ const hooks = toolHooksToCanonical({
4309
+ hooks: parsed.hooks,
4310
+ converterConfig: CODEXCLI_CONVERTER_CONFIG
4311
+ });
4343
4312
  return this.toRulesyncHooksDefault({
4344
4313
  fileContent: JSON.stringify({ version: 1, hooks }, null, 2)
4345
4314
  });
@@ -4360,16 +4329,21 @@ var CodexcliHooks = class _CodexcliHooks extends ToolHooks {
4360
4329
  validate: false
4361
4330
  });
4362
4331
  }
4332
+ static async getAuxiliaryFiles({
4333
+ baseDir = process.cwd()
4334
+ } = {}) {
4335
+ return [await CodexcliConfigToml.fromBaseDir({ baseDir })];
4336
+ }
4363
4337
  };
4364
4338
 
4365
4339
  // src/features/hooks/copilot-hooks.ts
4366
4340
  var import_node_path27 = require("path");
4367
- var import_mini18 = require("zod/mini");
4368
- var CopilotHookEntrySchema = import_mini18.z.looseObject({
4369
- type: import_mini18.z.string(),
4370
- bash: import_mini18.z.optional(import_mini18.z.string()),
4371
- powershell: import_mini18.z.optional(import_mini18.z.string()),
4372
- timeoutSec: import_mini18.z.optional(import_mini18.z.number())
4341
+ var import_mini17 = require("zod/mini");
4342
+ var CopilotHookEntrySchema = import_mini17.z.looseObject({
4343
+ type: import_mini17.z.string(),
4344
+ bash: import_mini17.z.optional(import_mini17.z.string()),
4345
+ powershell: import_mini17.z.optional(import_mini17.z.string()),
4346
+ timeoutSec: import_mini17.z.optional(import_mini17.z.number())
4373
4347
  });
4374
4348
  function canonicalToCopilotHooks(config) {
4375
4349
  const canonicalSchemaKeys = Object.keys(HookDefinitionSchema.shape);
@@ -4900,7 +4874,7 @@ var FactorydroidHooks = class _FactorydroidHooks extends ToolHooks {
4900
4874
 
4901
4875
  // src/features/hooks/geminicli-hooks.ts
4902
4876
  var import_node_path31 = require("path");
4903
- var import_mini19 = require("zod/mini");
4877
+ var import_mini18 = require("zod/mini");
4904
4878
  function canonicalToGeminicliHooks(config) {
4905
4879
  const geminiSupported = new Set(GEMINICLI_HOOK_EVENTS);
4906
4880
  const sharedHooks = {};
@@ -4944,16 +4918,16 @@ function canonicalToGeminicliHooks(config) {
4944
4918
  }
4945
4919
  return gemini;
4946
4920
  }
4947
- var GeminiHookEntrySchema = import_mini19.z.looseObject({
4948
- type: import_mini19.z.optional(import_mini19.z.string()),
4949
- command: import_mini19.z.optional(import_mini19.z.string()),
4950
- timeout: import_mini19.z.optional(import_mini19.z.number()),
4951
- name: import_mini19.z.optional(import_mini19.z.string()),
4952
- description: import_mini19.z.optional(import_mini19.z.string())
4921
+ var GeminiHookEntrySchema = import_mini18.z.looseObject({
4922
+ type: import_mini18.z.optional(import_mini18.z.string()),
4923
+ command: import_mini18.z.optional(import_mini18.z.string()),
4924
+ timeout: import_mini18.z.optional(import_mini18.z.number()),
4925
+ name: import_mini18.z.optional(import_mini18.z.string()),
4926
+ description: import_mini18.z.optional(import_mini18.z.string())
4953
4927
  });
4954
- var GeminiMatcherEntrySchema = import_mini19.z.looseObject({
4955
- matcher: import_mini19.z.optional(import_mini19.z.string()),
4956
- hooks: import_mini19.z.optional(import_mini19.z.array(GeminiHookEntrySchema))
4928
+ var GeminiMatcherEntrySchema = import_mini18.z.looseObject({
4929
+ matcher: import_mini18.z.optional(import_mini18.z.string()),
4930
+ hooks: import_mini18.z.optional(import_mini18.z.array(GeminiHookEntrySchema))
4957
4931
  });
4958
4932
  function geminiHooksToCanonical(geminiHooks) {
4959
4933
  if (geminiHooks === null || geminiHooks === void 0 || typeof geminiHooks !== "object") {
@@ -5337,7 +5311,7 @@ var hooksProcessorToolTargetTuple = [
5337
5311
  "geminicli",
5338
5312
  "deepagents"
5339
5313
  ];
5340
- var HooksProcessorToolTargetSchema = import_mini20.z.enum(hooksProcessorToolTargetTuple);
5314
+ var HooksProcessorToolTargetSchema = import_mini19.z.enum(hooksProcessorToolTargetTuple);
5341
5315
  var toolHooksFactories = /* @__PURE__ */ new Map([
5342
5316
  [
5343
5317
  "cursor",
@@ -5596,8 +5570,12 @@ var HooksProcessor = class extends FeatureProcessor {
5596
5570
  global: this.global
5597
5571
  });
5598
5572
  const result = [toolHooks];
5599
- if (this.toolTarget === "codexcli") {
5600
- result.push(await CodexcliConfigToml.fromBaseDir({ baseDir: this.baseDir }));
5573
+ const auxiliaryFiles = await factory.class.getAuxiliaryFiles?.({
5574
+ baseDir: this.baseDir,
5575
+ global: this.global
5576
+ });
5577
+ if (auxiliaryFiles && auxiliaryFiles.length > 0) {
5578
+ result.push(...auxiliaryFiles);
5601
5579
  }
5602
5580
  return result;
5603
5581
  }
@@ -5617,7 +5595,7 @@ var HooksProcessor = class extends FeatureProcessor {
5617
5595
  };
5618
5596
 
5619
5597
  // src/features/ignore/ignore-processor.ts
5620
- var import_mini22 = require("zod/mini");
5598
+ var import_mini21 = require("zod/mini");
5621
5599
 
5622
5600
  // src/features/ignore/augmentcode-ignore.ts
5623
5601
  var import_node_path35 = require("path");
@@ -5796,12 +5774,12 @@ var AugmentcodeIgnore = class _AugmentcodeIgnore extends ToolIgnore {
5796
5774
  // src/features/ignore/claudecode-ignore.ts
5797
5775
  var import_node_path36 = require("path");
5798
5776
  var import_es_toolkit2 = require("es-toolkit");
5799
- var import_mini21 = require("zod/mini");
5777
+ var import_mini20 = require("zod/mini");
5800
5778
  var SHARED_SETTINGS_FILE = "settings.json";
5801
5779
  var LOCAL_SETTINGS_FILE = "settings.local.json";
5802
5780
  var DEFAULT_FILE_MODE = "shared";
5803
- var ClaudecodeIgnoreOptionsSchema = import_mini21.z.looseObject({
5804
- fileMode: import_mini21.z.optional(import_mini21.z.enum(["shared", "local"]))
5781
+ var ClaudecodeIgnoreOptionsSchema = import_mini20.z.looseObject({
5782
+ fileMode: import_mini20.z.optional(import_mini20.z.enum(["shared", "local"]))
5805
5783
  });
5806
5784
  var resolveFileMode = (options) => {
5807
5785
  if (!options) return DEFAULT_FILE_MODE;
@@ -6645,7 +6623,7 @@ var ignoreProcessorToolTargets = [
6645
6623
  "windsurf",
6646
6624
  "zed"
6647
6625
  ];
6648
- var IgnoreProcessorToolTargetSchema = import_mini22.z.enum(ignoreProcessorToolTargets);
6626
+ var IgnoreProcessorToolTargetSchema = import_mini21.z.enum(ignoreProcessorToolTargets);
6649
6627
  var toolIgnoreFactories = /* @__PURE__ */ new Map([
6650
6628
  ["augmentcode", { class: AugmentcodeIgnore }],
6651
6629
  ["claudecode", { class: ClaudecodeIgnore }],
@@ -6788,7 +6766,7 @@ var IgnoreProcessor = class extends FeatureProcessor {
6788
6766
  };
6789
6767
 
6790
6768
  // src/features/mcp/mcp-processor.ts
6791
- var import_mini27 = require("zod/mini");
6769
+ var import_mini26 = require("zod/mini");
6792
6770
 
6793
6771
  // src/features/mcp/claudecode-mcp.ts
6794
6772
  var import_node_path49 = require("path");
@@ -6796,47 +6774,47 @@ var import_node_path49 = require("path");
6796
6774
  // src/features/mcp/rulesync-mcp.ts
6797
6775
  var import_node_path48 = require("path");
6798
6776
  var import_object = require("es-toolkit/object");
6799
- var import_mini24 = require("zod/mini");
6777
+ var import_mini23 = require("zod/mini");
6800
6778
 
6801
6779
  // src/types/mcp.ts
6802
- var import_mini23 = require("zod/mini");
6803
- var McpServerSchema = import_mini23.z.looseObject({
6804
- type: import_mini23.z.optional(import_mini23.z.enum(["local", "stdio", "sse", "http"])),
6805
- command: import_mini23.z.optional(import_mini23.z.union([import_mini23.z.string(), import_mini23.z.array(import_mini23.z.string())])),
6806
- args: import_mini23.z.optional(import_mini23.z.array(import_mini23.z.string())),
6807
- url: import_mini23.z.optional(import_mini23.z.string()),
6808
- httpUrl: import_mini23.z.optional(import_mini23.z.string()),
6809
- env: import_mini23.z.optional(import_mini23.z.record(import_mini23.z.string(), import_mini23.z.string())),
6810
- disabled: import_mini23.z.optional(import_mini23.z.boolean()),
6811
- networkTimeout: import_mini23.z.optional(import_mini23.z.number()),
6812
- timeout: import_mini23.z.optional(import_mini23.z.number()),
6813
- trust: import_mini23.z.optional(import_mini23.z.boolean()),
6814
- cwd: import_mini23.z.optional(import_mini23.z.string()),
6815
- transport: import_mini23.z.optional(import_mini23.z.enum(["local", "stdio", "sse", "http"])),
6816
- alwaysAllow: import_mini23.z.optional(import_mini23.z.array(import_mini23.z.string())),
6817
- tools: import_mini23.z.optional(import_mini23.z.array(import_mini23.z.string())),
6818
- kiroAutoApprove: import_mini23.z.optional(import_mini23.z.array(import_mini23.z.string())),
6819
- kiroAutoBlock: import_mini23.z.optional(import_mini23.z.array(import_mini23.z.string())),
6820
- headers: import_mini23.z.optional(import_mini23.z.record(import_mini23.z.string(), import_mini23.z.string())),
6821
- enabledTools: import_mini23.z.optional(import_mini23.z.array(import_mini23.z.string())),
6822
- disabledTools: import_mini23.z.optional(import_mini23.z.array(import_mini23.z.string()))
6780
+ var import_mini22 = require("zod/mini");
6781
+ var McpServerSchema = import_mini22.z.looseObject({
6782
+ type: import_mini22.z.optional(import_mini22.z.enum(["local", "stdio", "sse", "http"])),
6783
+ command: import_mini22.z.optional(import_mini22.z.union([import_mini22.z.string(), import_mini22.z.array(import_mini22.z.string())])),
6784
+ args: import_mini22.z.optional(import_mini22.z.array(import_mini22.z.string())),
6785
+ url: import_mini22.z.optional(import_mini22.z.string()),
6786
+ httpUrl: import_mini22.z.optional(import_mini22.z.string()),
6787
+ env: import_mini22.z.optional(import_mini22.z.record(import_mini22.z.string(), import_mini22.z.string())),
6788
+ disabled: import_mini22.z.optional(import_mini22.z.boolean()),
6789
+ networkTimeout: import_mini22.z.optional(import_mini22.z.number()),
6790
+ timeout: import_mini22.z.optional(import_mini22.z.number()),
6791
+ trust: import_mini22.z.optional(import_mini22.z.boolean()),
6792
+ cwd: import_mini22.z.optional(import_mini22.z.string()),
6793
+ transport: import_mini22.z.optional(import_mini22.z.enum(["local", "stdio", "sse", "http"])),
6794
+ alwaysAllow: import_mini22.z.optional(import_mini22.z.array(import_mini22.z.string())),
6795
+ tools: import_mini22.z.optional(import_mini22.z.array(import_mini22.z.string())),
6796
+ kiroAutoApprove: import_mini22.z.optional(import_mini22.z.array(import_mini22.z.string())),
6797
+ kiroAutoBlock: import_mini22.z.optional(import_mini22.z.array(import_mini22.z.string())),
6798
+ headers: import_mini22.z.optional(import_mini22.z.record(import_mini22.z.string(), import_mini22.z.string())),
6799
+ enabledTools: import_mini22.z.optional(import_mini22.z.array(import_mini22.z.string())),
6800
+ disabledTools: import_mini22.z.optional(import_mini22.z.array(import_mini22.z.string()))
6823
6801
  });
6824
- var McpServersSchema = import_mini23.z.record(import_mini23.z.string(), McpServerSchema);
6802
+ var McpServersSchema = import_mini22.z.record(import_mini22.z.string(), McpServerSchema);
6825
6803
  function isMcpServers(value) {
6826
6804
  return value !== void 0 && value !== null && typeof value === "object" && !Array.isArray(value);
6827
6805
  }
6828
6806
 
6829
6807
  // src/features/mcp/rulesync-mcp.ts
6830
- var RulesyncMcpServerSchema = import_mini24.z.extend(McpServerSchema, {
6831
- targets: import_mini24.z.optional(RulesyncTargetsSchema),
6832
- description: import_mini24.z.optional(import_mini24.z.string()),
6833
- exposed: import_mini24.z.optional(import_mini24.z.boolean())
6808
+ var RulesyncMcpServerSchema = import_mini23.z.extend(McpServerSchema, {
6809
+ targets: import_mini23.z.optional(RulesyncTargetsSchema),
6810
+ description: import_mini23.z.optional(import_mini23.z.string()),
6811
+ exposed: import_mini23.z.optional(import_mini23.z.boolean())
6834
6812
  });
6835
- var RulesyncMcpConfigSchema = import_mini24.z.object({
6836
- mcpServers: import_mini24.z.record(import_mini24.z.string(), RulesyncMcpServerSchema)
6813
+ var RulesyncMcpConfigSchema = import_mini23.z.object({
6814
+ mcpServers: import_mini23.z.record(import_mini23.z.string(), RulesyncMcpServerSchema)
6837
6815
  });
6838
- var RulesyncMcpFileSchema = import_mini24.z.looseObject({
6839
- $schema: import_mini24.z.optional(import_mini24.z.string()),
6816
+ var RulesyncMcpFileSchema = import_mini23.z.looseObject({
6817
+ $schema: import_mini23.z.optional(import_mini23.z.string()),
6840
6818
  ...RulesyncMcpConfigSchema.shape
6841
6819
  });
6842
6820
  var RulesyncMcp = class _RulesyncMcp extends RulesyncFile {
@@ -8039,25 +8017,25 @@ var JunieMcp = class _JunieMcp extends ToolMcp {
8039
8017
  // src/features/mcp/kilo-mcp.ts
8040
8018
  var import_node_path59 = require("path");
8041
8019
  var import_jsonc_parser3 = require("jsonc-parser");
8042
- var import_mini25 = require("zod/mini");
8043
- var KiloMcpLocalServerSchema = import_mini25.z.object({
8044
- type: import_mini25.z.literal("local"),
8045
- command: import_mini25.z.array(import_mini25.z.string()),
8046
- environment: import_mini25.z.optional(import_mini25.z.record(import_mini25.z.string(), import_mini25.z.string())),
8047
- enabled: import_mini25.z._default(import_mini25.z.boolean(), true),
8048
- cwd: import_mini25.z.optional(import_mini25.z.string())
8020
+ var import_mini24 = require("zod/mini");
8021
+ var KiloMcpLocalServerSchema = import_mini24.z.object({
8022
+ type: import_mini24.z.literal("local"),
8023
+ command: import_mini24.z.array(import_mini24.z.string()),
8024
+ environment: import_mini24.z.optional(import_mini24.z.record(import_mini24.z.string(), import_mini24.z.string())),
8025
+ enabled: import_mini24.z._default(import_mini24.z.boolean(), true),
8026
+ cwd: import_mini24.z.optional(import_mini24.z.string())
8049
8027
  });
8050
- var KiloMcpRemoteServerSchema = import_mini25.z.object({
8051
- type: import_mini25.z.literal("remote"),
8052
- url: import_mini25.z.string(),
8053
- headers: import_mini25.z.optional(import_mini25.z.record(import_mini25.z.string(), import_mini25.z.string())),
8054
- enabled: import_mini25.z._default(import_mini25.z.boolean(), true)
8028
+ var KiloMcpRemoteServerSchema = import_mini24.z.object({
8029
+ type: import_mini24.z.literal("remote"),
8030
+ url: import_mini24.z.string(),
8031
+ headers: import_mini24.z.optional(import_mini24.z.record(import_mini24.z.string(), import_mini24.z.string())),
8032
+ enabled: import_mini24.z._default(import_mini24.z.boolean(), true)
8055
8033
  });
8056
- var KiloMcpServerSchema = import_mini25.z.union([KiloMcpLocalServerSchema, KiloMcpRemoteServerSchema]);
8057
- var KiloConfigSchema = import_mini25.z.looseObject({
8058
- $schema: import_mini25.z.optional(import_mini25.z.string()),
8059
- mcp: import_mini25.z.optional(import_mini25.z.record(import_mini25.z.string(), KiloMcpServerSchema)),
8060
- tools: import_mini25.z.optional(import_mini25.z.record(import_mini25.z.string(), import_mini25.z.boolean()))
8034
+ var KiloMcpServerSchema = import_mini24.z.union([KiloMcpLocalServerSchema, KiloMcpRemoteServerSchema]);
8035
+ var KiloConfigSchema = import_mini24.z.looseObject({
8036
+ $schema: import_mini24.z.optional(import_mini24.z.string()),
8037
+ mcp: import_mini24.z.optional(import_mini24.z.record(import_mini24.z.string(), KiloMcpServerSchema)),
8038
+ tools: import_mini24.z.optional(import_mini24.z.record(import_mini24.z.string(), import_mini24.z.boolean()))
8061
8039
  });
8062
8040
  function convertFromKiloFormat(kiloMcp, tools) {
8063
8041
  return Object.fromEntries(
@@ -8354,28 +8332,28 @@ var KiroMcp = class _KiroMcp extends ToolMcp {
8354
8332
  // src/features/mcp/opencode-mcp.ts
8355
8333
  var import_node_path61 = require("path");
8356
8334
  var import_jsonc_parser4 = require("jsonc-parser");
8357
- var import_mini26 = require("zod/mini");
8358
- var OpencodeMcpLocalServerSchema = import_mini26.z.object({
8359
- type: import_mini26.z.literal("local"),
8360
- command: import_mini26.z.array(import_mini26.z.string()),
8361
- environment: import_mini26.z.optional(import_mini26.z.record(import_mini26.z.string(), import_mini26.z.string())),
8362
- enabled: import_mini26.z._default(import_mini26.z.boolean(), true),
8363
- cwd: import_mini26.z.optional(import_mini26.z.string())
8335
+ var import_mini25 = require("zod/mini");
8336
+ var OpencodeMcpLocalServerSchema = import_mini25.z.object({
8337
+ type: import_mini25.z.literal("local"),
8338
+ command: import_mini25.z.array(import_mini25.z.string()),
8339
+ environment: import_mini25.z.optional(import_mini25.z.record(import_mini25.z.string(), import_mini25.z.string())),
8340
+ enabled: import_mini25.z._default(import_mini25.z.boolean(), true),
8341
+ cwd: import_mini25.z.optional(import_mini25.z.string())
8364
8342
  });
8365
- var OpencodeMcpRemoteServerSchema = import_mini26.z.object({
8366
- type: import_mini26.z.literal("remote"),
8367
- url: import_mini26.z.string(),
8368
- headers: import_mini26.z.optional(import_mini26.z.record(import_mini26.z.string(), import_mini26.z.string())),
8369
- enabled: import_mini26.z._default(import_mini26.z.boolean(), true)
8343
+ var OpencodeMcpRemoteServerSchema = import_mini25.z.object({
8344
+ type: import_mini25.z.literal("remote"),
8345
+ url: import_mini25.z.string(),
8346
+ headers: import_mini25.z.optional(import_mini25.z.record(import_mini25.z.string(), import_mini25.z.string())),
8347
+ enabled: import_mini25.z._default(import_mini25.z.boolean(), true)
8370
8348
  });
8371
- var OpencodeMcpServerSchema = import_mini26.z.union([
8349
+ var OpencodeMcpServerSchema = import_mini25.z.union([
8372
8350
  OpencodeMcpLocalServerSchema,
8373
8351
  OpencodeMcpRemoteServerSchema
8374
8352
  ]);
8375
- var OpencodeConfigSchema = import_mini26.z.looseObject({
8376
- $schema: import_mini26.z.optional(import_mini26.z.string()),
8377
- mcp: import_mini26.z.optional(import_mini26.z.record(import_mini26.z.string(), OpencodeMcpServerSchema)),
8378
- tools: import_mini26.z.optional(import_mini26.z.record(import_mini26.z.string(), import_mini26.z.boolean()))
8353
+ var OpencodeConfigSchema = import_mini25.z.looseObject({
8354
+ $schema: import_mini25.z.optional(import_mini25.z.string()),
8355
+ mcp: import_mini25.z.optional(import_mini25.z.record(import_mini25.z.string(), OpencodeMcpServerSchema)),
8356
+ tools: import_mini25.z.optional(import_mini25.z.record(import_mini25.z.string(), import_mini25.z.boolean()))
8379
8357
  });
8380
8358
  function convertFromOpencodeFormat(opencodeMcp, tools) {
8381
8359
  return Object.fromEntries(
@@ -8846,7 +8824,7 @@ var mcpProcessorToolTargetTuple = [
8846
8824
  "roo",
8847
8825
  "rovodev"
8848
8826
  ];
8849
- var McpProcessorToolTargetSchema = import_mini27.z.enum(mcpProcessorToolTargetTuple);
8827
+ var McpProcessorToolTargetSchema = import_mini26.z.enum(mcpProcessorToolTargetTuple);
8850
8828
  var toolMcpFactories = /* @__PURE__ */ new Map([
8851
8829
  [
8852
8830
  "claudecode",
@@ -9185,7 +9163,7 @@ var McpProcessor = class extends FeatureProcessor {
9185
9163
  };
9186
9164
 
9187
9165
  // src/features/permissions/permissions-processor.ts
9188
- var import_mini32 = require("zod/mini");
9166
+ var import_mini31 = require("zod/mini");
9189
9167
 
9190
9168
  // src/features/permissions/claudecode-permissions.ts
9191
9169
  var import_node_path65 = require("path");
@@ -9195,14 +9173,14 @@ var import_es_toolkit4 = require("es-toolkit");
9195
9173
  var import_node_path64 = require("path");
9196
9174
 
9197
9175
  // src/types/permissions.ts
9198
- var import_mini28 = require("zod/mini");
9199
- var PermissionActionSchema = import_mini28.z.enum(["allow", "ask", "deny"]);
9200
- var PermissionRulesSchema = import_mini28.z.record(import_mini28.z.string(), PermissionActionSchema);
9201
- var PermissionsConfigSchema = import_mini28.z.looseObject({
9202
- permission: import_mini28.z.record(import_mini28.z.string(), PermissionRulesSchema)
9176
+ var import_mini27 = require("zod/mini");
9177
+ var PermissionActionSchema = import_mini27.z.enum(["allow", "ask", "deny"]);
9178
+ var PermissionRulesSchema = import_mini27.z.record(import_mini27.z.string(), PermissionActionSchema);
9179
+ var PermissionsConfigSchema = import_mini27.z.looseObject({
9180
+ permission: import_mini27.z.record(import_mini27.z.string(), PermissionRulesSchema)
9203
9181
  });
9204
- var RulesyncPermissionsFileSchema = import_mini28.z.looseObject({
9205
- $schema: import_mini28.z.optional(import_mini28.z.string()),
9182
+ var RulesyncPermissionsFileSchema = import_mini27.z.looseObject({
9183
+ $schema: import_mini27.z.optional(import_mini27.z.string()),
9206
9184
  ...PermissionsConfigSchema.shape
9207
9185
  });
9208
9186
 
@@ -9772,7 +9750,7 @@ function mapBashActionToDecision(action) {
9772
9750
  // src/features/permissions/geminicli-permissions.ts
9773
9751
  var import_node_path67 = require("path");
9774
9752
  var smolToml5 = __toESM(require("smol-toml"), 1);
9775
- var import_mini29 = require("zod/mini");
9753
+ var import_mini28 = require("zod/mini");
9776
9754
 
9777
9755
  // src/utils/logger.ts
9778
9756
  var BaseLogger = class {
@@ -10168,14 +10146,14 @@ function regexToGlobPattern(regex) {
10168
10146
  }
10169
10147
  return glob;
10170
10148
  }
10171
- var GeminicliPolicyRuleSchema = import_mini29.z.looseObject({
10172
- toolName: import_mini29.z.string(),
10173
- decision: import_mini29.z.optional(import_mini29.z.unknown()),
10174
- commandPrefix: import_mini29.z.optional(import_mini29.z.string()),
10175
- argsPattern: import_mini29.z.optional(import_mini29.z.string())
10149
+ var GeminicliPolicyRuleSchema = import_mini28.z.looseObject({
10150
+ toolName: import_mini28.z.string(),
10151
+ decision: import_mini28.z.optional(import_mini28.z.unknown()),
10152
+ commandPrefix: import_mini28.z.optional(import_mini28.z.string()),
10153
+ argsPattern: import_mini28.z.optional(import_mini28.z.string())
10176
10154
  });
10177
- var GeminicliPolicyFileSchema = import_mini29.z.looseObject({
10178
- rule: import_mini29.z.optional(import_mini29.z.array(import_mini29.z.looseObject({})))
10155
+ var GeminicliPolicyFileSchema = import_mini28.z.looseObject({
10156
+ rule: import_mini28.z.optional(import_mini28.z.array(import_mini28.z.looseObject({})))
10179
10157
  });
10180
10158
  function extractRules(parsed, logger) {
10181
10159
  const parsedFile = GeminicliPolicyFileSchema.safeParse(parsed);
@@ -10211,12 +10189,12 @@ function extractPattern(rule) {
10211
10189
 
10212
10190
  // src/features/permissions/kiro-permissions.ts
10213
10191
  var import_node_path68 = require("path");
10214
- var import_mini30 = require("zod/mini");
10215
- var KiroAgentSchema = import_mini30.z.looseObject({
10216
- allowedTools: import_mini30.z.optional(import_mini30.z.array(import_mini30.z.string())),
10217
- toolsSettings: import_mini30.z.optional(import_mini30.z.record(import_mini30.z.string(), import_mini30.z.unknown()))
10192
+ var import_mini29 = require("zod/mini");
10193
+ var KiroAgentSchema = import_mini29.z.looseObject({
10194
+ allowedTools: import_mini29.z.optional(import_mini29.z.array(import_mini29.z.string())),
10195
+ toolsSettings: import_mini29.z.optional(import_mini29.z.record(import_mini29.z.string(), import_mini29.z.unknown()))
10218
10196
  });
10219
- var UnknownRecordSchema = import_mini30.z.record(import_mini30.z.string(), import_mini30.z.unknown());
10197
+ var UnknownRecordSchema = import_mini29.z.record(import_mini29.z.string(), import_mini29.z.unknown());
10220
10198
  var KiroPermissions = class _KiroPermissions extends ToolPermissions {
10221
10199
  static getSettablePaths(_options = {}) {
10222
10200
  return {
@@ -10369,8 +10347,12 @@ function buildKiroPermissionsFromRulesync({
10369
10347
  );
10370
10348
  continue;
10371
10349
  }
10372
- if (action === "allow")
10373
- nextAllowedTools.add(category === "webfetch" ? "web_fetch" : "web_search");
10350
+ const toolName = category === "webfetch" ? "web_fetch" : "web_search";
10351
+ if (action === "allow") {
10352
+ nextAllowedTools.add(toolName);
10353
+ } else {
10354
+ nextAllowedTools.delete(toolName);
10355
+ }
10374
10356
  } else {
10375
10357
  logger?.warn(`Kiro permissions do not support category: ${category}. Skipping.`);
10376
10358
  }
@@ -10396,13 +10378,13 @@ function asStringArray(value) {
10396
10378
  // src/features/permissions/opencode-permissions.ts
10397
10379
  var import_node_path69 = require("path");
10398
10380
  var import_jsonc_parser5 = require("jsonc-parser");
10399
- var import_mini31 = require("zod/mini");
10400
- var OpencodePermissionSchema = import_mini31.z.union([
10401
- import_mini31.z.enum(["allow", "ask", "deny"]),
10402
- import_mini31.z.record(import_mini31.z.string(), import_mini31.z.enum(["allow", "ask", "deny"]))
10381
+ var import_mini30 = require("zod/mini");
10382
+ var OpencodePermissionSchema = import_mini30.z.union([
10383
+ import_mini30.z.enum(["allow", "ask", "deny"]),
10384
+ import_mini30.z.record(import_mini30.z.string(), import_mini30.z.enum(["allow", "ask", "deny"]))
10403
10385
  ]);
10404
- var OpencodePermissionsConfigSchema = import_mini31.z.looseObject({
10405
- permission: import_mini31.z.optional(import_mini31.z.record(import_mini31.z.string(), OpencodePermissionSchema))
10386
+ var OpencodePermissionsConfigSchema = import_mini30.z.looseObject({
10387
+ permission: import_mini30.z.optional(import_mini30.z.record(import_mini30.z.string(), OpencodePermissionSchema))
10406
10388
  });
10407
10389
  var OpencodePermissions = class _OpencodePermissions extends ToolPermissions {
10408
10390
  json;
@@ -10533,7 +10515,7 @@ var permissionsProcessorToolTargetTuple = [
10533
10515
  "kiro",
10534
10516
  "opencode"
10535
10517
  ];
10536
- var PermissionsProcessorToolTargetSchema = import_mini32.z.enum(permissionsProcessorToolTargetTuple);
10518
+ var PermissionsProcessorToolTargetSchema = import_mini31.z.enum(permissionsProcessorToolTargetTuple);
10537
10519
  var toolPermissionsFactories = /* @__PURE__ */ new Map([
10538
10520
  [
10539
10521
  "claudecode",
@@ -10698,7 +10680,7 @@ var PermissionsProcessor = class extends FeatureProcessor {
10698
10680
  // src/features/rules/rules-processor.ts
10699
10681
  var import_node_path140 = require("path");
10700
10682
  var import_toon = require("@toon-format/toon");
10701
- var import_mini72 = require("zod/mini");
10683
+ var import_mini71 = require("zod/mini");
10702
10684
 
10703
10685
  // src/constants/general.ts
10704
10686
  var SKILL_FILE_NAME = "SKILL.md";
@@ -10708,7 +10690,7 @@ var import_node_path73 = require("path");
10708
10690
 
10709
10691
  // src/features/skills/simulated-skill.ts
10710
10692
  var import_node_path72 = require("path");
10711
- var import_mini33 = require("zod/mini");
10693
+ var import_mini32 = require("zod/mini");
10712
10694
 
10713
10695
  // src/features/skills/tool-skill.ts
10714
10696
  var import_node_path71 = require("path");
@@ -10945,9 +10927,9 @@ var ToolSkill = class extends AiDir {
10945
10927
  };
10946
10928
 
10947
10929
  // src/features/skills/simulated-skill.ts
10948
- var SimulatedSkillFrontmatterSchema = import_mini33.z.looseObject({
10949
- name: import_mini33.z.string(),
10950
- description: import_mini33.z.string()
10930
+ var SimulatedSkillFrontmatterSchema = import_mini32.z.looseObject({
10931
+ name: import_mini32.z.string(),
10932
+ description: import_mini32.z.string()
10951
10933
  });
10952
10934
  var SimulatedSkill = class extends ToolSkill {
10953
10935
  frontmatter;
@@ -11174,49 +11156,49 @@ var FactorydroidSkill = class _FactorydroidSkill extends SimulatedSkill {
11174
11156
 
11175
11157
  // src/features/skills/rovodev-skill.ts
11176
11158
  var import_node_path76 = require("path");
11177
- var import_mini35 = require("zod/mini");
11159
+ var import_mini34 = require("zod/mini");
11178
11160
 
11179
11161
  // src/features/skills/rulesync-skill.ts
11180
11162
  var import_node_path75 = require("path");
11181
- var import_mini34 = require("zod/mini");
11182
- var RulesyncSkillFrontmatterSchemaInternal = import_mini34.z.looseObject({
11183
- name: import_mini34.z.string(),
11184
- description: import_mini34.z.string(),
11185
- targets: import_mini34.z._default(RulesyncTargetsSchema, ["*"]),
11186
- claudecode: import_mini34.z.optional(
11187
- import_mini34.z.looseObject({
11188
- "allowed-tools": import_mini34.z.optional(import_mini34.z.array(import_mini34.z.string())),
11189
- model: import_mini34.z.optional(import_mini34.z.string()),
11190
- "disable-model-invocation": import_mini34.z.optional(import_mini34.z.boolean())
11163
+ var import_mini33 = require("zod/mini");
11164
+ var RulesyncSkillFrontmatterSchemaInternal = import_mini33.z.looseObject({
11165
+ name: import_mini33.z.string(),
11166
+ description: import_mini33.z.string(),
11167
+ targets: import_mini33.z._default(RulesyncTargetsSchema, ["*"]),
11168
+ claudecode: import_mini33.z.optional(
11169
+ import_mini33.z.looseObject({
11170
+ "allowed-tools": import_mini33.z.optional(import_mini33.z.array(import_mini33.z.string())),
11171
+ model: import_mini33.z.optional(import_mini33.z.string()),
11172
+ "disable-model-invocation": import_mini33.z.optional(import_mini33.z.boolean())
11191
11173
  })
11192
11174
  ),
11193
- codexcli: import_mini34.z.optional(
11194
- import_mini34.z.looseObject({
11195
- "short-description": import_mini34.z.optional(import_mini34.z.string())
11175
+ codexcli: import_mini33.z.optional(
11176
+ import_mini33.z.looseObject({
11177
+ "short-description": import_mini33.z.optional(import_mini33.z.string())
11196
11178
  })
11197
11179
  ),
11198
- opencode: import_mini34.z.optional(
11199
- import_mini34.z.looseObject({
11200
- "allowed-tools": import_mini34.z.optional(import_mini34.z.array(import_mini34.z.string()))
11180
+ opencode: import_mini33.z.optional(
11181
+ import_mini33.z.looseObject({
11182
+ "allowed-tools": import_mini33.z.optional(import_mini33.z.array(import_mini33.z.string()))
11201
11183
  })
11202
11184
  ),
11203
- kilo: import_mini34.z.optional(
11204
- import_mini34.z.looseObject({
11205
- "allowed-tools": import_mini34.z.optional(import_mini34.z.array(import_mini34.z.string()))
11185
+ kilo: import_mini33.z.optional(
11186
+ import_mini33.z.looseObject({
11187
+ "allowed-tools": import_mini33.z.optional(import_mini33.z.array(import_mini33.z.string()))
11206
11188
  })
11207
11189
  ),
11208
- deepagents: import_mini34.z.optional(
11209
- import_mini34.z.looseObject({
11210
- "allowed-tools": import_mini34.z.optional(import_mini34.z.array(import_mini34.z.string()))
11190
+ deepagents: import_mini33.z.optional(
11191
+ import_mini33.z.looseObject({
11192
+ "allowed-tools": import_mini33.z.optional(import_mini33.z.array(import_mini33.z.string()))
11211
11193
  })
11212
11194
  ),
11213
- copilot: import_mini34.z.optional(
11214
- import_mini34.z.looseObject({
11215
- license: import_mini34.z.optional(import_mini34.z.string())
11195
+ copilot: import_mini33.z.optional(
11196
+ import_mini33.z.looseObject({
11197
+ license: import_mini33.z.optional(import_mini33.z.string())
11216
11198
  })
11217
11199
  ),
11218
- cline: import_mini34.z.optional(import_mini34.z.looseObject({})),
11219
- roo: import_mini34.z.optional(import_mini34.z.looseObject({}))
11200
+ cline: import_mini33.z.optional(import_mini33.z.looseObject({})),
11201
+ roo: import_mini33.z.optional(import_mini33.z.looseObject({}))
11220
11202
  });
11221
11203
  var RulesyncSkillFrontmatterSchema = RulesyncSkillFrontmatterSchemaInternal;
11222
11204
  var RulesyncSkill = class _RulesyncSkill extends AiDir {
@@ -11313,9 +11295,9 @@ var RulesyncSkill = class _RulesyncSkill extends AiDir {
11313
11295
  };
11314
11296
 
11315
11297
  // src/features/skills/rovodev-skill.ts
11316
- var RovodevSkillFrontmatterSchema = import_mini35.z.looseObject({
11317
- name: import_mini35.z.string(),
11318
- description: import_mini35.z.string()
11298
+ var RovodevSkillFrontmatterSchema = import_mini34.z.looseObject({
11299
+ name: import_mini34.z.string(),
11300
+ description: import_mini34.z.string()
11319
11301
  });
11320
11302
  var RovodevSkill = class _RovodevSkill extends ToolSkill {
11321
11303
  constructor({
@@ -11487,7 +11469,7 @@ var RovodevSkill = class _RovodevSkill extends ToolSkill {
11487
11469
 
11488
11470
  // src/features/skills/skills-processor.ts
11489
11471
  var import_node_path95 = require("path");
11490
- var import_mini52 = require("zod/mini");
11472
+ var import_mini51 = require("zod/mini");
11491
11473
 
11492
11474
  // src/types/dir-feature-processor.ts
11493
11475
  var import_node_path77 = require("path");
@@ -11626,10 +11608,10 @@ var DirFeatureProcessor = class {
11626
11608
 
11627
11609
  // src/features/skills/agentsskills-skill.ts
11628
11610
  var import_node_path78 = require("path");
11629
- var import_mini36 = require("zod/mini");
11630
- var AgentsSkillsSkillFrontmatterSchema = import_mini36.z.looseObject({
11631
- name: import_mini36.z.string(),
11632
- description: import_mini36.z.string()
11611
+ var import_mini35 = require("zod/mini");
11612
+ var AgentsSkillsSkillFrontmatterSchema = import_mini35.z.looseObject({
11613
+ name: import_mini35.z.string(),
11614
+ description: import_mini35.z.string()
11633
11615
  });
11634
11616
  var AgentsSkillsSkill = class _AgentsSkillsSkill extends ToolSkill {
11635
11617
  constructor({
@@ -11784,10 +11766,10 @@ var AgentsSkillsSkill = class _AgentsSkillsSkill extends ToolSkill {
11784
11766
 
11785
11767
  // src/features/skills/antigravity-skill.ts
11786
11768
  var import_node_path79 = require("path");
11787
- var import_mini37 = require("zod/mini");
11788
- var AntigravitySkillFrontmatterSchema = import_mini37.z.looseObject({
11789
- name: import_mini37.z.string(),
11790
- description: import_mini37.z.string()
11769
+ var import_mini36 = require("zod/mini");
11770
+ var AntigravitySkillFrontmatterSchema = import_mini36.z.looseObject({
11771
+ name: import_mini36.z.string(),
11772
+ description: import_mini36.z.string()
11791
11773
  });
11792
11774
  var AntigravitySkill = class _AntigravitySkill extends ToolSkill {
11793
11775
  constructor({
@@ -11945,13 +11927,13 @@ var AntigravitySkill = class _AntigravitySkill extends ToolSkill {
11945
11927
 
11946
11928
  // src/features/skills/claudecode-skill.ts
11947
11929
  var import_node_path80 = require("path");
11948
- var import_mini38 = require("zod/mini");
11949
- var ClaudecodeSkillFrontmatterSchema = import_mini38.z.looseObject({
11950
- name: import_mini38.z.string(),
11951
- description: import_mini38.z.string(),
11952
- "allowed-tools": import_mini38.z.optional(import_mini38.z.array(import_mini38.z.string())),
11953
- model: import_mini38.z.optional(import_mini38.z.string()),
11954
- "disable-model-invocation": import_mini38.z.optional(import_mini38.z.boolean())
11930
+ var import_mini37 = require("zod/mini");
11931
+ var ClaudecodeSkillFrontmatterSchema = import_mini37.z.looseObject({
11932
+ name: import_mini37.z.string(),
11933
+ description: import_mini37.z.string(),
11934
+ "allowed-tools": import_mini37.z.optional(import_mini37.z.array(import_mini37.z.string())),
11935
+ model: import_mini37.z.optional(import_mini37.z.string()),
11936
+ "disable-model-invocation": import_mini37.z.optional(import_mini37.z.boolean())
11955
11937
  });
11956
11938
  var ClaudecodeSkill = class _ClaudecodeSkill extends ToolSkill {
11957
11939
  constructor({
@@ -12121,10 +12103,10 @@ var ClaudecodeSkill = class _ClaudecodeSkill extends ToolSkill {
12121
12103
 
12122
12104
  // src/features/skills/cline-skill.ts
12123
12105
  var import_node_path81 = require("path");
12124
- var import_mini39 = require("zod/mini");
12125
- var ClineSkillFrontmatterSchema = import_mini39.z.looseObject({
12126
- name: import_mini39.z.string(),
12127
- description: import_mini39.z.string()
12106
+ var import_mini38 = require("zod/mini");
12107
+ var ClineSkillFrontmatterSchema = import_mini38.z.looseObject({
12108
+ name: import_mini38.z.string(),
12109
+ description: import_mini38.z.string()
12128
12110
  });
12129
12111
  var ClineSkill = class _ClineSkill extends ToolSkill {
12130
12112
  constructor({
@@ -12294,13 +12276,13 @@ var ClineSkill = class _ClineSkill extends ToolSkill {
12294
12276
 
12295
12277
  // src/features/skills/codexcli-skill.ts
12296
12278
  var import_node_path82 = require("path");
12297
- var import_mini40 = require("zod/mini");
12298
- var CodexCliSkillFrontmatterSchema = import_mini40.z.looseObject({
12299
- name: import_mini40.z.string(),
12300
- description: import_mini40.z.string(),
12301
- metadata: import_mini40.z.optional(
12302
- import_mini40.z.looseObject({
12303
- "short-description": import_mini40.z.optional(import_mini40.z.string())
12279
+ var import_mini39 = require("zod/mini");
12280
+ var CodexCliSkillFrontmatterSchema = import_mini39.z.looseObject({
12281
+ name: import_mini39.z.string(),
12282
+ description: import_mini39.z.string(),
12283
+ metadata: import_mini39.z.optional(
12284
+ import_mini39.z.looseObject({
12285
+ "short-description": import_mini39.z.optional(import_mini39.z.string())
12304
12286
  })
12305
12287
  )
12306
12288
  });
@@ -12465,11 +12447,11 @@ var CodexCliSkill = class _CodexCliSkill extends ToolSkill {
12465
12447
 
12466
12448
  // src/features/skills/copilot-skill.ts
12467
12449
  var import_node_path83 = require("path");
12468
- var import_mini41 = require("zod/mini");
12469
- var CopilotSkillFrontmatterSchema = import_mini41.z.looseObject({
12470
- name: import_mini41.z.string(),
12471
- description: import_mini41.z.string(),
12472
- license: import_mini41.z.optional(import_mini41.z.string())
12450
+ var import_mini40 = require("zod/mini");
12451
+ var CopilotSkillFrontmatterSchema = import_mini40.z.looseObject({
12452
+ name: import_mini40.z.string(),
12453
+ description: import_mini40.z.string(),
12454
+ license: import_mini40.z.optional(import_mini40.z.string())
12473
12455
  });
12474
12456
  var CopilotSkill = class _CopilotSkill extends ToolSkill {
12475
12457
  constructor({
@@ -12630,10 +12612,10 @@ var CopilotSkill = class _CopilotSkill extends ToolSkill {
12630
12612
 
12631
12613
  // src/features/skills/cursor-skill.ts
12632
12614
  var import_node_path84 = require("path");
12633
- var import_mini42 = require("zod/mini");
12634
- var CursorSkillFrontmatterSchema = import_mini42.z.looseObject({
12635
- name: import_mini42.z.string(),
12636
- description: import_mini42.z.string()
12615
+ var import_mini41 = require("zod/mini");
12616
+ var CursorSkillFrontmatterSchema = import_mini41.z.looseObject({
12617
+ name: import_mini41.z.string(),
12618
+ description: import_mini41.z.string()
12637
12619
  });
12638
12620
  var CursorSkill = class _CursorSkill extends ToolSkill {
12639
12621
  constructor({
@@ -12785,11 +12767,11 @@ var CursorSkill = class _CursorSkill extends ToolSkill {
12785
12767
 
12786
12768
  // src/features/skills/deepagents-skill.ts
12787
12769
  var import_node_path85 = require("path");
12788
- var import_mini43 = require("zod/mini");
12789
- var DeepagentsSkillFrontmatterSchema = import_mini43.z.looseObject({
12790
- name: import_mini43.z.string(),
12791
- description: import_mini43.z.string(),
12792
- "allowed-tools": import_mini43.z.optional(import_mini43.z.array(import_mini43.z.string()))
12770
+ var import_mini42 = require("zod/mini");
12771
+ var DeepagentsSkillFrontmatterSchema = import_mini42.z.looseObject({
12772
+ name: import_mini42.z.string(),
12773
+ description: import_mini42.z.string(),
12774
+ "allowed-tools": import_mini42.z.optional(import_mini42.z.array(import_mini42.z.string()))
12793
12775
  });
12794
12776
  var DeepagentsSkill = class _DeepagentsSkill extends ToolSkill {
12795
12777
  constructor({
@@ -12947,10 +12929,10 @@ var DeepagentsSkill = class _DeepagentsSkill extends ToolSkill {
12947
12929
 
12948
12930
  // src/features/skills/geminicli-skill.ts
12949
12931
  var import_node_path86 = require("path");
12950
- var import_mini44 = require("zod/mini");
12951
- var GeminiCliSkillFrontmatterSchema = import_mini44.z.looseObject({
12952
- name: import_mini44.z.string(),
12953
- description: import_mini44.z.string()
12932
+ var import_mini43 = require("zod/mini");
12933
+ var GeminiCliSkillFrontmatterSchema = import_mini43.z.looseObject({
12934
+ name: import_mini43.z.string(),
12935
+ description: import_mini43.z.string()
12954
12936
  });
12955
12937
  var GeminiCliSkill = class _GeminiCliSkill extends ToolSkill {
12956
12938
  constructor({
@@ -13104,10 +13086,10 @@ var GeminiCliSkill = class _GeminiCliSkill extends ToolSkill {
13104
13086
 
13105
13087
  // src/features/skills/junie-skill.ts
13106
13088
  var import_node_path87 = require("path");
13107
- var import_mini45 = require("zod/mini");
13108
- var JunieSkillFrontmatterSchema = import_mini45.z.looseObject({
13109
- name: import_mini45.z.string(),
13110
- description: import_mini45.z.string()
13089
+ var import_mini44 = require("zod/mini");
13090
+ var JunieSkillFrontmatterSchema = import_mini44.z.looseObject({
13091
+ name: import_mini44.z.string(),
13092
+ description: import_mini44.z.string()
13111
13093
  });
13112
13094
  var JunieSkill = class _JunieSkill extends ToolSkill {
13113
13095
  constructor({
@@ -13280,11 +13262,11 @@ var JunieSkill = class _JunieSkill extends ToolSkill {
13280
13262
 
13281
13263
  // src/features/skills/kilo-skill.ts
13282
13264
  var import_node_path88 = require("path");
13283
- var import_mini46 = require("zod/mini");
13284
- var KiloSkillFrontmatterSchema = import_mini46.z.looseObject({
13285
- name: import_mini46.z.string(),
13286
- description: import_mini46.z.string(),
13287
- "allowed-tools": import_mini46.z.optional(import_mini46.z.array(import_mini46.z.string()))
13265
+ var import_mini45 = require("zod/mini");
13266
+ var KiloSkillFrontmatterSchema = import_mini45.z.looseObject({
13267
+ name: import_mini45.z.string(),
13268
+ description: import_mini45.z.string(),
13269
+ "allowed-tools": import_mini45.z.optional(import_mini45.z.array(import_mini45.z.string()))
13288
13270
  });
13289
13271
  var KiloSkill = class _KiloSkill extends ToolSkill {
13290
13272
  constructor({
@@ -13441,10 +13423,10 @@ var KiloSkill = class _KiloSkill extends ToolSkill {
13441
13423
 
13442
13424
  // src/features/skills/kiro-skill.ts
13443
13425
  var import_node_path89 = require("path");
13444
- var import_mini47 = require("zod/mini");
13445
- var KiroSkillFrontmatterSchema = import_mini47.z.looseObject({
13446
- name: import_mini47.z.string(),
13447
- description: import_mini47.z.string()
13426
+ var import_mini46 = require("zod/mini");
13427
+ var KiroSkillFrontmatterSchema = import_mini46.z.looseObject({
13428
+ name: import_mini46.z.string(),
13429
+ description: import_mini46.z.string()
13448
13430
  });
13449
13431
  var KiroSkill = class _KiroSkill extends ToolSkill {
13450
13432
  constructor({
@@ -13618,11 +13600,11 @@ var KiroSkill = class _KiroSkill extends ToolSkill {
13618
13600
 
13619
13601
  // src/features/skills/opencode-skill.ts
13620
13602
  var import_node_path90 = require("path");
13621
- var import_mini48 = require("zod/mini");
13622
- var OpenCodeSkillFrontmatterSchema = import_mini48.z.looseObject({
13623
- name: import_mini48.z.string(),
13624
- description: import_mini48.z.string(),
13625
- "allowed-tools": import_mini48.z.optional(import_mini48.z.array(import_mini48.z.string()))
13603
+ var import_mini47 = require("zod/mini");
13604
+ var OpenCodeSkillFrontmatterSchema = import_mini47.z.looseObject({
13605
+ name: import_mini47.z.string(),
13606
+ description: import_mini47.z.string(),
13607
+ "allowed-tools": import_mini47.z.optional(import_mini47.z.array(import_mini47.z.string()))
13626
13608
  });
13627
13609
  var OpenCodeSkill = class _OpenCodeSkill extends ToolSkill {
13628
13610
  constructor({
@@ -13779,10 +13761,10 @@ var OpenCodeSkill = class _OpenCodeSkill extends ToolSkill {
13779
13761
 
13780
13762
  // src/features/skills/replit-skill.ts
13781
13763
  var import_node_path91 = require("path");
13782
- var import_mini49 = require("zod/mini");
13783
- var ReplitSkillFrontmatterSchema = import_mini49.z.looseObject({
13784
- name: import_mini49.z.string(),
13785
- description: import_mini49.z.string()
13764
+ var import_mini48 = require("zod/mini");
13765
+ var ReplitSkillFrontmatterSchema = import_mini48.z.looseObject({
13766
+ name: import_mini48.z.string(),
13767
+ description: import_mini48.z.string()
13786
13768
  });
13787
13769
  var ReplitSkill = class _ReplitSkill extends ToolSkill {
13788
13770
  constructor({
@@ -13937,10 +13919,10 @@ var ReplitSkill = class _ReplitSkill extends ToolSkill {
13937
13919
 
13938
13920
  // src/features/skills/roo-skill.ts
13939
13921
  var import_node_path92 = require("path");
13940
- var import_mini50 = require("zod/mini");
13941
- var RooSkillFrontmatterSchema = import_mini50.z.looseObject({
13942
- name: import_mini50.z.string(),
13943
- description: import_mini50.z.string()
13922
+ var import_mini49 = require("zod/mini");
13923
+ var RooSkillFrontmatterSchema = import_mini49.z.looseObject({
13924
+ name: import_mini49.z.string(),
13925
+ description: import_mini49.z.string()
13944
13926
  });
13945
13927
  var RooSkill = class _RooSkill extends ToolSkill {
13946
13928
  constructor({
@@ -14129,10 +14111,10 @@ async function getLocalSkillDirNames(baseDir) {
14129
14111
 
14130
14112
  // src/features/skills/windsurf-skill.ts
14131
14113
  var import_node_path94 = require("path");
14132
- var import_mini51 = require("zod/mini");
14133
- var WindsurfSkillFrontmatterSchema = import_mini51.z.looseObject({
14134
- name: import_mini51.z.string(),
14135
- description: import_mini51.z.string()
14114
+ var import_mini50 = require("zod/mini");
14115
+ var WindsurfSkillFrontmatterSchema = import_mini50.z.looseObject({
14116
+ name: import_mini50.z.string(),
14117
+ description: import_mini50.z.string()
14136
14118
  });
14137
14119
  var WindsurfSkill = class _WindsurfSkill extends ToolSkill {
14138
14120
  constructor({
@@ -14310,7 +14292,7 @@ var skillsProcessorToolTargetTuple = [
14310
14292
  "rovodev",
14311
14293
  "windsurf"
14312
14294
  ];
14313
- var SkillsProcessorToolTargetSchema = import_mini52.z.enum(skillsProcessorToolTargetTuple);
14295
+ var SkillsProcessorToolTargetSchema = import_mini51.z.enum(skillsProcessorToolTargetTuple);
14314
14296
  var toolSkillFactories = /* @__PURE__ */ new Map([
14315
14297
  [
14316
14298
  "agentsmd",
@@ -14689,7 +14671,7 @@ var import_node_path97 = require("path");
14689
14671
 
14690
14672
  // src/features/subagents/simulated-subagent.ts
14691
14673
  var import_node_path96 = require("path");
14692
- var import_mini53 = require("zod/mini");
14674
+ var import_mini52 = require("zod/mini");
14693
14675
 
14694
14676
  // src/features/subagents/tool-subagent.ts
14695
14677
  var ToolSubagent = class extends ToolFile {
@@ -14741,9 +14723,9 @@ var ToolSubagent = class extends ToolFile {
14741
14723
  };
14742
14724
 
14743
14725
  // src/features/subagents/simulated-subagent.ts
14744
- var SimulatedSubagentFrontmatterSchema = import_mini53.z.object({
14745
- name: import_mini53.z.string(),
14746
- description: import_mini53.z.optional(import_mini53.z.string())
14726
+ var SimulatedSubagentFrontmatterSchema = import_mini52.z.object({
14727
+ name: import_mini52.z.string(),
14728
+ description: import_mini52.z.optional(import_mini52.z.string())
14747
14729
  });
14748
14730
  var SimulatedSubagent = class extends ToolSubagent {
14749
14731
  frontmatter;
@@ -14901,15 +14883,15 @@ var FactorydroidSubagent = class _FactorydroidSubagent extends SimulatedSubagent
14901
14883
 
14902
14884
  // src/features/subagents/geminicli-subagent.ts
14903
14885
  var import_node_path100 = require("path");
14904
- var import_mini55 = require("zod/mini");
14886
+ var import_mini54 = require("zod/mini");
14905
14887
 
14906
14888
  // src/features/subagents/rulesync-subagent.ts
14907
14889
  var import_node_path99 = require("path");
14908
- var import_mini54 = require("zod/mini");
14909
- var RulesyncSubagentFrontmatterSchema = import_mini54.z.looseObject({
14910
- targets: import_mini54.z._default(RulesyncTargetsSchema, ["*"]),
14911
- name: import_mini54.z.string(),
14912
- description: import_mini54.z.optional(import_mini54.z.string())
14890
+ var import_mini53 = require("zod/mini");
14891
+ var RulesyncSubagentFrontmatterSchema = import_mini53.z.looseObject({
14892
+ targets: import_mini53.z._default(RulesyncTargetsSchema, ["*"]),
14893
+ name: import_mini53.z.string(),
14894
+ description: import_mini53.z.optional(import_mini53.z.string())
14913
14895
  });
14914
14896
  var RulesyncSubagent = class _RulesyncSubagent extends RulesyncFile {
14915
14897
  frontmatter;
@@ -14978,9 +14960,9 @@ var RulesyncSubagent = class _RulesyncSubagent extends RulesyncFile {
14978
14960
  };
14979
14961
 
14980
14962
  // src/features/subagents/geminicli-subagent.ts
14981
- var GeminiCliSubagentFrontmatterSchema = import_mini55.z.looseObject({
14982
- name: import_mini55.z.string(),
14983
- description: import_mini55.z.optional(import_mini55.z.string())
14963
+ var GeminiCliSubagentFrontmatterSchema = import_mini54.z.looseObject({
14964
+ name: import_mini54.z.string(),
14965
+ description: import_mini54.z.optional(import_mini54.z.string())
14984
14966
  });
14985
14967
  var GeminiCliSubagent = class _GeminiCliSubagent extends ToolSubagent {
14986
14968
  frontmatter;
@@ -15153,10 +15135,10 @@ var RooSubagent = class _RooSubagent extends SimulatedSubagent {
15153
15135
 
15154
15136
  // src/features/subagents/rovodev-subagent.ts
15155
15137
  var import_node_path102 = require("path");
15156
- var import_mini56 = require("zod/mini");
15157
- var RovodevSubagentFrontmatterSchema = import_mini56.z.looseObject({
15158
- name: import_mini56.z.string(),
15159
- description: import_mini56.z.optional(import_mini56.z.string())
15138
+ var import_mini55 = require("zod/mini");
15139
+ var RovodevSubagentFrontmatterSchema = import_mini55.z.looseObject({
15140
+ name: import_mini55.z.string(),
15141
+ description: import_mini55.z.optional(import_mini55.z.string())
15160
15142
  });
15161
15143
  var RovodevSubagent = class _RovodevSubagent extends ToolSubagent {
15162
15144
  frontmatter;
@@ -15298,18 +15280,18 @@ var RovodevSubagent = class _RovodevSubagent extends ToolSubagent {
15298
15280
 
15299
15281
  // src/features/subagents/subagents-processor.ts
15300
15282
  var import_node_path113 = require("path");
15301
- var import_mini65 = require("zod/mini");
15283
+ var import_mini64 = require("zod/mini");
15302
15284
 
15303
15285
  // src/features/subagents/claudecode-subagent.ts
15304
15286
  var import_node_path103 = require("path");
15305
- var import_mini57 = require("zod/mini");
15306
- var ClaudecodeSubagentFrontmatterSchema = import_mini57.z.looseObject({
15307
- name: import_mini57.z.string(),
15308
- description: import_mini57.z.optional(import_mini57.z.string()),
15309
- model: import_mini57.z.optional(import_mini57.z.string()),
15310
- tools: import_mini57.z.optional(import_mini57.z.union([import_mini57.z.string(), import_mini57.z.array(import_mini57.z.string())])),
15311
- permissionMode: import_mini57.z.optional(import_mini57.z.string()),
15312
- skills: import_mini57.z.optional(import_mini57.z.union([import_mini57.z.string(), import_mini57.z.array(import_mini57.z.string())]))
15287
+ var import_mini56 = require("zod/mini");
15288
+ var ClaudecodeSubagentFrontmatterSchema = import_mini56.z.looseObject({
15289
+ name: import_mini56.z.string(),
15290
+ description: import_mini56.z.optional(import_mini56.z.string()),
15291
+ model: import_mini56.z.optional(import_mini56.z.string()),
15292
+ tools: import_mini56.z.optional(import_mini56.z.union([import_mini56.z.string(), import_mini56.z.array(import_mini56.z.string())])),
15293
+ permissionMode: import_mini56.z.optional(import_mini56.z.string()),
15294
+ skills: import_mini56.z.optional(import_mini56.z.union([import_mini56.z.string(), import_mini56.z.array(import_mini56.z.string())]))
15313
15295
  });
15314
15296
  var ClaudecodeSubagent = class _ClaudecodeSubagent extends ToolSubagent {
15315
15297
  frontmatter;
@@ -15465,14 +15447,14 @@ var ClaudecodeSubagent = class _ClaudecodeSubagent extends ToolSubagent {
15465
15447
  // src/features/subagents/codexcli-subagent.ts
15466
15448
  var import_node_path104 = require("path");
15467
15449
  var smolToml6 = __toESM(require("smol-toml"), 1);
15468
- var import_mini58 = require("zod/mini");
15469
- var CodexCliSubagentTomlSchema = import_mini58.z.looseObject({
15470
- name: import_mini58.z.string(),
15471
- description: import_mini58.z.optional(import_mini58.z.string()),
15472
- developer_instructions: import_mini58.z.optional(import_mini58.z.string()),
15473
- model: import_mini58.z.optional(import_mini58.z.string()),
15474
- model_reasoning_effort: import_mini58.z.optional(import_mini58.z.string()),
15475
- sandbox_mode: import_mini58.z.optional(import_mini58.z.string())
15450
+ var import_mini57 = require("zod/mini");
15451
+ var CodexCliSubagentTomlSchema = import_mini57.z.looseObject({
15452
+ name: import_mini57.z.string(),
15453
+ description: import_mini57.z.optional(import_mini57.z.string()),
15454
+ developer_instructions: import_mini57.z.optional(import_mini57.z.string()),
15455
+ model: import_mini57.z.optional(import_mini57.z.string()),
15456
+ model_reasoning_effort: import_mini57.z.optional(import_mini57.z.string()),
15457
+ sandbox_mode: import_mini57.z.optional(import_mini57.z.string())
15476
15458
  });
15477
15459
  function stringifyCodexCliSubagentToml(tomlObj) {
15478
15460
  const { developer_instructions, ...restFields } = tomlObj;
@@ -15638,12 +15620,12 @@ var CodexCliSubagent = class _CodexCliSubagent extends ToolSubagent {
15638
15620
 
15639
15621
  // src/features/subagents/copilot-subagent.ts
15640
15622
  var import_node_path105 = require("path");
15641
- var import_mini59 = require("zod/mini");
15623
+ var import_mini58 = require("zod/mini");
15642
15624
  var REQUIRED_TOOL = "agent/runSubagent";
15643
- var CopilotSubagentFrontmatterSchema = import_mini59.z.looseObject({
15644
- name: import_mini59.z.string(),
15645
- description: import_mini59.z.optional(import_mini59.z.string()),
15646
- tools: import_mini59.z.optional(import_mini59.z.union([import_mini59.z.string(), import_mini59.z.array(import_mini59.z.string())]))
15625
+ var CopilotSubagentFrontmatterSchema = import_mini58.z.looseObject({
15626
+ name: import_mini58.z.string(),
15627
+ description: import_mini58.z.optional(import_mini58.z.string()),
15628
+ tools: import_mini58.z.optional(import_mini58.z.union([import_mini58.z.string(), import_mini58.z.array(import_mini58.z.string())]))
15647
15629
  });
15648
15630
  var normalizeTools = (tools) => {
15649
15631
  if (!tools) {
@@ -15655,6 +15637,21 @@ var ensureRequiredTool = (tools) => {
15655
15637
  const mergedTools = /* @__PURE__ */ new Set([REQUIRED_TOOL, ...tools]);
15656
15638
  return Array.from(mergedTools);
15657
15639
  };
15640
+ var toCopilotAgentFilePath = (relativeFilePath) => {
15641
+ if (relativeFilePath.endsWith(".agent.md")) {
15642
+ return relativeFilePath;
15643
+ }
15644
+ if (relativeFilePath.endsWith(".md")) {
15645
+ return relativeFilePath.replace(/\.md$/, ".agent.md");
15646
+ }
15647
+ return relativeFilePath;
15648
+ };
15649
+ var toRulesyncFilePath = (relativeFilePath) => {
15650
+ if (relativeFilePath.endsWith(".agent.md")) {
15651
+ return relativeFilePath.replace(/\.agent\.md$/, ".md");
15652
+ }
15653
+ return relativeFilePath;
15654
+ };
15658
15655
  var CopilotSubagent = class _CopilotSubagent extends ToolSubagent {
15659
15656
  frontmatter;
15660
15657
  body;
@@ -15701,7 +15698,7 @@ var CopilotSubagent = class _CopilotSubagent extends ToolSubagent {
15701
15698
  frontmatter: rulesyncFrontmatter,
15702
15699
  body: this.body,
15703
15700
  relativeDirPath: RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH,
15704
- relativeFilePath: this.getRelativeFilePath(),
15701
+ relativeFilePath: toRulesyncFilePath(this.getRelativeFilePath()),
15705
15702
  validate: true
15706
15703
  });
15707
15704
  }
@@ -15727,16 +15724,12 @@ var CopilotSubagent = class _CopilotSubagent extends ToolSubagent {
15727
15724
  const body = rulesyncSubagent.getBody();
15728
15725
  const fileContent = stringifyFrontmatter(body, copilotFrontmatter);
15729
15726
  const paths = this.getSettablePaths({ global });
15730
- let relativeFilePath = rulesyncSubagent.getRelativeFilePath();
15731
- if (!relativeFilePath.endsWith(".agent.md")) {
15732
- relativeFilePath = relativeFilePath.replace(/\.md$/, ".agent.md");
15733
- }
15734
15727
  return new _CopilotSubagent({
15735
15728
  baseDir,
15736
15729
  frontmatter: copilotFrontmatter,
15737
15730
  body,
15738
15731
  relativeDirPath: paths.relativeDirPath,
15739
- relativeFilePath,
15732
+ relativeFilePath: toCopilotAgentFilePath(rulesyncSubagent.getRelativeFilePath()),
15740
15733
  fileContent,
15741
15734
  validate,
15742
15735
  global
@@ -15808,10 +15801,10 @@ var CopilotSubagent = class _CopilotSubagent extends ToolSubagent {
15808
15801
 
15809
15802
  // src/features/subagents/cursor-subagent.ts
15810
15803
  var import_node_path106 = require("path");
15811
- var import_mini60 = require("zod/mini");
15812
- var CursorSubagentFrontmatterSchema = import_mini60.z.looseObject({
15813
- name: import_mini60.z.string(),
15814
- description: import_mini60.z.optional(import_mini60.z.string())
15804
+ var import_mini59 = require("zod/mini");
15805
+ var CursorSubagentFrontmatterSchema = import_mini59.z.looseObject({
15806
+ name: import_mini59.z.string(),
15807
+ description: import_mini59.z.optional(import_mini59.z.string())
15815
15808
  });
15816
15809
  var CursorSubagent = class _CursorSubagent extends ToolSubagent {
15817
15810
  frontmatter;
@@ -15955,11 +15948,11 @@ var CursorSubagent = class _CursorSubagent extends ToolSubagent {
15955
15948
 
15956
15949
  // src/features/subagents/deepagents-subagent.ts
15957
15950
  var import_node_path107 = require("path");
15958
- var import_mini61 = require("zod/mini");
15959
- var DeepagentsSubagentFrontmatterSchema = import_mini61.z.looseObject({
15960
- name: import_mini61.z.string(),
15961
- description: import_mini61.z.optional(import_mini61.z.string()),
15962
- model: import_mini61.z.optional(import_mini61.z.string())
15951
+ var import_mini60 = require("zod/mini");
15952
+ var DeepagentsSubagentFrontmatterSchema = import_mini60.z.looseObject({
15953
+ name: import_mini60.z.string(),
15954
+ description: import_mini60.z.optional(import_mini60.z.string()),
15955
+ model: import_mini60.z.optional(import_mini60.z.string())
15963
15956
  });
15964
15957
  var DeepagentsSubagent = class _DeepagentsSubagent extends ToolSubagent {
15965
15958
  frontmatter;
@@ -16108,10 +16101,10 @@ var DeepagentsSubagent = class _DeepagentsSubagent extends ToolSubagent {
16108
16101
 
16109
16102
  // src/features/subagents/junie-subagent.ts
16110
16103
  var import_node_path108 = require("path");
16111
- var import_mini62 = require("zod/mini");
16112
- var JunieSubagentFrontmatterSchema = import_mini62.z.looseObject({
16113
- name: import_mini62.z.optional(import_mini62.z.string()),
16114
- description: import_mini62.z.string()
16104
+ var import_mini61 = require("zod/mini");
16105
+ var JunieSubagentFrontmatterSchema = import_mini61.z.looseObject({
16106
+ name: import_mini61.z.optional(import_mini61.z.string()),
16107
+ description: import_mini61.z.string()
16115
16108
  });
16116
16109
  var JunieSubagent = class _JunieSubagent extends ToolSubagent {
16117
16110
  frontmatter;
@@ -16269,11 +16262,11 @@ var import_node_path110 = require("path");
16269
16262
 
16270
16263
  // src/features/subagents/opencode-style-subagent.ts
16271
16264
  var import_node_path109 = require("path");
16272
- var import_mini63 = require("zod/mini");
16273
- var OpenCodeStyleSubagentFrontmatterSchema = import_mini63.z.looseObject({
16274
- description: import_mini63.z.optional(import_mini63.z.string()),
16275
- mode: import_mini63.z._default(import_mini63.z.string(), "subagent"),
16276
- name: import_mini63.z.optional(import_mini63.z.string())
16265
+ var import_mini62 = require("zod/mini");
16266
+ var OpenCodeStyleSubagentFrontmatterSchema = import_mini62.z.looseObject({
16267
+ description: import_mini62.z.optional(import_mini62.z.string()),
16268
+ mode: import_mini62.z._default(import_mini62.z.string(), "subagent"),
16269
+ name: import_mini62.z.optional(import_mini62.z.string())
16277
16270
  });
16278
16271
  var OpenCodeStyleSubagent = class extends ToolSubagent {
16279
16272
  frontmatter;
@@ -16422,22 +16415,22 @@ var KiloSubagent = class _KiloSubagent extends OpenCodeStyleSubagent {
16422
16415
 
16423
16416
  // src/features/subagents/kiro-subagent.ts
16424
16417
  var import_node_path111 = require("path");
16425
- var import_mini64 = require("zod/mini");
16426
- var KiroCliSubagentJsonSchema = import_mini64.z.looseObject({
16427
- name: import_mini64.z.string(),
16428
- description: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.string())),
16429
- prompt: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.string())),
16430
- tools: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.array(import_mini64.z.string()))),
16431
- toolAliases: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.record(import_mini64.z.string(), import_mini64.z.string()))),
16432
- toolSettings: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.unknown())),
16433
- toolSchema: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.unknown())),
16434
- hooks: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.record(import_mini64.z.string(), import_mini64.z.array(import_mini64.z.unknown())))),
16435
- model: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.string())),
16436
- mcpServers: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.record(import_mini64.z.string(), import_mini64.z.unknown()))),
16437
- useLegacyMcpJson: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.boolean())),
16438
- resources: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.array(import_mini64.z.string()))),
16439
- allowedTools: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.array(import_mini64.z.string()))),
16440
- includeMcpJson: import_mini64.z.optional(import_mini64.z.nullable(import_mini64.z.boolean()))
16418
+ var import_mini63 = require("zod/mini");
16419
+ var KiroCliSubagentJsonSchema = import_mini63.z.looseObject({
16420
+ name: import_mini63.z.string(),
16421
+ description: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.string())),
16422
+ prompt: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.string())),
16423
+ tools: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.array(import_mini63.z.string()))),
16424
+ toolAliases: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.record(import_mini63.z.string(), import_mini63.z.string()))),
16425
+ toolSettings: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.unknown())),
16426
+ toolSchema: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.unknown())),
16427
+ hooks: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.record(import_mini63.z.string(), import_mini63.z.array(import_mini63.z.unknown())))),
16428
+ model: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.string())),
16429
+ mcpServers: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.record(import_mini63.z.string(), import_mini63.z.unknown()))),
16430
+ useLegacyMcpJson: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.boolean())),
16431
+ resources: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.array(import_mini63.z.string()))),
16432
+ allowedTools: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.array(import_mini63.z.string()))),
16433
+ includeMcpJson: import_mini63.z.optional(import_mini63.z.nullable(import_mini63.z.boolean()))
16441
16434
  });
16442
16435
  var KiroSubagent = class _KiroSubagent extends ToolSubagent {
16443
16436
  body;
@@ -16698,7 +16691,7 @@ var subagentsProcessorToolTargetTuple = [
16698
16691
  "roo",
16699
16692
  "rovodev"
16700
16693
  ];
16701
- var SubagentsProcessorToolTargetSchema = import_mini65.z.enum(subagentsProcessorToolTargetTuple);
16694
+ var SubagentsProcessorToolTargetSchema = import_mini64.z.enum(subagentsProcessorToolTargetTuple);
16702
16695
  var toolSubagentFactories = /* @__PURE__ */ new Map([
16703
16696
  [
16704
16697
  "agentsmd",
@@ -17008,42 +17001,42 @@ var import_node_path115 = require("path");
17008
17001
 
17009
17002
  // src/features/rules/rulesync-rule.ts
17010
17003
  var import_node_path114 = require("path");
17011
- var import_mini66 = require("zod/mini");
17012
- var RulesyncRuleFrontmatterSchema = import_mini66.z.object({
17013
- root: import_mini66.z.optional(import_mini66.z.boolean()),
17014
- localRoot: import_mini66.z.optional(import_mini66.z.boolean()),
17015
- targets: import_mini66.z._default(RulesyncTargetsSchema, ["*"]),
17016
- description: import_mini66.z.optional(import_mini66.z.string()),
17017
- globs: import_mini66.z.optional(import_mini66.z.array(import_mini66.z.string())),
17018
- agentsmd: import_mini66.z.optional(
17019
- import_mini66.z.looseObject({
17004
+ var import_mini65 = require("zod/mini");
17005
+ var RulesyncRuleFrontmatterSchema = import_mini65.z.object({
17006
+ root: import_mini65.z.optional(import_mini65.z.boolean()),
17007
+ localRoot: import_mini65.z.optional(import_mini65.z.boolean()),
17008
+ targets: import_mini65.z._default(RulesyncTargetsSchema, ["*"]),
17009
+ description: import_mini65.z.optional(import_mini65.z.string()),
17010
+ globs: import_mini65.z.optional(import_mini65.z.array(import_mini65.z.string())),
17011
+ agentsmd: import_mini65.z.optional(
17012
+ import_mini65.z.looseObject({
17020
17013
  // @example "path/to/subproject"
17021
- subprojectPath: import_mini66.z.optional(import_mini66.z.string())
17014
+ subprojectPath: import_mini65.z.optional(import_mini65.z.string())
17022
17015
  })
17023
17016
  ),
17024
- claudecode: import_mini66.z.optional(
17025
- import_mini66.z.looseObject({
17017
+ claudecode: import_mini65.z.optional(
17018
+ import_mini65.z.looseObject({
17026
17019
  // Glob patterns for conditional rules (takes precedence over globs)
17027
17020
  // @example ["src/**/*.ts", "tests/**/*.test.ts"]
17028
- paths: import_mini66.z.optional(import_mini66.z.array(import_mini66.z.string()))
17021
+ paths: import_mini65.z.optional(import_mini65.z.array(import_mini65.z.string()))
17029
17022
  })
17030
17023
  ),
17031
- cursor: import_mini66.z.optional(
17032
- import_mini66.z.looseObject({
17033
- alwaysApply: import_mini66.z.optional(import_mini66.z.boolean()),
17034
- description: import_mini66.z.optional(import_mini66.z.string()),
17035
- globs: import_mini66.z.optional(import_mini66.z.array(import_mini66.z.string()))
17024
+ cursor: import_mini65.z.optional(
17025
+ import_mini65.z.looseObject({
17026
+ alwaysApply: import_mini65.z.optional(import_mini65.z.boolean()),
17027
+ description: import_mini65.z.optional(import_mini65.z.string()),
17028
+ globs: import_mini65.z.optional(import_mini65.z.array(import_mini65.z.string()))
17036
17029
  })
17037
17030
  ),
17038
- copilot: import_mini66.z.optional(
17039
- import_mini66.z.looseObject({
17040
- excludeAgent: import_mini66.z.optional(import_mini66.z.union([import_mini66.z.literal("code-review"), import_mini66.z.literal("coding-agent")]))
17031
+ copilot: import_mini65.z.optional(
17032
+ import_mini65.z.looseObject({
17033
+ excludeAgent: import_mini65.z.optional(import_mini65.z.union([import_mini65.z.literal("code-review"), import_mini65.z.literal("coding-agent")]))
17041
17034
  })
17042
17035
  ),
17043
- antigravity: import_mini66.z.optional(
17044
- import_mini66.z.looseObject({
17045
- trigger: import_mini66.z.optional(import_mini66.z.string()),
17046
- globs: import_mini66.z.optional(import_mini66.z.array(import_mini66.z.string()))
17036
+ antigravity: import_mini65.z.optional(
17037
+ import_mini65.z.looseObject({
17038
+ trigger: import_mini65.z.optional(import_mini65.z.string()),
17039
+ globs: import_mini65.z.optional(import_mini65.z.array(import_mini65.z.string()))
17047
17040
  })
17048
17041
  )
17049
17042
  });
@@ -17343,20 +17336,20 @@ var AgentsMdRule = class _AgentsMdRule extends ToolRule {
17343
17336
 
17344
17337
  // src/features/rules/antigravity-rule.ts
17345
17338
  var import_node_path117 = require("path");
17346
- var import_mini67 = require("zod/mini");
17347
- var AntigravityRuleFrontmatterSchema = import_mini67.z.looseObject({
17348
- trigger: import_mini67.z.optional(
17349
- import_mini67.z.union([
17350
- import_mini67.z.literal("always_on"),
17351
- import_mini67.z.literal("glob"),
17352
- import_mini67.z.literal("manual"),
17353
- import_mini67.z.literal("model_decision"),
17354
- import_mini67.z.string()
17339
+ var import_mini66 = require("zod/mini");
17340
+ var AntigravityRuleFrontmatterSchema = import_mini66.z.looseObject({
17341
+ trigger: import_mini66.z.optional(
17342
+ import_mini66.z.union([
17343
+ import_mini66.z.literal("always_on"),
17344
+ import_mini66.z.literal("glob"),
17345
+ import_mini66.z.literal("manual"),
17346
+ import_mini66.z.literal("model_decision"),
17347
+ import_mini66.z.string()
17355
17348
  // accepts any string for forward compatibility
17356
17349
  ])
17357
17350
  ),
17358
- globs: import_mini67.z.optional(import_mini67.z.string()),
17359
- description: import_mini67.z.optional(import_mini67.z.string())
17351
+ globs: import_mini66.z.optional(import_mini66.z.string()),
17352
+ description: import_mini66.z.optional(import_mini66.z.string())
17360
17353
  });
17361
17354
  function parseGlobsString(globs) {
17362
17355
  if (!globs) {
@@ -17943,9 +17936,9 @@ var ClaudecodeLegacyRule = class _ClaudecodeLegacyRule extends ToolRule {
17943
17936
 
17944
17937
  // src/features/rules/claudecode-rule.ts
17945
17938
  var import_node_path121 = require("path");
17946
- var import_mini68 = require("zod/mini");
17947
- var ClaudecodeRuleFrontmatterSchema = import_mini68.z.object({
17948
- paths: import_mini68.z.optional(import_mini68.z.array(import_mini68.z.string()))
17939
+ var import_mini67 = require("zod/mini");
17940
+ var ClaudecodeRuleFrontmatterSchema = import_mini67.z.object({
17941
+ paths: import_mini67.z.optional(import_mini67.z.array(import_mini67.z.string()))
17949
17942
  });
17950
17943
  var ClaudecodeRule = class _ClaudecodeRule extends ToolRule {
17951
17944
  frontmatter;
@@ -18161,9 +18154,9 @@ var ClaudecodeRule = class _ClaudecodeRule extends ToolRule {
18161
18154
 
18162
18155
  // src/features/rules/cline-rule.ts
18163
18156
  var import_node_path122 = require("path");
18164
- var import_mini69 = require("zod/mini");
18165
- var ClineRuleFrontmatterSchema = import_mini69.z.object({
18166
- description: import_mini69.z.string()
18157
+ var import_mini68 = require("zod/mini");
18158
+ var ClineRuleFrontmatterSchema = import_mini68.z.object({
18159
+ description: import_mini68.z.string()
18167
18160
  });
18168
18161
  var ClineRule = class _ClineRule extends ToolRule {
18169
18162
  static getSettablePaths(_options = {}) {
@@ -18342,11 +18335,11 @@ var CodexcliRule = class _CodexcliRule extends ToolRule {
18342
18335
 
18343
18336
  // src/features/rules/copilot-rule.ts
18344
18337
  var import_node_path124 = require("path");
18345
- var import_mini70 = require("zod/mini");
18346
- var CopilotRuleFrontmatterSchema = import_mini70.z.object({
18347
- description: import_mini70.z.optional(import_mini70.z.string()),
18348
- applyTo: import_mini70.z.optional(import_mini70.z.string()),
18349
- excludeAgent: import_mini70.z.optional(import_mini70.z.union([import_mini70.z.literal("code-review"), import_mini70.z.literal("coding-agent")]))
18338
+ var import_mini69 = require("zod/mini");
18339
+ var CopilotRuleFrontmatterSchema = import_mini69.z.object({
18340
+ description: import_mini69.z.optional(import_mini69.z.string()),
18341
+ applyTo: import_mini69.z.optional(import_mini69.z.string()),
18342
+ excludeAgent: import_mini69.z.optional(import_mini69.z.union([import_mini69.z.literal("code-review"), import_mini69.z.literal("coding-agent")]))
18350
18343
  });
18351
18344
  var CopilotRule = class _CopilotRule extends ToolRule {
18352
18345
  frontmatter;
@@ -18588,11 +18581,11 @@ var CopilotcliRule = class _CopilotcliRule extends CopilotRule {
18588
18581
 
18589
18582
  // src/features/rules/cursor-rule.ts
18590
18583
  var import_node_path125 = require("path");
18591
- var import_mini71 = require("zod/mini");
18592
- var CursorRuleFrontmatterSchema = import_mini71.z.object({
18593
- description: import_mini71.z.optional(import_mini71.z.string()),
18594
- globs: import_mini71.z.optional(import_mini71.z.string()),
18595
- alwaysApply: import_mini71.z.optional(import_mini71.z.boolean())
18584
+ var import_mini70 = require("zod/mini");
18585
+ var CursorRuleFrontmatterSchema = import_mini70.z.object({
18586
+ description: import_mini70.z.optional(import_mini70.z.string()),
18587
+ globs: import_mini70.z.optional(import_mini70.z.string()),
18588
+ alwaysApply: import_mini70.z.optional(import_mini70.z.boolean())
18596
18589
  });
18597
18590
  var CursorRule = class _CursorRule extends ToolRule {
18598
18591
  frontmatter;
@@ -20252,11 +20245,11 @@ var rulesProcessorToolTargets = [
20252
20245
  "warp",
20253
20246
  "windsurf"
20254
20247
  ];
20255
- var RulesProcessorToolTargetSchema = import_mini72.z.enum(rulesProcessorToolTargets);
20248
+ var RulesProcessorToolTargetSchema = import_mini71.z.enum(rulesProcessorToolTargets);
20256
20249
  var formatRulePaths = (rules) => rules.map((r) => (0, import_node_path140.join)(r.getRelativeDirPath(), r.getRelativeFilePath())).join(", ");
20257
- var RulesFeatureOptionsSchema = import_mini72.z.looseObject({
20258
- ruleDiscoveryMode: import_mini72.z.optional(import_mini72.z.enum(["none", "explicit"])),
20259
- includeLocalRoot: import_mini72.z.optional(import_mini72.z.boolean())
20250
+ var RulesFeatureOptionsSchema = import_mini71.z.looseObject({
20251
+ ruleDiscoveryMode: import_mini71.z.optional(import_mini71.z.enum(["none", "explicit"])),
20252
+ includeLocalRoot: import_mini71.z.optional(import_mini71.z.boolean())
20260
20253
  });
20261
20254
  var resolveRuleDiscoveryMode = ({
20262
20255
  defaultMode,
@@ -20277,8 +20270,8 @@ var resolveRuleDiscoveryMode = ({
20277
20270
  }
20278
20271
  return parsed.data.ruleDiscoveryMode === "none" ? "auto" : "toon";
20279
20272
  };
20280
- var IncludeLocalRootSchema = import_mini72.z.looseObject({
20281
- includeLocalRoot: import_mini72.z.optional(import_mini72.z.boolean())
20273
+ var IncludeLocalRootSchema = import_mini71.z.looseObject({
20274
+ includeLocalRoot: import_mini71.z.optional(import_mini71.z.boolean())
20282
20275
  });
20283
20276
  var resolveIncludeLocalRoot = (options) => {
20284
20277
  if (!options) return true;