rulesync 43.6.3 → 43.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.
@@ -29122,11 +29122,7 @@ var ZoocodeSkill = class extends RooSkill {
29122
29122
  static toolTarget = "zoocode";
29123
29123
  };
29124
29124
  // src/features/skills/skills-processor.ts
29125
- var skills_processor_exports = /* @__PURE__ */ __exportAll({
29126
- SkillsProcessor: () => SkillsProcessor,
29127
- SkillsProcessorToolTargetSchema: () => SkillsProcessorToolTargetSchema,
29128
- toolSkillFactories: () => toolSkillFactories
29129
- });
29125
+ var skills_processor_exports = /* @__PURE__ */ __exportAll({ toolSkillFactories: () => toolSkillFactories });
29130
29126
  const SkillsProcessorToolTargetSchema = zod_mini.z.enum(skillsProcessorToolTargetTuple);
29131
29127
  /**
29132
29128
  * Factory Map mapping tool targets to their skill factories.
@@ -79905,6 +79901,39 @@ const MATCH_ALL_PATH_GLOBS = /* @__PURE__ */ new Set([
79905
79901
  ]);
79906
79902
  const DIRECTORY_CONTENTS_SUFFIX = /\/\*\*(?:\/\*)?$/;
79907
79903
  const HOME_OR_VARIABLE_PATH = /^~(?:\/|$)|^\$[A-Za-z_]|\$\{[A-Za-z_]/;
79904
+ const LEADING_HOME = /^~(?:\/|$)/;
79905
+ /**
79906
+ * The home directory as an Antigravity path: forward slashes, no trailing
79907
+ * slash. agy accepts `C:/Users/...` on Windows, so one spelling serves both.
79908
+ */
79909
+ function toAntigravityHomePath(homeDirectory) {
79910
+ return homeDirectory.replaceAll("\\", "/").replace(/\/+$/, "");
79911
+ }
79912
+ /**
79913
+ * Rewrite a leading `~` or `~/` of a path target to the absolute home
79914
+ * directory. agy 1.5.1 matches `~` literally, so a `~/...` rule would never
79915
+ * apply (rulesync#3324). Only a file the user's own home holds, such as the
79916
+ * global Antigravity CLI settings, may carry a machine-specific path, so the
79917
+ * caller passes `homeDirectory` only then. `$HOME`, `${HOME}`, `%VAR%` and
79918
+ * `~user/` are left as written (the variable forms are still warned about).
79919
+ */
79920
+ function expandLeadingHome(target, homeDirectory) {
79921
+ if (homeDirectory === void 0 || !LEADING_HOME.test(target)) return target;
79922
+ const home = toAntigravityHomePath(homeDirectory);
79923
+ return target === "~" ? home || "/" : `${home}${target.slice(1)}`;
79924
+ }
79925
+ /**
79926
+ * The reverse of {@link expandLeadingHome} on import: an absolute path in the
79927
+ * home directory goes back to `~/...`, so `.rulesync/permissions.jsonc` stays
79928
+ * the same on every machine.
79929
+ */
79930
+ function collapseLeadingHome(target, homeDirectory) {
79931
+ if (homeDirectory === void 0) return target;
79932
+ const home = toAntigravityHomePath(homeDirectory);
79933
+ if (home.length === 0) return target;
79934
+ if (target === home) return "~";
79935
+ return target.startsWith(`${home}/`) ? `~${target.slice(home.length)}` : target;
79936
+ }
79908
79937
  const HOSTNAME = /^[a-z0-9-]+(?:\.[a-z0-9-]+)*$/;
79909
79938
  const DENY_HINTS = {
79910
79939
  read_file: "deny a directory or file path instead",
@@ -80057,13 +80086,14 @@ function warnHomeOrVariablePath({ action, target, rule, decision, logger, toolLa
80057
80086
  * nothing enforces it, and a widened one is warned about too, because it
80058
80087
  * blocks more than it says.
80059
80088
  */
80060
- function buildAntigravityPermissionEntry({ action: toolAction, category, pattern, decision, logger, toolLabel }) {
80089
+ function buildAntigravityPermissionEntry({ action: toolAction, category, pattern, decision, logger, toolLabel, homeDirectory }) {
80061
80090
  const isMcp = category.startsWith(MCP_CATEGORY_PREFIX);
80062
80091
  const action = isMcp ? "mcp" : toolAction;
80063
80092
  const result = isMcp ? toMcpRuleTarget(category, pattern) : pattern === "*" ? { target: "*" } : toTarget(action, pattern);
80064
80093
  const rule = `${category}: { "${pattern}": "${decision}" }`;
80065
80094
  if ("skipReason" in result) {
80066
- const prefix = decision !== "deny" ? void 0 : isMcp ? result.lead : toWidenedDenyTarget(action, pattern);
80095
+ const lead = decision !== "deny" ? void 0 : isMcp ? result.lead : toWidenedDenyTarget(action, pattern);
80096
+ const prefix = lead !== void 0 && PATH_ACTIONS.has(action) ? expandLeadingHome(lead, homeDirectory) : lead;
80067
80097
  if (prefix !== void 0) {
80068
80098
  const { entry, scope } = describeWidenedDeny({
80069
80099
  action,
@@ -80089,22 +80119,23 @@ function buildAntigravityPermissionEntry({ action: toolAction, category, pattern
80089
80119
  const consequence = decision === "deny" ? ", so the deny also overrides any allow or ask there" : "";
80090
80120
  logger.warn(`${toolLabel} permissions: ${rule}: ${result.note}${consequence}.`);
80091
80121
  }
80122
+ const target = PATH_ACTIONS.has(action) ? expandLeadingHome(result.target, homeDirectory) : result.target;
80092
80123
  warnHomeOrVariablePath({
80093
80124
  action,
80094
- target: result.target,
80125
+ target,
80095
80126
  rule,
80096
80127
  decision,
80097
80128
  logger,
80098
80129
  toolLabel
80099
80130
  });
80100
- return result.target === "*" ? action : `${action}(${result.target})`;
80131
+ return target === "*" ? action : `${action}(${target})`;
80101
80132
  }
80102
80133
  /**
80103
80134
  * Convert rulesync permissions config to Antigravity allow/ask/deny arrays,
80104
80135
  * shared by the CLI and IDE generators; `toAction` maps a canonical category to
80105
80136
  * the target's tool or action name.
80106
80137
  */
80107
- function convertRulesyncToAntigravityPermissions({ config, toAction, toolLabel, logger }) {
80138
+ function convertRulesyncToAntigravityPermissions({ config, toAction, toolLabel, logger, homeDirectory }) {
80108
80139
  const allow = [];
80109
80140
  const ask = [];
80110
80141
  const deny = [];
@@ -80117,7 +80148,8 @@ function convertRulesyncToAntigravityPermissions({ config, toAction, toolLabel,
80117
80148
  pattern,
80118
80149
  decision: permissionAction,
80119
80150
  logger,
80120
- toolLabel
80151
+ toolLabel,
80152
+ homeDirectory
80121
80153
  });
80122
80154
  if (entry === void 0) continue;
80123
80155
  switch (permissionAction) {
@@ -80142,7 +80174,7 @@ function convertRulesyncToAntigravityPermissions({ config, toAction, toolLabel,
80142
80174
  * shared by the CLI and IDE adapters; `toCategory` maps the target's tool or
80143
80175
  * action name back to a canonical category.
80144
80176
  */
80145
- function convertAntigravityToRulesyncPermissions({ allow, ask, deny, toCategory, toolLabel, logger }) {
80177
+ function convertAntigravityToRulesyncPermissions({ allow, ask, deny, toCategory, toolLabel, logger, homeDirectory }) {
80146
80178
  const permission = {};
80147
80179
  const processEntries = (entries, action) => {
80148
80180
  for (const entry of entries) {
@@ -80154,7 +80186,7 @@ function convertAntigravityToRulesyncPermissions({ allow, ask, deny, toCategory,
80154
80186
  decision: action,
80155
80187
  logger,
80156
80188
  toolLabel
80157
- }) : target;
80189
+ }) : PATH_ACTIONS.has(toolName) ? collapseLeadingHome(target, homeDirectory) : target;
80158
80190
  if (isPrototypePollutionKey(canonical) || isPrototypePollutionKey(pattern)) continue;
80159
80191
  getOrCreateOwn({
80160
80192
  record: permission,
@@ -80293,7 +80325,8 @@ var AntigravityCliPermissions = class AntigravityCliPermissions extends ToolPerm
80293
80325
  config,
80294
80326
  toAction: toAntigravityCliToolName,
80295
80327
  toolLabel: "Antigravity CLI",
80296
- logger
80328
+ logger,
80329
+ homeDirectory: outputRoot
80297
80330
  });
80298
80331
  const managedToolNames = new Set(Object.keys(config.permission).map((category) => toAntigravityCliToolName(category)));
80299
80332
  const isManagedToolName = (toolName) => managedToolNames.has(toolName) || managedToolNames.has("mcp") && toolName.startsWith("mcp__");
@@ -80344,7 +80377,8 @@ var AntigravityCliPermissions = class AntigravityCliPermissions extends ToolPerm
80344
80377
  deny: permissions.deny ?? [],
80345
80378
  toCategory: toCanonicalToolName$9,
80346
80379
  toolLabel: "Antigravity CLI",
80347
- logger: moduleLogger$4
80380
+ logger: moduleLogger$4,
80381
+ homeDirectory: this.getOutputRoot()
80348
80382
  });
80349
80383
  const override = {};
80350
80384
  const toolPermission = pickDocumentedValue({
@@ -29100,11 +29100,7 @@ var ZoocodeSkill = class extends RooSkill {
29100
29100
  static toolTarget = "zoocode";
29101
29101
  };
29102
29102
  // src/features/skills/skills-processor.ts
29103
- var skills_processor_exports = /* @__PURE__ */ __exportAll({
29104
- SkillsProcessor: () => SkillsProcessor,
29105
- SkillsProcessorToolTargetSchema: () => SkillsProcessorToolTargetSchema,
29106
- toolSkillFactories: () => toolSkillFactories
29107
- });
29103
+ var skills_processor_exports = /* @__PURE__ */ __exportAll({ toolSkillFactories: () => toolSkillFactories });
29108
29104
  const SkillsProcessorToolTargetSchema = z.enum(skillsProcessorToolTargetTuple);
29109
29105
  /**
29110
29106
  * Factory Map mapping tool targets to their skill factories.
@@ -79883,6 +79879,39 @@ const MATCH_ALL_PATH_GLOBS = /* @__PURE__ */ new Set([
79883
79879
  ]);
79884
79880
  const DIRECTORY_CONTENTS_SUFFIX = /\/\*\*(?:\/\*)?$/;
79885
79881
  const HOME_OR_VARIABLE_PATH = /^~(?:\/|$)|^\$[A-Za-z_]|\$\{[A-Za-z_]/;
79882
+ const LEADING_HOME = /^~(?:\/|$)/;
79883
+ /**
79884
+ * The home directory as an Antigravity path: forward slashes, no trailing
79885
+ * slash. agy accepts `C:/Users/...` on Windows, so one spelling serves both.
79886
+ */
79887
+ function toAntigravityHomePath(homeDirectory) {
79888
+ return homeDirectory.replaceAll("\\", "/").replace(/\/+$/, "");
79889
+ }
79890
+ /**
79891
+ * Rewrite a leading `~` or `~/` of a path target to the absolute home
79892
+ * directory. agy 1.5.1 matches `~` literally, so a `~/...` rule would never
79893
+ * apply (rulesync#3324). Only a file the user's own home holds, such as the
79894
+ * global Antigravity CLI settings, may carry a machine-specific path, so the
79895
+ * caller passes `homeDirectory` only then. `$HOME`, `${HOME}`, `%VAR%` and
79896
+ * `~user/` are left as written (the variable forms are still warned about).
79897
+ */
79898
+ function expandLeadingHome(target, homeDirectory) {
79899
+ if (homeDirectory === void 0 || !LEADING_HOME.test(target)) return target;
79900
+ const home = toAntigravityHomePath(homeDirectory);
79901
+ return target === "~" ? home || "/" : `${home}${target.slice(1)}`;
79902
+ }
79903
+ /**
79904
+ * The reverse of {@link expandLeadingHome} on import: an absolute path in the
79905
+ * home directory goes back to `~/...`, so `.rulesync/permissions.jsonc` stays
79906
+ * the same on every machine.
79907
+ */
79908
+ function collapseLeadingHome(target, homeDirectory) {
79909
+ if (homeDirectory === void 0) return target;
79910
+ const home = toAntigravityHomePath(homeDirectory);
79911
+ if (home.length === 0) return target;
79912
+ if (target === home) return "~";
79913
+ return target.startsWith(`${home}/`) ? `~${target.slice(home.length)}` : target;
79914
+ }
79886
79915
  const HOSTNAME = /^[a-z0-9-]+(?:\.[a-z0-9-]+)*$/;
79887
79916
  const DENY_HINTS = {
79888
79917
  read_file: "deny a directory or file path instead",
@@ -80035,13 +80064,14 @@ function warnHomeOrVariablePath({ action, target, rule, decision, logger, toolLa
80035
80064
  * nothing enforces it, and a widened one is warned about too, because it
80036
80065
  * blocks more than it says.
80037
80066
  */
80038
- function buildAntigravityPermissionEntry({ action: toolAction, category, pattern, decision, logger, toolLabel }) {
80067
+ function buildAntigravityPermissionEntry({ action: toolAction, category, pattern, decision, logger, toolLabel, homeDirectory }) {
80039
80068
  const isMcp = category.startsWith(MCP_CATEGORY_PREFIX);
80040
80069
  const action = isMcp ? "mcp" : toolAction;
80041
80070
  const result = isMcp ? toMcpRuleTarget(category, pattern) : pattern === "*" ? { target: "*" } : toTarget(action, pattern);
80042
80071
  const rule = `${category}: { "${pattern}": "${decision}" }`;
80043
80072
  if ("skipReason" in result) {
80044
- const prefix = decision !== "deny" ? void 0 : isMcp ? result.lead : toWidenedDenyTarget(action, pattern);
80073
+ const lead = decision !== "deny" ? void 0 : isMcp ? result.lead : toWidenedDenyTarget(action, pattern);
80074
+ const prefix = lead !== void 0 && PATH_ACTIONS.has(action) ? expandLeadingHome(lead, homeDirectory) : lead;
80045
80075
  if (prefix !== void 0) {
80046
80076
  const { entry, scope } = describeWidenedDeny({
80047
80077
  action,
@@ -80067,22 +80097,23 @@ function buildAntigravityPermissionEntry({ action: toolAction, category, pattern
80067
80097
  const consequence = decision === "deny" ? ", so the deny also overrides any allow or ask there" : "";
80068
80098
  logger.warn(`${toolLabel} permissions: ${rule}: ${result.note}${consequence}.`);
80069
80099
  }
80100
+ const target = PATH_ACTIONS.has(action) ? expandLeadingHome(result.target, homeDirectory) : result.target;
80070
80101
  warnHomeOrVariablePath({
80071
80102
  action,
80072
- target: result.target,
80103
+ target,
80073
80104
  rule,
80074
80105
  decision,
80075
80106
  logger,
80076
80107
  toolLabel
80077
80108
  });
80078
- return result.target === "*" ? action : `${action}(${result.target})`;
80109
+ return target === "*" ? action : `${action}(${target})`;
80079
80110
  }
80080
80111
  /**
80081
80112
  * Convert rulesync permissions config to Antigravity allow/ask/deny arrays,
80082
80113
  * shared by the CLI and IDE generators; `toAction` maps a canonical category to
80083
80114
  * the target's tool or action name.
80084
80115
  */
80085
- function convertRulesyncToAntigravityPermissions({ config, toAction, toolLabel, logger }) {
80116
+ function convertRulesyncToAntigravityPermissions({ config, toAction, toolLabel, logger, homeDirectory }) {
80086
80117
  const allow = [];
80087
80118
  const ask = [];
80088
80119
  const deny = [];
@@ -80095,7 +80126,8 @@ function convertRulesyncToAntigravityPermissions({ config, toAction, toolLabel,
80095
80126
  pattern,
80096
80127
  decision: permissionAction,
80097
80128
  logger,
80098
- toolLabel
80129
+ toolLabel,
80130
+ homeDirectory
80099
80131
  });
80100
80132
  if (entry === void 0) continue;
80101
80133
  switch (permissionAction) {
@@ -80120,7 +80152,7 @@ function convertRulesyncToAntigravityPermissions({ config, toAction, toolLabel,
80120
80152
  * shared by the CLI and IDE adapters; `toCategory` maps the target's tool or
80121
80153
  * action name back to a canonical category.
80122
80154
  */
80123
- function convertAntigravityToRulesyncPermissions({ allow, ask, deny, toCategory, toolLabel, logger }) {
80155
+ function convertAntigravityToRulesyncPermissions({ allow, ask, deny, toCategory, toolLabel, logger, homeDirectory }) {
80124
80156
  const permission = {};
80125
80157
  const processEntries = (entries, action) => {
80126
80158
  for (const entry of entries) {
@@ -80132,7 +80164,7 @@ function convertAntigravityToRulesyncPermissions({ allow, ask, deny, toCategory,
80132
80164
  decision: action,
80133
80165
  logger,
80134
80166
  toolLabel
80135
- }) : target;
80167
+ }) : PATH_ACTIONS.has(toolName) ? collapseLeadingHome(target, homeDirectory) : target;
80136
80168
  if (isPrototypePollutionKey(canonical) || isPrototypePollutionKey(pattern)) continue;
80137
80169
  getOrCreateOwn({
80138
80170
  record: permission,
@@ -80271,7 +80303,8 @@ var AntigravityCliPermissions = class AntigravityCliPermissions extends ToolPerm
80271
80303
  config,
80272
80304
  toAction: toAntigravityCliToolName,
80273
80305
  toolLabel: "Antigravity CLI",
80274
- logger
80306
+ logger,
80307
+ homeDirectory: outputRoot
80275
80308
  });
80276
80309
  const managedToolNames = new Set(Object.keys(config.permission).map((category) => toAntigravityCliToolName(category)));
80277
80310
  const isManagedToolName = (toolName) => managedToolNames.has(toolName) || managedToolNames.has("mcp") && toolName.startsWith("mcp__");
@@ -80322,7 +80355,8 @@ var AntigravityCliPermissions = class AntigravityCliPermissions extends ToolPerm
80322
80355
  deny: permissions.deny ?? [],
80323
80356
  toCategory: toCanonicalToolName$9,
80324
80357
  toolLabel: "Antigravity CLI",
80325
- logger: moduleLogger$4
80358
+ logger: moduleLogger$4,
80359
+ homeDirectory: this.getOutputRoot()
80326
80360
  });
80327
80361
  const override = {};
80328
80362
  const toolPermission = pickDocumentedValue({
@@ -104059,4 +104093,4 @@ const CHECKS_IMPORT_STRATEGY = {
104059
104093
  };
104060
104094
  export { RulesyncMcp as $, RULESYNC_USER_CONFIG_DIR_NAME as $n, isRootDirPath as $t, CODEBUDDY_LOCAL_RULE_FILE_NAME as A, CURATED_RULES_FEATURE_SUBDIR as An, resetRunWarningState as At, CLAUDECODE_MEMORIES_DIR_NAME as B, RULESYNC_HOOKS_RELATIVE_FILE_PATH as Bn, assertTreeContainsNoSymlinks as Bt, LETTACODE_DIR as C, ALL_TOOL_TARGETS as Cn, findControlCharacter as Ct, COMMANDCODE_DIR as D, ALL_FEATURES as Dn, fallbackLogger as Dt, FACTORYDROID_SETTINGS_LOCAL_FILE_NAME as E, ToolTargetSchema as En, WarningCollectingLogger as Et, CODEXCLI_BASH_RULES_FILE_NAME as F, RULESYNC_COMMANDS_RELATIVE_DIR_PATH as Fn, PathOutsideRootError as Ft, getLocalSkillDirNames as G, RULESYNC_NPM_SOURCES_LOCK_RELATIVE_FILE_PATH as Gn, ensureDir as Gt, CLAUDECODE_SKILLS_DIR_PATH as H, RULESYNC_LOCAL_CONFIG_RELATIVE_FILE_PATH as Hn, checkPathTraversal as Ht, CODEXCLI_DIR as I, RULESYNC_CONFIG_RELATIVE_FILE_PATH as In, applyFileMode as It, RulesyncSkill as J, RULESYNC_RELATIVE_DIR_PATH as Jn, findFilesByGlobs as Jt, RulesyncSubagent as K, RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH as Kn, fileExists as Kt, CLAUDECODE_AGENT_MEMORY_LOCAL_DIR_NAME as L, RULESYNC_CONFIG_SCHEMA_URL as Ln, assertDirectoryIfExists as Lt, AUGMENTCODE_SETTINGS_LOCAL_FILE_NAME as M, MAX_FILE_SIZE as Mn, CLIError as Mt, caseFoldIdentity as N, RULESYNC_AIIGNORE_RELATIVE_FILE_PATH as Nn, ErrorCodes as Nt, COMMANDCODE_SETTINGS_LOCAL_FILE_NAME as O, ALL_FEATURES_WITH_WILDCARD as On, warnOnConflictingFlags as Ot, groupSpellingsByCaseFoldedIdentity as P, RULESYNC_CHECKS_RELATIVE_DIR_PATH as Pn, parseJsonc as Pt, RulesyncPermissions as Q, RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH as Qn, isFileSystemError as Qt, CLAUDECODE_DIR as R, RULESYNC_CURATED_RULES_RELATIVE_DIR_PATH as Rn, assertNoSymlinkBelowRoot as Rt, QWENCODE_LOCAL_RULE_FILE_NAME as S, mapWithConcurrency as Sn, getSourceTransport as St, FACTORYDROID_DIR as T, PACKAGING_TOOL_TARGETS as Tn, JsonLogger as Tt, findProjectInstructionBudgetFindings as U, RULESYNC_MCP_RELATIVE_FILE_PATH as Un, createTempDirectory as Ut, CLAUDECODE_SETTINGS_LOCAL_FILE_NAME as V, RULESYNC_IGNORE_RELATIVE_FILE_PATH as Vn, assertWritablePathInsideRoot as Vt, toInstructionBudgetFile as W, RULESYNC_MCP_SCHEMA_URL as Wn, directoryExists as Wt, RulesyncRule as X, RULESYNC_SKILLS_RELATIVE_DIR_PATH as Xn, getHomeDirectory as Xt, RulesyncSkillFrontmatterSchema as Y, RULESYNC_RULES_RELATIVE_DIR_PATH as Yn, getFileSizeAndExecutableBit as Yt, RulesyncRuleFrontmatterSchema as Z, RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH as Zn, isFileNotFoundError as Zt, SkillsProcessor as _, runWithDirectoryRollback as _n, CONFLICTING_TARGET_PAIRS as _t, convertFromTool as a, pathEscapesRoot as an, hasEnclosingMarkOutsideKeycap as ar, RulesyncCommandFrontmatterSchema as at, REASONIX_LOCAL_RULE_FILE_NAME as b, writeFileBuffer as bn, SourceEntrySchema as bt, ELLIPSIS_WIDTH as c, readFileContentOrNull as cn, stripControlCharactersKeepingLineFeeds as cr, stringifyFrontmatter as ct, McpProcessor as d, removeFile as dn, SHARED_USER_MANAGED_CONFIG_PATHS as dt, isSymlink as en, RULESYNC_XDG_CONFIG_HOME_DEFAULT_DIR_NAME as er, RulesyncIgnore as et, IgnoreProcessor as f, removeFileStrict as fn, SKILL_FILE_NAME as ft, SubagentsProcessor as g, resolvedRelativePath as gn, resolveEffectiveInputRoots as gt, RulesProcessor as h, resolvePath as hn, parseConfigFileContent as ht, inspectInputRoots as i, normalizePosixDirPath as in, hasDeceptiveHiddenCharacters as ir, RulesyncCommand as it, AUGMENTCODE_DIR as j, FEATURE_SOURCE_TREE_ENTRIES as jn, withWarnOnceScope as jt, CODEBUDDY_DIR as k, DEPRECATED_FEATURE_REPLACEMENTS as kn, withFallbackLoggerTarget as kt, displayWidthOf as l, removeDirectory as ln, stripControlCharactersKeepingLineFeedsAndTabs as lr, loadYaml as lt, ChecksProcessor as m, removeTempDirectory as mn, mergeInputRootConfigs as mt, formatSourceLoadFailure as n, listFilePathsRecursively as nn, formatError as nr, getRulesyncSourceCandidates as nt, getProcessorRegistryEntry as o, posixRelativePathEscapesRoot as on, quoteForLog as or, RulesyncCheck as ot, HooksProcessor as p, removeFileWithoutFollowingSymlinks as pn, ConfigResolver as pt, RulesyncSubagentFrontmatterSchema as q, RULESYNC_PERMISSIONS_SCHEMA_URL as qn, fileExistsStrict as qt, generate as r, listSubdirectoryNames as rn, truncateText as rr, resolveRulesyncSourceWritePath as rt, parseCommaSeparatedList as s, readFileContent as sn, stripControlCharacters as sr, RulesyncCheckFrontmatterSchema as st, importFromTool as t, listDirectoryEntryNames as tn, formatMegabytes as tr, RulesyncHooks as tt, shortenToWidth as u, removeDirectoryStrict as un, stripHiddenCharacters as ur, isRecord as ut, CRUSH_LOCAL_RULE_FILE_NAME as v, splitPathSegments as vn, ConfigFileSchema as vt, LETTACODE_SETTINGS_LOCAL_FILE_NAME as w, ALL_TOOL_TARGETS_WITH_WILDCARD as wn, ConsoleLogger as wt, QWENCODE_DIR as x, writeFileContent as xn, assertTargetsFeaturesExclusive as xt, CommandsProcessor as y, toPosixPath as yn, GITIGNORE_DESTINATION_KEY as yt, CLAUDECODE_LOCAL_RULE_FILE_NAME as z, RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH as zn, assertPathResolvesInsideRoot as zt };
104061
104095
 
104062
- //# sourceMappingURL=import-w0JlEoNl.js.map
104096
+ //# sourceMappingURL=import-tr3jHcG2.js.map