rulesync 16.32.0 → 16.32.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.
@@ -30714,13 +30714,17 @@ function isRemoteMcpServer(serverConfig) {
30714
30714
  function resolveRemoteMcpUrl(serverConfig) {
30715
30715
  return serverConfig.url || serverConfig.httpUrl || void 0;
30716
30716
  }
30717
- /** The `command` array a `local` server is spawned with, `args` merged in. */
30717
+ /**
30718
+ * The `command` array a `local` server is spawned with, `args` merged in. An
30719
+ * entry carrying `args` but no `command` comes back empty rather than with
30720
+ * `args[0]` promoted to its program: every adapter writes element 0 back out
30721
+ * as the executable (or the whole array as the command line), so the caller
30722
+ * skips such an entry the same way as one with nothing to spawn at all.
30723
+ */
30718
30724
  function resolveLocalMcpCommand(serverConfig) {
30719
- const commandArray = [];
30720
- if (serverConfig.command) {
30721
- if (Array.isArray(serverConfig.command)) commandArray.push(...serverConfig.command);
30722
- else commandArray.push(serverConfig.command);
30723
- }
30725
+ const { command } = serverConfig;
30726
+ const commandArray = Array.isArray(command) ? [...command] : command ? [command] : [];
30727
+ if (commandArray.length === 0) return [];
30724
30728
  if (serverConfig.args) commandArray.push(...serverConfig.args);
30725
30729
  return commandArray;
30726
30730
  }
@@ -30730,9 +30734,13 @@ function resolveLocalMcpCommand(serverConfig) {
30730
30734
  * spells the transport out. Writing `{type: "local", command: []}` for it would
30731
30735
  * give the tool a server it cannot start and the importer a file it cannot read
30732
30736
  * back, so it is skipped out loud instead.
30737
+ *
30738
+ * The server name comes straight from the user's config, so it is quoted
30739
+ * through `quoteValueForWarning` rather than interpolated: a crafted name could
30740
+ * otherwise carry a line break or control characters into the log.
30733
30741
  */
30734
30742
  function warnAndSkipMcpServer({ toolName, serverName, reason, logger }) {
30735
- logger?.warn(`${toolName} MCP: skipping "${serverName}" because it declares ${reason}.`);
30743
+ logger?.warn(`${toolName} MCP: skipping ${quoteValueForWarning(serverName)} because it declares ${reason}.`);
30736
30744
  return null;
30737
30745
  }
30738
30746
  /**
@@ -30820,8 +30828,10 @@ function asBobRemoteType(stated, url) {
30820
30828
  * streamable HTTP server carries `type: "streamable-http"` and `url`, and an
30821
30829
  * SSE server carries a bare `url`. The canonical `transport` alias and the
30822
30830
  * Claude-style `httpUrl` alias are folded into `type`/`url`; `env`, `cwd`,
30823
- * `headers`, `timeout`, `alwaysAllow` and `disabled` pass through unchanged,
30824
- * as Bob documents all of them.
30831
+ * `headers`, `timeout`, `alwaysAllow` and `disabled` pass through, as Bob
30832
+ * documents all of them (`env` and `headers` with their prototype-pollution
30833
+ * keys dropped, since Bob spreads those maps into the process environment and
30834
+ * the HTTP requests).
30825
30835
  *
30826
30836
  * Bob Shell documents the same file with an `httpURL` key instead of
30827
30837
  * `type` + `url` for streamable HTTP. rulesync writes the IDE spelling (the two
@@ -31763,7 +31773,7 @@ function convertRemoteServer({ serverName, serverConfig, logger }) {
31763
31773
  return converted;
31764
31774
  }
31765
31775
  function convertStdioServer({ serverName, serverConfig, logger }) {
31766
- const [command, ...args] = (typeof serverConfig.command === "string" ? serverConfig.command !== "" : Array.isArray(serverConfig.command) && serverConfig.command.length > 0) ? resolveLocalMcpCommand(serverConfig) : [];
31776
+ const [command, ...args] = resolveLocalMcpCommand(serverConfig);
31767
31777
  if (!command) {
31768
31778
  warnAndSkipMcpServer({
31769
31779
  toolName: "Continue",
@@ -31779,7 +31789,7 @@ function convertStdioServer({ serverName, serverConfig, logger }) {
31779
31789
  };
31780
31790
  if (args.length > 0) converted.args = args;
31781
31791
  if (isRecord$1(serverConfig.env)) converted.env = omitPrototypePollutionKeys(serverConfig.env);
31782
- if (typeof serverConfig.envFile === "string") logger?.warn(`Continue ignores "envFile" for MCP servers, so the envFile of server "${serverName}" was not written; put the variables in "env" instead.`);
31792
+ if (typeof serverConfig.envFile === "string") logger?.warn(`Continue ignores "envFile" for MCP servers, so the envFile of server ${quoteValueForWarning(serverName)} was not written; put the variables in "env" instead.`);
31783
31793
  return converted;
31784
31794
  }
31785
31795
  /**
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_import = require("./import-0wSuIchf.cjs");
2
+ const require_import = require("./import-NHZnMc--.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-D5n_V39C.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-CT7-pKL6.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.32.0",
3
+ "version": "16.32.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",