rulesync 16.34.0 → 16.34.1

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.
@@ -31034,6 +31034,17 @@ function toCanonicalMcpServers(servers) {
31034
31034
  return renameServerField(servers, "serverUrl", "url");
31035
31035
  }
31036
31036
  /**
31037
+ * Parse `mcp_config.json` as JSONC and require a top-level object, so a file
31038
+ * whose root is `null`, an array or a primitive fails with a clear message
31039
+ * instead of a `TypeError` on `mcpServers` access or an array being spread
31040
+ * into the rewritten config.
31041
+ */
31042
+ function parseAntigravityMcpConfig(fileContent) {
31043
+ const parsed = parseJsonc$6(fileContent);
31044
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) throw new Error(`Antigravity ${ANTIGRAVITY_MCP_FILE_NAME} must contain a top-level JSON object`);
31045
+ return { ...parsed };
31046
+ }
31047
+ /**
31037
31048
  * Shared MCP generator for Google Antigravity (Antigravity 2.0), used by both
31038
31049
  * the IDE and the CLI.
31039
31050
  *
@@ -31046,12 +31057,17 @@ function toCanonicalMcpServers(servers) {
31046
31057
  * The IDE and CLI share the project path (`.agents/mcp_config.json`) and differ
31047
31058
  * only in their global config subdirectory, which each concrete subclass
31048
31059
  * supplies via {@link AntigravityMcp.getGlobalSubdir}.
31060
+ *
31061
+ * Antigravity CLI 1.1.24+ accepts line and block comments and trailing
31062
+ * commas in `mcp_config.json`, so the file is read as JSONC. Writes stay plain
31063
+ * JSON (comments are dropped on rewrite), matching the other JSONC-reading
31064
+ * adapters.
31049
31065
  */
