@sanity/cli 5.11.1-canary.2 → 5.12.0-next.2

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.
@@ -18,7 +18,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
18
18
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
19
19
  mod
20
20
  ));
21
- var os = require("node:os"), chalk = require("chalk"), loadEnv = require("./loadEnv.js"), require$$0$5 = require("path"), require$$1$2 = require("module"), require$$0$4 = require("fs"), semver = require("semver"), telemetry = require("@sanity/telemetry"), runtimeCli = require("@sanity/runtime-cli"), utils$3 = require("@sanity/runtime-cli/utils"), childProcess = require("node:child_process"), fs$1 = require("node:fs"), path$3 = require("node:path"), fs = require("node:fs/promises"), util$3 = require("node:util"), require$$0$6 = require("os"), getLatestVersion = require("get-latest-version"), pkgDir = require("pkg-dir"), client$1 = require("@sanity/client"), require$$0$7 = require("constants"), require$$0$8 = require("stream"), require$$0$9 = require("util"), require$$0$a = require("assert"), require$$0$b = require("events"), require$$3$1 = require("crypto"), require$$1$3 = require("child_process"), getCliConfig = require("./getCliConfig.js"), require$$0$c = require("fs/promises"), require$$0$d = require("buffer"), journeyConfig = require("./journeyConfig.js"), Stream = require("node:stream"), promises$1 = require("node:stream/promises"), templateValidator = require("@sanity/template-validator"), require$$2$1 = require("string_decoder"), require$$0$e = require("zlib"), require$$7$1 = require("process"), http = require("node:http"), jsoncParser = require("jsonc-parser"), traverse = require("@babel/traverse"), node_url = require("node:url"), node_events = require("node:events"), node_string_decoder = require("node:string_decoder"), process$2 = require("node:process"), require$$2$2 = require("readline"), require$$0$f = require("tty");
21
+ var os = require("node:os"), chalk = require("chalk"), loadEnv = require("./loadEnv.js"), require$$0$5 = require("path"), require$$1$2 = require("module"), require$$0$4 = require("fs"), semver = require("semver"), telemetry = require("@sanity/telemetry"), runtimeCli = require("@sanity/runtime-cli"), utils$3 = require("@sanity/runtime-cli/utils"), childProcess = require("node:child_process"), fs$1 = require("node:fs"), path$3 = require("node:path"), fs = require("node:fs/promises"), util$3 = require("node:util"), require$$0$6 = require("os"), getLatestVersion = require("get-latest-version"), pkgDir = require("pkg-dir"), client$1 = require("@sanity/client"), require$$0$7 = require("constants"), require$$0$8 = require("stream"), require$$0$9 = require("util"), require$$0$a = require("assert"), require$$0$b = require("events"), require$$3$1 = require("crypto"), require$$1$3 = require("child_process"), getCliConfig = require("./getCliConfig.js"), require$$0$c = require("fs/promises"), require$$0$d = require("buffer"), journeyConfig = require("./journeyConfig.js"), Stream = require("node:stream"), promises$1 = require("node:stream/promises"), templateValidator = require("@sanity/template-validator"), require$$2$1 = require("string_decoder"), require$$0$e = require("zlib"), require$$7$1 = require("process"), http = require("node:http"), jsoncParser = require("jsonc-parser"), smolToml = require("smol-toml"), traverse = require("@babel/traverse"), node_url = require("node:url"), node_events = require("node:events"), node_string_decoder = require("node:string_decoder"), process$2 = require("node:process"), require$$2$2 = require("readline"), require$$0$f = require("tty");
22
22
  function _interopDefaultCompat(e) {
23
23
  return e && typeof e == "object" && "default" in e ? e : { default: e };
24
24
  }
@@ -23751,14 +23751,16 @@ const MCP_SERVER_URL = "https://mcp.sanity.io", NO_EDITORS_DETECTED_MESSAGE = `C
23751
23751
  headers: { Authorization: `Bearer ${token2}` }
23752
23752
  }), homeDir = os__default.default.homedir(), EDITOR_CONFIGS = {
23753
23753
  Cursor: {
23754
+ buildServerConfig: defaultHttpConfig,
23754
23755
  configKey: "mcpServers",
23755
23756
  detect: async () => {
23756
23757
  const cursorDir = path__default.default.join(homeDir, ".cursor");
23757
23758
  return fs$1.existsSync(cursorDir) ? path__default.default.join(cursorDir, "mcp.json") : null;
23758
23759
  },
23759
- buildServerConfig: defaultHttpConfig
23760
+ format: "jsonc"
23760
23761
  },
23761
23762
  "VS Code": {
23763
+ buildServerConfig: defaultHttpConfig,
23762
23764
  configKey: "servers",
23763
23765
  detect: async () => {
23764
23766
  let configDir = null;
@@ -23774,9 +23776,10 @@ const MCP_SERVER_URL = "https://mcp.sanity.io", NO_EDITORS_DETECTED_MESSAGE = `C
23774
23776
  }
