rulesync 15.1.0 → 16.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -94,10 +94,10 @@ The tables below show whether each tool supports a given feature (✅ = supporte
94
94
  | Codex CLI | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
95
95
  | GitHub Copilot | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
96
96
  | GitHub Copilot CLI | ✅ | | ✅ | | ✅ | ✅ | ✅ | | |
97
- | Goose | ✅ || ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
97
+ | Goose | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
98
98
  | Hermes Agent | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
99
99
  | Grok CLI | ✅ | | ✅ | | ✅ | ✅ | ✅ | ✅ | |
100
- | Cursor | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
100
+ | Cursor | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ ||
101
101
  | deepagents-cli | ✅ | | ✅ | | ✅ | ✅ | ✅ | | |
102
102
  | Factory Droid | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
103
103
  | OpenCode | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
@@ -106,21 +106,21 @@ The tables below show whether each tool supports a given feature (✅ = supporte
106
106
  | Kimi Code | ✅ | | ✅ | | ✅ | ✅ | ✅ | ✅ | |
107
107
  | Roo Code | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | | |
108
108
  | Rovodev (Atlassian) | ✅ | | ✅ | ✅ | ✅ | ✅ | | ✅ | |
109
- | Takt | ✅ | | ✅ | ✅ | ✅ | ✅ | | ✅ | |
109
+ | Takt | ✅ | | ✅ | ✅ | ✅ | ✅ | | ✅ ||
110
110
  | Vibe Code | ✅ | ✅ | ✅ | | ✅ | ✅ | ✅ | ✅ | |
111
111
  | Qwen Code | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
112
112
  | Reasonix | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
113
113
  | Kiro ⚠️ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
114
114
  | Kiro CLI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
115
115
  | Kiro IDE | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
116
- | Google Antigravity IDE | ✅ | | ✅ | ✅ | | ✅ | ✅ | ✅ | |
117
- | Google Antigravity CLI | ✅ | ✅ | ✅ | ✅ | | ✅ | ✅ | ✅ | |
118
- | Google Antigravity plugin | ✅ | | ✅ | | | ✅ | ✅ | | |
116
+ | Google Antigravity IDE | ✅ | | ✅ | ✅ || ✅ | ✅ | ✅ | |
117
+ | Google Antigravity CLI | ✅ | ✅ | ✅ | ✅ || ✅ | ✅ | ✅ | |
118
+ | Google Antigravity plugin | ✅ | | ✅ | || ✅ | ✅ | | |
119
119
  | JetBrains AI Assistant | ✅ | ✅ | ✅ | | | ✅ | | | |
120
120
  | JetBrains Junie | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
121
121
  | AugmentCode | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
122
122
  | Devin Desktop | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
123
- | Warp | ✅ | ✅ | ✅ | | | ✅ | | ✅ | |
123
+ | Warp | ✅ | ✅ | ✅ || | ✅ | | ✅ | |
124
124
  | Replit | ✅ | | | | | ✅ | | | |
125
125
  | Pi Coding Agent | ✅ | | | ✅ | | ✅ | ✅ | | |
126
126
  | Zed | ✅ | ✅ | ✅ | | | ✅ | | ✅ | |
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const require_import = require("../import-CVk4I0-A.cjs");
2
+ const require_import = require("../import-eG7fZPXI.cjs");
3
3
  let commander = require("commander");
4
4
  let zod_mini = require("zod/mini");
5
5
  let node_fs_promises = require("node:fs/promises");
@@ -246,6 +246,16 @@ function singletonTemplate(feature) {
246
246
  "mcp"
247
247
  ],
248
248
  "env": {}
249
+ },
250
+ "playwright": {
251
+ "type": "stdio",
252
+ "command": "pnpm",
253
+ "args": [
254
+ "dlx",
255
+ "@playwright/mcp",
256
+ "--headless"
257
+ ],
258
+ "env": {}
249
259
  }
250
260
  }
251
261
  }
@@ -4557,24 +4567,7 @@ const TARGETS_NOT_DERIVED = /* @__PURE__ */ new Set([
4557
4567
  "augmentcode-legacy",
4558
4568
  "claudecode-legacy"
4559
4569
  ]);
