rulesync 15.0.1 → 16.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.
package/README.md CHANGED
@@ -94,7 +94,7 @@ 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
100
  | Cursor | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
@@ -106,7 +106,7 @@ 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 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
@@ -120,7 +120,7 @@ The tables below show whether each tool supports a given feature (✅ = supporte
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-DRN7goJ_.cjs");
2
+ const require_import = require("../import-Dyo6JaHg.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
  }
@@ -3783,7 +3793,7 @@ async function addCommand(logger, options) {
3783
3793
  * Calculate the total count from a result object
3784
3794
  */
3785
3795
  function calculateTotalCount(result) {
3786
- return result.rulesCount + result.ignoreCount + result.mcpCount + result.commandsCount + result.subagentsCount + result.skillsCount + result.hooksCount + result.permissionsCount + result.checksCount;
3796
+ return result.rulesCount + result.ignoreCount + result.mcpCount + result.commandsCount + result.subagentsCount + result.skillsCount + result.hooksCount + result.permissionsCount + result.checksCount + (result.activationCount ?? 0);
3787
3797
  }
3788
3798
  //#endregion
3789
3799
  //#region src/cli/commands/convert.ts
@@ -4444,6 +4454,10 @@ function buildSummaryParts(result) {
4444
4454
  {
4445
4455
  count: result.checksCount,
4446
4456
  label: "checks"
4457
+ },
4458
+ {
4459
+ count: result.activationCount,
4460
+ label: "Hermes activation files"
4447
4461
  }
4448
4462
  ];
4449
4463
  const parts = [];
@@ -4501,6 +4515,10 @@ async function generateCommand(logger, options) {
4501
4515
  rules: {
4502
4516
  count: result.rulesCount,
4503
4517
  paths: result.rulesPaths
4518
+ },
4519
+ activation: {
4520
+ count: result.activationCount,
4521
+ paths: result.activationPaths
4504
4522
  }
4505
4523
  };
4506
4524
  const featureLabels = {
@@ -4512,7 +4530,8 @@ async function generateCommand(logger, options) {
4512
4530
  skills: (count) => `${count === 1 ? "skill" : "skills"}`,
4513
4531
  hooks: (count) => `${count === 1 ? "hooks file" : "hooks files"}`,
4514
4532
  permissions: (count) => `${count === 1 ? "permissions file" : "permissions files"}`,
4515
- checks: (count) => `${count === 1 ? "check" : "checks"}`
4533
+ checks: (count) => `${count === 1 ? "check" : "checks"}`,
4534
+ activation: (count) => `${count === 1 ? "Hermes activation file" : "Hermes activation files"}`
4516
4535
  };
4517
4536
  for (const [feature, data] of Object.entries(featureResults)) logFeatureResult(logger, {
4518
4537
  count: data.count,
@@ -4548,24 +4567,7 @@ const TARGETS_NOT_DERIVED = /* @__PURE__ */ new Set([
4548
4567
  "augmentcode-legacy",
4549
4568
  "claudecode-legacy"
4550
4569
  ]);
4551
- const DERIVED_PATHS_NOT_GITIGNORED = /* @__PURE__ */ new Set([
4552
- "**/.amp/settings.json",
4553
- "**/.amp/settings.jsonc",
4554
- "**/.antigravity/settings.json",
4555
- "**/.claude/settings.json",
4556
- "**/.claude/settings.local.json",
4557
- "**/.codex/config.toml",
4558
- "**/.devin/config.json",
4559
- "**/.factory/settings.json",
4560
- "**/.grok/config.toml",
4561
- "**/.vibe/config.toml",
4562
- "**/reasonix.toml",
4563
- "**/.vscode/settings.json",
4564
- "**/.zed/settings.json",
4565
- "**/kilo.json",
4566
- "**/kilo.jsonc",
4567
- "**/opencode.json"
4568
- ]);
4570
+ const DERIVED_PATHS_NOT_GITIGNORED = new Set(require_import.SHARED_USER_MANAGED_CONFIG_PATHS.map((path) => `**/${path}`));
4569
4571
  const toPosix = (path) => path.replace(/\\/g, "/");
4570
4572
  const dirToGlob = (relativeDirPath) => `**/${toPosix(relativeDirPath).replace(/\/$/, "")}/`;
4571
4573
  const fileToGlob = (relativeDirPath, relativeFilePath) => {
@@ -4588,8 +4590,13 @@ const deriveDirEntries = (factories, feature) => {
4588
4590
  for (const [target, factory] of factories) {
4589
4591
  if (TARGETS_NOT_DERIVED.has(target)) continue;
4590
4592
  if (!supportsProject(factory)) continue;
4591
- const dir = getProjectPaths(factory).relativeDirPath;
4593
+ const paths = getProjectPaths(factory);
4594
+ const dir = paths.relativeDirPath;
4592
4595
  if (!dir || dir === ".") continue;
4596
+ if (paths.relativeFilePath) {
4597
+ pushEntry(entries, target, feature, fileToGlob(dir, paths.relativeFilePath));
4598
+ continue;
4599
+ }
4593
4600
  pushEntry(entries, target, feature, dirToGlob(dir));
4594
4601
  }
4595
4602
  return entries;
@@ -4753,6 +4760,21 @@ const GITIGNORE_ENTRY_REGISTRY = [
4753
4760
  feature: "rules",
4754
4761
  entry: "**/.junie/memories/"
4755
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
+ },
4756
4778
  {
4757
4779
  target: "rovodev",
4758
4780
  feature: "skills",
@@ -7190,6 +7212,7 @@ function buildSuccessResponse$1(params) {
7190
7212
  hooksCount: generateResult.hooksCount,
7191
7213
  permissionsCount: generateResult.permissionsCount,
7192
7214
  checksCount: generateResult.checksCount,
7215
+ activationCount: generateResult.activationCount,
7193
7216
  totalCount
7194
7217
  },
7195
7218
  config: {
@@ -8981,7 +9004,7 @@ function wrapCommand$1({ name, errorCode, handler, getVersion, loggerFactory = c
8981
9004
  }
8982
9005
  //#endregion
8983
9006
  //#region src/cli/program.ts
8984
- const getVersion = () => "15.0.1";
9007
+ const getVersion = () => "16.0.0";
8985
9008
  const FEATURES_HELP = `${require_import.ALL_FEATURES.join(",")}; ignore is deprecated, use permissions`;
8986
9009
  function wrapCommand(name, errorCode, handler) {
8987
9010
  return wrapCommand$1({
@@ -1 +1 @@
1
- export { };
1
+ export {}
@@ -1 +1 @@
1
- export { };
1
+ export {}
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-BuxzyDyH.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-BT5KR_K-.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
  }
@@ -3781,7 +3791,7 @@ async function addCommand(logger, options) {
3781
3791
  * Calculate the total count from a result object
3782
3792
  */
3783
3793
  function calculateTotalCount(result) {
3784
- return result.rulesCount + result.ignoreCount + result.mcpCount + result.commandsCount + result.subagentsCount + result.skillsCount + result.hooksCount + result.permissionsCount + result.checksCount;
3794
+ return result.rulesCount + result.ignoreCount + result.mcpCount + result.commandsCount + result.subagentsCount + result.skillsCount + result.hooksCount + result.permissionsCount + result.checksCount + (result.activationCount ?? 0);
3785
3795
  }
3786
3796
  //#endregion
3787
3797
  //#region src/cli/commands/convert.ts
@@ -4442,6 +4452,10 @@ function buildSummaryParts(result) {
4442
4452
  {
4443
4453
  count: result.checksCount,
4444
4454
  label: "checks"
4455
+ },
4456
+ {
4457
+ count: result.activationCount,
4458
+ label: "Hermes activation files"
4445
4459
  }
4446
4460
  ];
4447
4461
  const parts = [];
@@ -4499,6 +4513,10 @@ async function generateCommand(logger, options) {
4499
4513
  rules: {
4500
4514
  count: result.rulesCount,
4501
4515
  paths: result.rulesPaths
4516
+ },
4517
+ activation: {
4518
+ count: result.activationCount,
4519
+ paths: result.activationPaths
4502
4520
  }
4503
4521
  };
4504
4522
  const featureLabels = {
@@ -4510,7 +4528,8 @@ async function generateCommand(logger, options) {
4510
4528
  skills: (count) => `${count === 1 ? "skill" : "skills"}`,
4511
4529
  hooks: (count) => `${count === 1 ? "hooks file" : "hooks files"}`,
4512
4530
  permissions: (count) => `${count === 1 ? "permissions file" : "permissions files"}`,
4513
- checks: (count) => `${count === 1 ? "check" : "checks"}`
4531
+ checks: (count) => `${count === 1 ? "check" : "checks"}`,
4532
+ activation: (count) => `${count === 1 ? "Hermes activation file" : "Hermes activation files"}`
4514
4533
  };
4515
4534
  for (const [feature, data] of Object.entries(featureResults)) logFeatureResult(logger, {
4516
4535
  count: data.count,
@@ -4546,24 +4565,7 @@ const TARGETS_NOT_DERIVED = /* @__PURE__ */ new Set([
4546
4565
  "augmentcode-legacy",
4547
4566
  "claudecode-legacy"
4548
4567
  ]);
4549
- const DERIVED_PATHS_NOT_GITIGNORED = /* @__PURE__ */ new Set([
4550
- "**/.amp/settings.json",
4551
- "**/.amp/settings.jsonc",
4552
- "**/.antigravity/settings.json",
4553
- "**/.claude/settings.json",
4554
- "**/.claude/settings.local.json",
4555
- "**/.codex/config.toml",
4556
- "**/.devin/config.json",
4557
- "**/.factory/settings.json",
4558
- "**/.grok/config.toml",
4559
- "**/.vibe/config.toml",
4560
- "**/reasonix.toml",
4561
- "**/.vscode/settings.json",
4562
- "**/.zed/settings.json",
4563
- "**/kilo.json",
4564
- "**/kilo.jsonc",
4565
- "**/opencode.json"
4566
- ]);
4568
+ const DERIVED_PATHS_NOT_GITIGNORED = new Set(SHARED_USER_MANAGED_CONFIG_PATHS.map((path) => `**/${path}`));
4567
4569
  const toPosix = (path) => path.replace(/\\/g, "/");
4568
4570
  const dirToGlob = (relativeDirPath) => `**/${toPosix(relativeDirPath).replace(/\/$/, "")}/`;
4569
4571
  const fileToGlob = (relativeDirPath, relativeFilePath) => {
@@ -4586,8 +4588,13 @@ const deriveDirEntries = (factories, feature) => {
4586
4588
  for (const [target, factory] of factories) {
4587
4589
  if (TARGETS_NOT_DERIVED.has(target)) continue;
4588
4590
  if (!supportsProject(factory)) continue;
4589
- const dir = getProjectPaths(factory).relativeDirPath;
4591
+ const paths = getProjectPaths(factory);
4592
+ const dir = paths.relativeDirPath;
4590
4593
  if (!dir || dir === ".") continue;
4594
+ if (paths.relativeFilePath) {
4595
+ pushEntry(entries, target, feature, fileToGlob(dir, paths.relativeFilePath));
4596
+ continue;
4597
+ }
4591
4598
  pushEntry(entries, target, feature, dirToGlob(dir));
4592
4599
  }
4593
4600
  return entries;
@@ -4751,6 +4758,21 @@ const GITIGNORE_ENTRY_REGISTRY = [
4751
4758
  feature: "rules",
4752
4759
  entry: "**/.junie/memories/"
4753
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
+ },
4754
4776
  {
4755
4777
  target: "rovodev",
4756
4778
  feature: "skills",
@@ -7188,6 +7210,7 @@ function buildSuccessResponse$1(params) {
7188
7210
  hooksCount: generateResult.hooksCount,
7189
7211
  permissionsCount: generateResult.permissionsCount,
7190
7212
  checksCount: generateResult.checksCount,
7213
+ activationCount: generateResult.activationCount,
7191
7214
  totalCount
7192
7215
  },
7193
7216
  config: {
@@ -8979,7 +9002,7 @@ function wrapCommand$1({ name, errorCode, handler, getVersion, loggerFactory = c
8979
9002
  }
8980
9003
  //#endregion
8981
9004
  //#region src/cli/program.ts
8982
- const getVersion = () => "15.0.1";
9005
+ const getVersion = () => "16.0.0";
8983
9006
  const FEATURES_HELP = `${ALL_FEATURES.join(",")}; ignore is deprecated, use permissions`;
8984
9007
  function wrapCommand(name, errorCode, handler) {
8985
9008
  return wrapCommand$1({