23775
23777
  return configDir && fs$1.existsSync(configDir) ? path__default.default.join(configDir, "mcp.json") : null;
23776
23778
  },
23777
- buildServerConfig: defaultHttpConfig
23779
+ format: "jsonc"
23778
23780
  },
23779
23781
  "VS Code Insiders": {
23782
+ buildServerConfig: defaultHttpConfig,
23780
23783
  configKey: "servers",
23781
23784
  detect: async () => {
23782
23785
  let configDir = null;
@@ -23792,9 +23795,10 @@ const MCP_SERVER_URL = "https://mcp.sanity.io", NO_EDITORS_DETECTED_MESSAGE = `C
23792
23795
  }
23793
23796
  return configDir && fs$1.existsSync(configDir) ? path__default.default.join(configDir, "mcp.json") : null;
23794
23797
  },
23795
- buildServerConfig: defaultHttpConfig
23798
+ format: "jsonc"
23796
23799
  },
23797
23800
  "Claude Code": {
23801
+ buildServerConfig: defaultHttpConfig,
23798
23802
  configKey: "mcpServers",
23799
23803
  detect: async () => {
23800
23804
  try {
@@ -23803,21 +23807,69 @@ const MCP_SERVER_URL = "https://mcp.sanity.io", NO_EDITORS_DETECTED_MESSAGE = `C
23803
23807
  return null;
23804
23808
  }
23805
23809
  },
23806
- buildServerConfig: defaultHttpConfig
23810
+ format: "jsonc"
23807
23811
  },
23808
- Zed: {
23809
- configKey: "context_servers",
23812
+ "Codex CLI": {
23813
+ buildServerConfig: (token2) => ({
23814
+ type: "http",
23815
+ url: MCP_SERVER_URL,
23816
+ // eslint-disable-next-line camelcase
23817
+ http_headers: { Authorization: `Bearer ${token2}` }
23818
+ }),
23819
+ configKey: "mcp_servers",
23810
23820
  detect: async () => {
23811
- let configDir = null;
23812
- return process.platform === "win32" ? process.env.APPDATA && (configDir = path__default.default.join(process.env.APPDATA, "Zed")) : configDir = path__default.default.join(homeDir, ".config/zed"), configDir && fs$1.existsSync(configDir) ? path__default.default.join(configDir, "settings.json") : null;
23821
+ try {
23822
+ await execa("codex", ["--version"], { stdio: "pipe", timeout: 5e3 });
23823
+ const codexHome = process.env.CODEX_HOME || path__default.default.join(homeDir, ".codex");
23824
+ return path__default.default.join(codexHome, "config.toml");
23825
+ } catch {
23826
+ return null;
23827
+ }
23813
23828
  },
23829
+ format: "toml"
23830
+ },
23831
+ "Gemini CLI": {
23832
+ buildServerConfig: defaultHttpConfig,
23833
+ configKey: "mcpServers",
23834
+ detect: async () => {
23835
+ const geminiDir = path__default.default.join(homeDir, ".gemini");
23836
+ return fs$1.existsSync(geminiDir) ? path__default.default.join(geminiDir, "settings.json") : null;
23837
+ },
23838
+ format: "jsonc"
23839
+ },
23840
+ "GitHub Copilot CLI": {
23841
+ buildServerConfig: (token2) => ({
23842
+ type: "http",
23843
+ url: MCP_SERVER_URL,
23844
+ headers: { Authorization: `Bearer ${token2}` },
23845
+ tools: ["*"]
23846
+ }),
23847
+ configKey: "mcpServers",
23848
+ detect: async () => {
23849
+ const copilotDir = process.platform === "linux" && process.env.XDG_CONFIG_HOME ? path__default.default.join(process.env.XDG_CONFIG_HOME, "copilot") : path__default.default.join(homeDir, ".copilot");
23850
+ return fs$1.existsSync(copilotDir) ? path__default.default.join(copilotDir, "mcp-config.json") : null;
23851
+ },
23852
+ format: "jsonc"
23853
+ },
23854
+ Zed: {
23814
23855
  buildServerConfig: (token2) => ({
23815
23856
  url: MCP_SERVER_URL,
23816
23857
  headers: { Authorization: `Bearer ${token2}` },
23817
23858
  settings: {}
23818
- })
23859
+ }),
23860
+ configKey: "context_servers",
23861
+ detect: async () => {
23862
+ let configDir = null;
23863
+ return process.platform === "win32" ? process.env.APPDATA && (configDir = path__default.default.join(process.env.APPDATA, "Zed")) : configDir = path__default.default.join(homeDir, ".config/zed"), configDir && fs$1.existsSync(configDir) ? path__default.default.join(configDir, "settings.json") : null;
23864
+ },
23865
+ format: "jsonc"
23819
23866
  },
