rulesync 16.10.0 → 16.11.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.
@@ -2501,14 +2501,23 @@ const CLINE_HOOK_EVENTS = [
2501
2501
  /**
2502
2502
  * Hook events supported by GitHub Copilot (cloud coding agent).
2503
2503
  *
2504
- * GitHub now documents an eight-event surface for `.github/hooks/*.json`:
2504
+ * The events rulesync writes to `.github/hooks/*.json`:
2505
2505
  * `sessionStart`, `sessionEnd`, `userPromptSubmitted` ← `beforeSubmitPrompt`,
2506
- * `preToolUse`, `postToolUse`, `agentStop` ← `stop`, `subagentStop`, and
2507
- * `errorOccurred` ← `afterError`. `subagentStart` is intentionally absent: it is
2508
- * not part of the documented cloud-agent surface.
2506
+ * `preToolUse`, `postToolUse`, `agentStop` ← `stop`, `subagentStart`,
2507
+ * `subagentStop`, `errorOccurred` ← `afterError`, and `preCompact`.
2509
2508
  *
2510
- * @see https://docs.github.com/en/copilot/concepts/agents/coding-agent/about-hooks
2511
- * @see https://docs.github.com/en/copilot/concepts/agents/hooks
2509
+ * `preCompact` and `subagentStart` are authorable because the unified hooks
2510
+ * reference's per-event "Cloud agent" column says both fire there. That column
2511
+ * is the authority for this set: the older cloud-agent concept page still
2512
+ * lists only the eight events this set began as, and re-narrowing to it would
2513
+ * undo that. `notification` and `permissionRequest` stay out because the same
2514
+ * column is explicit that they do not fire on the cloud agent.
2515
+ *
2516
+ * Two further CLI events — `postToolUseFailure` and `userPromptTransformed`
2517
+ * ({@link COPILOTCLI_HOOK_EVENTS}) — are documented as firing on the cloud
2518
+ * agent as well but are not modelled here yet.
2519
+ *
2520
+ * @see https://docs.github.com/en/copilot/reference/hooks-reference
2512
2521
  */
2513
2522
  const COPILOT_HOOK_EVENTS = [
2514
2523
  "sessionStart",
@@ -2517,8 +2526,10 @@ const COPILOT_HOOK_EVENTS = [
2517
2526
  "preToolUse",
2518
2527
  "postToolUse",
2519
2528
  "stop",
2529
+ "subagentStart",
2520
2530
  "subagentStop",
2521
- "afterError"
2531
+ "afterError",
2532
+ "preCompact"
2522
2533
  ];
2523
2534
  /**
2524
2535
  * Hook events supported by the GitHub Copilot CLI (`copilotcli-hooks.ts`).
@@ -3254,8 +3265,10 @@ const CANONICAL_TO_COPILOT_EVENT_NAMES = {
3254
3265
  preToolUse: "preToolUse",
3255
3266
  postToolUse: "postToolUse",
3256
3267
  stop: "agentStop",
3268
+ subagentStart: "subagentStart",
3257
3269
  subagentStop: "subagentStop",
3258
- afterError: "errorOccurred"
3270
+ afterError: "errorOccurred",
3271
+ preCompact: "preCompact"
3259
3272
  };
3260
3273
  /**
3261
3274
  * Map Copilot camelCase event names to canonical camelCase.
@@ -17070,6 +17083,13 @@ var GrokcliHooks = class GrokcliHooks extends ToolHooks {
17070
17083
  * @see https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/hooks.md
17071
17084
  */
17072
17085
  const HERMESAGENT_MATCHER_EVENTS = /* @__PURE__ */ new Set(["pre_tool_call", "post_tool_call"]);
17086
+ /**
17087
+ * The only Hermes event that can block, and therefore the only one whose
17088
+ * entries accept `fail_closed`. Upstream warns and ignores the key on every
17089
+ * other event ("only blocking-capable events can fail closed").
17090
+ * @see https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/hooks.md
17091
+ */
17092
+ const HERMESAGENT_FAIL_CLOSED_EVENT = "pre_tool_call";
17073
17093
  const HERMESAGENT_CANONICAL_EVENTS = new Set(HERMESAGENT_HOOK_EVENTS);
17074
17094
  const HERMESAGENT_NATIVE_EVENTS = new Set(HERMESAGENT_NATIVE_HOOK_EVENTS);
17075
17095
  /**
@@ -17103,7 +17123,9 @@ function isHermesHookEventEntry(key, value) {
17103
17123
  * unsupported hook types centrally). `matcher` is only carried through for
17104
17124
  * `pre_tool_call`/`post_tool_call`; on any other event it is dropped with a
17105
17125
  * warning, mirroring how other adapters (e.g. AugmentCode) handle
17106
- * matcher-less lifecycle events.
17126
+ * matcher-less lifecycle events. The canonical `failClosed` field (shared with
17127
+ * Cursor, whose semantics Hermes copied) becomes `fail_closed`, which upstream
17128
+ * only honours on `pre_tool_call`.
17107
17129
  */
17108
17130
  function definitionsToHermesEntries({ event, sourceEvent = event, definitions, logger }) {
17109
17131
  const supportsMatcher = HERMESAGENT_MATCHER_EVENTS.has(event);
@@ -17114,6 +17136,10 @@ function definitionsToHermesEntries({ event, sourceEvent = event, definitions, l
17114
17136
  if (typeof definition.matcher === "string" && definition.matcher !== "") if (supportsMatcher) entry.matcher = definition.matcher;
17115
17137
  else logger?.warn(`matcher "${definition.matcher}" on "${sourceEvent}" hook will be ignored — Hermes Agent only supports matchers on pre_tool_call/post_tool_call`);
17116
17138
  if (typeof definition.timeout === "number") entry.timeout = definition.timeout;
17139
+ if (typeof definition.failClosed === "boolean") {
17140
+ if (event === HERMESAGENT_FAIL_CLOSED_EVENT) entry.fail_closed = definition.failClosed;
17141
+ else if (definition.failClosed) logger?.warn(`failClosed on "${sourceEvent}" hook will be ignored — Hermes Agent only supports fail_closed on pre_tool_call`);
17142
+ }
17117
17143
  entries.push(entry);
17118
17144
  }
17119
17145
  return entries;
@@ -17165,6 +17191,37 @@ function canonicalToHermesHooks({ config, toolOverrideHooks, logger }) {
17165
17191
  return result;
17166
17192
  }
17167
17193
  /**
17194
+ * Reads a hook entry's fail-closed flag. Upstream accepts its own `fail_closed`
17195
+ * and the Cursor/Claude Code `failClosed` spelling alike, so both have to be
17196
+ * read back into the single canonical field.
17197
+ */
17198
+ function readHermesFailClosed(entry) {
17199
+ if (typeof entry.fail_closed === "boolean") return entry.fail_closed;
17200
+ if (typeof entry.failClosed === "boolean") return entry.failClosed;
17201
+ }
17202
+ /**
17203
+ * Converts one serialized Hermes hook entry back into a canonical definition,
17204
+ * or `undefined` when it is not a hook rulesync models (no string `command`).
17205
+ * `matcher` and `fail_closed` are read only on the events upstream honours them
17206
+ * on, so an imported value is never one the next generate warns about and drops.
17207
+ */
17208
+ function hermesEntryToDefinition({ nativeEvent, raw }) {
17209
+ if (!isRecord$1(raw)) return;
17210
+ const entry = raw;
17211
+ if (typeof entry.command !== "string") return;
17212
+ const def = {
17213
+ type: "command",
17214
+ command: entry.command
17215
+ };
17216
+ if (HERMESAGENT_MATCHER_EVENTS.has(nativeEvent) && typeof entry.matcher === "string" && entry.matcher !== "") def.matcher = entry.matcher;
17217
+ if (typeof entry.timeout === "number") def.timeout = entry.timeout;
17218
+ if (nativeEvent === HERMESAGENT_FAIL_CLOSED_EVENT) {
17219
+ const failClosed = readHermesFailClosed(entry);
17220
+ if (failClosed !== void 0) def.failClosed = failClosed;
17221
+ }
17222
+ return def;
17223
+ }
17224
+ /**
17168
17225
  * Reverse {@link canonicalToHermesHooks}: parse Hermes's native
17169
17226
  * `hooks: { <event>: [...] }` map back into a canonical event → definition[]
17170
17227
  * record. Native events with no canonical equivalent (`pre_verify`,
@@ -17178,19 +17235,10 @@ function hermesHooksToCanonical(hooks) {
17178
17235
  if (PROTOTYPE_POLLUTION_KEYS.has(nativeEvent) || !Array.isArray(entries)) continue;
17179
17236
  if (!isHermesHookEventEntry(nativeEvent, entries)) continue;
17180
17237
  const rulesyncEvent = HERMESAGENT_TO_CANONICAL_EVENT_NAMES[nativeEvent] ?? nativeEvent;
17181
- const defs = [];
17182
- for (const raw of entries) {
17183
- if (raw === null || typeof raw !== "object" || Array.isArray(raw)) continue;
17184
- const entry = raw;
17185
- if (typeof entry.command !== "string") continue;
17186
- const def = {
17187
- type: "command",
17188
- command: entry.command
17189
- };
17190
- if (HERMESAGENT_MATCHER_EVENTS.has(nativeEvent) && typeof entry.matcher === "string" && entry.matcher !== "") def.matcher = entry.matcher;
17191
- if (typeof entry.timeout === "number") def.timeout = entry.timeout;
17192
- defs.push(def);
17193
- }
17238
+ const defs = entries.map((raw) => hermesEntryToDefinition({
17239
+ nativeEvent,
17240
+ raw
17241
+ })).filter((def) => def !== void 0);
17194
17242
  if (defs.length > 0) canonical[rulesyncEvent] = defs;
17195
17243
  }
17196
17244
  return canonical;
@@ -23871,7 +23919,7 @@ function resolveHermesTimeout(config) {
23871
23919
  * alias — `auth` (`oauth` for OAuth 2.1/PKCE), mTLS `client_cert` (string PEM
23872
23920
  * path, or `[cert, key]`/`[cert, key, password]` list) and `client_key`,
23873
23921
  * `connect_timeout` (seconds), `supports_parallel_tool_calls`,
23874
- * `keepalive_interval`, and `elicitation` — verbatim
23922
+ * `keepalive_interval`, `elicitation`, `trust`, and `identity_header` — verbatim
23875
23923
  * from `source` to `target`. Field names are identical on both sides (the
23876
23924
  * canonical `McpServerSchema` is a `looseObject`), so this serves export and
23877
23925
  * import alike. See the Hermes mcp-config-reference.
@@ -23940,6 +23988,14 @@ function copyHermesAdvancedFields(source, target) {
23940
23988
  target.elicitation = omitPrototypePollutionKeys(structuredClone(source.elicitation));
23941
23989
  copied = true;
23942
23990
  }
23991
+ if (typeof source.trust === "string") {
23992
+ target.trust = source.trust;
23993
+ copied = true;
23994
+ }
23995
+ if (isPlainObject$1(source.identity_header)) {
23996
+ target.identity_header = omitPrototypePollutionKeys(structuredClone(source.identity_header));
23997
+ copied = true;
23998
+ }
23943
23999
  return copied;
23944
24000
  }
23945
24001
  /**
@@ -2476,14 +2476,23 @@ const CLINE_HOOK_EVENTS = [
2476
2476
  /**
2477
2477
  * Hook events supported by GitHub Copilot (cloud coding agent).
2478
2478
  *
2479
- * GitHub now documents an eight-event surface for `.github/hooks/*.json`:
2479
+ * The events rulesync writes to `.github/hooks/*.json`:
2480
2480
  * `sessionStart`, `sessionEnd`, `userPromptSubmitted` ← `beforeSubmitPrompt`,
2481
- * `preToolUse`, `postToolUse`, `agentStop` ← `stop`, `subagentStop`, and
2482
- * `errorOccurred` ← `afterError`. `subagentStart` is intentionally absent: it is
2483
- * not part of the documented cloud-agent surface.
2481
+ * `preToolUse`, `postToolUse`, `agentStop` ← `stop`, `subagentStart`,
2482
+ * `subagentStop`, `errorOccurred` ← `afterError`, and `preCompact`.
2484
2483
  *
2485
- * @see https://docs.github.com/en/copilot/concepts/agents/coding-agent/about-hooks
2486
- * @see https://docs.github.com/en/copilot/concepts/agents/hooks
2484
+ * `preCompact` and `subagentStart` are authorable because the unified hooks
2485
+ * reference's per-event "Cloud agent" column says both fire there. That column
2486
+ * is the authority for this set: the older cloud-agent concept page still
2487
+ * lists only the eight events this set began as, and re-narrowing to it would
2488
+ * undo that. `notification` and `permissionRequest` stay out because the same
2489
+ * column is explicit that they do not fire on the cloud agent.
2490
+ *
2491
+ * Two further CLI events — `postToolUseFailure` and `userPromptTransformed`
2492
+ * ({@link COPILOTCLI_HOOK_EVENTS}) — are documented as firing on the cloud
2493
+ * agent as well but are not modelled here yet.
2494
+ *
2495
+ * @see https://docs.github.com/en/copilot/reference/hooks-reference
2487
2496
  */
2488
2497
  const COPILOT_HOOK_EVENTS = [
2489
2498
  "sessionStart",
@@ -2492,8 +2501,10 @@ const COPILOT_HOOK_EVENTS = [
2492
2501
  "preToolUse",
2493
2502
  "postToolUse",
2494
2503
  "stop",
2504
+ "subagentStart",
2495
2505
  "subagentStop",
2496
- "afterError"
2506
+ "afterError",
2507
+ "preCompact"
2497
2508
  ];
2498
2509
  /**
2499
2510
  * Hook events supported by the GitHub Copilot CLI (`copilotcli-hooks.ts`).
@@ -3229,8 +3240,10 @@ const CANONICAL_TO_COPILOT_EVENT_NAMES = {
3229
3240
  preToolUse: "preToolUse",
3230
3241
  postToolUse: "postToolUse",
3231
3242
  stop: "agentStop",
3243
+ subagentStart: "subagentStart",
3232
3244
  subagentStop: "subagentStop",
3233
- afterError: "errorOccurred"
3245
+ afterError: "errorOccurred",
3246
+ preCompact: "preCompact"
3234
3247
  };
3235
3248
  /**
3236
3249
  * Map Copilot camelCase event names to canonical camelCase.
@@ -17045,6 +17058,13 @@ var GrokcliHooks = class GrokcliHooks extends ToolHooks {
17045
17058
  * @see https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/hooks.md
17046
17059
  */
17047
17060
  const HERMESAGENT_MATCHER_EVENTS = /* @__PURE__ */ new Set(["pre_tool_call", "post_tool_call"]);
17061
+ /**
17062
+ * The only Hermes event that can block, and therefore the only one whose
17063
+ * entries accept `fail_closed`. Upstream warns and ignores the key on every
17064
+ * other event ("only blocking-capable events can fail closed").
17065
+ * @see https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/hooks.md
17066
+ */
17067
+ const HERMESAGENT_FAIL_CLOSED_EVENT = "pre_tool_call";
17048
17068
  const HERMESAGENT_CANONICAL_EVENTS = new Set(HERMESAGENT_HOOK_EVENTS);
17049
17069
  const HERMESAGENT_NATIVE_EVENTS = new Set(HERMESAGENT_NATIVE_HOOK_EVENTS);
17050
17070
  /**
@@ -17078,7 +17098,9 @@ function isHermesHookEventEntry(key, value) {
17078
17098
  * unsupported hook types centrally). `matcher` is only carried through for
17079
17099
  * `pre_tool_call`/`post_tool_call`; on any other event it is dropped with a
17080
17100
  * warning, mirroring how other adapters (e.g. AugmentCode) handle
17081
- * matcher-less lifecycle events.
17101
+ * matcher-less lifecycle events. The canonical `failClosed` field (shared with
17102
+ * Cursor, whose semantics Hermes copied) becomes `fail_closed`, which upstream
17103
+ * only honours on `pre_tool_call`.
17082
17104
  */
17083
17105
  function definitionsToHermesEntries({ event, sourceEvent = event, definitions, logger }) {
17084
17106
  const supportsMatcher = HERMESAGENT_MATCHER_EVENTS.has(event);
@@ -17089,6 +17111,10 @@ function definitionsToHermesEntries({ event, sourceEvent = event, definitions, l
17089
17111
  if (typeof definition.matcher === "string" && definition.matcher !== "") if (supportsMatcher) entry.matcher = definition.matcher;
17090
17112
  else logger?.warn(`matcher "${definition.matcher}" on "${sourceEvent}" hook will be ignored — Hermes Agent only supports matchers on pre_tool_call/post_tool_call`);
17091
17113
  if (typeof definition.timeout === "number") entry.timeout = definition.timeout;
17114
+ if (typeof definition.failClosed === "boolean") {
17115
+ if (event === HERMESAGENT_FAIL_CLOSED_EVENT) entry.fail_closed = definition.failClosed;
17116
+ else if (definition.failClosed) logger?.warn(`failClosed on "${sourceEvent}" hook will be ignored — Hermes Agent only supports fail_closed on pre_tool_call`);
17117
+ }
17092
17118
  entries.push(entry);
17093
17119
  }
17094
17120
  return entries;
@@ -17140,6 +17166,37 @@ function canonicalToHermesHooks({ config, toolOverrideHooks, logger }) {
17140
17166
  return result;
17141
17167
  }
17142
17168
  /**
17169
+ * Reads a hook entry's fail-closed flag. Upstream accepts its own `fail_closed`
17170
+ * and the Cursor/Claude Code `failClosed` spelling alike, so both have to be
17171
+ * read back into the single canonical field.
17172
+ */
17173
+ function readHermesFailClosed(entry) {
17174
+ if (typeof entry.fail_closed === "boolean") return entry.fail_closed;
17175
+ if (typeof entry.failClosed === "boolean") return entry.failClosed;
17176
+ }
17177
+ /**
17178
+ * Converts one serialized Hermes hook entry back into a canonical definition,
17179
+ * or `undefined` when it is not a hook rulesync models (no string `command`).
17180
+ * `matcher` and `fail_closed` are read only on the events upstream honours them
17181
+ * on, so an imported value is never one the next generate warns about and drops.
17182
+ */
17183
+ function hermesEntryToDefinition({ nativeEvent, raw }) {
17184
+ if (!isRecord$1(raw)) return;
17185
+ const entry = raw;
17186
+ if (typeof entry.command !== "string") return;
17187
+ const def = {
17188
+ type: "command",
17189
+ command: entry.command
17190
+ };
17191
+ if (HERMESAGENT_MATCHER_EVENTS.has(nativeEvent) && typeof entry.matcher === "string" && entry.matcher !== "") def.matcher = entry.matcher;
17192
+ if (typeof entry.timeout === "number") def.timeout = entry.timeout;
17193
+ if (nativeEvent === HERMESAGENT_FAIL_CLOSED_EVENT) {
17194
+ const failClosed = readHermesFailClosed(entry);
17195
+ if (failClosed !== void 0) def.failClosed = failClosed;
17196
+ }
17197
+ return def;
17198
+ }
17199
+ /**
17143
17200
  * Reverse {@link canonicalToHermesHooks}: parse Hermes's native
17144
17201
  * `hooks: { <event>: [...] }` map back into a canonical event → definition[]
17145
17202
  * record. Native events with no canonical equivalent (`pre_verify`,
@@ -17153,19 +17210,10 @@ function hermesHooksToCanonical(hooks) {
17153
17210
  if (PROTOTYPE_POLLUTION_KEYS.has(nativeEvent) || !Array.isArray(entries)) continue;
17154
17211
  if (!isHermesHookEventEntry(nativeEvent, entries)) continue;
17155
17212
  const rulesyncEvent = HERMESAGENT_TO_CANONICAL_EVENT_NAMES[nativeEvent] ?? nativeEvent;
17156
- const defs = [];
17157
- for (const raw of entries) {
17158
- if (raw === null || typeof raw !== "object" || Array.isArray(raw)) continue;
17159
- const entry = raw;
17160
- if (typeof entry.command !== "string") continue;
17161
- const def = {
17162
- type: "command",
17163
- command: entry.command
17164
- };
17165
- if (HERMESAGENT_MATCHER_EVENTS.has(nativeEvent) && typeof entry.matcher === "string" && entry.matcher !== "") def.matcher = entry.matcher;
17166
- if (typeof entry.timeout === "number") def.timeout = entry.timeout;
17167
- defs.push(def);
17168
- }
17213
+ const defs = entries.map((raw) => hermesEntryToDefinition({
17214
+ nativeEvent,
17215
+ raw
17216
+ })).filter((def) => def !== void 0);
17169
17217
  if (defs.length > 0) canonical[rulesyncEvent] = defs;
17170
17218
  }
17171
17219
  return canonical;
@@ -23846,7 +23894,7 @@ function resolveHermesTimeout(config) {
23846
23894
  * alias — `auth` (`oauth` for OAuth 2.1/PKCE), mTLS `client_cert` (string PEM
23847
23895
  * path, or `[cert, key]`/`[cert, key, password]` list) and `client_key`,
23848
23896
  * `connect_timeout` (seconds), `supports_parallel_tool_calls`,
23849
- * `keepalive_interval`, and `elicitation` — verbatim
23897
+ * `keepalive_interval`, `elicitation`, `trust`, and `identity_header` — verbatim
23850
23898
  * from `source` to `target`. Field names are identical on both sides (the
23851
23899
  * canonical `McpServerSchema` is a `looseObject`), so this serves export and
23852
23900
  * import alike. See the Hermes mcp-config-reference.
@@ -23915,6 +23963,14 @@ function copyHermesAdvancedFields(source, target) {
23915
23963
  target.elicitation = omitPrototypePollutionKeys(structuredClone(source.elicitation));
23916
23964
  copied = true;
23917
23965
  }
23966
+ if (typeof source.trust === "string") {
23967
+ target.trust = source.trust;
23968
+ copied = true;
23969
+ }
23970
+ if (isPlainObject$1(source.identity_header)) {
23971
+ target.identity_header = omitPrototypePollutionKeys(structuredClone(source.identity_header));
23972
+ copied = true;
23973
+ }
23918
23974
  return copied;
23919
23975
  }
23920
23976
  /**
@@ -54666,4 +54722,4 @@ async function importChecksCore(params) {
54666
54722
  //#endregion
54667
54723
  export { JsonLogger as $, RULESYNC_PERMISSIONS_LEGACY_FILE_NAME as $t, RulesyncRuleFrontmatterSchema as A, ALL_TOOL_TARGETS_WITH_WILDCARD as At, RulesyncCheck as B, RULESYNC_CURATED_RULES_RELATIVE_DIR_PATH as Bt, CODEXCLI_DIR as C, removeTempDirectory as Ct, RulesyncSkill as D, writeFileBuffer as Dt, RulesyncSubagentFrontmatterSchema as E, toPosixPath as Et, getRulesyncSourceCandidates as F, RULESYNC_AIIGNORE_RELATIVE_FILE_PATH as Ft, SKILL_FILE_NAME as G, RULESYNC_IGNORE_RELATIVE_FILE_PATH as Gt, stringifyFrontmatter as H, RULESYNC_HOOKS_FILE_NAME as Ht, resolveRulesyncSourceWritePath as I, RULESYNC_CHECKS_RELATIVE_DIR_PATH as It, ConfigFileSchema as J, RULESYNC_MCP_LEGACY_FILE_NAME as Jt, ConfigResolver as K, RULESYNC_LOCAL_CONFIG_RELATIVE_FILE_PATH as Kt, parseJsonc as L, RULESYNC_COMMANDS_RELATIVE_DIR_PATH as Lt, RulesyncMcp as M, ToolTargetSchema as Mt, RulesyncIgnore as N, MAX_FILE_SIZE as Nt, RulesyncSkillFrontmatterSchema as O, writeFileContent as Ot, RulesyncHooks as P, RULESYNC_AIIGNORE_FILE_NAME as Pt, ConsoleLogger as Q, RULESYNC_PERMISSIONS_FILE_NAME as Qt, RulesyncCommand as R, RULESYNC_CONFIG_RELATIVE_FILE_PATH as Rt, CODEXCLI_BASH_RULES_FILE_NAME as S, removeFileStrict as St, RulesyncSubagent as T, runWithDirectoryRollback as Tt, loadYaml as U, RULESYNC_HOOKS_LEGACY_FILE_NAME as Ut, RulesyncCheckFrontmatterSchema as V, RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH as Vt, SHARED_USER_MANAGED_CONFIG_PATHS as W, RULESYNC_HOOKS_RELATIVE_FILE_PATH as Wt, SourceEntrySchema as X, RULESYNC_MCP_SCHEMA_URL as Xt, GITIGNORE_DESTINATION_KEY as Y, RULESYNC_MCP_RELATIVE_FILE_PATH as Yt, findControlCharacter as Z, RULESYNC_NPM_SOURCES_LOCK_RELATIVE_FILE_PATH as Zt, CLAUDECODE_LOCAL_RULE_FILE_NAME as _, readFileContent as _t, convertFromTool as a, RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH as an, assertTreeContainsNoSymlinks as at, CLAUDECODE_SKILLS_DIR_PATH as b, removeDirectoryStrict as bt, SubagentsProcessor as c, ALL_FEATURES_WITH_WILDCARD as cn, createTempDirectory as ct, IgnoreProcessor as d, fileExists as dt, RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH as en, fallbackLogger as et, HooksProcessor as f, findFilesByGlobs as ft, CLAUDECODE_DIR as g, listDirectoryFiles as gt, QWENCODE_LOCAL_RULE_FILE_NAME as h, isSymlink as ht, getProcessorRegistryEntry as i, RULESYNC_SKILLS_RELATIVE_DIR_PATH as in, assertDirectoryIfExists as it, RulesyncPermissions as j, PACKAGING_TOOL_TARGETS as jt, RulesyncRule as k, ALL_TOOL_TARGETS as kt, SkillsProcessor as l, DEPRECATED_FEATURE_REPLACEMENTS as ln, directoryExists as lt, QWENCODE_DIR as m, getHomeDirectory as mt, checkRulesyncDirExists as n, RULESYNC_RELATIVE_DIR_PATH as nn, CLIError as nt, isPackagingToolTarget as o, RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH as on, assertWritablePathInsideRoot as ot, CommandsProcessor as p, getFileSize as pt, CONFLICTING_TARGET_PAIRS as q, RULESYNC_MCP_FILE_NAME as qt, generate as r, RULESYNC_RULES_RELATIVE_DIR_PATH as rn, ErrorCodes as rt, RulesProcessor as s, ALL_FEATURES as sn, checkPathTraversal as st, importFromTool as t, RULESYNC_PERMISSIONS_SCHEMA_URL as tn, warnOnConflictingFlags as tt, McpProcessor as u, formatError as un, ensureDir as ut, CLAUDECODE_MEMORIES_DIR_NAME as v, readFileContentOrNull as vt, getLocalSkillDirNames as w, resolvePath as wt, ChecksProcessor as x, removeFile as xt, CLAUDECODE_SETTINGS_LOCAL_FILE_NAME as y, removeDirectory as yt, RulesyncCommandFrontmatterSchema as z, RULESYNC_CONFIG_SCHEMA_URL as zt };
54668
54724
 
54669
- //# sourceMappingURL=import-CXJwVed1.js.map
54725
+ //# sourceMappingURL=import-Bgkf_jVN.js.map