4560
- const DERIVED_PATHS_NOT_GITIGNORED = /* @__PURE__ */ new Set([
4561
- "**/.amp/settings.json",
4562
- "**/.amp/settings.jsonc",
4563
- "**/.antigravity/settings.json",
4564
- "**/.claude/settings.json",
4565
- "**/.claude/settings.local.json",
4566
- "**/.codex/config.toml",
4567
- "**/.devin/config.json",
4568
- "**/.factory/settings.json",
4569
- "**/.grok/config.toml",
4570
- "**/.vibe/config.toml",
4571
- "**/reasonix.toml",
4572
- "**/.vscode/settings.json",
4573
- "**/.zed/settings.json",
4574
- "**/kilo.json",
4575
- "**/kilo.jsonc",
4576
- "**/opencode.json"
4577
- ]);
4570
+ const DERIVED_PATHS_NOT_GITIGNORED = new Set(require_import.SHARED_USER_MANAGED_CONFIG_PATHS.map((path) => `**/${path}`));
4578
4571
  const toPosix = (path) => path.replace(/\\/g, "/");
4579
4572
  const dirToGlob = (relativeDirPath) => `**/${toPosix(relativeDirPath).replace(/\/$/, "")}/`;
4580
4573
  const fileToGlob = (relativeDirPath, relativeFilePath) => {
@@ -4597,8 +4590,13 @@ const deriveDirEntries = (factories, feature) => {
4597
4590
  for (const [target, factory] of factories) {
4598
4591
  if (TARGETS_NOT_DERIVED.has(target)) continue;
4599
4592
  if (!supportsProject(factory)) continue;
4600
- const dir = getProjectPaths(factory).relativeDirPath;
4593
+ const paths = getProjectPaths(factory);
4594
+ const dir = paths.relativeDirPath;
4601
4595
  if (!dir || dir === ".") continue;
4596
+ if (paths.relativeFilePath) {
4597
+ pushEntry(entries, target, feature, fileToGlob(dir, paths.relativeFilePath));
4598
+ continue;
4599
+ }
4602
4600
  pushEntry(entries, target, feature, dirToGlob(dir));
4603
4601
  }
4604
4602
  return entries;
@@ -4762,6 +4760,21 @@ const GITIGNORE_ENTRY_REGISTRY = [
4762
4760
  feature: "rules",
4763
4761
  entry: "**/.junie/memories/"
4764
4762
  },
4763
+ {
4764
+ target: "goose",
4765
+ feature: "ignore",
4766
+ entry: "**/.gooseignore"
4767
+ },
4768
+ {
4769
+ target: "goose",
4770
+ feature: "subagents",
4771
+ entry: "**/.goose/recipes/subagents/"
4772
+ },
4773
+ {
4774
+ target: "junie",
4775
+ feature: "permissions",
4776
+ entry: "**/.junie/allowlist.json"
4777
+ },
4765
4778
  {
4766
4779
  target: "rovodev",
4767
4780
  feature: "skills",
@@ -8991,7 +9004,7 @@ function wrapCommand$1({ name, errorCode, handler, getVersion, loggerFactory = c
8991
9004
  }
8992
9005
  //#endregion
8993
9006
  //#region src/cli/program.ts
8994
- const getVersion = () => "15.1.0";
9007
+ const getVersion = () => "16.1.0";
8995
9008
  const FEATURES_HELP = `${require_import.ALL_FEATURES.join(",")}; ignore is deprecated, use permissions`;
8996
9009
  function wrapCommand(name, errorCode, handler) {
8997
9010
  return wrapCommand$1({
package/dist/cli/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { $ as assertDirectoryIfExists, $t as RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH, A as RulesyncMcp, At as RULESYNC_CHECKS_RELATIVE_DIR_PATH, B as stringifyFrontmatter, Bt as RULESYNC_LOCAL_CONFIG_RELATIVE_FILE_PATH, C as RulesyncSubagent, Ct as ALL_TOOL_TARGETS, D as RulesyncRule, Dt as MAX_FILE_SIZE, E as RulesyncSkillFrontmatterSchema, Et as ToolTargetSchema, F as parseJsonc, Ft as RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH, G as SourceEntrySchema, Gt as RULESYNC_NPM_SOURCES_LOCK_RELATIVE_FILE_PATH, H as SKILL_FILE_NAME$1, Ht as RULESYNC_MCP_LEGACY_FILE_NAME, I as RulesyncCommand, It as RULESYNC_HOOKS_FILE_NAME, J as JsonLogger, Jt as RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH, K as findControlCharacter, Kt as RULESYNC_PERMISSIONS_FILE_NAME, L as RulesyncCommandFrontmatterSchema, Lt as RULESYNC_HOOKS_LEGACY_FILE_NAME, M as RulesyncHooks, Mt as RULESYNC_CONFIG_RELATIVE_FILE_PATH, N as getRulesyncSourceCandidates, Nt as RULESYNC_CONFIG_SCHEMA_URL, O as RulesyncRuleFrontmatterSchema, Ot as RULESYNC_AIIGNORE_FILE_NAME, P as resolveRulesyncSourceWritePath, Pt as RULESYNC_CURATED_RULES_RELATIVE_DIR_PATH, Q as ErrorCodes, Qt as RULESYNC_SKILLS_RELATIVE_DIR_PATH, R as RulesyncCheck, Rt as RULESYNC_HOOKS_RELATIVE_FILE_PATH, S as getLocalSkillDirNames, St as writeFileContent, T as RulesyncSkill, Tt as PACKAGING_TOOL_TARGETS, U as ConfigResolver, Ut as RULESYNC_MCP_RELATIVE_FILE_PATH, V as loadYaml, Vt as RULESYNC_MCP_FILE_NAME, W as ConfigFileSchema, Wt as RULESYNC_MCP_SCHEMA_URL, X as warnOnConflictingFlags, Xt as RULESYNC_RELATIVE_DIR_PATH, Y as fallbackLogger, Yt as RULESYNC_PERMISSIONS_SCHEMA_URL, Z as CLIError, Zt as RULESYNC_RULES_RELATIVE_DIR_PATH, _ as CLAUDECODE_LOCAL_RULE_FILE_NAME, _t as removeFileStrict, a as convertFromTool, at as ensureDir, b as CLAUDECODE_SKILLS_DIR_PATH, bt as runWithDirectoryRollback, c as SubagentsProcessor, ct as getFileSize, d as IgnoreProcessor, dt as listDirectoryFiles, en as RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, et as assertTreeContainsNoSymlinks, f as HooksProcessor, ft as readFileContent, g as CLAUDECODE_DIR, gt as removeFile, h as CODEXCLI_DIR, ht as removeDirectoryStrict, i as getProcessorRegistryEntry, it as directoryExists, j as RulesyncIgnore, jt as RULESYNC_COMMANDS_RELATIVE_DIR_PATH, k as RulesyncPermissions, kt as RULESYNC_AIIGNORE_RELATIVE_FILE_PATH, l as SkillsProcessor, lt as getHomeDirectory, m as CODEXCLI_BASH_RULES_FILE_NAME, mt as removeDirectory, n as checkRulesyncDirExists, nn as ALL_FEATURES_WITH_WILDCARD, nt as checkPathTraversal, o as isPackagingToolTarget, ot as fileExists, p as CommandsProcessor, pt as readFileContentOrNull, q as ConsoleLogger, qt as RULESYNC_PERMISSIONS_LEGACY_FILE_NAME, r as generate, rn as formatError, rt as createTempDirectory, s as RulesProcessor, st as findFilesByGlobs, t as importFromTool, tn as ALL_FEATURES, tt as assertWritablePathInsideRoot, u as McpProcessor, ut as isSymlink, v as CLAUDECODE_MEMORIES_DIR_NAME, vt as removeTempDirectory, w as RulesyncSubagentFrontmatterSchema, wt as ALL_TOOL_TARGETS_WITH_WILDCARD, x as ChecksProcessor, xt as toPosixPath, y as CLAUDECODE_SETTINGS_LOCAL_FILE_NAME, yt as resolvePath, z as RulesyncCheckFrontmatterSchema, zt as RULESYNC_IGNORE_RELATIVE_FILE_PATH } from "../import-WWoS8Wv4.js";
2
+ import { $ as ErrorCodes, $t as RULESYNC_SKILLS_RELATIVE_DIR_PATH, A as RulesyncMcp, At as RULESYNC_AIIGNORE_RELATIVE_FILE_PATH, B as stringifyFrontmatter, Bt as RULESYNC_IGNORE_RELATIVE_FILE_PATH, C as RulesyncSubagent, Ct as writeFileContent, D as RulesyncRule, Dt as ToolTargetSchema, E as RulesyncSkillFrontmatterSchema, Et as PACKAGING_TOOL_TARGETS, F as parseJsonc, Ft as RULESYNC_CURATED_RULES_RELATIVE_DIR_PATH, G as ConfigFileSchema, Gt as RULESYNC_MCP_SCHEMA_URL, H as SHARED_USER_MANAGED_CONFIG_PATHS, Ht as RULESYNC_MCP_FILE_NAME, I as RulesyncCommand, It as RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH, J as ConsoleLogger, Jt as RULESYNC_PERMISSIONS_LEGACY_FILE_NAME, K as SourceEntrySchema, Kt as RULESYNC_NPM_SOURCES_LOCK_RELATIVE_FILE_PATH, L as RulesyncCommandFrontmatterSchema, Lt as RULESYNC_HOOKS_FILE_NAME, M as RulesyncHooks, Mt as RULESYNC_COMMANDS_RELATIVE_DIR_PATH, N as getRulesyncSourceCandidates, Nt as RULESYNC_CONFIG_RELATIVE_FILE_PATH, O as RulesyncRuleFrontmatterSchema, Ot as MAX_FILE_SIZE, P as resolveRulesyncSourceWritePath, Pt as RULESYNC_CONFIG_SCHEMA_URL, Q as CLIError, Qt as RULESYNC_RULES_RELATIVE_DIR_PATH, R as RulesyncCheck, Rt as RULESYNC_HOOKS_LEGACY_FILE_NAME, S as getLocalSkillDirNames, St as toPosixPath, T as RulesyncSkill, Tt as ALL_TOOL_TARGETS_WITH_WILDCARD, U as SKILL_FILE_NAME$1, Ut as RULESYNC_MCP_LEGACY_FILE_NAME, V as loadYaml, Vt as RULESYNC_LOCAL_CONFIG_RELATIVE_FILE_PATH, W as ConfigResolver, Wt as RULESYNC_MCP_RELATIVE_FILE_PATH, X as fallbackLogger, Xt as RULESYNC_PERMISSIONS_SCHEMA_URL, Y as JsonLogger, Yt as RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH, Z as warnOnConflictingFlags, Zt as RULESYNC_RELATIVE_DIR_PATH, _ as CLAUDECODE_SETTINGS_LOCAL_FILE_NAME, _t as removeFile, a as convertFromTool, at as directoryExists, b as CODEXCLI_BASH_RULES_FILE_NAME, bt as resolvePath, c as SubagentsProcessor, ct as findFilesByGlobs, d as IgnoreProcessor, dt as isSymlink, en as RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH, et as assertDirectoryIfExists, f as HooksProcessor, ft as listDirectoryFiles, g as CLAUDECODE_MEMORIES_DIR_NAME, gt as removeDirectoryStrict, h as CLAUDECODE_LOCAL_RULE_FILE_NAME, ht as removeDirectory, i as getProcessorRegistryEntry, in as formatError, it as createTempDirectory, j as RulesyncIgnore, jt as RULESYNC_CHECKS_RELATIVE_DIR_PATH, k as RulesyncPermissions, kt as RULESYNC_AIIGNORE_FILE_NAME, l as SkillsProcessor, lt as getFileSize, m as CLAUDECODE_DIR, mt as readFileContentOrNull, n as checkRulesyncDirExists, nn as ALL_FEATURES, nt as assertWritablePathInsideRoot, o as isPackagingToolTarget, ot as ensureDir, p as CommandsProcessor, pt as readFileContent, q as findControlCharacter, qt as RULESYNC_PERMISSIONS_FILE_NAME, r as generate, rn as ALL_FEATURES_WITH_WILDCARD, rt as checkPathTraversal, s as RulesProcessor, st as fileExists, t as importFromTool, tn as RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH, tt as assertTreeContainsNoSymlinks, u as McpProcessor, ut as getHomeDirectory, v as CLAUDECODE_SKILLS_DIR_PATH, vt as removeFileStrict, w as RulesyncSubagentFrontmatterSchema, wt as ALL_TOOL_TARGETS, x as CODEXCLI_DIR, xt as runWithDirectoryRollback, y as ChecksProcessor, yt as removeTempDirectory, z as RulesyncCheckFrontmatterSchema, zt as RULESYNC_HOOKS_RELATIVE_FILE_PATH } from "../import-BmXT7mRS.js";
3
3
  import { Command } from "commander";
4
4
  import { nonnegative, optional, refine, z } from "zod/mini";
5
5
  import { cp, mkdtemp, realpath, rm } from "node:fs/promises";
@@ -244,6 +244,16 @@ function singletonTemplate(feature) {
244
244
  "mcp"
245
245
  ],
246
246
  "env": {}
247
+ },
248
+ "playwright": {
249
+ "type": "stdio",
250
+ "command": "pnpm",
251
+ "args": [
252
+ "dlx",
253
+ "@playwright/mcp",
254
+ "--headless"
255
+ ],
256
+ "env": {}
247
257
  }
248
258
  }
249
259
  }
@@ -4555,24 +4565,7 @@ const TARGETS_NOT_DERIVED = /* @__PURE__ */ new Set([
4555
4565
  "augmentcode-legacy",
4556
4566
  "claudecode-legacy"
4557
4567
  ]);
4558
- const DERIVED_PATHS_NOT_GITIGNORED = /* @__PURE__ */ new Set([
4559
- "**/.amp/settings.json",
4560
- "**/.amp/settings.jsonc",
4561
- "**/.antigravity/settings.json",
4562
- "**/.claude/settings.json",
4563
- "**/.claude/settings.local.json",
4564
- "**/.codex/config.toml",
4565
- "**/.devin/config.json",
4566
- "**/.factory/settings.json",
4567
- "**/.grok/config.toml",
4568
- "**/.vibe/config.toml",
4569
- "**/reasonix.toml",
4570
- "**/.vscode/settings.json",
4571
- "**/.zed/settings.json",
4572
- "**/kilo.json",
4573
- "**/kilo.jsonc",
4574
- "**/opencode.json"
4575
- ]);
4568
+ const DERIVED_PATHS_NOT_GITIGNORED = new Set(SHARED_USER_MANAGED_CONFIG_PATHS.map((path) => `**/${path}`));
4576
4569
  const toPosix = (path) => path.replace(/\\/g, "/");
4577
4570
  const dirToGlob = (relativeDirPath) => `**/${toPosix(relativeDirPath).replace(/\/$/, "")}/`;
4578
4571
  const fileToGlob = (relativeDirPath, relativeFilePath) => {
@@ -4595,8 +4588,13 @@ const deriveDirEntries = (factories, feature) => {
4595
4588
  for (const [target, factory] of factories) {
4596
4589
  if (TARGETS_NOT_DERIVED.has(target)) continue;
4597
4590
  if (!supportsProject(factory)) continue;
4598
- const dir = getProjectPaths(factory).relativeDirPath;
4591
+ const paths = getProjectPaths(factory);
4592
+ const dir = paths.relativeDirPath;
4599
4593
  if (!dir || dir === ".") continue;
4594
+ if (paths.relativeFilePath) {
4595
+ pushEntry(entries, target, feature, fileToGlob(dir, paths.relativeFilePath));
4596
+ continue;
4597
+ }
4600
4598
  pushEntry(entries, target, feature, dirToGlob(dir));
4601
4599
  }
4602
4600
  return entries;
@@ -4760,6 +4758,21 @@ const GITIGNORE_ENTRY_REGISTRY = [
4760
4758
  feature: "rules",
4761
4759
  entry: "**/.junie/memories/"
4762
4760
  },
4761
+ {
4762
+ target: "goose",
4763
+ feature: "ignore",
4764
+ entry: "**/.gooseignore"
4765
+ },
4766
+ {
4767
+ target: "goose",
4768
+ feature: "subagents",
4769
+ entry: "**/.goose/recipes/subagents/"
4770
+ },
4771
+ {
4772
+ target: "junie",
4773
+ feature: "permissions",
4774
+ entry: "**/.junie/allowlist.json"
4775
+ },
4763
4776
  {
4764
4777
  target: "rovodev",
4765
4778
  feature: "skills",
@@ -8989,7 +9002,7 @@ function wrapCommand$1({ name, errorCode, handler, getVersion, loggerFactory = c
8989
9002
  }
8990
9003
  //#endregion
8991
9004
  //#region src/cli/program.ts
8992
- const getVersion = () => "15.1.0";
9005
+ const getVersion = () => "16.1.0";
8993
9006
  const FEATURES_HELP = `${ALL_FEATURES.join(",")}; ignore is deprecated, use permissions`;
8994
9007
  function wrapCommand(name, errorCode, handler) {
8995
9008
  return wrapCommand$1({