23820
23867
  OpenCode: {
23868
+ buildServerConfig: (token2) => ({
23869
+ type: "remote",
23870
+ url: MCP_SERVER_URL,
23871
+ headers: { Authorization: `Bearer ${token2}` }
23872
+ }),
23821
23873
  configKey: "mcp",
23822
23874
  detect: async () => {
23823
23875
  try {
@@ -23826,25 +23878,28 @@ const MCP_SERVER_URL = "https://mcp.sanity.io", NO_EDITORS_DETECTED_MESSAGE = `C
23826
23878
  return null;
23827
23879
  }
23828
23880
  },
23829
- buildServerConfig: (token2) => ({
23830
- type: "remote",
23831
- url: MCP_SERVER_URL,
23832
- headers: { Authorization: `Bearer ${token2}` }
23833
- })
23881
+ format: "jsonc"
23834
23882
  }
23835
23883
  };
23836
- function parseConfig(content) {
23884
+ function parseConfig(content, format) {
23837
23885
  if (content.trim() === "")
23838
23886
  return {};
23887
+ if (format === "toml")
23888
+ try {
23889
+ const parsed2 = smolToml.parse(content);
23890
+ return typeof parsed2 != "object" || parsed2 === null || Array.isArray(parsed2) ? null : parsed2;
23891
+ } catch {
23892
+ return null;
23893
+ }
23839
23894
  const errors = [], parsed = jsoncParser.parse(content, errors, { allowTrailingComma: !0 });
23840
23895
  return errors.length > 0 || typeof parsed != "object" || parsed === null || Array.isArray(parsed) ? null : parsed;
23841
23896
  }
23842
23897
  async function checkEditorConfig(name, configPath) {
23843
- const { configKey } = EDITOR_CONFIGS[name];
23898
+ const { configKey, format } = EDITOR_CONFIGS[name];
23844
23899
  if (!fs$1.existsSync(configPath))
23845
23900
  return { name, configPath, configured: !1 };
23846
23901
  try {
23847
- const content = await fs__default.default.readFile(configPath, "utf-8"), config2 = parseConfig(content);
23902
+ const content = await fs__default.default.readFile(configPath, "utf-8"), config2 = parseConfig(content, format);
23848
23903
  if (config2 === null)
23849
23904
  return getCliConfig.debug("Skipping %s: could not parse %s", name, configPath), null;
23850
23905
  const configured = !!config2[configKey]?.Sanity;
@@ -23898,16 +23953,25 @@ async function createMCPToken(apiClient) {
23898
23953
  })).token;
23899
23954
  }
23900
23955
  async function writeMCPConfig(editor2, token2) {
23901
- const configPath = editor2.configPath, { configKey, buildServerConfig } = EDITOR_CONFIGS[editor2.name];
23902
- let content = "{}";
23956
+ const configPath = editor2.configPath, { configKey, buildServerConfig, format } = EDITOR_CONFIGS[editor2.name], serverConfig = buildServerConfig(token2);
23957
+ let content = format === "toml" ? "" : "{}";
23903
23958
  if (fs$1.existsSync(configPath)) {
23904
23959
  const fileContent = await fs__default.default.readFile(configPath, "utf-8");
23905
23960
  fileContent.trim() && (content = fileContent);
23906
23961
  }
23907
- const edits = jsoncParser.modify(content, [configKey, "Sanity"], buildServerConfig(token2), {
23908
- formattingOptions: { tabSize: 2, insertSpaces: !0 }
23909
- });
23910
- content = jsoncParser.applyEdits(content, edits), await fs__default.default.mkdir(path__default.default.dirname(configPath), { recursive: !0 }), await fs__default.default.writeFile(configPath, content, "utf-8");
23962
+ if (format === "toml") {
23963
+ const tomlConfig = content.trim() ? smolToml.parse(content) : {}, existingServers = tomlConfig[configKey];
23964
+ tomlConfig[configKey] = {
23965
+ ...existingServers && typeof existingServers == "object" ? existingServers : {},
23966
+ Sanity: serverConfig
23967
+ }, content = smolToml.stringify(tomlConfig);
23968
+ } else {
23969
+ const edits = jsoncParser.modify(content, [configKey, "Sanity"], serverConfig, {
23970
+ formattingOptions: { tabSize: 2, insertSpaces: !0 }
23971
+ });
23972
+ content = jsoncParser.applyEdits(content, edits);
23973
+ }
23974
+ await fs__default.default.mkdir(path__default.default.dirname(configPath), { recursive: !0 }), await fs__default.default.writeFile(configPath, content, "utf-8");
23911
23975
  }
23912
23976
  async function setupMCP(context, options2) {
23913
23977
  const { output, prompt: prompt2 } = context;