rulesync 13.0.0 → 14.0.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.
@@ -116,27 +116,28 @@ function formatError(error) {
116
116
  }
117
117
  //#endregion
118
118
  //#region src/constants/rulesync-paths.ts
119
- const { join: join$256 } = node_path.posix;
119
+ const { join: join$257 } = node_path.posix;
120
120
  const RULESYNC_CONFIG_RELATIVE_FILE_PATH = "rulesync.jsonc";
121
121
  const RULESYNC_LOCAL_CONFIG_RELATIVE_FILE_PATH = "rulesync.local.jsonc";
122
122
  const RULESYNC_RELATIVE_DIR_PATH = ".rulesync";
123
- const RULESYNC_RULES_RELATIVE_DIR_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "rules");
124
- const RULESYNC_COMMANDS_RELATIVE_DIR_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "commands");
125
- const RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "subagents");
126
- const RULESYNC_CHECKS_RELATIVE_DIR_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "checks");
127
- const RULESYNC_MCP_RELATIVE_FILE_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "mcp.json");
128
- const RULESYNC_HOOKS_RELATIVE_FILE_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "hooks.json");
129
- const RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "permissions.json");
130
- const RULESYNC_MCP_JSONC_RELATIVE_FILE_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "mcp.jsonc");
131
- const RULESYNC_HOOKS_JSONC_RELATIVE_FILE_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "hooks.jsonc");
132
- const RULESYNC_PERMISSIONS_JSONC_RELATIVE_FILE_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "permissions.jsonc");
123
+ const RULESYNC_RULES_RELATIVE_DIR_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "rules");
124
+ const RULESYNC_COMMANDS_RELATIVE_DIR_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "commands");
125
+ const RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "subagents");
126
+ const RULESYNC_CHECKS_RELATIVE_DIR_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "checks");
127
+ const RULESYNC_MCP_RELATIVE_FILE_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "mcp.json");
128
+ const RULESYNC_HOOKS_RELATIVE_FILE_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "hooks.json");
129
+ const RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "permissions.json");
130
+ const RULESYNC_MCP_JSONC_RELATIVE_FILE_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "mcp.jsonc");
131
+ const RULESYNC_HOOKS_JSONC_RELATIVE_FILE_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "hooks.jsonc");
132
+ const RULESYNC_PERMISSIONS_JSONC_RELATIVE_FILE_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "permissions.jsonc");
133
133
  const RULESYNC_AIIGNORE_FILE_NAME = ".aiignore";
134
- const RULESYNC_AIIGNORE_RELATIVE_FILE_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, ".aiignore");
134
+ const RULESYNC_AIIGNORE_RELATIVE_FILE_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, ".aiignore");
135
135
  const RULESYNC_IGNORE_RELATIVE_FILE_PATH = ".rulesyncignore";
136
136
  const RULESYNC_OVERVIEW_FILE_NAME = "overview.md";
137
- const RULESYNC_SKILLS_RELATIVE_DIR_PATH = join$256(RULESYNC_RELATIVE_DIR_PATH, "skills");
138
- const RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH = join$256(RULESYNC_SKILLS_RELATIVE_DIR_PATH, ".curated");
137
+ const RULESYNC_SKILLS_RELATIVE_DIR_PATH = join$257(RULESYNC_RELATIVE_DIR_PATH, "skills");
138
+ const RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH = join$257(RULESYNC_SKILLS_RELATIVE_DIR_PATH, ".curated");
139
139
  const RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH = "rulesync.lock";
140
+ const RULESYNC_NPM_SOURCES_LOCK_RELATIVE_FILE_PATH = "rulesync-npm.lock.json";
140
141
  const RULESYNC_MCP_FILE_NAME = "mcp.json";
141
142
  const RULESYNC_HOOKS_FILE_NAME = "hooks.json";
142
143
  const RULESYNC_PERMISSIONS_FILE_NAME = "permissions.json";