31050
31066
  var AntigravityMcp = class extends ToolMcp {
31051
31067
  json;
31052
31068
  constructor(params) {
31053
31069
  super(params);
31054
- this.json = JSON.parse(this.fileContent || "{}");
31070
+ this.json = parseAntigravityMcpConfig(this.fileContent || "{}");
31055
31071
  }
31056
31072
  getJson() {
31057
31073
  return this.json;
@@ -31072,8 +31088,7 @@ var AntigravityMcp = class extends ToolMcp {
31072
31088
  }
31073
31089
  static async fromFile({ outputRoot = process.cwd(), validate = true, global = false }) {
31074
31090
  const paths = this.getSettablePaths({ global });
31075
- const fileContent = await readFileContentOrNull((0, node_path.join)(outputRoot, paths.relativeDirPath, paths.relativeFilePath)) ?? "{\"mcpServers\":{}}";
31076
- const json = JSON.parse(fileContent);
31091
+ const json = parseAntigravityMcpConfig(await readFileContentOrNull((0, node_path.join)(outputRoot, paths.relativeDirPath, paths.relativeFilePath)) ?? "{\"mcpServers\":{}}");
31077
31092
  const newJson = {
31078
31093
  ...json,
31079
31094
  mcpServers: json.mcpServers ?? {}
@@ -31089,9 +31104,8 @@ var AntigravityMcp = class extends ToolMcp {
31089
31104
  }
31090
31105
  static async fromRulesyncMcp({ outputRoot = process.cwd(), rulesyncMcp, validate = true, global = false }) {
31091
31106
  const paths = this.getSettablePaths({ global });
31092
- const fileContent = await readFileContentOrNull((0, node_path.join)(outputRoot, paths.relativeDirPath, paths.relativeFilePath)) ?? JSON.stringify({ mcpServers: {} }, null, 2);
31093
31107
  const newJson = {
31094
- ...JSON.parse(fileContent),
31108
+ ...parseAntigravityMcpConfig(await readFileContentOrNull((0, node_path.join)(outputRoot, paths.relativeDirPath, paths.relativeFilePath)) ?? JSON.stringify({ mcpServers: {} }, null, 2)),
31095
31109
  mcpServers: toAntigravityMcpServers(rulesyncMcp.getMcpServers())
31096
31110
  };
31097
31111
  return new this({
@@ -41861,15 +41875,28 @@ const CLAUDECODE_NON_PASSTHROUGH_OVERRIDE_KEYS = /* @__PURE__ */ new Set([
41861
41875
  *
41862
41876
  * Derived from the per-key **Scope** column of the settings reference: every
41863
41877
  * top-level key documented as `User or managed` or `User, local, or managed`.
41878
+ * `enableArtifact` is deliberately absent: it is documented as `Any file` —
41879
+ * every file can turn the Artifact tool off, and none can turn it back on — so
41880
+ * a project file does honor it. `processWrapper` is also `User or managed`, but it is refused
41881
+ * in both scopes by `CLAUDECODE_COMMAND_EXECUTING_KEYS`, which runs first.
41882
+ *
41883
+ * `autoContinueAtUsageLimit` is dropped at project scope for a stronger reason
41884
+ * than the others: when no user or managed file sets it, a project or local
41885
+ * value turns the feature *off* whatever the value is, so committing a `true`
41886
+ * would silently do the opposite of what it says.
41864
41887
  *
41865
41888
  * @see https://code.claude.com/docs/en/settings-reference
41866
41889
  */
41867
41890
  const CLAUDECODE_USER_SCOPE_ONLY_KEYS = /* @__PURE__ */ new Set([
41868
41891
  "askUserQuestionTimeout",
41892
+ "autoContinueAtUsageLimit",
41869
41893
  "autoMode",
41894
+ "bashEditDiffEnabled",
41895
+ "desktopSessionCleanupPeriodDays",
41870
41896
  "dialogExpiry",
41871
- "enableArtifact",
41897
+ "feedbackDrafts",
41872
41898
  "footerLinksRegexes",
41899
+ "modelPicker",
41873
41900
  "pluginConfigs",
41874
41901
  "skipAutoPermissionPrompt",
41875
41902
  "skipDangerousModePermissionPrompt",
@@ -41902,14 +41929,20 @@ const CLAUDECODE_UNHONORED_KEY_SOURCES = {
41902
41929
  browserExternalPageTools: "managed settings",
41903
41930
  channelsEnabled: "managed settings",
41904
41931
  claudeMd: "managed settings",
41932
+ copyOnSelect: "~/.claude.json",
41905
41933
  diffTool: "~/.claude.json",
41906
41934
  disableBrowserExternalNavigation: "managed settings",
41907
41935
  disableCommandPluginSources: "managed settings",
41936
+ disableDesktopLocalSessions: "managed settings",
41908
41937
  disableMobileSimulatorTools: "managed settings",
41909
41938
  disableSideloadFlags: "managed settings",
41910
41939
  externalEditorContext: "~/.claude.json",
41911
41940
  forceLoginGatewayUrl: "managed settings",
41912
41941
  forceRemoteSettingsRefresh: "managed settings",
41942
+ gatewayInternalNetworks: "managed settings",
41943
+ managedMcpServers: "managed settings",
41944
+ managedSourcesBehavior: "managed settings",
41945
+ modelPricing: "managed settings",
41913
41946
  parentSettingsBehavior: "managed settings",
41914
41947
  permissionExplainerEnabled: "~/.claude.json",
41915
41948
  pluginSuggestionMarketplaces: "managed settings",
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_import = require("./import-9T9fnjNn.cjs");
2
+ const require_import = require("./import-CInzMKKs.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.js CHANGED
@@ -1,4 +1,4 @@
1
- import { In as ALL_FEATURES, at as ConfigResolver, en as ALL_TOOL_TARGETS, i as inspectInputRoots, mt as ConsoleLogger, o as convertFromTool$1, r as generate$1, t as importFromTool$1 } from "./import-De13gNpF.js";
1
+ import { In as ALL_FEATURES, at as ConfigResolver, en as ALL_TOOL_TARGETS, i as inspectInputRoots, mt as ConsoleLogger, o as convertFromTool$1, r as generate$1, t as importFromTool$1 } from "./import-BJsTd50i.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": "16.34.0",
3
+ "version": "16.34.1",
4
4
  "description": "Unified AI rules management CLI tool that generates configuration files for various AI development tools",
5
5
  "keywords": [
6
6
  "ai",