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.
@@ -30689,13 +30689,17 @@ function isRemoteMcpServer(serverConfig) {
30689
30689
  function resolveRemoteMcpUrl(serverConfig) {
30690
30690
  return serverConfig.url || serverConfig.httpUrl || void 0;
30691
30691
  }
30692
- /** The `command` array a `local` server is spawned with, `args` merged in. */
30692
+ /**
30693
+ * The `command` array a `local` server is spawned with, `args` merged in. An
30694
+ * entry carrying `args` but no `command` comes back empty rather than with
30695
+ * `args[0]` promoted to its program: every adapter writes element 0 back out
30696
+ * as the executable (or the whole array as the command line), so the caller
30697
+ * skips such an entry the same way as one with nothing to spawn at all.
30698
+ */
30693
30699
  function resolveLocalMcpCommand(serverConfig) {
30694
- const commandArray = [];
30695
- if (serverConfig.command) {
30696
- if (Array.isArray(serverConfig.command)) commandArray.push(...serverConfig.command);
30697
- else commandArray.push(serverConfig.command);
30698
- }
30700
+ const { command } = serverConfig;
30701
+ const commandArray = Array.isArray(command) ? [...command] : command ? [command] : [];
30702
+ if (commandArray.length === 0) return [];
30699
30703
  if (serverConfig.args) commandArray.push(...serverConfig.args);
30700
30704
  return commandArray;
30701
30705
  }
@@ -30705,9 +30709,13 @@ function resolveLocalMcpCommand(serverConfig) {
30705
30709
  * spells the transport out. Writing `{type: "local", command: []}` for it would
30706
30710
  * give the tool a server it cannot start and the importer a file it cannot read
30707
30711
  * back, so it is skipped out loud instead.
30712
+ *
30713
+ * The server name comes straight from the user's config, so it is quoted
30714
+ * through `quoteValueForWarning` rather than interpolated: a crafted name could
30715
+ * otherwise carry a line break or control characters into the log.
30708
30716
  */
30709
30717
  function warnAndSkipMcpServer({ toolName, serverName, reason, logger }) {
30710
- logger?.warn(`${toolName} MCP: skipping "${serverName}" because it declares ${reason}.`);
30718
+ logger?.warn(`${toolName} MCP: skipping ${quoteValueForWarning(serverName)} because it declares ${reason}.`);
30711
30719
  return null;
30712
30720
  }
30713
30721
  /**
@@ -30795,8 +30803,10 @@ function asBobRemoteType(stated, url) {
30795
30803
  * streamable HTTP server carries `type: "streamable-http"` and `url`, and an
30796
30804
  * SSE server carries a bare `url`. The canonical `transport` alias and the
30797
30805
  * Claude-style `httpUrl` alias are folded into `type`/`url`; `env`, `cwd`,
30798
- * `headers`, `timeout`, `alwaysAllow` and `disabled` pass through unchanged,
30799
- * as Bob documents all of them.
30806
+ * `headers`, `timeout`, `alwaysAllow` and `disabled` pass through, as Bob
30807
+ * documents all of them (`env` and `headers` with their prototype-pollution
30808
+ * keys dropped, since Bob spreads those maps into the process environment and
30809
+ * the HTTP requests).
30800
30810
  *
30801
30811
  * Bob Shell documents the same file with an `httpURL` key instead of
30802
30812
  * `type` + `url` for streamable HTTP. rulesync writes the IDE spelling (the two
@@ -31738,7 +31748,7 @@ function convertRemoteServer({ serverName, serverConfig, logger }) {
31738
31748
  return converted;
31739
31749
  }
31740
31750
  function convertStdioServer({ serverName, serverConfig, logger }) {
31741
- const [command, ...args] = (typeof serverConfig.command === "string" ? serverConfig.command !== "" : Array.isArray(serverConfig.command) && serverConfig.command.length > 0) ? resolveLocalMcpCommand(serverConfig) : [];
31751
+ const [command, ...args] = resolveLocalMcpCommand(serverConfig);
31742
31752
  if (!command) {
31743
31753
  warnAndSkipMcpServer({
31744
31754
  toolName: "Continue",
@@ -31754,7 +31764,7 @@ function convertStdioServer({ serverName, serverConfig, logger }) {
31754
31764
  };
31755
31765
  if (args.length > 0) converted.args = args;
31756
31766
  if (isRecord$1(serverConfig.env)) converted.env = omitPrototypePollutionKeys(serverConfig.env);
31757
- 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.`);
31767
+ 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.`);
31758
31768
  return converted;
31759
31769
  }
31760
31770
  /**
@@ -76419,4 +76429,4 @@ async function importChecksCore(params) {
76419
76429
  //#endregion
76420
76430
  export { RulesyncCheck as $, writeFileContent as $t, CLAUDECODE_SKILLS_DIR_PATH as A, RULESYNC_SKILLS_RELATIVE_DIR_PATH as An, directoryExists as At, RulesyncSkill as B, truncateText as Bn, listSubdirectoryNames as Bt, ChecksProcessor as C, RULESYNC_NPM_SOURCES_LOCK_RELATIVE_FILE_PATH as Cn, ErrorCodes as Ct, CLAUDECODE_LOCAL_RULE_FILE_NAME as D, RULESYNC_PERMISSIONS_SCHEMA_URL as Dn, assertWritablePathInsideRoot as Dt, CLAUDECODE_DIR as E, RULESYNC_PERMISSIONS_RELATIVE_FILE_PATH as En, assertTreeContainsNoSymlinks as Et, AUGMENTCODE_DIR as F, parseCommaSeparatedList as Fn, isFileNotFoundError as Ft, RulesyncMcp as G, stripControlCharactersKeepingLineFeeds as Gn, removeDirectoryStrict as Gt, RulesyncRule as H, hasEnclosingMarkOutsideKeycap as Hn, readFileContent as Ht, AUGMENTCODE_SETTINGS_LOCAL_FILE_NAME as I, ALL_FEATURES as In, isFileSystemError as It, getRulesyncSourceCandidates as J, removeTempDirectory as Jt, RulesyncIgnore as K, stripHiddenCharacters as Kn, removeFile as Kt, getLocalSkillDirNames as L, ALL_FEATURES_WITH_WILDCARD as Ln, isSymlink as Lt, FACTORYDROID_SETTINGS_LOCAL_FILE_NAME as M, RULESYNC_SUBAGENTS_RELATIVE_DIR_PATH as Mn, fileExists as Mt, caseFoldIdentity as N, RULESYNC_USER_CONFIG_DIR_NAME as Nn, getFileSize as Nt, CLAUDECODE_MEMORIES_DIR_NAME as O, RULESYNC_RELATIVE_DIR_PATH as On, checkPathTraversal as Ot, groupSpellingsByCaseFoldedIdentity as P, RULESYNC_XDG_CONFIG_HOME_DEFAULT_DIR_NAME as Pn, getHomeDirectory as Pt, RulesyncCommandFrontmatterSchema as Q, writeFileBuffer as Qt, RulesyncSubagent as R, DEPRECATED_FEATURE_REPLACEMENTS as Rn, listDirectoryEntryNames as Rt, QWENCODE_LOCAL_RULE_FILE_NAME as S, RULESYNC_MCP_SCHEMA_URL as Sn, CLIError as St, CODEXCLI_DIR as T, RULESYNC_PERMISSIONS_LEGACY_FILE_NAME as Tn, assertDirectoryIfExists as Tt, RulesyncRuleFrontmatterSchema as U, quoteForLog as Un, readFileContentOrNull as Ut, RulesyncSkillFrontmatterSchema as V, hasDeceptiveHiddenCharacters as Vn, pathEscapesRoot as Vt, RulesyncPermissions as W, stripControlCharacters as Wn, removeDirectory as Wt, parseJsonc as X, runWithDirectoryRollback as Xt, resolveRulesyncSourceWritePath as Y, resolvePath as Yt, RulesyncCommand as Z, toPosixPath as Zt, IgnoreProcessor as _, RULESYNC_IGNORE_RELATIVE_FILE_PATH as _n, fallbackLogger as _t, getProcessorRegistryEntry as a, MAX_FILE_SIZE as an, ConfigResolver as at, CommandsProcessor as b, RULESYNC_MCP_LEGACY_FILE_NAME as bn, resetRunWarningState as bt, RulesProcessor as c, RULESYNC_CHECKS_RELATIVE_DIR_PATH as cn, CONFLICTING_TARGET_PAIRS as ct, CODEBUDDY_DIR as d, RULESYNC_CONFIG_SCHEMA_URL as dn, SourceEntrySchema as dt, ALL_TOOL_TARGETS as en, RulesyncCheckFrontmatterSchema as et, CODEBUDDY_LOCAL_RULE_FILE_NAME as f, RULESYNC_CURATED_RULES_RELATIVE_DIR_PATH as fn, assertTargetsFeaturesExclusive as ft, McpProcessor as g, RULESYNC_HOOKS_RELATIVE_FILE_PATH as gn, WarningCollectingLogger as gt, shortenToWidth as h, RULESYNC_HOOKS_LEGACY_FILE_NAME as hn, JsonLogger as ht, inspectInputRoots as i, CURATED_RULES_FEATURE_SUBDIR as in, SKILL_FILE_NAME as it, FACTORYDROID_DIR as j, RULESYNC_SOURCES_LOCK_RELATIVE_FILE_PATH as jn, ensureDir as jt, CLAUDECODE_SETTINGS_LOCAL_FILE_NAME as k, RULESYNC_RULES_RELATIVE_DIR_PATH as kn, createTempDirectory as kt, SubagentsProcessor as l, RULESYNC_COMMANDS_RELATIVE_DIR_PATH as ln, ConfigFileSchema as lt, displayWidthOf as m, RULESYNC_HOOKS_FILE_NAME as mn, ConsoleLogger as mt, formatSourceLoadFailure as n, PACKAGING_TOOL_TARGETS as nn, loadYaml as nt, convertFromTool as o, RULESYNC_AIIGNORE_FILE_NAME as on, mergeInputRootConfigs as ot, ELLIPSIS_WIDTH as p, RULESYNC_CURATED_SKILLS_RELATIVE_DIR_PATH as pn, findControlCharacter as pt, RulesyncHooks as q, removeFileStrict as qt, generate as r, ToolTargetSchema as rn, SHARED_USER_MANAGED_CONFIG_PATHS as rt, isPackagingToolTarget as s, RULESYNC_AIIGNORE_RELATIVE_FILE_PATH as sn, resolveEffectiveInputRoots as st, importFromTool as t, ALL_TOOL_TARGETS_WITH_WILDCARD as tn, stringifyFrontmatter as tt, SkillsProcessor as u, RULESYNC_CONFIG_RELATIVE_FILE_PATH as un, GITIGNORE_DESTINATION_KEY as ut, CRUSH_LOCAL_RULE_FILE_NAME as v, RULESYNC_LOCAL_CONFIG_RELATIVE_FILE_PATH as vn, warnOnConflictingFlags as vt, CODEXCLI_BASH_RULES_FILE_NAME as w, RULESYNC_PERMISSIONS_FILE_NAME as wn, applyFileMode as wt, QWENCODE_DIR as x, RULESYNC_MCP_RELATIVE_FILE_PATH as xn, withWarnOnceScope as xt, HooksProcessor as y, RULESYNC_MCP_FILE_NAME as yn, withFallbackLoggerTarget as yt, RulesyncSubagentFrontmatterSchema as z, formatError as zn, listFilePathsRecursively as zt };
76421
76431
 
76422
- //# sourceMappingURL=import-D5n_V39C.js.map
76432
+ //# sourceMappingURL=import-CT7-pKL6.js.map