@@ -369,6 +370,7 @@ const permissionsProcessorToolTargetTuple = [
369
370
  "claudecode",
370
371
  "cline",
371
372
  "codexcli",
373
+ "copilot",
372
374
  "cursor",
373
375
  "devin",
374
376
  "factorydroid",
@@ -880,9 +882,15 @@ const GITIGNORE_DESTINATION_KEY = "gitignoreDestination";
880
882
  const SourceEntrySchema = zod_mini.z.object({
881
883
  source: zod_mini.z.string().check((0, zod_mini.minLength)(1, "source must be a non-empty string")),
882
884
  skills: (0, zod_mini.optional)(zod_mini.z.array(zod_mini.z.string())),
883
- transport: (0, zod_mini.optional)(zod_mini.z.enum(["github", "git"])),
885
+ transport: (0, zod_mini.optional)(zod_mini.z.enum([
886
+ "github",
887
+ "git",
888
+ "npm"
889
+ ])),
884
890
  ref: (0, zod_mini.optional)(zod_mini.z.string().check((0, zod_mini.refine)((v) => !v.startsWith("-"), "ref must not start with \"-\""), (0, zod_mini.refine)((v) => !hasControlCharacters(v), "ref must not contain control characters"))),
885
891
  path: (0, zod_mini.optional)(zod_mini.z.string().check((0, zod_mini.refine)((v) => !v.includes(".."), "path must not contain \"..\""), (0, zod_mini.refine)((v) => !(0, node_path.isAbsolute)(v), "path must not be absolute"), (0, zod_mini.refine)((v) => !hasControlCharacters(v), "path must not contain control characters"))),
892
+ registry: (0, zod_mini.optional)(zod_mini.z.string().check((0, zod_mini.refine)((v) => v.startsWith("https://") || v.startsWith("http://"), "registry must be an http(s) URL"), (0, zod_mini.refine)((v) => !hasControlCharacters(v), "registry must not contain control characters"))),
893
+ tokenEnv: (0, zod_mini.optional)(zod_mini.z.string().check((0, zod_mini.refine)((v) => /^[A-Za-z_][A-Za-z0-9_]*$/.test(v), "tokenEnv must be a valid environment variable name"))),
886
894
  agent: (0, zod_mini.optional)(zod_mini.z.enum([
887
895
  "github-copilot",
888
896
  "claude-code",
@@ -892,7 +900,7 @@ const SourceEntrySchema = zod_mini.z.object({
892
900
  "antigravity"
893
901
  ])),
894
902
  scope: (0, zod_mini.optional)(zod_mini.z.enum(["project", "user"]))
895
- });
903
+ }).check((0, zod_mini.refine)((entry) => entry.registry === void 0 && entry.tokenEnv === void 0 || entry.transport === "npm", "\"registry\" and \"tokenEnv\" are only valid with transport \"npm\""));
896
904
  const ConfigParamsSchema = zod_mini.z.object({
897
905
  outputRoots: zod_mini.z.union([zod_mini.z.array(zod_mini.z.string()), zod_mini.z.record(zod_mini.z.string(), zod_mini.z.union([zod_mini.z.string(), zod_mini.z.array(zod_mini.z.string())]))]),
898
906
  targets: RulesyncConfigTargetsSchema,
@@ -3264,6 +3272,7 @@ const COPILOT_HOOKS_DIR_PATH = (0, node_path.join)(GITHUB_DIR, "hooks");
3264
3272
  const COPILOT_HOOKS_FILE_NAME = "copilot-hooks.json";
3265
3273
  const COPILOT_MCP_DIR = ".vscode";
3266
3274
  const COPILOT_MCP_FILE_NAME = "mcp.json";
3275
+ const COPILOT_VSCODE_SETTINGS_FILE_NAME = "settings.json";
3267
3276
  const COPILOTCLI_MCP_FILE_NAME = "mcp-config.json";
3268
3277
  const COPILOTCLI_PROJECT_MCP_FILE_NAME = "mcp.json";
3269
3278
  const COPILOTCLI_AGENTS_DIR_PATH = (0, node_path.join)(COPILOT_DIR, "agents");
@@ -4670,6 +4679,15 @@ const SHARED_CONFIG_OWNERSHIP = {
4670
4679
  }
4671
4680
  }
4672
4681
  },
4682
+ ".vscode/settings.json": {
4683
+ format: "jsonc",
4684
+ invalidRootPolicy: "error",
4685
+ jsoncParseErrors: "error",
4686
+ features: { permissions: {
4687
+ kind: "replace-owned-keys",
4688
+ ownedKeys: ["chat.tools.terminal.autoApprove"]
4689
+ } }
4690
+ },
4673
4691
  ".qwen/settings.json": {
4674
4692
  format: "json",
4675
4693
  features: {
@@ -6637,7 +6655,8 @@ const HookDefinitionSchema = zod_mini.z.looseObject({
6637
6655
  server: zod_mini.z.optional(safeString),
6638
6656
  tool: zod_mini.z.optional(safeString),
6639
6657
  input: zod_mini.z.optional(zod_mini.z.looseObject({})),
6640
- model: zod_mini.z.optional(safeString)
6658
+ model: zod_mini.z.optional(safeString),
6659
+ if: zod_mini.z.optional(safeString)
6641
6660
  });
6642
6661
  /**
6643
6662
  * All canonical hook event names.
@@ -7697,6 +7716,22 @@ function importBooleanPassthroughFields({ h, converterConfig }) {
7697
7716
  return Object.fromEntries((converterConfig.booleanPassthroughFields ?? []).filter(({ tool }) => typeof h[tool] === "boolean").map(({ canonical, tool }) => [canonical, h[tool]]));
7698
7717
  }
7699
7718
  /**
7719
+ * Emit the configured string passthrough fields on the tool side, mapping each
7720
+ * canonical field name to its (possibly renamed) tool field name. Only non-empty
7721
+ * string values are carried through.
7722
+ */
7723
+ function emitStringPassthroughFields({ def, converterConfig }) {
7724
+ return Object.fromEntries((converterConfig.stringPassthroughFields ?? []).filter(({ canonical }) => typeof def[canonical] === "string" && def[canonical] !== "").map(({ canonical, tool }) => [tool, def[canonical]]));
7725
+ }
7726
+ /**
7727
+ * Import the configured string passthrough fields back into canonical fields,
7728
+ * reversing {@link emitStringPassthroughFields}. Only non-empty string values
7729
+ * are read.
7730
+ */
7731
+ function importStringPassthroughFields({ h, converterConfig }) {
7732
+ return Object.fromEntries((converterConfig.stringPassthroughFields ?? []).filter(({ tool }) => typeof h[tool] === "string" && h[tool] !== "").map(({ canonical, tool }) => [canonical, h[tool]]));
7733
+ }
7734
+ /**
7700
7735
  * Emit the payload fields specific to a hook type — `url`/`headers`/
7701
7736
  * `allowedEnvVars` for http, `server`/`tool`/`input` for mcp_tool, `model`
7702
7737
  * for prompt/agent. https://code.claude.com/docs/en/hooks
@@ -7733,6 +7768,10 @@ function buildToolHooks({ defs, converterConfig }) {
7733
7768
  def,
7734
7769
  converterConfig
7735
7770
  }),
7771
+ ...emitStringPassthroughFields({
7772
+ def,
7773
+ converterConfig
7774
+ }),
7736
7775
  type: hookType,
7737
7776
  ...command !== void 0 && command !== null && { command },
7738
7777
  ...def.timeout !== void 0 && def.timeout !== null && { timeout: def.timeout },
@@ -7873,6 +7912,10 @@ function toolHookToCanonical({ h, rawEntry, converterConfig }) {
7873
7912
  h,
7874
7913
  converterConfig
7875
7914
  }),
7915
+ ...importStringPassthroughFields({
7916
+ h,
7917
+ converterConfig
7918
+ }),
7876
7919
  ...rawEntry.matcher !== void 0 && rawEntry.matcher !== null && rawEntry.matcher !== "" && { matcher: rawEntry.matcher }
7877
7920
  };
7878
7921
  }
@@ -8444,7 +8487,11 @@ const CLAUDE_CONVERTER_CONFIG = {
8444
8487
  "mcp_tool",
8445
8488
  "agent"
8446
8489
  ]),
8447
- emitsPromptModel: true
8490
+ emitsPromptModel: true,
8491
+ stringPassthroughFields: [{
8492
+ canonical: "if",
8493
+ tool: "if"
8494
+ }]
8448
8495
  };
8449
8496
  var ClaudecodeHooks = class ClaudecodeHooks extends ToolHooks {
8450
8497
  constructor(params) {
@@ -18242,6 +18289,7 @@ const PermissionsConfigSchema = zod_mini.z.looseObject({
18242
18289
  kiro: zod_mini.z.optional(KiroPermissionsOverrideSchema),
18243
18290
  codexcli: zod_mini.z.optional(CodexcliPermissionsOverrideSchema),
18244
18291
  "antigravity-ide": zod_mini.z.optional(CanonicalPermissionsOverrideSchema),
18292
+ copilot: zod_mini.z.optional(CanonicalPermissionsOverrideSchema),
18245
18293
  devin: zod_mini.z.optional(CanonicalPermissionsOverrideSchema),
18246
18294
  goose: zod_mini.z.optional(CanonicalPermissionsOverrideSchema),
18247
18295
  grokcli: zod_mini.z.optional(CanonicalPermissionsOverrideSchema),
@@ -20745,6 +20793,135 @@ function mapBashActionToDecision(action) {
20745
20793
  return "forbidden";
20746
20794
  }
20747
20795
  //#endregion
20796
+ //#region src/features/permissions/copilot-permissions.ts
20797
+ /**
20798
+ * The flat, dotted VS Code setting key this adapter manages. VS Code stores
20799
+ * settings with dotted keys flat at the document top level, so this is a single
20800
+ * literal key — not a nested `chat.tools.terminal` path.
20801
+ * @see https://code.visualstudio.com/docs/agents/approvals
20802
+ */
20803
+ const AUTO_APPROVE_KEY = "chat.tools.terminal.autoApprove";
20804
+ /**
20805
+ * The canonical permission category this adapter maps. Only shell/terminal
20806
+ * commands (`bash`) have a clean, high-fidelity representation in VS Code's
20807
+ * `chat.tools.terminal.autoApprove` map; other categories (read/edit/webfetch/
20808
+ * …) have no terminal-command equivalent and are intentionally not mapped.
20809
+ */
20810
+ const TERMINAL_CATEGORY = "bash";
20811
+ function asAutoApproveMap(value) {
20812
+ if (!isPlainObject$1(value)) return {};
20813
+ const result = {};
20814
+ for (const [pattern, flag] of Object.entries(value)) if (typeof flag === "boolean") result[pattern] = flag;
20815
+ return result;
20816
+ }
20817
+ /**
20818
+ * Permissions generator for GitHub Copilot Chat in VS Code.
20819
+ *
20820
+ * VS Code has no standalone, environment-agnostic Copilot policy file (like
20821
+ * `.claude/settings.json`); project-level terminal auto-approvals are managed
20822
+ * through the workspace `chat.tools.terminal.autoApprove` map inside
20823
+ * `.vscode/settings.json`. That file is a general workspace settings file with
20824
+ * many unrelated keys, so reads and writes merge into the existing JSON
20825
+ * (touching only the one managed key) and the file is never deleted.
20826
+ *
20827
+ * Scope is deliberately limited to `chat.tools.terminal.autoApprove` — the one
20828
+ * clean, non-lossy mapping. The canonical `bash` category's per-pattern rules
20829
+ * map as: `allow` → `true` (auto-approve), `deny` → `false` (never approve),
20830
+ * and `ask` → the entry is OMITTED (VS Code then falls through to its default
20831
+ * in-chat approval prompt, i.e. "ask"). Only project scope is modeled: VS Code's
20832
+ * user-scope settings.json lives at a platform-dependent path outside rulesync's
20833
+ * home-relative global model.
20834
+ */
20835
+ var CopilotPermissions = class CopilotPermissions extends ToolPermissions {
20836
+ constructor(params) {
20837
+ super({
20838
+ ...params,
20839
+ fileContent: params.fileContent ?? "{}"
20840
+ });
20841
+ }
20842
+ /**
20843
+ * `.vscode/settings.json` is a user-managed workspace file with unrelated
20844
+ * settings, so it must not be deleted.
20845
+ */
20846
+ isDeletable() {
20847
+ return false;
20848
+ }
20849
+ static getSettablePaths(_options = {}) {
20850
+ return {
20851
+ relativeDirPath: COPILOT_MCP_DIR,
20852
+ relativeFilePath: COPILOT_VSCODE_SETTINGS_FILE_NAME
20853
+ };
20854
+ }
20855
+ static async fromFile({ outputRoot = process.cwd(), validate = true }) {
20856
+ const paths = CopilotPermissions.getSettablePaths();
20857
+ const fileContent = await readFileContentOrNull((0, node_path.join)(outputRoot, paths.relativeDirPath, paths.relativeFilePath)) ?? "{}";
20858
+ return new CopilotPermissions({
20859
+ outputRoot,
20860
+ relativeDirPath: paths.relativeDirPath,
20861
+ relativeFilePath: paths.relativeFilePath,
20862
+ fileContent,
20863
+ validate
20864
+ });
20865
+ }
20866
+ static async fromRulesyncPermissions({ outputRoot = process.cwd(), rulesyncPermissions }) {
20867
+ const paths = CopilotPermissions.getSettablePaths();
20868
+ const filePath = (0, node_path.join)(outputRoot, paths.relativeDirPath, paths.relativeFilePath);
20869
+ const existingContent = await readFileContentOrNull(filePath) ?? "{}";
20870
+ const rules = rulesyncPermissions.getJson().permission[TERMINAL_CATEGORY] ?? {};
20871
+ const autoApprove = {};
20872
+ for (const [pattern, action] of Object.entries(rules)) if (action === "allow") autoApprove[pattern] = true;
20873
+ else if (action === "deny") autoApprove[pattern] = false;
20874
+ const patchValue = Object.keys(autoApprove).length > 0 ? autoApprove : void 0;
20875
+ return new CopilotPermissions({
20876
+ outputRoot,
20877
+ relativeDirPath: paths.relativeDirPath,
20878
+ relativeFilePath: paths.relativeFilePath,
20879
+ fileContent: applySharedConfigPatch({
20880
+ fileKey: sharedConfigFileKey(paths),
20881
+ feature: "permissions",
20882
+ existingContent,
20883
+ patch: { [AUTO_APPROVE_KEY]: patchValue },
20884
+ filePath
20885
+ }),
20886
+ validate: true
20887
+ });
20888
+ }
20889
+ toRulesyncPermissions() {
20890
+ let settings;
20891
+ try {
20892
+ settings = parseSharedConfig({
20893
+ format: "jsonc",
20894
+ fileContent: this.getFileContent() || "{}",
20895
+ filePath: (0, node_path.join)(this.getRelativeDirPath(), this.getRelativeFilePath()),
20896
+ invalidRootPolicy: "error",
20897
+ jsoncParseErrors: "error"
20898
+ });
20899
+ } catch (error) {
20900
+ throw new Error(`Failed to parse Copilot VS Code settings in ${(0, node_path.join)(this.getRelativeDirPath(), this.getRelativeFilePath())}: ${formatError(error)}`, { cause: error });
20901
+ }
20902
+ const autoApprove = asAutoApproveMap(settings[AUTO_APPROVE_KEY]);
20903
+ const rules = {};
20904
+ for (const [pattern, flag] of Object.entries(autoApprove)) rules[pattern] = flag ? "allow" : "deny";
20905
+ const permission = Object.keys(rules).length > 0 ? { [TERMINAL_CATEGORY]: rules } : {};
20906
+ return this.toRulesyncPermissionsDefault({ fileContent: JSON.stringify({ permission }, null, 2) });
20907
+ }
20908
+ validate() {
20909
+ return {
20910
+ success: true,
20911
+ error: null
20912
+ };
20913
+ }
20914
+ static forDeletion({ outputRoot = process.cwd(), relativeDirPath, relativeFilePath }) {
20915
+ return new CopilotPermissions({
20916
+ outputRoot,
20917
+ relativeDirPath,
20918
+ relativeFilePath,
20919
+ fileContent: "{}",
20920
+ validate: false
20921
+ });
20922
+ }
20923
+ };
20924
+ //#endregion
20748
20925
  //#region src/features/permissions/cursor-permissions.ts
20749
20926
  /**
20750
20927
  * Mapping from rulesync canonical tool category names (lowercase) to Cursor CLI
@@ -24635,6 +24812,14 @@ const toolPermissionsFactories = /* @__PURE__ */ new Map([
24635
24812
  supportsImport: true
24636
24813
  }
24637
24814
  }],
24815
+ ["copilot", {
24816
+ class: CopilotPermissions,
24817
+ meta: {
24818
+ supportsProject: true,
24819
+ supportsGlobal: false,
24820
+ supportsImport: true
24821
+ }
24822
+ }],
24638
24823
  ["cursor", {
24639
24824
  class: CursorPermissions,
24640
24825
  meta: {
@@ -31748,7 +31933,6 @@ var CodexCliSubagent = class CodexCliSubagent extends ToolSubagent {
31748
31933
  };
31749
31934
  //#endregion
31750
31935
  //#region src/features/subagents/copilot-subagent.ts
31751
- const REQUIRED_TOOL = "agent/runSubagent";
31752
31936
  const CopilotSubagentFrontmatterSchema = zod_mini.z.looseObject({
31753
31937
  name: zod_mini.z.string(),
31754
31938
  description: zod_mini.z.optional(zod_mini.z.string()),
@@ -31758,10 +31942,6 @@ const normalizeTools = (tools) => {
31758
31942
  if (!tools) return [];
31759
31943
  return Array.isArray(tools) ? tools : [tools];
31760
31944
  };
31761
- const ensureRequiredTool = (tools) => {
31762
- const mergedTools = /* @__PURE__ */ new Set([REQUIRED_TOOL, ...tools]);
31763
- return Array.from(mergedTools);
31764
- };
31765
31945
  const toCopilotAgentFilePath = (relativeFilePath) => {
31766
31946
  if (relativeFilePath.endsWith(".agent.md")) return relativeFilePath;
31767
31947
  if (relativeFilePath.endsWith(".md")) return relativeFilePath.replace(/\.md$/, ".agent.md");
@@ -31815,14 +31995,14 @@ var CopilotSubagent = class CopilotSubagent extends ToolSubagent {
31815
31995
  static fromRulesyncSubagent({ outputRoot = process.cwd(), rulesyncSubagent, validate = true, global = false }) {
31816
31996
  const rulesyncFrontmatter = rulesyncSubagent.getFrontmatter();
31817
31997
  const copilotSection = rulesyncFrontmatter.copilot ?? {};
31998
+ const { tools: _rawTools, ...copilotRest } = copilotSection;
31818
31999
  const toolsField = copilotSection.tools;
31819
32000
  const userTools = normalizeTools(Array.isArray(toolsField) || typeof toolsField === "string" ? toolsField : void 0);
31820
- const mergedTools = ensureRequiredTool(userTools);
31821
32001
  const copilotFrontmatter = {
31822
32002
  name: rulesyncFrontmatter.name,
31823
32003
  description: rulesyncFrontmatter.description,
31824
- ...copilotSection,
31825
- ...mergedTools.length > 0 && { tools: mergedTools }
32004
+ ...copilotRest,
32005
+ ...userTools.length > 0 && { tools: userTools }
31826
32006
  };
31827
32007
  const body = rulesyncSubagent.getBody();
31828
32008
  const fileContent = stringifyFrontmatter(body, copilotFrontmatter);
@@ -41970,6 +42150,12 @@ Object.defineProperty(exports, "RULESYNC_MCP_SCHEMA_URL", {
41970
42150
  return RULESYNC_MCP_SCHEMA_URL;
41971
42151
  }
41972
42152
  });
42153
+ Object.defineProperty(exports, "RULESYNC_NPM_SOURCES_LOCK_RELATIVE_FILE_PATH", {
42154
+ enumerable: true,
42155
+ get: function() {
42156
+ return RULESYNC_NPM_SOURCES_LOCK_RELATIVE_FILE_PATH;
42157
+ }
42158
+ });
41973
42159
  Object.defineProperty(exports, "RULESYNC_OVERVIEW_FILE_NAME", {
41974
42160
  enumerable: true,
41975
42161
  get: function() {
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_import = require("./import-nbmxtKYi.cjs");
2
+ const require_import = require("./import-Dh9PCQKq.cjs");
3
3
  //#region src/index.ts
4
4
  async function generate(options = {}) {
5
5
  const { silent = true, verbose = false, ...rest } = options;
package/dist/index.d.cts CHANGED
@@ -15,7 +15,7 @@ declare const FeatureSchema: z.ZodMiniEnum<{
15
15
  type Feature = z.infer<typeof FeatureSchema>;
16
16
  //#endregion
17
17
  //#region src/types/tool-target-tuples.d.ts
18
- declare const ALL_TOOL_TARGET_TUPLES: readonly [readonly ["agentsmd", "aiassistant", "amp", "antigravity-cli", "antigravity-ide", "augmentcode", "augmentcode-legacy", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "replit", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["aiassistant", "antigravity-cli", "augmentcode", "claudecode", "claudecode-legacy", "cline", "cursor", "goose", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "qwencode", "roo", "devin", "vibe", "warp", "zed"], readonly ["amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "kilo", "kiro", "kiro-cli", "kiro-ide", "junie", "opencode", "qwencode", "reasonix", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["agentsmd", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "cursor", "factorydroid", "goose", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "roo", "rovodev", "takt", "devin"], readonly ["kilo", "agentsmd", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "devin", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kiro", "kiro-cli", "kiro-ide", "opencode", "qwencode", "reasonix", "roo", "rovodev", "takt", "vibe"], readonly ["agentsmd", "agentsskills", "aiassistant", "amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "replit", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["antigravity-cli", "antigravity-ide", "kilo", "cursor", "claudecode", "codexcli", "copilot", "copilotcli", "opencode", "factorydroid", "goose", "hermesagent", "deepagents", "kiro", "kiro-cli", "kiro-ide", "devin", "augmentcode", "junie", "vibe", "qwencode", "reasonix", "grokcli"], readonly ["amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "cline", "codexcli", "cursor", "devin", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "qwencode", "reasonix", "rovodev", "takt", "vibe", "warp", "zed"], readonly ["amp"]];
18
+ declare const ALL_TOOL_TARGET_TUPLES: readonly [readonly ["agentsmd", "aiassistant", "amp", "antigravity-cli", "antigravity-ide", "augmentcode", "augmentcode-legacy", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "replit", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["aiassistant", "antigravity-cli", "augmentcode", "claudecode", "claudecode-legacy", "cline", "cursor", "goose", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "qwencode", "roo", "devin", "vibe", "warp", "zed"], readonly ["amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "kilo", "kiro", "kiro-cli", "kiro-ide", "junie", "opencode", "qwencode", "reasonix", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["agentsmd", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "cursor", "factorydroid", "goose", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "roo", "rovodev", "takt", "devin"], readonly ["kilo", "agentsmd", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "devin", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kiro", "kiro-cli", "kiro-ide", "opencode", "qwencode", "reasonix", "roo", "rovodev", "takt", "vibe"], readonly ["agentsmd", "agentsskills", "aiassistant", "amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "replit", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["antigravity-cli", "antigravity-ide", "kilo", "cursor", "claudecode", "codexcli", "copilot", "copilotcli", "opencode", "factorydroid", "goose", "hermesagent", "deepagents", "kiro", "kiro-cli", "kiro-ide", "devin", "augmentcode", "junie", "vibe", "qwencode", "reasonix", "grokcli"], readonly ["amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "cline", "codexcli", "copilot", "cursor", "devin", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "qwencode", "reasonix", "rovodev", "takt", "vibe", "warp", "zed"], readonly ["amp"]];
19
19
  //#endregion
20
20
  //#region src/types/tool-targets.d.ts
21
21
  type AllToolTarget = (typeof ALL_TOOL_TARGET_TUPLES)[number][number];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types/features.ts","../src/types/tool-target-tuples.ts","../src/types/tool-targets.ts","../src/lib/convert.ts","../src/types/ai-dir.ts","../src/features/skills/rulesync-skill.ts","../src/lib/generate.ts","../src/lib/import.ts","../src/index.ts"],"mappings":";;cAEa;cAcP,eAAa,EAAA;;;;;;;;;;;KAEP,UAAU,EAAE,aAAa;;;cC4OxB;;;KCpPR,wBAAwB;cAEhB,4BAA4B,kBAAkB;cAM9C,kBAAgB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEjB,aAAa,EAAE,aAAa;;;KCN5B;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;KCnBU;EAEN;EACA;;EAGA;EACA,OAAO;;KAGD;EACV;EACA,YAAY;;KAGF;EACV;EACA;EACA;EACA;IACE;IACA;IACA,cAAc;;EAEhB,aAAa;EACb;;KAGU,qBAAqB,KAC/B;uBAIoB;;;;qBAID;;;;qBAKA;;;;qBAKA;;;;YAKT;IACR;IACA;IACA,cAAc;;;;;YAMN,YAAY;;;;qBAKH;EAEnB,cACE,YACA,iBACA,SACA,UACA,YACA,UACC;SAcU,QAAQ,SAAS,qBAAqB,QAAQ;EAI3D;EAIA;EAIA;EAIA;EAqBA;IAEM;IACA;IACA,cAAc;;EAMpB,iBAAiB;;;;EAOjB;EAIA;EAIA,YAAY,cAAc,cAAc,cAAc;;;;;;;;;;;mBAc/B,kBACrB,oBACA,yBACA,iBACA,0BACC,QAAQ;WAmBF,YAAY;;;;cCrLjB,wCAAsC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8LhC;EACV;EACA;EACA;EACA;EACA;EACA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ;IACR;IACA;IACA;IACA;IACA;;EAEF;IACE;IACA;MACE;MACA;MACA;MACA;MACA;MACA;;IAEF;MACE;;IAEF;MACE,QAAQ;QACN;QACA;QACA;QACA;QACA;;;;EAIN;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;;EAEF;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;IACA;;EAEF;IACE;IACA;IACA;;EAEF;IACE;IACA;IACA;IACA,gBAAgB;IAChB,WAAW;;EAEb;IACE;;EAEF;IACE;IACA;IACA,gBAAgB;IAChB,WAAW;;EAEb,MAAM;EACN,QAAQ;EACR;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;IACA;IACA,WAAW;;EAEb;IACE;IACA;;EAEF;IACE;IACA,yBAAyB;IACzB,WAAW;IACX;;EAEF;IACE;IACA,yBAAyB;IACzB,WAAW;IACX;IACA;;EAEF;IACE;IACA;;;KAKQ,2BAA2B,EAAE,aAAa;KAO1C;EACV;EACA;EACA;EACA,aAAa;EACb;EACA,aAAa;EACb;EACA;;KAGU;EACV;;KAGU;EACV;EACA;EACA;EACA;;;;;;cAOW,sBAAsB;EACjC,cACE,YACA,iBACA,SACA,aACA,MACA,YACA,UACA,UACC;SAsBI,oBAAoB;EAU3B,kBAAkB;EAQlB;EAIA,YAAY;SAcC,UACX,YACA,iBACA,SACA,UACC,6BAA6B,QAAQ;;;;KChZ9B;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;;;;KCPU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;KCjCG;EACH;EACA;EACA;EACA;;KAGU,kBAAkB;EAC5B,UAAU;EACV,WAAW;EACX;;;;;;;EAOA;EACA;EACA;EACA;EACA;EACA;EACA;;KAGU,gBAAgB;EAC1B,QAAQ;EACR,WAAW;;KAGD,iBAAiB;EAC3B,MAAM;EACN,IAAI;EACJ,WAAW;EACX;;iBAGoB,SAAS,UAAS,kBAAuB,QAAQ;iBAqBjD,eAAe,SAAS,gBAAgB,QAAQ;iBAehD,gBAAgB,SAAS,iBAAiB,QAAQ"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types/features.ts","../src/types/tool-target-tuples.ts","../src/types/tool-targets.ts","../src/lib/convert.ts","../src/types/ai-dir.ts","../src/features/skills/rulesync-skill.ts","../src/lib/generate.ts","../src/lib/import.ts","../src/index.ts"],"mappings":";;cAEa;cAcP,eAAa,EAAA;;;;;;;;;;;KAEP,UAAU,EAAE,aAAa;;;cC6OxB;;;KCrPR,wBAAwB;cAEhB,4BAA4B,kBAAkB;cAM9C,kBAAgB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEjB,aAAa,EAAE,aAAa;;;KCN5B;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;KCnBU;EAEN;EACA;;EAGA;EACA,OAAO;;KAGD;EACV;EACA,YAAY;;KAGF;EACV;EACA;EACA;EACA;IACE;IACA;IACA,cAAc;;EAEhB,aAAa;EACb;;KAGU,qBAAqB,KAC/B;uBAIoB;;;;qBAID;;;;qBAKA;;;;qBAKA;;;;YAKT;IACR;IACA;IACA,cAAc;;;;;YAMN,YAAY;;;;qBAKH;EAEnB,cACE,YACA,iBACA,SACA,UACA,YACA,UACC;SAcU,QAAQ,SAAS,qBAAqB,QAAQ;EAI3D;EAIA;EAIA;EAIA;EAqBA;IAEM;IACA;IACA,cAAc;;EAMpB,iBAAiB;;;;EAOjB;EAIA;EAIA,YAAY,cAAc,cAAc,cAAc;;;;;;;;;;;mBAc/B,kBACrB,oBACA,yBACA,iBACA,0BACC,QAAQ;WAmBF,YAAY;;;;cCrLjB,wCAAsC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8LhC;EACV;EACA;EACA;EACA;EACA;EACA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ;IACR;IACA;IACA;IACA;IACA;;EAEF;IACE;IACA;MACE;MACA;MACA;MACA;MACA;MACA;;IAEF;MACE;;IAEF;MACE,QAAQ;QACN;QACA;QACA;QACA;QACA;;;;EAIN;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;;EAEF;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;IACA;;EAEF;IACE;IACA;IACA;;EAEF;IACE;IACA;IACA;IACA,gBAAgB;IAChB,WAAW;;EAEb;IACE;;EAEF;IACE;IACA;IACA,gBAAgB;IAChB,WAAW;;EAEb,MAAM;EACN,QAAQ;EACR;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;IACA;IACA,WAAW;;EAEb;IACE;IACA;;EAEF;IACE;IACA,yBAAyB;IACzB,WAAW;IACX;;EAEF;IACE;IACA,yBAAyB;IACzB,WAAW;IACX;IACA;;EAEF;IACE;IACA;;;KAKQ,2BAA2B,EAAE,aAAa;KAO1C;EACV;EACA;EACA;EACA,aAAa;EACb;EACA,aAAa;EACb;EACA;;KAGU;EACV;;KAGU;EACV;EACA;EACA;EACA;;;;;;cAOW,sBAAsB;EACjC,cACE,YACA,iBACA,SACA,aACA,MACA,YACA,UACA,UACC;SAsBI,oBAAoB;EAU3B,kBAAkB;EAQlB;EAIA,YAAY;SAcC,UACX,YACA,iBACA,SACA,UACC,6BAA6B,QAAQ;;;;KChZ9B;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;;;;KCPU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;KCjCG;EACH;EACA;EACA;EACA;;KAGU,kBAAkB;EAC5B,UAAU;EACV,WAAW;EACX;;;;;;;EAOA;EACA;EACA;EACA;EACA;EACA;EACA;;KAGU,gBAAgB;EAC1B,QAAQ;EACR,WAAW;;KAGD,iBAAiB;EAC3B,MAAM;EACN,IAAI;EACJ,WAAW;EACX;;iBAGoB,SAAS,UAAS,kBAAuB,QAAQ;iBAqBjD,eAAe,SAAS,gBAAgB,QAAQ;iBAehD,gBAAgB,SAAS,iBAAiB,QAAQ"}
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ declare const FeatureSchema: z.ZodMiniEnum<{
15
15
  type Feature = z.infer<typeof FeatureSchema>;
16
16
  //#endregion
17
17
  //#region src/types/tool-target-tuples.d.ts
18
- declare const ALL_TOOL_TARGET_TUPLES: readonly [readonly ["agentsmd", "aiassistant", "amp", "antigravity-cli", "antigravity-ide", "augmentcode", "augmentcode-legacy", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "replit", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["aiassistant", "antigravity-cli", "augmentcode", "claudecode", "claudecode-legacy", "cline", "cursor", "goose", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "qwencode", "roo", "devin", "vibe", "warp", "zed"], readonly ["amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "kilo", "kiro", "kiro-cli", "kiro-ide", "junie", "opencode", "qwencode", "reasonix", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["agentsmd", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "cursor", "factorydroid", "goose", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "roo", "rovodev", "takt", "devin"], readonly ["kilo", "agentsmd", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "devin", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kiro", "kiro-cli", "kiro-ide", "opencode", "qwencode", "reasonix", "roo", "rovodev", "takt", "vibe"], readonly ["agentsmd", "agentsskills", "aiassistant", "amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "replit", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["antigravity-cli", "antigravity-ide", "kilo", "cursor", "claudecode", "codexcli", "copilot", "copilotcli", "opencode", "factorydroid", "goose", "hermesagent", "deepagents", "kiro", "kiro-cli", "kiro-ide", "devin", "augmentcode", "junie", "vibe", "qwencode", "reasonix", "grokcli"], readonly ["amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "cline", "codexcli", "cursor", "devin", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "qwencode", "reasonix", "rovodev", "takt", "vibe", "warp", "zed"], readonly ["amp"]];
18
+ declare const ALL_TOOL_TARGET_TUPLES: readonly [readonly ["agentsmd", "aiassistant", "amp", "antigravity-cli", "antigravity-ide", "augmentcode", "augmentcode-legacy", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "replit", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["aiassistant", "antigravity-cli", "augmentcode", "claudecode", "claudecode-legacy", "cline", "cursor", "goose", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "qwencode", "roo", "devin", "vibe", "warp", "zed"], readonly ["amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "kilo", "kiro", "kiro-cli", "kiro-ide", "junie", "opencode", "qwencode", "reasonix", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["agentsmd", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "cursor", "factorydroid", "goose", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "roo", "rovodev", "takt", "devin"], readonly ["kilo", "agentsmd", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "devin", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kiro", "kiro-cli", "kiro-ide", "opencode", "qwencode", "reasonix", "roo", "rovodev", "takt", "vibe"], readonly ["agentsmd", "agentsskills", "aiassistant", "amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "claudecode-legacy", "cline", "codexcli", "copilot", "copilotcli", "cursor", "deepagents", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "pi", "qwencode", "reasonix", "replit", "roo", "rovodev", "takt", "vibe", "warp", "devin", "zed"], readonly ["antigravity-cli", "antigravity-ide", "kilo", "cursor", "claudecode", "codexcli", "copilot", "copilotcli", "opencode", "factorydroid", "goose", "hermesagent", "deepagents", "kiro", "kiro-cli", "kiro-ide", "devin", "augmentcode", "junie", "vibe", "qwencode", "reasonix", "grokcli"], readonly ["amp", "antigravity-cli", "antigravity-ide", "augmentcode", "claudecode", "cline", "codexcli", "copilot", "cursor", "devin", "factorydroid", "goose", "grokcli", "hermesagent", "junie", "kilo", "kiro", "kiro-cli", "kiro-ide", "opencode", "qwencode", "reasonix", "rovodev", "takt", "vibe", "warp", "zed"], readonly ["amp"]];
19
19
  //#endregion
20
20
  //#region src/types/tool-targets.d.ts
21
21
  type AllToolTarget = (typeof ALL_TOOL_TARGET_TUPLES)[number][number];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/features.ts","../src/types/tool-target-tuples.ts","../src/types/tool-targets.ts","../src/lib/convert.ts","../src/types/ai-dir.ts","../src/features/skills/rulesync-skill.ts","../src/lib/generate.ts","../src/lib/import.ts","../src/index.ts"],"mappings":";;cAEa;cAcP,eAAa,EAAA;;;;;;;;;;;KAEP,UAAU,EAAE,aAAa;;;cC4OxB;;;KCpPR,wBAAwB;cAEhB,4BAA4B,kBAAkB;cAM9C,kBAAgB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEjB,aAAa,EAAE,aAAa;;;KCN5B;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;KCnBU;EAEN;EACA;;EAGA;EACA,OAAO;;KAGD;EACV;EACA,YAAY;;KAGF;EACV;EACA;EACA;EACA;IACE;IACA;IACA,cAAc;;EAEhB,aAAa;EACb;;KAGU,qBAAqB,KAC/B;uBAIoB;;;;qBAID;;;;qBAKA;;;;qBAKA;;;;YAKT;IACR;IACA;IACA,cAAc;;;;;YAMN,YAAY;;;;qBAKH;EAEnB,cACE,YACA,iBACA,SACA,UACA,YACA,UACC;SAcU,QAAQ,SAAS,qBAAqB,QAAQ;EAI3D;EAIA;EAIA;EAIA;EAqBA;IAEM;IACA;IACA,cAAc;;EAMpB,iBAAiB;;;;EAOjB;EAIA;EAIA,YAAY,cAAc,cAAc,cAAc;;;;;;;;;;;mBAc/B,kBACrB,oBACA,yBACA,iBACA,0BACC,QAAQ;WAmBF,YAAY;;;;cCrLjB,wCAAsC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8LhC;EACV;EACA;EACA;EACA;EACA;EACA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ;IACR;IACA;IACA;IACA;IACA;;EAEF;IACE;IACA;MACE;MACA;MACA;MACA;MACA;MACA;;IAEF;MACE;;IAEF;MACE,QAAQ;QACN;QACA;QACA;QACA;QACA;;;;EAIN;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;;EAEF;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;IACA;;EAEF;IACE;IACA;IACA;;EAEF;IACE;IACA;IACA;IACA,gBAAgB;IAChB,WAAW;;EAEb;IACE;;EAEF;IACE;IACA;IACA,gBAAgB;IAChB,WAAW;;EAEb,MAAM;EACN,QAAQ;EACR;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;IACA;IACA,WAAW;;EAEb;IACE;IACA;;EAEF;IACE;IACA,yBAAyB;IACzB,WAAW;IACX;;EAEF;IACE;IACA,yBAAyB;IACzB,WAAW;IACX;IACA;;EAEF;IACE;IACA;;;KAKQ,2BAA2B,EAAE,aAAa;KAO1C;EACV;EACA;EACA;EACA,aAAa;EACb;EACA,aAAa;EACb;EACA;;KAGU;EACV;;KAGU;EACV;EACA;EACA;EACA;;;;;;cAOW,sBAAsB;EACjC,cACE,YACA,iBACA,SACA,aACA,MACA,YACA,UACA,UACC;SAsBI,oBAAoB;EAU3B,kBAAkB;EAQlB;EAIA,YAAY;SAcC,UACX,YACA,iBACA,SACA,UACC,6BAA6B,QAAQ;;;;KChZ9B;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;;;;KCPU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;KCjCG;EACH;EACA;EACA;EACA;;KAGU,kBAAkB;EAC5B,UAAU;EACV,WAAW;EACX;;;;;;;EAOA;EACA;EACA;EACA;EACA;EACA;EACA;;KAGU,gBAAgB;EAC1B,QAAQ;EACR,WAAW;;KAGD,iBAAiB;EAC3B,MAAM;EACN,IAAI;EACJ,WAAW;EACX;;iBAGoB,SAAS,UAAS,kBAAuB,QAAQ;iBAqBjD,eAAe,SAAS,gBAAgB,QAAQ;iBAehD,gBAAgB,SAAS,iBAAiB,QAAQ"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/features.ts","../src/types/tool-target-tuples.ts","../src/types/tool-targets.ts","../src/lib/convert.ts","../src/types/ai-dir.ts","../src/features/skills/rulesync-skill.ts","../src/lib/generate.ts","../src/lib/import.ts","../src/index.ts"],"mappings":";;cAEa;cAcP,eAAa,EAAA;;;;;;;;;;;KAEP,UAAU,EAAE,aAAa;;;cC6OxB;;;KCrPR,wBAAwB;cAEhB,4BAA4B,kBAAkB;cAM9C,kBAAgB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEjB,aAAa,EAAE,aAAa;;;KCN5B;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;KCnBU;EAEN;EACA;;EAGA;EACA,OAAO;;KAGD;EACV;EACA,YAAY;;KAGF;EACV;EACA;EACA;EACA;IACE;IACA;IACA,cAAc;;EAEhB,aAAa;EACb;;KAGU,qBAAqB,KAC/B;uBAIoB;;;;qBAID;;;;qBAKA;;;;qBAKA;;;;YAKT;IACR;IACA;IACA,cAAc;;;;;YAMN,YAAY;;;;qBAKH;EAEnB,cACE,YACA,iBACA,SACA,UACA,YACA,UACC;SAcU,QAAQ,SAAS,qBAAqB,QAAQ;EAI3D;EAIA;EAIA;EAIA;EAqBA;IAEM;IACA;IACA,cAAc;;EAMpB,iBAAiB;;;;EAOjB;EAIA;EAIA,YAAY,cAAc,cAAc,cAAc;;;;;;;;;;;mBAc/B,kBACrB,oBACA,yBACA,iBACA,0BACC,QAAQ;WAmBF,YAAY;;;;cCrLjB,wCAAsC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8LhC;EACV;EACA;EACA;EACA;EACA;EACA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,QAAQ;IACR;IACA;IACA;IACA;IACA;;EAEF;IACE;IACA;MACE;MACA;MACA;MACA;MACA;MACA;;IAEF;MACE;;IAEF;MACE,QAAQ;QACN;QACA;QACA;QACA;QACA;;;;EAIN;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;;EAEF;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;IACA;;EAEF;IACE;IACA;IACA;;EAEF;IACE;IACA;IACA;IACA,gBAAgB;IAChB,WAAW;;EAEb;IACE;;EAEF;IACE;IACA;IACA,gBAAgB;IAChB,WAAW;;EAEb,MAAM;EACN,QAAQ;EACR;IACE;IACA;IACA,yBAAyB;IACzB,WAAW;;EAEb;IACE;IACA;IACA,WAAW;;EAEb;IACE;IACA;;EAEF;IACE;IACA,yBAAyB;IACzB,WAAW;IACX;;EAEF;IACE;IACA,yBAAyB;IACzB,WAAW;IACX;IACA;;EAEF;IACE;IACA;;;KAKQ,2BAA2B,EAAE,aAAa;KAO1C;EACV;EACA;EACA;EACA,aAAa;EACb;EACA,aAAa;EACb;EACA;;KAGU;EACV;;KAGU;EACV;EACA;EACA;EACA;;;;;;cAOW,sBAAsB;EACjC,cACE,YACA,iBACA,SACA,aACA,MACA,YACA,UACA,UACC;SAsBI,oBAAoB;EAU3B,kBAAkB;EAQlB;EAIA,YAAY;SAcC,UACX,YACA,iBACA,SACA,UACC,6BAA6B,QAAQ;;;;KChZ9B;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;;;;KCPU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;KCjCG;EACH;EACA;EACA;EACA;;KAGU,kBAAkB;EAC5B,UAAU;EACV,WAAW;EACX;;;;;;;EAOA;EACA;EACA;EACA;EACA;EACA;EACA;;KAGU,gBAAgB;EAC1B,QAAQ;EACR,WAAW;;KAGD,iBAAiB;EAC3B,MAAM;EACN,IAAI;EACJ,WAAW;EACX;;iBAGoB,SAAS,UAAS,kBAAuB,QAAQ;iBAqBjD,eAAe,SAAS,gBAAgB,QAAQ;iBAehD,gBAAgB,SAAS,iBAAiB,QAAQ"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Rt as ALL_FEATURES, V as ConsoleLogger, a as convertFromTool$1, n as checkRulesyncDirExists, r as generate$1, st as ALL_TOOL_TARGETS, t as importFromTool$1, z as ConfigResolver } from "./import-CMSHVMqU.js";
1
+ import { V as ConsoleLogger, a as convertFromTool$1, n as checkRulesyncDirExists, r as generate$1, st as ALL_TOOL_TARGETS, t as importFromTool$1, z as ConfigResolver, zt as ALL_FEATURES } from "./import-CSnC5vl7.js";
2
2
  //#region src/index.ts
3
3
  async function generate(options = {}) {
4
4
  const { silent = true, verbose = false, ...rest } = options;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rulesync",
3
- "version": "13.0.0",
3
+ "version": "14.0.0",
4
4
  "description": "Unified AI rules management CLI tool that generates configuration files for various AI development tools",
5
5
  "keywords": [
6
6
  "ai",