@akon-labs/nexus-cli 0.1.10 → 0.1.11-rc.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.
- package/dist/cli/require-login.d.ts.map +1 -1
- package/dist/cli/require-login.js +2 -2
- package/dist/cli/require-login.js.map +1 -1
- package/dist/cli.js +1919 -1040
- package/dist/core/agent-session.d.ts +3 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +4 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +6 -0
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +7 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +14 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +18 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +1 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/extensions/gitnexus/config.d.ts +15 -1
- package/dist/extensions/gitnexus/config.d.ts.map +1 -1
- package/dist/extensions/gitnexus/config.js +86 -2
- package/dist/extensions/gitnexus/config.js.map +1 -1
- package/dist/extensions/gitnexus/index.d.ts.map +1 -1
- package/dist/extensions/gitnexus/index.js +2 -2
- package/dist/extensions/gitnexus/index.js.map +1 -1
- package/dist/extensions/gitnexus/observatory.d.ts.map +1 -1
- package/dist/extensions/gitnexus/observatory.js +2 -2
- package/dist/extensions/gitnexus/observatory.js.map +1 -1
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +3 -0
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/mcp/commands.d.ts +22 -2
- package/dist/extensions/mcp/commands.d.ts.map +1 -1
- package/dist/extensions/mcp/commands.js +201 -9
- package/dist/extensions/mcp/commands.js.map +1 -1
- package/dist/extensions/mcp/config.d.ts +2 -0
- package/dist/extensions/mcp/config.d.ts.map +1 -1
- package/dist/extensions/mcp/config.js +6 -1
- package/dist/extensions/mcp/config.js.map +1 -1
- package/dist/extensions/mcp/index.d.ts.map +1 -1
- package/dist/extensions/mcp/index.js +54 -5
- package/dist/extensions/mcp/index.js.map +1 -1
- package/dist/extensions/mcp/mcp-setup-panel.d.ts +63 -2
- package/dist/extensions/mcp/mcp-setup-panel.d.ts.map +1 -1
- package/dist/extensions/mcp/mcp-setup-panel.js +563 -77
- package/dist/extensions/mcp/mcp-setup-panel.js.map +1 -1
- package/dist/extensions/subagent/index.d.ts +2 -1
- package/dist/extensions/subagent/index.d.ts.map +1 -1
- package/dist/extensions/subagent/index.js +19 -6
- package/dist/extensions/subagent/index.js.map +1 -1
- package/dist/extensions/subagent-render.d.ts +3 -0
- package/dist/extensions/subagent-render.d.ts.map +1 -0
- package/dist/extensions/subagent-render.js +39 -0
- package/dist/extensions/subagent-render.js.map +1 -0
- package/dist/index.js +1951 -1072
- package/dist/modes/interactive/components/tool-execution.d.ts +3 -2
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +12 -2
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +2 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +7 -3
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/rpc-entry.js +1919 -1040
- package/dist/utils/hidden-spawn.d.ts +29 -0
- package/dist/utils/hidden-spawn.d.ts.map +1 -0
- package/dist/utils/hidden-spawn.js +101 -0
- package/dist/utils/hidden-spawn.js.map +1 -0
- package/dist/vendor/ai.js +233 -233
- package/native/win32/build.mjs +95 -0
- package/native/win32/prebuilds/win32-x64/hidden-spawn.exe +0 -0
- package/native/win32/src/hidden-spawn.c +157 -0
- package/npm-shrinkwrap.json +2 -37
- package/package.json +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/extensions/mcp/config.ts"],"names":[],"mappings":"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","sourcesContent":["// config.ts - Config loading with import support\nimport { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { parse as parseToml } from \"smol-toml\";\nimport stripJsonComments from \"strip-json-comments\";\nimport { getConfigDirName } from \"./agent-dir.ts\";\nimport { type AgentPluginSummary, getAgentPluginSummaries, loadAgentPluginConfigs } from \"./agent-plugin-loader.ts\";\nimport { loadPackageMcpConfigs } from \"./package-mcp-loader.ts\";\nimport {\n\ttype HostConfigDiscovery,\n\ttype ImportKind,\n\tisServerDisabled,\n\ttype McpConfig,\n\ttype McpSettings,\n\ttype ServerEntry,\n\ttype ServerProvenance,\n} from \"./types.ts\";\nimport { toStringRecord } from \"./utils.ts\";\n\nconst NEXUS_GLOBAL_CONFIG_PATH = join(homedir(), \".config\", \"nexus\", \"mcp.json\");\nconst PROJECT_CONFIG_NAME = \"mcp.json\";\nconst REPOPROMPT_BINARY_CANDIDATES = [\n\tjoin(homedir(), \"RepoPrompt\", \"repoprompt_cli\"),\n\t\"/Applications/Repo Prompt.app/Contents/MacOS/repoprompt-mcp\",\n];\n\nexport interface KnownServerPreset {\n\tid: string;\n\tname: string;\n\tsummary: string;\n\tentry: ServerEntry;\n}\n\nexport const KNOWN_SERVER_PRESETS: readonly KnownServerPreset[] = [\n\t{\n\t\tid: \"deepwiki\",\n\t\tname: \"DeepWiki\",\n\t\tsummary: \"Ask questions about public GitHub repositories.\",\n\t\tentry: { url: \"https://mcp.deepwiki.com/mcp\", protocolVersion: \"auto\" },\n\t},\n\t{\n\t\tid: \"context7\",\n\t\tname: \"Context7\",\n\t\tsummary: \"Look up current library documentation and examples.\",\n\t\tentry: { url: \"https://mcp.context7.com/mcp\", protocolVersion: \"auto\" },\n\t},\n\t{\n\t\tid: \"notion\",\n\t\tname: \"Notion\",\n\t\tsummary: \"Search and work with your Notion workspace.\",\n\t\tentry: { url: \"https://mcp.notion.com/mcp\", auth: \"oauth\", protocolVersion: \"auto\" },\n\t},\n\t{\n\t\tid: \"github\",\n\t\tname: \"GitHub\",\n\t\tsummary: \"Work with GitHub through your Copilot account.\",\n\t\tentry: { url: \"https://api.githubcopilot.com/mcp\", auth: \"oauth\", protocolVersion: \"auto\" },\n\t},\n\t{\n\t\tid: \"chrome-devtools\",\n\t\tname: \"Chrome DevTools\",\n\t\tsummary: \"Inspect and automate a local Chrome browser.\",\n\t\tentry: { command: \"npx\", args: [\"-y\", \"chrome-devtools-mcp@1.6.0\"] },\n\t},\n];\n\nconst IMPORT_PATHS: Record<ImportKind, string[]> = {\n\tcursor: [join(homedir(), \".cursor\", \"mcp.json\")],\n\t\"claude-code\": [\n\t\tjoin(homedir(), \".claude\", \"mcp.json\"),\n\t\tjoin(homedir(), \".claude.json\"),\n\t\tjoin(homedir(), \".claude\", \"claude_desktop_config.json\"),\n\t],\n\t\"claude-desktop\": [join(homedir(), \"Library\", \"Application Support\", \"Claude\", \"claude_desktop_config.json\")],\n\tcodex: [join(homedir(), \".codex\", \"config.toml\"), join(homedir(), \".codex\", \"config.json\")],\n\topencode: [join(homedir(), \".config\", \"opencode\", \"opencode.json\"), \"./opencode.json\"],\n\twindsurf: [join(homedir(), \".windsurf\", \"mcp.json\")],\n\tvscode: [\".vscode/mcp.json\"],\n};\n\ninterface ConfigSourceSpec {\n\tid: \"nexus-global\" | \"nexus-project\";\n\tlabel: string;\n\treadPath: string;\n\twritePath: string;\n\tkind: \"user\" | \"project\" | \"import\";\n\timportKind?: string;\n\tshared: boolean;\n\tscope: \"global\" | \"project\";\n}\n\nexport interface ConfigDiscoveryPath {\n\tlabel: string;\n\tpath: string;\n\texists: boolean;\n}\n\nexport interface DiscoveredImportConfig {\n\tkind: ImportKind;\n\tpath: string;\n}\n\nexport interface ConfigDiscoverySource extends ConfigDiscoveryPath {\n\tid: ConfigSourceSpec[\"id\"];\n\tscope: ConfigSourceSpec[\"scope\"];\n\tkind: \"shared\" | \"nexus\";\n\tserverCount: number;\n}\n\nexport interface ImportConfigSummary extends DiscoveredImportConfig {\n\tserverCount: number;\n}\n\nexport interface HostConfigSummary extends ImportConfigSummary {\n\tactive: boolean;\n}\n\nexport interface McpConfigConflict {\n\tserverName: string;\n\tsources: Array<{ kind: \"shared\" | \"nexus\" | \"host\"; path: string }>;\n\twinner: { kind: \"shared\" | \"nexus\" | \"host\"; path: string };\n}\n\nexport interface RepoPromptDiscovery {\n\tconfigured: boolean;\n\tconfiguredPath?: string;\n\texecutablePath?: string;\n\ttargetPath?: string;\n\tserverName?: string;\n\tentry?: ServerEntry;\n}\n\nexport interface McpDiscoverySummary {\n\tsources: ConfigDiscoverySource[];\n\timports: ImportConfigSummary[];\n\thostConfigs: HostConfigSummary[];\n\thostConfigDiscovery: HostConfigDiscovery;\n\tagentPlugins: AgentPluginSummary[];\n\tconflicts: McpConfigConflict[];\n\thasAnyConfig: boolean;\n\thasAnyDetectedPaths: boolean;\n\thasSharedServers: boolean;\n\thasNexusOwnedServers: boolean;\n\ttotalServerCount: number;\n\tfingerprint: string;\n\trepoPrompt: RepoPromptDiscovery;\n}\n\nexport interface McpStandardConfigSummary {\n\tsources: ConfigDiscoverySource[];\n\thasSharedServers: boolean;\n\tfingerprint: string;\n}\n\nexport interface ConfigWritePreview {\n\tpath: string;\n\texisted: boolean;\n\tchanged: boolean;\n\tbeforeText: string;\n\tafterText: string;\n\tdiffText: string;\n}\n\nexport function getNexusGlobalConfigPath(overridePath?: string): string {\n\treturn overridePath ? resolve(overridePath) : NEXUS_GLOBAL_CONFIG_PATH;\n}\n\nexport function getGenericGlobalConfigPath(): string {\n\treturn NEXUS_GLOBAL_CONFIG_PATH;\n}\n\nexport function getProjectConfigPath(cwd = process.cwd()): string {\n\treturn resolve(cwd, getConfigDirName(), PROJECT_CONFIG_NAME);\n}\n\nexport function getProjectNexusConfigPath(cwd = process.cwd()): string {\n\treturn getProjectConfigPath(cwd);\n}\n\nexport function getConfigDiscoveryPaths(overridePath?: string, cwd = process.cwd()): ConfigDiscoveryPath[] {\n\treturn getConfigSources(overridePath, cwd).map((source) => ({\n\t\tlabel: source.label,\n\t\tpath: source.readPath,\n\t\texists: existsSync(source.readPath),\n\t}));\n}\n\nexport function findAvailableImportConfigs(cwd = process.cwd()): DiscoveredImportConfig[] {\n\tconst discovered: DiscoveredImportConfig[] = [];\n\n\tfor (const importKind of Object.keys(IMPORT_PATHS) as ImportKind[]) {\n\t\tconst importPath = resolveImportPath(importKind, cwd);\n\t\tif (importPath) {\n\t\t\tdiscovered.push({ kind: importKind, path: importPath });\n\t\t}\n\t}\n\n\treturn discovered;\n}\n\nfunction getConfigSourceSummaries(sourceSpecs: ConfigSourceSpec[]): ConfigDiscoverySource[] {\n\treturn sourceSpecs.map((source) => {\n\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\treturn {\n\t\t\tid: source.id,\n\t\t\tlabel: source.label,\n\t\t\tpath: source.readPath,\n\t\t\texists: existsSync(source.readPath),\n\t\t\tscope: source.scope,\n\t\t\tkind: source.shared ? \"shared\" : \"nexus\",\n\t\t\tserverCount: loaded ? Object.keys(loaded.mcpServers).length : 0,\n\t\t} satisfies ConfigDiscoverySource;\n\t});\n}\n\nexport function getMcpStandardConfigSummary(overridePath?: string, cwd = process.cwd()): McpStandardConfigSummary {\n\tconst sources = getConfigSourceSummaries(getConfigSources(overridePath, cwd));\n\treturn {\n\t\tsources,\n\t\thasSharedServers: sources.some((source) => source.kind === \"shared\" && source.serverCount > 0),\n\t\tfingerprint: JSON.stringify({ sources: sources.map((source) => [source.id, source.exists, source.serverCount]) }),\n\t};\n}\n\nexport function getMcpDiscoverySummary(\n\toverridePath?: string,\n\tcwd = process.cwd(),\n\toptions: { includeHostConfigs?: boolean } = {},\n): McpDiscoverySummary {\n\tconst sourceSpecs = getConfigSources(overridePath, cwd);\n\tconst sources = getConfigSourceSummaries(sourceSpecs);\n\tconst includeHostConfigs = options.includeHostConfigs !== false;\n\n\tconst imports = includeHostConfigs\n\t\t? (Object.keys(IMPORT_PATHS) as ImportKind[])\n\t\t\t\t.map((kind) => {\n\t\t\t\t\tconst imported = loadImportedConfig(kind, cwd, `Failed to inspect imported MCP config from ${kind}:`);\n\t\t\t\t\tif (!imported) return null;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tpath: imported.path,\n\t\t\t\t\t\tserverCount: Object.keys(extractServers(imported.value, kind)).length,\n\t\t\t\t\t} satisfies ImportConfigSummary;\n\t\t\t\t})\n\t\t\t\t.filter((value): value is ImportConfigSummary => value !== null)\n\t\t: [];\n\tconst hostConfigDiscovery = getConfiguredHostConfigDiscovery(overridePath, cwd);\n\tconst hostConfigs = imports.map((entry) => ({ ...entry, active: hostConfigDiscovery === \"on\" }));\n\tconst settings = getMergedSettings(overridePath, cwd);\n\tconst agentPlugins = getAgentPluginSummaries(settings?.agentPluginPaths, cwd);\n\tconst totalServerCount =\n\t\tsources.reduce((sum, source) => sum + source.serverCount, 0) +\n\t\tagentPlugins.reduce((sum, plugin) => sum + plugin.serverCount, 0);\n\tconst hasSharedServers =\n\t\tsources.some((source) => source.kind === \"shared\" && source.serverCount > 0) ||\n\t\tagentPlugins.some((plugin) => plugin.serverCount > 0);\n\tconst hasNexusOwnedServers = sources.some((source) => source.kind === \"nexus\" && source.serverCount > 0);\n\tconst hasAnyDetectedPaths = sources.some((source) => source.exists) || imports.length > 0 || agentPlugins.length > 0;\n\tconst hasAnyConfig = totalServerCount > 0 || imports.some((entry) => entry.serverCount > 0) || hasAnyDetectedPaths;\n\n\tconst summaryWithoutRepoPrompt = {\n\t\tsources,\n\t\timports,\n\t\thostConfigs,\n\t\thostConfigDiscovery,\n\t\tagentPlugins,\n\t\tconflicts: getConfigConflicts(sourceSpecs, imports, cwd),\n\t\thasAnyConfig,\n\t\thasAnyDetectedPaths,\n\t\thasSharedServers,\n\t\thasNexusOwnedServers,\n\t\ttotalServerCount,\n\t};\n\n\tconst fingerprint = JSON.stringify({\n\t\tsources: sources.map((source) => [source.id, source.exists, source.serverCount]),\n\t\timports: imports.map((entry) => [entry.kind, entry.path, entry.serverCount]),\n\t\tagentPlugins: agentPlugins.map((entry) => [entry.path, entry.name, entry.serverCount]),\n\t\thostConfigDiscovery,\n\t\tconflicts: summaryWithoutRepoPrompt.conflicts,\n\t});\n\n\treturn {\n\t\t...summaryWithoutRepoPrompt,\n\t\tfingerprint,\n\t\trepoPrompt: detectRepoPrompt(summaryWithoutRepoPrompt, cwd),\n\t};\n}\n\nexport function cloneMcpConfig(config: McpConfig): McpConfig {\n\treturn structuredClone(config);\n}\n\nexport function loadMcpConfig(overridePath?: string, cwd = process.cwd(), includeProject = true): McpConfig {\n\tconst sourceSpecs = getConfigSources(overridePath, cwd, includeProject);\n\tconst hostConfigDiscovery = getConfiguredHostConfigDiscovery(overridePath, cwd, includeProject);\n\t// Host files are a lower-precedence fallback. This ordering means an opt-in\n\t// discovery cannot override a shared or Nexus-owned definition, and all normal\n\t// URL-bound credential stripping remains in mergeServerMaps.\n\tlet config: McpConfig = hostConfigDiscovery === \"on\" ? loadDiscoveredHostConfigs(cwd) : { mcpServers: {} };\n\n\tfor (const source of sourceSpecs) {\n\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\tif (!loaded) continue;\n\t\tconfig = mergeConfigs(config, expandImports(loaded, cwd));\n\t}\n\n\tconst packageConfig = loadPackageMcpConfigs(cwd, includeProject);\n\tconst pluginConfig = loadAgentPluginConfigs(config.settings?.agentPluginPaths, cwd);\n\tconst packageServers = Object.fromEntries(\n\t\tObject.entries(packageConfig.mcpServers).filter(([name]) => !Object.hasOwn(pluginConfig.mcpServers, name)),\n\t);\n\treturn mergeConfigs({ mcpServers: packageServers }, mergeConfigs(pluginConfig, config));\n}\n\nfunction getMergedSettings(overridePath?: string, cwd = process.cwd(), includeProject = true): McpSettings | undefined {\n\tlet settings: McpSettings | undefined;\n\tfor (const source of getConfigSources(overridePath, cwd, includeProject)) {\n\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\tif (loaded?.settings) settings = { ...settings, ...loaded.settings };\n\t}\n\treturn settings;\n}\n\nfunction getConfiguredHostConfigDiscovery(\n\toverridePath?: string,\n\tcwd = process.cwd(),\n\tincludeProject = true,\n): HostConfigDiscovery {\n\tlet configured: HostConfigDiscovery = \"off\";\n\tconst settings = getMergedSettings(overridePath, cwd, includeProject);\n\tconst value = settings?.hostConfigDiscovery;\n\tif (value === \"off\" || value === \"prompt\" || value === \"on\") configured = value;\n\treturn configured;\n}\n\nfunction loadDiscoveredHostConfigs(cwd: string): McpConfig {\n\tlet config: McpConfig = { mcpServers: {} };\n\tfor (const importKind of Object.keys(IMPORT_PATHS) as ImportKind[]) {\n\t\tconst imported = loadImportedConfig(\n\t\t\timportKind,\n\t\t\tcwd,\n\t\t\t`Failed to discover imported MCP config from ${importKind}:`,\n\t\t);\n\t\tif (!imported) continue;\n\t\tconfig = mergeConfigs(config, {\n\t\t\tmcpServers: extractServers(imported.value, importKind),\n\t\t});\n\t}\n\treturn config;\n}\n\nfunction getConfigConflicts(\n\tsourceSpecs: ConfigSourceSpec[],\n\timports: ImportConfigSummary[],\n\tcwd: string,\n): McpConfigConflict[] {\n\tconst seen = new Map<string, Array<{ kind: \"shared\" | \"nexus\" | \"host\"; path: string }>>();\n\tconst record = (name: string, source: { kind: \"shared\" | \"nexus\" | \"host\"; path: string }): void => {\n\t\tconst entries = seen.get(name) ?? [];\n\t\tif (!entries.some((entry) => entry.kind === source.kind && entry.path === source.path)) entries.push(source);\n\t\tseen.set(name, entries);\n\t};\n\n\t// Host candidates are listed first because, when enabled, they are the\n\t// lowest-precedence fallback. The fixed IMPORT_PATHS order is deterministic.\n\tfor (const entry of imports) {\n\t\tconst imported = loadImportedConfig(entry.kind, cwd, `Failed to inspect imported MCP config from ${entry.kind}:`);\n\t\tif (!imported) continue;\n\t\tfor (const name of Object.keys(extractServers(imported.value, entry.kind))) {\n\t\t\trecord(name, { kind: \"host\", path: imported.path });\n\t\t}\n\t}\n\tfor (const source of sourceSpecs) {\n\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\tif (!loaded) continue;\n\t\tif (loaded.imports?.length) {\n\t\t\tfor (const importKind of loaded.imports) {\n\t\t\t\tconst imported = loadImportedConfig(\n\t\t\t\t\timportKind,\n\t\t\t\t\tcwd,\n\t\t\t\t\t`Failed to inspect imported MCP config from ${importKind}:`,\n\t\t\t\t);\n\t\t\t\tif (!imported) continue;\n\t\t\t\tfor (const name of Object.keys(extractServers(imported.value, importKind))) {\n\t\t\t\t\trecord(name, { kind: \"host\", path: imported.path });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const name of Object.keys(loaded.mcpServers)) {\n\t\t\trecord(name, {\n\t\t\t\tkind: source.shared ? \"shared\" : \"nexus\",\n\t\t\t\tpath: source.readPath,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn [...seen.entries()]\n\t\t.filter(([, sources]) => sources.length > 1)\n\t\t.map(([serverName, sources]) => ({ serverName, sources, winner: sources[sources.length - 1]! }))\n\t\t.sort((left, right) => left.serverName.localeCompare(right.serverName));\n}\n\nfunction getConfigSources(overridePath?: string, cwd = process.cwd(), includeProject = true): ConfigSourceSpec[] {\n\tconst userPath = getNexusGlobalConfigPath(overridePath);\n\tconst sources: ConfigSourceSpec[] = [\n\t\t{\n\t\t\tid: \"nexus-global\",\n\t\t\tlabel: \"Nexus global MCP\",\n\t\t\treadPath: userPath,\n\t\t\twritePath: userPath,\n\t\t\tkind: \"user\",\n\t\t\tshared: false,\n\t\t\tscope: \"global\",\n\t\t},\n\t];\n\n\tconst projectPath = getProjectConfigPath(cwd);\n\tif (includeProject && projectPath !== userPath) {\n\t\tsources.push({\n\t\t\tid: \"nexus-project\",\n\t\t\tlabel: \"Nexus project MCP\",\n\t\t\treadPath: projectPath,\n\t\t\twritePath: projectPath,\n\t\t\tkind: \"project\",\n\t\t\tshared: false,\n\t\t\tscope: \"project\",\n\t\t});\n\t}\n\n\treturn sources;\n}\n\nfunction mergeConfigs(base: McpConfig, next: McpConfig): McpConfig {\n\tconst imports = mergeImports(base.imports, next.imports);\n\tconst settings = next.settings ? { ...base.settings, ...next.settings } : base.settings;\n\treturn {\n\t\tmcpServers: mergeServerMaps(base.mcpServers, next.mcpServers),\n\t\t...(imports !== undefined ? { imports } : {}),\n\t\t...(settings !== undefined ? { settings } : {}),\n\t};\n}\n\n// Credential-bearing fields whose value is bound to a specific server `url`.\n// When a higher-precedence config source repoints an existing server at a\n// different url, these MUST NOT be inherited from the lower-precedence entry —\n// otherwise the original endpoint's credentials would be shipped to the new\n// url. See the SECURITY note in mergeServerMaps.\nconst URL_BOUND_AUTH_FIELDS = [\n\t\"headers\",\n\t\"bearerToken\",\n\t\"bearerTokenEnv\",\n\t\"bearerTokenStore\",\n\t\"requestHeadersCommand\",\n] as const;\n\nfunction mergeServerMaps(\n\tbase: Record<string, ServerEntry>,\n\tnext: Record<string, ServerEntry>,\n): Record<string, ServerEntry> {\n\tconst merged = { ...base };\n\tfor (const [name, definition] of Object.entries(next)) {\n\t\tconst existing = merged[name];\n\t\t// SECURITY (credential/url binding): the merge is per-field, so a\n\t\t// higher-precedence source that supplies only a new `url` for an existing\n\t\t// server would otherwise retain the lower-precedence entry's auth material\n\t\t// (Authorization header, bearer token, OAuth config) and send it to the new\n\t\t// url — a credential-exfiltration vector when the higher-precedence source\n\t\t// is less trusted than the one that first defined the server. Bind auth to\n\t\t// the url that supplied it: when the url changes, drop inherited auth\n\t\t// material before merging. Auth explicitly re-supplied by `definition` still\n\t\t// applies (it is spread last). Behaviour is unchanged when the url is\n\t\t// identical or the override omits `url` (partial overrides still inherit).\n\t\tlet baseEntry: ServerEntry = existing ?? {};\n\t\tif (existing && typeof definition.command === \"string\") {\n\t\t\tbaseEntry = { ...existing };\n\t\t\tfor (const field of [\n\t\t\t\t\"url\",\n\t\t\t\t\"headers\",\n\t\t\t\t\"requestHeadersCommand\",\n\t\t\t\t\"auth\",\n\t\t\t\t\"bearerToken\",\n\t\t\t\t\"bearerTokenEnv\",\n\t\t\t\t\"oauth\",\n\t\t\t\t\"httpTransport\",\n\t\t\t\t\"socket\",\n\t\t\t] as const) {\n\t\t\t\tdelete baseEntry[field];\n\t\t\t}\n\t\t} else if (existing && typeof definition.url === \"string\") {\n\t\t\tbaseEntry = { ...existing };\n\t\t\tfor (const field of [\"command\", \"args\", \"env\", \"cwd\", \"pluginDataDir\", \"literalEnv\", \"socket\"] as const) {\n\t\t\t\tdelete baseEntry[field];\n\t\t\t}\n\t\t} else if (existing && typeof definition.socket === \"string\") {\n\t\t\tbaseEntry = { ...existing };\n\t\t\tfor (const field of [\n\t\t\t\t\"command\",\n\t\t\t\t\"args\",\n\t\t\t\t\"env\",\n\t\t\t\t\"cwd\",\n\t\t\t\t\"pluginDataDir\",\n\t\t\t\t\"literalEnv\",\n\t\t\t\t\"url\",\n\t\t\t\t\"headers\",\n\t\t\t\t\"requestHeadersCommand\",\n\t\t\t\t\"auth\",\n\t\t\t\t\"bearerToken\",\n\t\t\t\t\"bearerTokenEnv\",\n\t\t\t\t\"oauth\",\n\t\t\t\t\"httpTransport\",\n\t\t\t] as const) {\n\t\t\t\tdelete baseEntry[field];\n\t\t\t}\n\t\t}\n\t\tif (existing && typeof definition.url === \"string\" && definition.url !== existing.url) {\n\t\t\tif (baseEntry === existing) baseEntry = { ...existing };\n\t\t\tfor (const field of URL_BOUND_AUTH_FIELDS) {\n\t\t\t\tdelete baseEntry[field];\n\t\t\t}\n\t\t\tif (baseEntry.oauth !== false) {\n\t\t\t\tdelete baseEntry.oauth;\n\t\t\t}\n\t\t}\n\t\tmerged[name] = { ...baseEntry, ...definition };\n\t}\n\treturn merged;\n}\n\nfunction mergeImports(left: ImportKind[] | undefined, right: ImportKind[] | undefined): ImportKind[] | undefined {\n\tconst merged = [...(left ?? []), ...(right ?? [])];\n\tif (merged.length === 0) return undefined;\n\treturn [...new Set(merged)];\n}\n\nfunction expandImports(config: McpConfig, cwd = process.cwd()): McpConfig {\n\tif (!config.imports?.length) return config;\n\n\tconst importedServers: Record<string, ServerEntry> = {};\n\tfor (const importKind of config.imports) {\n\t\tconst imported = loadImportedConfig(importKind, cwd, `Failed to import MCP config from ${importKind}:`);\n\t\tif (!imported) continue;\n\n\t\tconst servers = extractServers(imported.value, importKind);\n\t\tfor (const [name, definition] of Object.entries(servers)) {\n\t\t\tif (!importedServers[name]) {\n\t\t\t\timportedServers[name] = definition;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\timports: config.imports,\n\t\t...(config.settings !== undefined ? { settings: config.settings } : {}),\n\t\tmcpServers: mergeServerMaps(importedServers, config.mcpServers),\n\t};\n}\n\nfunction resolveImportCandidates(importKind: ImportKind, cwd: string): string[] {\n\treturn (IMPORT_PATHS[importKind] ?? []).map((candidate) => {\n\t\tif (importKind === \"opencode\" && candidate === \"./opencode.json\") {\n\t\t\tconst start = resolve(cwd);\n\t\t\tlet gitRoot: string | undefined;\n\t\t\tlet current = start;\n\t\t\twhile (true) {\n\t\t\t\tif (existsSync(join(current, \".git\"))) {\n\t\t\t\t\tgitRoot = current;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tconst parent = dirname(current);\n\t\t\t\tif (parent === current) break;\n\t\t\t\tcurrent = parent;\n\t\t\t}\n\n\t\t\tif (!gitRoot) return join(start, \"opencode.json\");\n\t\t\tcurrent = start;\n\t\t\twhile (true) {\n\t\t\t\tconst projectConfig = join(current, \"opencode.json\");\n\t\t\t\tif (existsSync(projectConfig) || current === gitRoot) return projectConfig;\n\t\t\t\tcurrent = dirname(current);\n\t\t\t}\n\t\t}\n\t\treturn candidate.startsWith(\".\") ? resolve(cwd, candidate) : candidate;\n\t});\n}\n\nfunction parseJsonConfig(raw: string): unknown {\n\treturn JSON.parse(stripJsonComments(raw, { trailingCommas: true }));\n}\n\nfunction readImportedConfig(path: string): unknown {\n\tconst raw = readFileSync(path, \"utf-8\");\n\treturn path.endsWith(\".toml\") ? parseToml(raw) : parseJsonConfig(raw);\n}\n\nfunction loadImportedConfig(\n\timportKind: ImportKind,\n\tcwd: string,\n\twarningPrefix: string,\n): { path: string; value: unknown } | null {\n\tif (importKind === \"opencode\") {\n\t\tlet merged: Record<string, unknown> = {};\n\t\tlet highestPrecedencePath: string | undefined;\n\n\t\tfor (const path of resolveImportCandidates(importKind, cwd)) {\n\t\t\tif (!existsSync(path)) continue;\n\n\t\t\ttry {\n\t\t\t\tconst value = readImportedConfig(path);\n\t\t\t\tif (value && typeof value === \"object\" && !Array.isArray(value)) {\n\t\t\t\t\tmerged = mergeOpenCodeConfigs(merged, value as Record<string, unknown>);\n\t\t\t\t\thighestPrecedencePath = path;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(warningPrefix, error);\n\t\t\t}\n\t\t}\n\n\t\treturn highestPrecedencePath ? { path: highestPrecedencePath, value: merged } : null;\n\t}\n\n\tfor (const path of resolveImportCandidates(importKind, cwd)) {\n\t\tif (!existsSync(path)) continue;\n\n\t\ttry {\n\t\t\treturn { path, value: readImportedConfig(path) };\n\t\t} catch (error) {\n\t\t\tconsole.warn(warningPrefix, error);\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveImportPath(importKind: ImportKind, cwd = process.cwd()): string | null {\n\treturn (\n\t\tloadImportedConfig(importKind, cwd, `Failed to discover imported MCP config from ${importKind}:`)?.path ?? null\n\t);\n}\n\nfunction readValidatedConfig(path: string, label: string): McpConfig | null {\n\tif (!existsSync(path)) return null;\n\n\ttry {\n\t\treturn validateConfig(parseJsonConfig(readFileSync(path, \"utf-8\")));\n\t} catch (error) {\n\t\tconsole.warn(`Failed to load ${label}:`, error);\n\t\treturn null;\n\t}\n}\n\nfunction validateConfig(raw: unknown): McpConfig {\n\tif (!isRecord(raw)) {\n\t\treturn { mcpServers: {} };\n\t}\n\n\treturn {\n\t\tmcpServers: toServerEntries(raw.mcpServers ?? raw[\"mcp-servers\"]),\n\t\t...(Array.isArray(raw.imports) ? { imports: raw.imports as ImportKind[] } : {}),\n\t\t...(raw.settings !== undefined ? { settings: raw.settings as McpSettings } : {}),\n\t};\n}\n\nfunction toServerEntries(servers: unknown): Record<string, ServerEntry> {\n\tif (!isRecord(servers)) return {};\n\tconst entries: Record<string, ServerEntry> = {};\n\tfor (const [name, entry] of Object.entries(servers)) {\n\t\tif (isServerEntry(entry)) entries[name] = entry;\n\t}\n\treturn entries;\n}\n\nfunction isServerEntry(value: unknown): value is ServerEntry {\n\treturn isRecord(value);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction mergeOpenCodeConfigs(base: Record<string, unknown>, next: Record<string, unknown>): Record<string, unknown> {\n\tconst baseMcp = base.mcp;\n\tconst nextMcp = next.mcp;\n\tconst mergedMcp: Record<string, unknown> = {\n\t\t...(baseMcp && typeof baseMcp === \"object\" && !Array.isArray(baseMcp) ? baseMcp : {}),\n\t};\n\n\tif (nextMcp && typeof nextMcp === \"object\" && !Array.isArray(nextMcp)) {\n\t\tfor (const [name, nextEntry] of Object.entries(nextMcp)) {\n\t\t\tconst baseEntry = mergedMcp[name];\n\t\t\tif (\n\t\t\t\tbaseEntry &&\n\t\t\t\ttypeof baseEntry === \"object\" &&\n\t\t\t\t!Array.isArray(baseEntry) &&\n\t\t\t\tnextEntry &&\n\t\t\t\ttypeof nextEntry === \"object\" &&\n\t\t\t\t!Array.isArray(nextEntry)\n\t\t\t) {\n\t\t\t\tconst safeBase = { ...(baseEntry as Record<string, unknown>) };\n\t\t\t\tconst override = nextEntry as Record<string, unknown>;\n\t\t\t\tif (typeof override.type === \"string\" && override.type !== safeBase.type) {\n\t\t\t\t\tfor (const field of [\"command\", \"environment\", \"cwd\", \"url\", \"headers\", \"auth\", \"oauth\"])\n\t\t\t\t\t\tdelete safeBase[field];\n\t\t\t\t}\n\t\t\t\tif (typeof override.url === \"string\" && override.url !== safeBase.url) {\n\t\t\t\t\tdelete safeBase.headers;\n\t\t\t\t\tdelete safeBase.auth;\n\t\t\t\t\tdelete safeBase.oauth;\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(override.command)) {\n\t\t\t\t\tconst baseCommand = safeBase.command;\n\t\t\t\t\tconst commandChanged =\n\t\t\t\t\t\t!Array.isArray(baseCommand) ||\n\t\t\t\t\t\toverride.command.length !== baseCommand.length ||\n\t\t\t\t\t\toverride.command.some((value, index) => value !== baseCommand[index]);\n\t\t\t\t\tif (commandChanged) {\n\t\t\t\t\t\tdelete safeBase.environment;\n\t\t\t\t\t\tdelete safeBase.cwd;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst mergedEntry = { ...safeBase, ...override };\n\t\t\t\tfor (const field of [\"environment\", \"headers\", \"oauth\"]) {\n\t\t\t\t\tconst baseField = safeBase[field];\n\t\t\t\t\tconst nextField = override[field];\n\t\t\t\t\tif (\n\t\t\t\t\t\tbaseField &&\n\t\t\t\t\t\ttypeof baseField === \"object\" &&\n\t\t\t\t\t\t!Array.isArray(baseField) &&\n\t\t\t\t\t\tnextField &&\n\t\t\t\t\t\ttypeof nextField === \"object\" &&\n\t\t\t\t\t\t!Array.isArray(nextField)\n\t\t\t\t\t) {\n\t\t\t\t\t\tmergedEntry[field] = {\n\t\t\t\t\t\t\t...(baseField as Record<string, unknown>),\n\t\t\t\t\t\t\t...(nextField as Record<string, unknown>),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmergedMcp[name] = mergedEntry;\n\t\t\t} else {\n\t\t\t\tmergedMcp[name] = nextEntry;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { ...base, ...next, mcp: mergedMcp };\n}\n\nfunction extractServers(config: unknown, kind: ImportKind): Record<string, ServerEntry> {\n\tif (!config || typeof config !== \"object\") return {};\n\n\tconst obj = config as Record<string, unknown>;\n\n\tlet servers: unknown;\n\tswitch (kind) {\n\t\tcase \"claude-desktop\":\n\t\tcase \"claude-code\":\n\t\t\tservers = obj.mcpServers;\n\t\t\tbreak;\n\t\tcase \"codex\":\n\t\t\tservers = obj.mcp_servers ?? obj.mcpServers;\n\t\t\tbreak;\n\t\tcase \"cursor\":\n\t\tcase \"windsurf\":\n\t\tcase \"vscode\":\n\t\t\tservers = obj.mcpServers ?? obj[\"mcp-servers\"];\n\t\t\tbreak;\n\t\tcase \"opencode\":\n\t\t\tservers = obj.mcp;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn {};\n\t}\n\n\tif (!servers || typeof servers !== \"object\" || Array.isArray(servers)) {\n\t\treturn {};\n\t}\n\n\tconst mappedServers: Record<string, ServerEntry> = {};\n\tfor (const [name, entry] of Object.entries(servers)) {\n\t\tif (kind === \"opencode\") {\n\t\t\tif (!entry || typeof entry !== \"object\" || Array.isArray(entry)) continue;\n\t\t\tconst raw = entry as Record<string, unknown>;\n\t\t\tif (raw.enabled === false) continue;\n\n\t\t\tif (\n\t\t\t\traw.type === \"local\" &&\n\t\t\t\tArray.isArray(raw.command) &&\n\t\t\t\traw.command.length > 0 &&\n\t\t\t\traw.command.every((value): value is string => typeof value === \"string\")\n\t\t\t) {\n\t\t\t\tconst env = toStringRecord(raw.environment);\n\t\t\t\tconst command = raw.command[0];\n\t\t\t\tif (command === undefined) continue;\n\t\t\t\tconst mapped: ServerEntry = {\n\t\t\t\t\tcommand,\n\t\t\t\t\targs: raw.command.slice(1),\n\t\t\t\t\t...(env ? { env } : {}),\n\t\t\t\t\t...(typeof raw.cwd === \"string\" ? { cwd: raw.cwd } : {}),\n\t\t\t\t};\n\t\t\t\tmappedServers[name] = mapped;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (raw.type === \"remote\" && typeof raw.url === \"string\") {\n\t\t\t\tconst headers = toStringRecord(raw.headers);\n\t\t\t\tconst mapped: ServerEntry = {\n\t\t\t\t\turl: raw.url,\n\t\t\t\t\t...(headers ? { headers } : {}),\n\t\t\t\t};\n\t\t\t\tif (raw.oauth === false) {\n\t\t\t\t\tmapped.oauth = false;\n\t\t\t\t} else if (raw.oauth && typeof raw.oauth === \"object\" && !Array.isArray(raw.oauth)) {\n\t\t\t\t\tconst oauth = raw.oauth as Record<string, unknown>;\n\t\t\t\t\tmapped.auth = \"oauth\";\n\t\t\t\t\tmapped.oauth = {\n\t\t\t\t\t\t...(typeof oauth.clientId === \"string\" ? { clientId: oauth.clientId } : {}),\n\t\t\t\t\t\t...(typeof oauth.clientSecret === \"string\" ? { clientSecret: oauth.clientSecret } : {}),\n\t\t\t\t\t\t...(typeof oauth.scope === \"string\" ? { scope: oauth.scope } : {}),\n\t\t\t\t\t\t...(typeof oauth.skipIssuerMetadataValidation === \"boolean\"\n\t\t\t\t\t\t\t? { skipIssuerMetadataValidation: oauth.skipIssuerMetadataValidation }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tmappedServers[name] = mapped;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!isRecord(entry)) continue;\n\t\tif (kind !== \"codex\") {\n\t\t\tmappedServers[name] = entry;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst mapped = { ...entry };\n\t\tconst bearerTokenEnv = mapped.bearer_token_env_var;\n\t\tconst httpHeaders = mapped.http_headers;\n\t\tconst envHttpHeaders = mapped.env_http_headers;\n\n\t\tif (typeof bearerTokenEnv === \"string\") {\n\t\t\tmapped.bearerTokenEnv = bearerTokenEnv;\n\t\t\tif (mapped.auth === undefined) mapped.auth = \"bearer\";\n\t\t}\n\t\tif (httpHeaders && typeof httpHeaders === \"object\" && !Array.isArray(httpHeaders)) {\n\t\t\tmapped.headers = {\n\t\t\t\t...(mapped.headers as Record<string, string> | undefined),\n\t\t\t\t...(httpHeaders as Record<string, string>),\n\t\t\t};\n\t\t}\n\t\tif (envHttpHeaders && typeof envHttpHeaders === \"object\" && !Array.isArray(envHttpHeaders)) {\n\t\t\tconst headers = { ...(mapped.headers as Record<string, string> | undefined) };\n\t\t\tfor (const [header, envVar] of Object.entries(envHttpHeaders)) {\n\t\t\t\tif (typeof envVar === \"string\" && headers[header] === undefined) headers[header] = `$env:${envVar}`;\n\t\t\t}\n\t\t\tmapped.headers = headers;\n\t\t}\n\n\t\tdelete mapped.bearer_token_env_var;\n\t\tdelete mapped.http_headers;\n\t\tdelete mapped.env_http_headers;\n\t\tmappedServers[name] = mapped as ServerEntry;\n\t}\n\n\treturn mappedServers;\n}\n\nfunction serializeRawConfig(raw: Record<string, unknown>): string {\n\treturn `${JSON.stringify(raw, null, 2)}\\n`;\n}\n\nfunction buildUnifiedDiff(beforeText: string, afterText: string): string {\n\tif (beforeText === afterText) return \"(no changes)\";\n\n\tconst before = beforeText.split(\"\\n\");\n\tconst after = afterText.split(\"\\n\");\n\tconst rows = before.length;\n\tconst cols = after.length;\n\tconst lcs = Array.from({ length: rows + 1 }, () => Array<number>(cols + 1).fill(0));\n\n\tfor (let i = rows - 1; i >= 0; i--) {\n\t\tfor (let j = cols - 1; j >= 0; j--) {\n\t\t\tconst row = lcs[i];\n\t\t\tconst nextRow = lcs[i + 1];\n\t\t\tif (!row || !nextRow) continue;\n\t\t\trow[j] = before[i] === after[j] ? (nextRow[j + 1] ?? 0) + 1 : Math.max(nextRow[j] ?? 0, row[j + 1] ?? 0);\n\t\t}\n\t}\n\n\tconst lines: string[] = [\"--- before\", \"+++ after\"];\n\tlet i = 0;\n\tlet j = 0;\n\twhile (i < rows || j < cols) {\n\t\tif (i < rows && j < cols && before[i] === after[j]) {\n\t\t\tlines.push(` ${before[i]}`);\n\t\t\ti++;\n\t\t\tj++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (j < cols && (i === rows || (lcs[i]?.[j + 1] ?? 0) >= (lcs[i + 1]?.[j] ?? 0))) {\n\t\t\tlines.push(`+ ${after[j]}`);\n\t\t\tj++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (i < rows) {\n\t\t\tlines.push(`- ${before[i]}`);\n\t\t\ti++;\n\t\t}\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nfunction buildConfigWritePreview(filePath: string, nextRaw: Record<string, unknown>): ConfigWritePreview {\n\tconst existed = existsSync(filePath);\n\tconst beforeRaw = readRawConfigObject(filePath);\n\tconst beforeText = existed ? serializeRawConfig(beforeRaw) : \"\";\n\tconst afterText = serializeRawConfig(nextRaw);\n\treturn {\n\t\tpath: filePath,\n\t\texisted,\n\t\tchanged: beforeText !== afterText,\n\t\tbeforeText,\n\t\tafterText,\n\t\tdiffText: buildUnifiedDiff(beforeText, afterText),\n\t};\n}\n\nfunction readRawConfigObject(filePath: string): Record<string, unknown> {\n\tif (!existsSync(filePath)) return {};\n\n\ttry {\n\t\tconst raw = parseJsonConfig(readFileSync(filePath, \"utf-8\"));\n\t\treturn raw && typeof raw === \"object\" && !Array.isArray(raw) ? (raw as Record<string, unknown>) : {};\n\t} catch {\n\t\treturn {};\n\t}\n}\n\nfunction writeRawConfigObject(filePath: string, raw: Record<string, unknown>): void {\n\tmkdirSync(dirname(filePath), { recursive: true });\n\tconst tmpPath = `${filePath}.${process.pid}.tmp`;\n\twriteFileSync(tmpPath, `${JSON.stringify(raw, null, 2)}\\n`, \"utf-8\");\n\trenameSync(tmpPath, filePath);\n}\n\nfunction getServersObject(raw: Record<string, unknown>): Record<string, ServerEntry> {\n\tconst existing = raw.mcpServers ?? raw[\"mcp-servers\"] ?? {};\n\tif (!existing || typeof existing !== \"object\" || Array.isArray(existing)) {\n\t\treturn {};\n\t}\n\treturn existing as Record<string, ServerEntry>;\n}\n\nfunction setServersObject(raw: Record<string, unknown>, servers: Record<string, ServerEntry>): void {\n\tdelete raw[\"mcp-servers\"];\n\traw.mcpServers = servers;\n}\n\nexport interface ServerDisabledOverrideResult {\n\tpath: string;\n\tchanged: boolean;\n}\n\n/**\n * Persist only the disabled field in the project Nexus layer. Enabling writes an\n * explicit false only when a lower-precedence source is itself disabled; this\n * writer never copies a server definition or its credentials into the file.\n */\nexport function writeProjectServerDisabledOverride(\n\toverridePath: string | undefined,\n\tcwd: string,\n\tserverName: string,\n\tdisabled: boolean,\n): ServerDisabledOverrideResult {\n\tconst filePath = getProjectNexusConfigPath(cwd);\n\tlet raw: Record<string, unknown> = {};\n\tif (existsSync(filePath)) {\n\t\ttry {\n\t\t\tconst parsed = parseJsonConfig(readFileSync(filePath, \"utf-8\"));\n\t\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\t\tthrow new Error(\"root value must be an object\");\n\t\t\t}\n\t\t\traw = parsed as Record<string, unknown>;\n\t\t} catch (error) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to read project MCP override at ${filePath}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t{ cause: error },\n\t\t\t);\n\t\t}\n\t}\n\n\tconst serverKey =\n\t\traw.mcpServers !== undefined ? \"mcpServers\" : raw[\"mcp-servers\"] !== undefined ? \"mcp-servers\" : \"mcpServers\";\n\tconst rawServers = raw[serverKey];\n\tif (rawServers !== undefined && (!rawServers || typeof rawServers !== \"object\" || Array.isArray(rawServers))) {\n\t\tthrow new Error(`Failed to update project MCP override at ${filePath}: ${serverKey} must be an object`);\n\t}\n\tconst servers = (rawServers ?? {}) as Record<string, unknown>;\n\tconst previous = servers[serverName];\n\tif (previous !== undefined && (!previous || typeof previous !== \"object\" || Array.isArray(previous))) {\n\t\tthrow new Error(`Failed to update project MCP override at ${filePath}: server \"${serverName}\" must be an object`);\n\t}\n\tconst existing = previous as Record<string, unknown> | undefined;\n\n\tlet next: Record<string, unknown>;\n\tif (disabled) {\n\t\tnext = { ...existing, disabled: true };\n\t} else {\n\t\tnext = Object.fromEntries(Object.entries(existing ?? {}).filter(([key]) => key !== \"disabled\"));\n\t\tlet lowerConfig: McpConfig = { mcpServers: {} };\n\t\tfor (const source of getConfigSources(overridePath, cwd)) {\n\t\t\tif (source.readPath === filePath) continue;\n\t\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\t\tif (loaded) lowerConfig = mergeConfigs(lowerConfig, expandImports(loaded, cwd));\n\t\t}\n\t\tif (raw.imports !== undefined) {\n\t\t\tif (\n\t\t\t\t!Array.isArray(raw.imports) ||\n\t\t\t\traw.imports.some((kind) => typeof kind !== \"string\" || !Object.hasOwn(IMPORT_PATHS, kind))\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to update project MCP override at ${filePath}: imports contains an unsupported config kind`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tlowerConfig = mergeConfigs(\n\t\t\t\tlowerConfig,\n\t\t\t\texpandImports({ mcpServers: {}, imports: raw.imports as ImportKind[] }, cwd),\n\t\t\t);\n\t\t}\n\t\tif (isServerDisabled(lowerConfig.mcpServers[serverName])) next.disabled = false;\n\t}\n\n\tif ((!existing && Object.keys(next).length === 0) || JSON.stringify(existing) === JSON.stringify(next)) {\n\t\treturn { path: filePath, changed: false };\n\t}\n\tif (Object.keys(next).length === 0) delete servers[serverName];\n\telse servers[serverName] = next;\n\n\traw[serverKey] = servers;\n\twriteRawConfigObject(filePath, raw);\n\treturn { path: filePath, changed: true };\n}\n\nfunction isRepoPromptServer(name: string, entry: ServerEntry): boolean {\n\tconst normalizedName = name.toLowerCase();\n\tif (normalizedName.includes(\"repoprompt\") || normalizedName === \"rp\") {\n\t\treturn true;\n\t}\n\n\tconst command = entry.command?.toLowerCase() ?? \"\";\n\tif (command.includes(\"repoprompt\") || command.includes(\"rp-mcp\") || command.endsWith(\"repoprompt_cli\")) {\n\t\treturn true;\n\t}\n\n\treturn (entry.args ?? []).some((arg) => typeof arg === \"string\" && arg.toLowerCase().includes(\"repoprompt\"));\n}\n\nfunction findProjectRoot(cwd = process.cwd()): string | null {\n\tlet current = resolve(cwd);\n\twhile (true) {\n\t\tif (\n\t\t\texistsSync(join(current, \".git\")) ||\n\t\t\texistsSync(join(current, \"package.json\")) ||\n\t\t\texistsSync(getProjectConfigPath(current)) ||\n\t\t\texistsSync(join(current, getConfigDirName()))\n\t\t) {\n\t\t\treturn current;\n\t\t}\n\n\t\tconst parent = dirname(current);\n\t\tif (parent === current) return null;\n\t\tcurrent = parent;\n\t}\n}\n\nfunction buildRepoPromptEntry(executablePath: string): ServerEntry {\n\treturn {\n\t\tcommand: executablePath,\n\t\targs: [],\n\t\tlifecycle: \"lazy\",\n\t};\n}\n\nfunction detectRepoPrompt(\n\tsummary: Omit<McpDiscoverySummary, \"fingerprint\" | \"repoPrompt\">,\n\tcwd = process.cwd(),\n): RepoPromptDiscovery {\n\tfor (const source of summary.sources) {\n\t\tif (source.serverCount === 0) continue;\n\t\tconst config = readValidatedConfig(source.path, `MCP config from ${source.path}`);\n\t\tif (!config) continue;\n\t\tfor (const [name, entry] of Object.entries(config.mcpServers)) {\n\t\t\tif (isRepoPromptServer(name, entry)) {\n\t\t\t\treturn { configured: true, configuredPath: source.path };\n\t\t\t}\n\t\t}\n\t}\n\n\tconst executablePath = REPOPROMPT_BINARY_CANDIDATES.find((candidate) => existsSync(candidate));\n\tif (!executablePath) {\n\t\treturn { configured: false };\n\t}\n\n\tconst projectRoot = findProjectRoot(cwd);\n\tconst targetPath = projectRoot ? getProjectConfigPath(projectRoot) : NEXUS_GLOBAL_CONFIG_PATH;\n\treturn {\n\t\tconfigured: false,\n\t\texecutablePath,\n\t\ttargetPath,\n\t\tserverName: \"repoprompt\",\n\t\tentry: buildRepoPromptEntry(executablePath),\n\t};\n}\n\nexport function previewCompatibilityImports(importKinds: ImportKind[], overridePath?: string): ConfigWritePreview {\n\tconst targetPath = getNexusGlobalConfigPath(overridePath);\n\tconst raw = readRawConfigObject(targetPath);\n\tconst currentImports = Array.isArray(raw.imports)\n\t\t? raw.imports.filter((value): value is ImportKind => typeof value === \"string\")\n\t\t: [];\n\tconst merged = [...new Set([...currentImports, ...importKinds])];\n\tconst nextRaw = { ...raw, imports: merged };\n\tsetServersObject(nextRaw, getServersObject(nextRaw));\n\treturn buildConfigWritePreview(targetPath, nextRaw);\n}\n\nexport function ensureCompatibilityImports(\n\timportKinds: ImportKind[],\n\toverridePath?: string,\n): { path: string; added: ImportKind[] } {\n\tconst targetPath = getNexusGlobalConfigPath(overridePath);\n\tconst raw = readRawConfigObject(targetPath);\n\tconst currentImports = Array.isArray(raw.imports)\n\t\t? raw.imports.filter((value): value is ImportKind => typeof value === \"string\")\n\t\t: [];\n\tconst merged = [...new Set([...currentImports, ...importKinds])];\n\tconst added = merged.filter((kind) => !currentImports.includes(kind));\n\tif (added.length === 0) {\n\t\treturn { path: targetPath, added: [] };\n\t}\n\n\traw.imports = merged;\n\tconst servers = getServersObject(raw);\n\tsetServersObject(raw, servers);\n\twriteRawConfigObject(targetPath, raw);\n\treturn { path: targetPath, added };\n}\n\nexport function buildStarterProjectConfig(): McpConfig {\n\treturn {\n\t\tmcpServers: {},\n\t};\n}\n\nexport function previewStarterProjectConfig(cwd = process.cwd()): ConfigWritePreview {\n\tconst targetPath = getProjectConfigPath(cwd);\n\tconst nextRaw = { mcpServers: buildStarterProjectConfig().mcpServers };\n\treturn buildConfigWritePreview(targetPath, nextRaw);\n}\n\nexport function writeStarterProjectConfig(cwd = process.cwd()): string {\n\tconst targetPath = getProjectConfigPath(cwd);\n\tconst raw = { mcpServers: buildStarterProjectConfig().mcpServers };\n\twriteRawConfigObject(targetPath, raw);\n\treturn targetPath;\n}\n\nexport function previewSharedServerEntry(filePath: string, serverName: string, entry: ServerEntry): ConfigWritePreview {\n\tconst raw = readRawConfigObject(filePath);\n\tconst nextRaw = { ...raw };\n\tconst servers = getServersObject(nextRaw);\n\tservers[serverName] = entry;\n\tsetServersObject(nextRaw, servers);\n\treturn buildConfigWritePreview(filePath, nextRaw);\n}\n\nexport function writeSharedServerEntry(filePath: string, serverName: string, entry: ServerEntry): string {\n\tconst raw = readRawConfigObject(filePath);\n\tconst servers = getServersObject(raw);\n\tservers[serverName] = entry;\n\tsetServersObject(raw, servers);\n\twriteRawConfigObject(filePath, raw);\n\treturn filePath;\n}\n\nexport function getServerProvenance(overridePath?: string, cwd = process.cwd()): Map<string, ServerProvenance> {\n\tconst provenance = new Map<string, ServerProvenance>();\n\tconst userPath = getNexusGlobalConfigPath(overridePath);\n\n\tif (getConfiguredHostConfigDiscovery(overridePath, cwd) === \"on\") {\n\t\tfor (const importKind of Object.keys(IMPORT_PATHS) as ImportKind[]) {\n\t\t\tconst imported = loadImportedConfig(\n\t\t\t\timportKind,\n\t\t\t\tcwd,\n\t\t\t\t`Failed to inspect imported MCP config from ${importKind}:`,\n\t\t\t);\n\t\t\tif (!imported) continue;\n\t\t\tfor (const name of Object.keys(extractServers(imported.value, importKind))) {\n\t\t\t\t// Keep writes inside Nexus-owned storage even though the source is external.\n\t\t\t\t// Later import kinds win in the same deterministic order as loadDiscoveredHostConfigs.\n\t\t\t\tprovenance.set(name, { path: userPath, kind: \"import\", importKind });\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const source of getConfigSources(overridePath, cwd)) {\n\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\tif (!loaded) continue;\n\n\t\tif (loaded.imports?.length) {\n\t\t\tfor (const importKind of loaded.imports) {\n\t\t\t\tconst imported = loadImportedConfig(\n\t\t\t\t\timportKind,\n\t\t\t\t\tcwd,\n\t\t\t\t\t`Failed to inspect imported MCP config from ${importKind}:`,\n\t\t\t\t);\n\t\t\t\tif (!imported) continue;\n\n\t\t\t\tconst servers = extractServers(imported.value, importKind);\n\t\t\t\tfor (const name of Object.keys(servers)) {\n\t\t\t\t\t// Sources and their imports are visited from lower to higher precedence.\n\t\t\t\t\t// Always replace the prior provenance so writes follow the definition\n\t\t\t\t\t// that actually won the merge.\n\t\t\t\t\tprovenance.set(name, { path: userPath, kind: \"import\", importKind });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const name of Object.keys(loaded.mcpServers)) {\n\t\t\tprovenance.set(name, {\n\t\t\t\tpath: source.writePath,\n\t\t\t\tkind: source.kind,\n\t\t\t\t...(source.importKind !== undefined ? { importKind: source.importKind } : {}),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn provenance;\n}\n\nexport function writeDirectToolsConfig(\n\tchanges: Map<string, true | string[] | false>,\n\tprovenance: Map<string, ServerProvenance>,\n): void {\n\tconst byPath = new Map<string, { name: string; value: true | string[] | false; prov: ServerProvenance }[]>();\n\n\tfor (const [serverName, value] of changes) {\n\t\tconst prov = provenance.get(serverName);\n\t\tif (!prov) continue;\n\n\t\tconst targetPath = prov.path;\n\n\t\tif (!byPath.has(targetPath)) byPath.set(targetPath, []);\n\t\tbyPath.get(targetPath)!.push({ name: serverName, value, prov });\n\t}\n\n\tfor (const [filePath, entries] of byPath) {\n\t\tconst raw = readRawConfigObject(filePath);\n\t\tconst servers = getServersObject(raw);\n\n\t\tfor (const { name, value, prov } of entries) {\n\t\t\tif (prov.kind === \"import\") {\n\t\t\t\t// Imported definitions can contain credentials. Persist only Nexus's\n\t\t\t\t// field-level override and let mergeServerMaps inherit the definition\n\t\t\t\t// from the selected compatibility source on the next load.\n\t\t\t\tservers[name] = { ...(servers[name] ?? {}), directTools: value };\n\t\t\t} else if (servers[name]) {\n\t\t\t\tservers[name] = { ...servers[name], directTools: value };\n\t\t\t}\n\t\t}\n\n\t\tsetServersObject(raw, servers);\n\t\twriteRawConfigObject(filePath, raw);\n\t}\n}\n\nexport function resolveConfiguredOAuthDir(raw: unknown, cwd = process.cwd()): string | undefined {\n\tif (raw === undefined || raw === null) return undefined;\n\tif (typeof raw !== \"string\") {\n\t\tthrow new Error(\"settings.oauthDir must be a string\");\n\t}\n\n\tconst trimmed = raw.trim();\n\tif (!trimmed) return undefined;\n\treturn resolve(cwd, trimmed);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/extensions/mcp/config.ts"],"names":[],"mappings":"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","sourcesContent":["// config.ts - Config loading with import support\nimport { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { parse as parseToml } from \"smol-toml\";\nimport stripJsonComments from \"strip-json-comments\";\nimport { getConfigDirName } from \"./agent-dir.ts\";\nimport { type AgentPluginSummary, getAgentPluginSummaries, loadAgentPluginConfigs } from \"./agent-plugin-loader.ts\";\nimport { loadPackageMcpConfigs } from \"./package-mcp-loader.ts\";\nimport {\n\ttype HostConfigDiscovery,\n\ttype ImportKind,\n\tisServerDisabled,\n\ttype McpConfig,\n\ttype McpSettings,\n\ttype ServerEntry,\n\ttype ServerProvenance,\n} from \"./types.ts\";\nimport { toStringRecord } from \"./utils.ts\";\n\nconst NEXUS_GLOBAL_CONFIG_PATH = join(homedir(), \".config\", \"nexus\", \"mcp.json\");\nconst PROJECT_CONFIG_NAME = \"mcp.json\";\nconst REPOPROMPT_BINARY_CANDIDATES = [\n\tjoin(homedir(), \"RepoPrompt\", \"repoprompt_cli\"),\n\t\"/Applications/Repo Prompt.app/Contents/MacOS/repoprompt-mcp\",\n];\n\nexport interface KnownServerPreset {\n\tid: string;\n\tname: string;\n\tsummary: string;\n\tentry: ServerEntry;\n\t/** Optional \"learn more\" link shown in the setup panel. Not used for anything functional. */\n\tdocsUrl?: string;\n}\n\nexport const KNOWN_SERVER_PRESETS: readonly KnownServerPreset[] = [\n\t{\n\t\tid: \"deepwiki\",\n\t\tname: \"DeepWiki\",\n\t\tsummary: \"Ask questions about public GitHub repositories.\",\n\t\tentry: { url: \"https://mcp.deepwiki.com/mcp\", protocolVersion: \"auto\" },\n\t\tdocsUrl: \"https://docs.devin.ai/work-with-devin/deepwiki-mcp\",\n\t},\n\t{\n\t\tid: \"context7\",\n\t\tname: \"Context7\",\n\t\tsummary: \"Look up current library documentation and examples.\",\n\t\tentry: { url: \"https://mcp.context7.com/mcp\", protocolVersion: \"auto\" },\n\t\tdocsUrl: \"https://context7.com\",\n\t},\n\t{\n\t\tid: \"notion\",\n\t\tname: \"Notion\",\n\t\tsummary: \"Search and work with your Notion workspace.\",\n\t\tentry: { url: \"https://mcp.notion.com/mcp\", auth: \"oauth\", protocolVersion: \"auto\" },\n\t\tdocsUrl: \"https://developers.notion.com/docs/mcp\",\n\t},\n\t{\n\t\tid: \"github\",\n\t\tname: \"GitHub\",\n\t\tsummary: \"Work with GitHub through your Copilot account.\",\n\t\tentry: { url: \"https://api.githubcopilot.com/mcp\", auth: \"oauth\", protocolVersion: \"auto\" },\n\t\tdocsUrl: \"https://github.com/github/github-mcp-server\",\n\t},\n\t{\n\t\tid: \"chrome-devtools\",\n\t\tname: \"Chrome DevTools\",\n\t\tsummary: \"Inspect and automate a local Chrome browser.\",\n\t\tentry: { command: \"npx\", args: [\"-y\", \"chrome-devtools-mcp@1.6.0\"] },\n\t\tdocsUrl: \"https://github.com/ChromeDevTools/chrome-devtools-mcp\",\n\t},\n];\n\nconst IMPORT_PATHS: Record<ImportKind, string[]> = {\n\tcursor: [join(homedir(), \".cursor\", \"mcp.json\")],\n\t\"claude-code\": [\n\t\tjoin(homedir(), \".claude\", \"mcp.json\"),\n\t\tjoin(homedir(), \".claude.json\"),\n\t\tjoin(homedir(), \".claude\", \"claude_desktop_config.json\"),\n\t],\n\t\"claude-desktop\": [join(homedir(), \"Library\", \"Application Support\", \"Claude\", \"claude_desktop_config.json\")],\n\tcodex: [join(homedir(), \".codex\", \"config.toml\"), join(homedir(), \".codex\", \"config.json\")],\n\topencode: [join(homedir(), \".config\", \"opencode\", \"opencode.json\"), \"./opencode.json\"],\n\twindsurf: [join(homedir(), \".windsurf\", \"mcp.json\")],\n\tvscode: [\".vscode/mcp.json\"],\n};\n\ninterface ConfigSourceSpec {\n\tid: \"nexus-global\" | \"nexus-project\";\n\tlabel: string;\n\treadPath: string;\n\twritePath: string;\n\tkind: \"user\" | \"project\" | \"import\";\n\timportKind?: string;\n\tshared: boolean;\n\tscope: \"global\" | \"project\";\n}\n\nexport interface ConfigDiscoveryPath {\n\tlabel: string;\n\tpath: string;\n\texists: boolean;\n}\n\nexport interface DiscoveredImportConfig {\n\tkind: ImportKind;\n\tpath: string;\n}\n\nexport interface ConfigDiscoverySource extends ConfigDiscoveryPath {\n\tid: ConfigSourceSpec[\"id\"];\n\tscope: ConfigSourceSpec[\"scope\"];\n\tkind: \"shared\" | \"nexus\";\n\tserverCount: number;\n}\n\nexport interface ImportConfigSummary extends DiscoveredImportConfig {\n\tserverCount: number;\n}\n\nexport interface HostConfigSummary extends ImportConfigSummary {\n\tactive: boolean;\n}\n\nexport interface McpConfigConflict {\n\tserverName: string;\n\tsources: Array<{ kind: \"shared\" | \"nexus\" | \"host\"; path: string }>;\n\twinner: { kind: \"shared\" | \"nexus\" | \"host\"; path: string };\n}\n\nexport interface RepoPromptDiscovery {\n\tconfigured: boolean;\n\tconfiguredPath?: string;\n\texecutablePath?: string;\n\ttargetPath?: string;\n\tserverName?: string;\n\tentry?: ServerEntry;\n}\n\nexport interface McpDiscoverySummary {\n\tsources: ConfigDiscoverySource[];\n\timports: ImportConfigSummary[];\n\thostConfigs: HostConfigSummary[];\n\thostConfigDiscovery: HostConfigDiscovery;\n\tagentPlugins: AgentPluginSummary[];\n\tconflicts: McpConfigConflict[];\n\thasAnyConfig: boolean;\n\thasAnyDetectedPaths: boolean;\n\thasSharedServers: boolean;\n\thasNexusOwnedServers: boolean;\n\ttotalServerCount: number;\n\tfingerprint: string;\n\trepoPrompt: RepoPromptDiscovery;\n}\n\nexport interface McpStandardConfigSummary {\n\tsources: ConfigDiscoverySource[];\n\thasSharedServers: boolean;\n\tfingerprint: string;\n}\n\nexport interface ConfigWritePreview {\n\tpath: string;\n\texisted: boolean;\n\tchanged: boolean;\n\tbeforeText: string;\n\tafterText: string;\n\tdiffText: string;\n}\n\nexport function getNexusGlobalConfigPath(overridePath?: string): string {\n\treturn overridePath ? resolve(overridePath) : NEXUS_GLOBAL_CONFIG_PATH;\n}\n\nexport function getGenericGlobalConfigPath(): string {\n\treturn NEXUS_GLOBAL_CONFIG_PATH;\n}\n\nexport function getProjectConfigPath(cwd = process.cwd()): string {\n\treturn resolve(cwd, getConfigDirName(), PROJECT_CONFIG_NAME);\n}\n\nexport function getProjectNexusConfigPath(cwd = process.cwd()): string {\n\treturn getProjectConfigPath(cwd);\n}\n\nexport function getConfigDiscoveryPaths(overridePath?: string, cwd = process.cwd()): ConfigDiscoveryPath[] {\n\treturn getConfigSources(overridePath, cwd).map((source) => ({\n\t\tlabel: source.label,\n\t\tpath: source.readPath,\n\t\texists: existsSync(source.readPath),\n\t}));\n}\n\nexport function findAvailableImportConfigs(cwd = process.cwd()): DiscoveredImportConfig[] {\n\tconst discovered: DiscoveredImportConfig[] = [];\n\n\tfor (const importKind of Object.keys(IMPORT_PATHS) as ImportKind[]) {\n\t\tconst importPath = resolveImportPath(importKind, cwd);\n\t\tif (importPath) {\n\t\t\tdiscovered.push({ kind: importKind, path: importPath });\n\t\t}\n\t}\n\n\treturn discovered;\n}\n\nfunction getConfigSourceSummaries(sourceSpecs: ConfigSourceSpec[]): ConfigDiscoverySource[] {\n\treturn sourceSpecs.map((source) => {\n\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\treturn {\n\t\t\tid: source.id,\n\t\t\tlabel: source.label,\n\t\t\tpath: source.readPath,\n\t\t\texists: existsSync(source.readPath),\n\t\t\tscope: source.scope,\n\t\t\tkind: source.shared ? \"shared\" : \"nexus\",\n\t\t\tserverCount: loaded ? Object.keys(loaded.mcpServers).length : 0,\n\t\t} satisfies ConfigDiscoverySource;\n\t});\n}\n\nexport function getMcpStandardConfigSummary(overridePath?: string, cwd = process.cwd()): McpStandardConfigSummary {\n\tconst sources = getConfigSourceSummaries(getConfigSources(overridePath, cwd));\n\treturn {\n\t\tsources,\n\t\thasSharedServers: sources.some((source) => source.kind === \"shared\" && source.serverCount > 0),\n\t\tfingerprint: JSON.stringify({ sources: sources.map((source) => [source.id, source.exists, source.serverCount]) }),\n\t};\n}\n\nexport function getMcpDiscoverySummary(\n\toverridePath?: string,\n\tcwd = process.cwd(),\n\toptions: { includeHostConfigs?: boolean } = {},\n): McpDiscoverySummary {\n\tconst sourceSpecs = getConfigSources(overridePath, cwd);\n\tconst sources = getConfigSourceSummaries(sourceSpecs);\n\tconst includeHostConfigs = options.includeHostConfigs !== false;\n\n\tconst imports = includeHostConfigs\n\t\t? (Object.keys(IMPORT_PATHS) as ImportKind[])\n\t\t\t\t.map((kind) => {\n\t\t\t\t\tconst imported = loadImportedConfig(kind, cwd, `Failed to inspect imported MCP config from ${kind}:`);\n\t\t\t\t\tif (!imported) return null;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\tpath: imported.path,\n\t\t\t\t\t\tserverCount: Object.keys(extractServers(imported.value, kind)).length,\n\t\t\t\t\t} satisfies ImportConfigSummary;\n\t\t\t\t})\n\t\t\t\t.filter((value): value is ImportConfigSummary => value !== null)\n\t\t: [];\n\tconst hostConfigDiscovery = getConfiguredHostConfigDiscovery(overridePath, cwd);\n\tconst hostConfigs = imports.map((entry) => ({ ...entry, active: hostConfigDiscovery === \"on\" }));\n\tconst settings = getMergedSettings(overridePath, cwd);\n\tconst agentPlugins = getAgentPluginSummaries(settings?.agentPluginPaths, cwd);\n\tconst totalServerCount =\n\t\tsources.reduce((sum, source) => sum + source.serverCount, 0) +\n\t\tagentPlugins.reduce((sum, plugin) => sum + plugin.serverCount, 0);\n\tconst hasSharedServers =\n\t\tsources.some((source) => source.kind === \"shared\" && source.serverCount > 0) ||\n\t\tagentPlugins.some((plugin) => plugin.serverCount > 0);\n\tconst hasNexusOwnedServers = sources.some((source) => source.kind === \"nexus\" && source.serverCount > 0);\n\tconst hasAnyDetectedPaths = sources.some((source) => source.exists) || imports.length > 0 || agentPlugins.length > 0;\n\tconst hasAnyConfig = totalServerCount > 0 || imports.some((entry) => entry.serverCount > 0) || hasAnyDetectedPaths;\n\n\tconst summaryWithoutRepoPrompt = {\n\t\tsources,\n\t\timports,\n\t\thostConfigs,\n\t\thostConfigDiscovery,\n\t\tagentPlugins,\n\t\tconflicts: getConfigConflicts(sourceSpecs, imports, cwd),\n\t\thasAnyConfig,\n\t\thasAnyDetectedPaths,\n\t\thasSharedServers,\n\t\thasNexusOwnedServers,\n\t\ttotalServerCount,\n\t};\n\n\tconst fingerprint = JSON.stringify({\n\t\tsources: sources.map((source) => [source.id, source.exists, source.serverCount]),\n\t\timports: imports.map((entry) => [entry.kind, entry.path, entry.serverCount]),\n\t\tagentPlugins: agentPlugins.map((entry) => [entry.path, entry.name, entry.serverCount]),\n\t\thostConfigDiscovery,\n\t\tconflicts: summaryWithoutRepoPrompt.conflicts,\n\t});\n\n\treturn {\n\t\t...summaryWithoutRepoPrompt,\n\t\tfingerprint,\n\t\trepoPrompt: detectRepoPrompt(summaryWithoutRepoPrompt, cwd),\n\t};\n}\n\nexport function cloneMcpConfig(config: McpConfig): McpConfig {\n\treturn structuredClone(config);\n}\n\nexport function loadMcpConfig(overridePath?: string, cwd = process.cwd(), includeProject = true): McpConfig {\n\tconst sourceSpecs = getConfigSources(overridePath, cwd, includeProject);\n\tconst hostConfigDiscovery = getConfiguredHostConfigDiscovery(overridePath, cwd, includeProject);\n\t// Host files are a lower-precedence fallback. This ordering means an opt-in\n\t// discovery cannot override a shared or Nexus-owned definition, and all normal\n\t// URL-bound credential stripping remains in mergeServerMaps.\n\tlet config: McpConfig = hostConfigDiscovery === \"on\" ? loadDiscoveredHostConfigs(cwd) : { mcpServers: {} };\n\n\tfor (const source of sourceSpecs) {\n\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\tif (!loaded) continue;\n\t\tconfig = mergeConfigs(config, expandImports(loaded, cwd));\n\t}\n\n\tconst packageConfig = loadPackageMcpConfigs(cwd, includeProject);\n\tconst pluginConfig = loadAgentPluginConfigs(config.settings?.agentPluginPaths, cwd);\n\tconst packageServers = Object.fromEntries(\n\t\tObject.entries(packageConfig.mcpServers).filter(([name]) => !Object.hasOwn(pluginConfig.mcpServers, name)),\n\t);\n\treturn mergeConfigs({ mcpServers: packageServers }, mergeConfigs(pluginConfig, config));\n}\n\nfunction getMergedSettings(overridePath?: string, cwd = process.cwd(), includeProject = true): McpSettings | undefined {\n\tlet settings: McpSettings | undefined;\n\tfor (const source of getConfigSources(overridePath, cwd, includeProject)) {\n\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\tif (loaded?.settings) settings = { ...settings, ...loaded.settings };\n\t}\n\treturn settings;\n}\n\nfunction getConfiguredHostConfigDiscovery(\n\toverridePath?: string,\n\tcwd = process.cwd(),\n\tincludeProject = true,\n): HostConfigDiscovery {\n\tlet configured: HostConfigDiscovery = \"off\";\n\tconst settings = getMergedSettings(overridePath, cwd, includeProject);\n\tconst value = settings?.hostConfigDiscovery;\n\tif (value === \"off\" || value === \"prompt\" || value === \"on\") configured = value;\n\treturn configured;\n}\n\nfunction loadDiscoveredHostConfigs(cwd: string): McpConfig {\n\tlet config: McpConfig = { mcpServers: {} };\n\tfor (const importKind of Object.keys(IMPORT_PATHS) as ImportKind[]) {\n\t\tconst imported = loadImportedConfig(\n\t\t\timportKind,\n\t\t\tcwd,\n\t\t\t`Failed to discover imported MCP config from ${importKind}:`,\n\t\t);\n\t\tif (!imported) continue;\n\t\tconfig = mergeConfigs(config, {\n\t\t\tmcpServers: extractServers(imported.value, importKind),\n\t\t});\n\t}\n\treturn config;\n}\n\nfunction getConfigConflicts(\n\tsourceSpecs: ConfigSourceSpec[],\n\timports: ImportConfigSummary[],\n\tcwd: string,\n): McpConfigConflict[] {\n\tconst seen = new Map<string, Array<{ kind: \"shared\" | \"nexus\" | \"host\"; path: string }>>();\n\tconst record = (name: string, source: { kind: \"shared\" | \"nexus\" | \"host\"; path: string }): void => {\n\t\tconst entries = seen.get(name) ?? [];\n\t\tif (!entries.some((entry) => entry.kind === source.kind && entry.path === source.path)) entries.push(source);\n\t\tseen.set(name, entries);\n\t};\n\n\t// Host candidates are listed first because, when enabled, they are the\n\t// lowest-precedence fallback. The fixed IMPORT_PATHS order is deterministic.\n\tfor (const entry of imports) {\n\t\tconst imported = loadImportedConfig(entry.kind, cwd, `Failed to inspect imported MCP config from ${entry.kind}:`);\n\t\tif (!imported) continue;\n\t\tfor (const name of Object.keys(extractServers(imported.value, entry.kind))) {\n\t\t\trecord(name, { kind: \"host\", path: imported.path });\n\t\t}\n\t}\n\tfor (const source of sourceSpecs) {\n\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\tif (!loaded) continue;\n\t\tif (loaded.imports?.length) {\n\t\t\tfor (const importKind of loaded.imports) {\n\t\t\t\tconst imported = loadImportedConfig(\n\t\t\t\t\timportKind,\n\t\t\t\t\tcwd,\n\t\t\t\t\t`Failed to inspect imported MCP config from ${importKind}:`,\n\t\t\t\t);\n\t\t\t\tif (!imported) continue;\n\t\t\t\tfor (const name of Object.keys(extractServers(imported.value, importKind))) {\n\t\t\t\t\trecord(name, { kind: \"host\", path: imported.path });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const name of Object.keys(loaded.mcpServers)) {\n\t\t\trecord(name, {\n\t\t\t\tkind: source.shared ? \"shared\" : \"nexus\",\n\t\t\t\tpath: source.readPath,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn [...seen.entries()]\n\t\t.filter(([, sources]) => sources.length > 1)\n\t\t.map(([serverName, sources]) => ({ serverName, sources, winner: sources[sources.length - 1]! }))\n\t\t.sort((left, right) => left.serverName.localeCompare(right.serverName));\n}\n\nfunction getConfigSources(overridePath?: string, cwd = process.cwd(), includeProject = true): ConfigSourceSpec[] {\n\tconst userPath = getNexusGlobalConfigPath(overridePath);\n\tconst sources: ConfigSourceSpec[] = [\n\t\t{\n\t\t\tid: \"nexus-global\",\n\t\t\tlabel: \"Nexus global MCP\",\n\t\t\treadPath: userPath,\n\t\t\twritePath: userPath,\n\t\t\tkind: \"user\",\n\t\t\tshared: false,\n\t\t\tscope: \"global\",\n\t\t},\n\t];\n\n\tconst projectPath = getProjectConfigPath(cwd);\n\tif (includeProject && projectPath !== userPath) {\n\t\tsources.push({\n\t\t\tid: \"nexus-project\",\n\t\t\tlabel: \"Nexus project MCP\",\n\t\t\treadPath: projectPath,\n\t\t\twritePath: projectPath,\n\t\t\tkind: \"project\",\n\t\t\tshared: false,\n\t\t\tscope: \"project\",\n\t\t});\n\t}\n\n\treturn sources;\n}\n\nfunction mergeConfigs(base: McpConfig, next: McpConfig): McpConfig {\n\tconst imports = mergeImports(base.imports, next.imports);\n\tconst settings = next.settings ? { ...base.settings, ...next.settings } : base.settings;\n\treturn {\n\t\tmcpServers: mergeServerMaps(base.mcpServers, next.mcpServers),\n\t\t...(imports !== undefined ? { imports } : {}),\n\t\t...(settings !== undefined ? { settings } : {}),\n\t};\n}\n\n// Credential-bearing fields whose value is bound to a specific server `url`.\n// When a higher-precedence config source repoints an existing server at a\n// different url, these MUST NOT be inherited from the lower-precedence entry —\n// otherwise the original endpoint's credentials would be shipped to the new\n// url. See the SECURITY note in mergeServerMaps.\nconst URL_BOUND_AUTH_FIELDS = [\n\t\"headers\",\n\t\"bearerToken\",\n\t\"bearerTokenEnv\",\n\t\"bearerTokenStore\",\n\t\"requestHeadersCommand\",\n] as const;\n\nfunction mergeServerMaps(\n\tbase: Record<string, ServerEntry>,\n\tnext: Record<string, ServerEntry>,\n): Record<string, ServerEntry> {\n\tconst merged = { ...base };\n\tfor (const [name, definition] of Object.entries(next)) {\n\t\tconst existing = merged[name];\n\t\t// SECURITY (credential/url binding): the merge is per-field, so a\n\t\t// higher-precedence source that supplies only a new `url` for an existing\n\t\t// server would otherwise retain the lower-precedence entry's auth material\n\t\t// (Authorization header, bearer token, OAuth config) and send it to the new\n\t\t// url — a credential-exfiltration vector when the higher-precedence source\n\t\t// is less trusted than the one that first defined the server. Bind auth to\n\t\t// the url that supplied it: when the url changes, drop inherited auth\n\t\t// material before merging. Auth explicitly re-supplied by `definition` still\n\t\t// applies (it is spread last). Behaviour is unchanged when the url is\n\t\t// identical or the override omits `url` (partial overrides still inherit).\n\t\tlet baseEntry: ServerEntry = existing ?? {};\n\t\tif (existing && typeof definition.command === \"string\") {\n\t\t\tbaseEntry = { ...existing };\n\t\t\tfor (const field of [\n\t\t\t\t\"url\",\n\t\t\t\t\"headers\",\n\t\t\t\t\"requestHeadersCommand\",\n\t\t\t\t\"auth\",\n\t\t\t\t\"bearerToken\",\n\t\t\t\t\"bearerTokenEnv\",\n\t\t\t\t\"oauth\",\n\t\t\t\t\"httpTransport\",\n\t\t\t\t\"socket\",\n\t\t\t] as const) {\n\t\t\t\tdelete baseEntry[field];\n\t\t\t}\n\t\t} else if (existing && typeof definition.url === \"string\") {\n\t\t\tbaseEntry = { ...existing };\n\t\t\tfor (const field of [\"command\", \"args\", \"env\", \"cwd\", \"pluginDataDir\", \"literalEnv\", \"socket\"] as const) {\n\t\t\t\tdelete baseEntry[field];\n\t\t\t}\n\t\t} else if (existing && typeof definition.socket === \"string\") {\n\t\t\tbaseEntry = { ...existing };\n\t\t\tfor (const field of [\n\t\t\t\t\"command\",\n\t\t\t\t\"args\",\n\t\t\t\t\"env\",\n\t\t\t\t\"cwd\",\n\t\t\t\t\"pluginDataDir\",\n\t\t\t\t\"literalEnv\",\n\t\t\t\t\"url\",\n\t\t\t\t\"headers\",\n\t\t\t\t\"requestHeadersCommand\",\n\t\t\t\t\"auth\",\n\t\t\t\t\"bearerToken\",\n\t\t\t\t\"bearerTokenEnv\",\n\t\t\t\t\"oauth\",\n\t\t\t\t\"httpTransport\",\n\t\t\t] as const) {\n\t\t\t\tdelete baseEntry[field];\n\t\t\t}\n\t\t}\n\t\tif (existing && typeof definition.url === \"string\" && definition.url !== existing.url) {\n\t\t\tif (baseEntry === existing) baseEntry = { ...existing };\n\t\t\tfor (const field of URL_BOUND_AUTH_FIELDS) {\n\t\t\t\tdelete baseEntry[field];\n\t\t\t}\n\t\t\tif (baseEntry.oauth !== false) {\n\t\t\t\tdelete baseEntry.oauth;\n\t\t\t}\n\t\t}\n\t\tmerged[name] = { ...baseEntry, ...definition };\n\t}\n\treturn merged;\n}\n\nfunction mergeImports(left: ImportKind[] | undefined, right: ImportKind[] | undefined): ImportKind[] | undefined {\n\tconst merged = [...(left ?? []), ...(right ?? [])];\n\tif (merged.length === 0) return undefined;\n\treturn [...new Set(merged)];\n}\n\nfunction expandImports(config: McpConfig, cwd = process.cwd()): McpConfig {\n\tif (!config.imports?.length) return config;\n\n\tconst importedServers: Record<string, ServerEntry> = {};\n\tfor (const importKind of config.imports) {\n\t\tconst imported = loadImportedConfig(importKind, cwd, `Failed to import MCP config from ${importKind}:`);\n\t\tif (!imported) continue;\n\n\t\tconst servers = extractServers(imported.value, importKind);\n\t\tfor (const [name, definition] of Object.entries(servers)) {\n\t\t\tif (!importedServers[name]) {\n\t\t\t\timportedServers[name] = definition;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\timports: config.imports,\n\t\t...(config.settings !== undefined ? { settings: config.settings } : {}),\n\t\tmcpServers: mergeServerMaps(importedServers, config.mcpServers),\n\t};\n}\n\nfunction resolveImportCandidates(importKind: ImportKind, cwd: string): string[] {\n\treturn (IMPORT_PATHS[importKind] ?? []).map((candidate) => {\n\t\tif (importKind === \"opencode\" && candidate === \"./opencode.json\") {\n\t\t\tconst start = resolve(cwd);\n\t\t\tlet gitRoot: string | undefined;\n\t\t\tlet current = start;\n\t\t\twhile (true) {\n\t\t\t\tif (existsSync(join(current, \".git\"))) {\n\t\t\t\t\tgitRoot = current;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tconst parent = dirname(current);\n\t\t\t\tif (parent === current) break;\n\t\t\t\tcurrent = parent;\n\t\t\t}\n\n\t\t\tif (!gitRoot) return join(start, \"opencode.json\");\n\t\t\tcurrent = start;\n\t\t\twhile (true) {\n\t\t\t\tconst projectConfig = join(current, \"opencode.json\");\n\t\t\t\tif (existsSync(projectConfig) || current === gitRoot) return projectConfig;\n\t\t\t\tcurrent = dirname(current);\n\t\t\t}\n\t\t}\n\t\treturn candidate.startsWith(\".\") ? resolve(cwd, candidate) : candidate;\n\t});\n}\n\nfunction parseJsonConfig(raw: string): unknown {\n\treturn JSON.parse(stripJsonComments(raw, { trailingCommas: true }));\n}\n\nfunction readImportedConfig(path: string): unknown {\n\tconst raw = readFileSync(path, \"utf-8\");\n\treturn path.endsWith(\".toml\") ? parseToml(raw) : parseJsonConfig(raw);\n}\n\nfunction loadImportedConfig(\n\timportKind: ImportKind,\n\tcwd: string,\n\twarningPrefix: string,\n): { path: string; value: unknown } | null {\n\tif (importKind === \"opencode\") {\n\t\tlet merged: Record<string, unknown> = {};\n\t\tlet highestPrecedencePath: string | undefined;\n\n\t\tfor (const path of resolveImportCandidates(importKind, cwd)) {\n\t\t\tif (!existsSync(path)) continue;\n\n\t\t\ttry {\n\t\t\t\tconst value = readImportedConfig(path);\n\t\t\t\tif (value && typeof value === \"object\" && !Array.isArray(value)) {\n\t\t\t\t\tmerged = mergeOpenCodeConfigs(merged, value as Record<string, unknown>);\n\t\t\t\t\thighestPrecedencePath = path;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(warningPrefix, error);\n\t\t\t}\n\t\t}\n\n\t\treturn highestPrecedencePath ? { path: highestPrecedencePath, value: merged } : null;\n\t}\n\n\tfor (const path of resolveImportCandidates(importKind, cwd)) {\n\t\tif (!existsSync(path)) continue;\n\n\t\ttry {\n\t\t\treturn { path, value: readImportedConfig(path) };\n\t\t} catch (error) {\n\t\t\tconsole.warn(warningPrefix, error);\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveImportPath(importKind: ImportKind, cwd = process.cwd()): string | null {\n\treturn (\n\t\tloadImportedConfig(importKind, cwd, `Failed to discover imported MCP config from ${importKind}:`)?.path ?? null\n\t);\n}\n\nfunction readValidatedConfig(path: string, label: string): McpConfig | null {\n\tif (!existsSync(path)) return null;\n\n\ttry {\n\t\treturn validateConfig(parseJsonConfig(readFileSync(path, \"utf-8\")));\n\t} catch (error) {\n\t\tconsole.warn(`Failed to load ${label}:`, error);\n\t\treturn null;\n\t}\n}\n\nfunction validateConfig(raw: unknown): McpConfig {\n\tif (!isRecord(raw)) {\n\t\treturn { mcpServers: {} };\n\t}\n\n\treturn {\n\t\tmcpServers: toServerEntries(raw.mcpServers ?? raw[\"mcp-servers\"]),\n\t\t...(Array.isArray(raw.imports) ? { imports: raw.imports as ImportKind[] } : {}),\n\t\t...(raw.settings !== undefined ? { settings: raw.settings as McpSettings } : {}),\n\t};\n}\n\nfunction toServerEntries(servers: unknown): Record<string, ServerEntry> {\n\tif (!isRecord(servers)) return {};\n\tconst entries: Record<string, ServerEntry> = {};\n\tfor (const [name, entry] of Object.entries(servers)) {\n\t\tif (isServerEntry(entry)) entries[name] = entry;\n\t}\n\treturn entries;\n}\n\nfunction isServerEntry(value: unknown): value is ServerEntry {\n\treturn isRecord(value);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction mergeOpenCodeConfigs(base: Record<string, unknown>, next: Record<string, unknown>): Record<string, unknown> {\n\tconst baseMcp = base.mcp;\n\tconst nextMcp = next.mcp;\n\tconst mergedMcp: Record<string, unknown> = {\n\t\t...(baseMcp && typeof baseMcp === \"object\" && !Array.isArray(baseMcp) ? baseMcp : {}),\n\t};\n\n\tif (nextMcp && typeof nextMcp === \"object\" && !Array.isArray(nextMcp)) {\n\t\tfor (const [name, nextEntry] of Object.entries(nextMcp)) {\n\t\t\tconst baseEntry = mergedMcp[name];\n\t\t\tif (\n\t\t\t\tbaseEntry &&\n\t\t\t\ttypeof baseEntry === \"object\" &&\n\t\t\t\t!Array.isArray(baseEntry) &&\n\t\t\t\tnextEntry &&\n\t\t\t\ttypeof nextEntry === \"object\" &&\n\t\t\t\t!Array.isArray(nextEntry)\n\t\t\t) {\n\t\t\t\tconst safeBase = { ...(baseEntry as Record<string, unknown>) };\n\t\t\t\tconst override = nextEntry as Record<string, unknown>;\n\t\t\t\tif (typeof override.type === \"string\" && override.type !== safeBase.type) {\n\t\t\t\t\tfor (const field of [\"command\", \"environment\", \"cwd\", \"url\", \"headers\", \"auth\", \"oauth\"])\n\t\t\t\t\t\tdelete safeBase[field];\n\t\t\t\t}\n\t\t\t\tif (typeof override.url === \"string\" && override.url !== safeBase.url) {\n\t\t\t\t\tdelete safeBase.headers;\n\t\t\t\t\tdelete safeBase.auth;\n\t\t\t\t\tdelete safeBase.oauth;\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(override.command)) {\n\t\t\t\t\tconst baseCommand = safeBase.command;\n\t\t\t\t\tconst commandChanged =\n\t\t\t\t\t\t!Array.isArray(baseCommand) ||\n\t\t\t\t\t\toverride.command.length !== baseCommand.length ||\n\t\t\t\t\t\toverride.command.some((value, index) => value !== baseCommand[index]);\n\t\t\t\t\tif (commandChanged) {\n\t\t\t\t\t\tdelete safeBase.environment;\n\t\t\t\t\t\tdelete safeBase.cwd;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst mergedEntry = { ...safeBase, ...override };\n\t\t\t\tfor (const field of [\"environment\", \"headers\", \"oauth\"]) {\n\t\t\t\t\tconst baseField = safeBase[field];\n\t\t\t\t\tconst nextField = override[field];\n\t\t\t\t\tif (\n\t\t\t\t\t\tbaseField &&\n\t\t\t\t\t\ttypeof baseField === \"object\" &&\n\t\t\t\t\t\t!Array.isArray(baseField) &&\n\t\t\t\t\t\tnextField &&\n\t\t\t\t\t\ttypeof nextField === \"object\" &&\n\t\t\t\t\t\t!Array.isArray(nextField)\n\t\t\t\t\t) {\n\t\t\t\t\t\tmergedEntry[field] = {\n\t\t\t\t\t\t\t...(baseField as Record<string, unknown>),\n\t\t\t\t\t\t\t...(nextField as Record<string, unknown>),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmergedMcp[name] = mergedEntry;\n\t\t\t} else {\n\t\t\t\tmergedMcp[name] = nextEntry;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { ...base, ...next, mcp: mergedMcp };\n}\n\nfunction extractServers(config: unknown, kind: ImportKind): Record<string, ServerEntry> {\n\tif (!config || typeof config !== \"object\") return {};\n\n\tconst obj = config as Record<string, unknown>;\n\n\tlet servers: unknown;\n\tswitch (kind) {\n\t\tcase \"claude-desktop\":\n\t\tcase \"claude-code\":\n\t\t\tservers = obj.mcpServers;\n\t\t\tbreak;\n\t\tcase \"codex\":\n\t\t\tservers = obj.mcp_servers ?? obj.mcpServers;\n\t\t\tbreak;\n\t\tcase \"cursor\":\n\t\tcase \"windsurf\":\n\t\tcase \"vscode\":\n\t\t\tservers = obj.mcpServers ?? obj[\"mcp-servers\"];\n\t\t\tbreak;\n\t\tcase \"opencode\":\n\t\t\tservers = obj.mcp;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn {};\n\t}\n\n\tif (!servers || typeof servers !== \"object\" || Array.isArray(servers)) {\n\t\treturn {};\n\t}\n\n\tconst mappedServers: Record<string, ServerEntry> = {};\n\tfor (const [name, entry] of Object.entries(servers)) {\n\t\tif (kind === \"opencode\") {\n\t\t\tif (!entry || typeof entry !== \"object\" || Array.isArray(entry)) continue;\n\t\t\tconst raw = entry as Record<string, unknown>;\n\t\t\tif (raw.enabled === false) continue;\n\n\t\t\tif (\n\t\t\t\traw.type === \"local\" &&\n\t\t\t\tArray.isArray(raw.command) &&\n\t\t\t\traw.command.length > 0 &&\n\t\t\t\traw.command.every((value): value is string => typeof value === \"string\")\n\t\t\t) {\n\t\t\t\tconst env = toStringRecord(raw.environment);\n\t\t\t\tconst command = raw.command[0];\n\t\t\t\tif (command === undefined) continue;\n\t\t\t\tconst mapped: ServerEntry = {\n\t\t\t\t\tcommand,\n\t\t\t\t\targs: raw.command.slice(1),\n\t\t\t\t\t...(env ? { env } : {}),\n\t\t\t\t\t...(typeof raw.cwd === \"string\" ? { cwd: raw.cwd } : {}),\n\t\t\t\t};\n\t\t\t\tmappedServers[name] = mapped;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (raw.type === \"remote\" && typeof raw.url === \"string\") {\n\t\t\t\tconst headers = toStringRecord(raw.headers);\n\t\t\t\tconst mapped: ServerEntry = {\n\t\t\t\t\turl: raw.url,\n\t\t\t\t\t...(headers ? { headers } : {}),\n\t\t\t\t};\n\t\t\t\tif (raw.oauth === false) {\n\t\t\t\t\tmapped.oauth = false;\n\t\t\t\t} else if (raw.oauth && typeof raw.oauth === \"object\" && !Array.isArray(raw.oauth)) {\n\t\t\t\t\tconst oauth = raw.oauth as Record<string, unknown>;\n\t\t\t\t\tmapped.auth = \"oauth\";\n\t\t\t\t\tmapped.oauth = {\n\t\t\t\t\t\t...(typeof oauth.clientId === \"string\" ? { clientId: oauth.clientId } : {}),\n\t\t\t\t\t\t...(typeof oauth.clientSecret === \"string\" ? { clientSecret: oauth.clientSecret } : {}),\n\t\t\t\t\t\t...(typeof oauth.scope === \"string\" ? { scope: oauth.scope } : {}),\n\t\t\t\t\t\t...(typeof oauth.skipIssuerMetadataValidation === \"boolean\"\n\t\t\t\t\t\t\t? { skipIssuerMetadataValidation: oauth.skipIssuerMetadataValidation }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tmappedServers[name] = mapped;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!isRecord(entry)) continue;\n\t\tif (kind !== \"codex\") {\n\t\t\tmappedServers[name] = entry;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst mapped = { ...entry };\n\t\tconst bearerTokenEnv = mapped.bearer_token_env_var;\n\t\tconst httpHeaders = mapped.http_headers;\n\t\tconst envHttpHeaders = mapped.env_http_headers;\n\n\t\tif (typeof bearerTokenEnv === \"string\") {\n\t\t\tmapped.bearerTokenEnv = bearerTokenEnv;\n\t\t\tif (mapped.auth === undefined) mapped.auth = \"bearer\";\n\t\t}\n\t\tif (httpHeaders && typeof httpHeaders === \"object\" && !Array.isArray(httpHeaders)) {\n\t\t\tmapped.headers = {\n\t\t\t\t...(mapped.headers as Record<string, string> | undefined),\n\t\t\t\t...(httpHeaders as Record<string, string>),\n\t\t\t};\n\t\t}\n\t\tif (envHttpHeaders && typeof envHttpHeaders === \"object\" && !Array.isArray(envHttpHeaders)) {\n\t\t\tconst headers = { ...(mapped.headers as Record<string, string> | undefined) };\n\t\t\tfor (const [header, envVar] of Object.entries(envHttpHeaders)) {\n\t\t\t\tif (typeof envVar === \"string\" && headers[header] === undefined) headers[header] = `$env:${envVar}`;\n\t\t\t}\n\t\t\tmapped.headers = headers;\n\t\t}\n\n\t\tdelete mapped.bearer_token_env_var;\n\t\tdelete mapped.http_headers;\n\t\tdelete mapped.env_http_headers;\n\t\tmappedServers[name] = mapped as ServerEntry;\n\t}\n\n\treturn mappedServers;\n}\n\nfunction serializeRawConfig(raw: Record<string, unknown>): string {\n\treturn `${JSON.stringify(raw, null, 2)}\\n`;\n}\n\nfunction buildUnifiedDiff(beforeText: string, afterText: string): string {\n\tif (beforeText === afterText) return \"(no changes)\";\n\n\tconst before = beforeText.split(\"\\n\");\n\tconst after = afterText.split(\"\\n\");\n\tconst rows = before.length;\n\tconst cols = after.length;\n\tconst lcs = Array.from({ length: rows + 1 }, () => Array<number>(cols + 1).fill(0));\n\n\tfor (let i = rows - 1; i >= 0; i--) {\n\t\tfor (let j = cols - 1; j >= 0; j--) {\n\t\t\tconst row = lcs[i];\n\t\t\tconst nextRow = lcs[i + 1];\n\t\t\tif (!row || !nextRow) continue;\n\t\t\trow[j] = before[i] === after[j] ? (nextRow[j + 1] ?? 0) + 1 : Math.max(nextRow[j] ?? 0, row[j + 1] ?? 0);\n\t\t}\n\t}\n\n\tconst lines: string[] = [];\n\tlet i = 0;\n\tlet j = 0;\n\twhile (i < rows || j < cols) {\n\t\tif (i < rows && j < cols && before[i] === after[j]) {\n\t\t\tlines.push(` ${before[i]}`);\n\t\t\ti++;\n\t\t\tj++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (j < cols && (i === rows || (lcs[i]?.[j + 1] ?? 0) >= (lcs[i + 1]?.[j] ?? 0))) {\n\t\t\tlines.push(`+ ${after[j]}`);\n\t\t\tj++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (i < rows) {\n\t\t\tlines.push(`- ${before[i]}`);\n\t\t\ti++;\n\t\t}\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nfunction buildConfigWritePreview(filePath: string, nextRaw: Record<string, unknown>): ConfigWritePreview {\n\tconst existed = existsSync(filePath);\n\tconst beforeRaw = readRawConfigObject(filePath);\n\tconst beforeText = existed ? serializeRawConfig(beforeRaw) : \"\";\n\tconst afterText = serializeRawConfig(nextRaw);\n\treturn {\n\t\tpath: filePath,\n\t\texisted,\n\t\tchanged: beforeText !== afterText,\n\t\tbeforeText,\n\t\tafterText,\n\t\tdiffText: buildUnifiedDiff(beforeText, afterText),\n\t};\n}\n\nfunction readRawConfigObject(filePath: string): Record<string, unknown> {\n\tif (!existsSync(filePath)) return {};\n\n\ttry {\n\t\tconst raw = parseJsonConfig(readFileSync(filePath, \"utf-8\"));\n\t\treturn raw && typeof raw === \"object\" && !Array.isArray(raw) ? (raw as Record<string, unknown>) : {};\n\t} catch {\n\t\treturn {};\n\t}\n}\n\nfunction writeRawConfigObject(filePath: string, raw: Record<string, unknown>): void {\n\tmkdirSync(dirname(filePath), { recursive: true });\n\tconst tmpPath = `${filePath}.${process.pid}.tmp`;\n\twriteFileSync(tmpPath, `${JSON.stringify(raw, null, 2)}\\n`, \"utf-8\");\n\trenameSync(tmpPath, filePath);\n}\n\nfunction getServersObject(raw: Record<string, unknown>): Record<string, ServerEntry> {\n\tconst existing = raw.mcpServers ?? raw[\"mcp-servers\"] ?? {};\n\tif (!existing || typeof existing !== \"object\" || Array.isArray(existing)) {\n\t\treturn {};\n\t}\n\treturn existing as Record<string, ServerEntry>;\n}\n\nfunction setServersObject(raw: Record<string, unknown>, servers: Record<string, ServerEntry>): void {\n\tdelete raw[\"mcp-servers\"];\n\traw.mcpServers = servers;\n}\n\nexport interface ServerDisabledOverrideResult {\n\tpath: string;\n\tchanged: boolean;\n}\n\n/**\n * Persist only the disabled field in the project Nexus layer. Enabling writes an\n * explicit false only when a lower-precedence source is itself disabled; this\n * writer never copies a server definition or its credentials into the file.\n */\nexport function writeProjectServerDisabledOverride(\n\toverridePath: string | undefined,\n\tcwd: string,\n\tserverName: string,\n\tdisabled: boolean,\n): ServerDisabledOverrideResult {\n\tconst filePath = getProjectNexusConfigPath(cwd);\n\tlet raw: Record<string, unknown> = {};\n\tif (existsSync(filePath)) {\n\t\ttry {\n\t\t\tconst parsed = parseJsonConfig(readFileSync(filePath, \"utf-8\"));\n\t\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\t\tthrow new Error(\"root value must be an object\");\n\t\t\t}\n\t\t\traw = parsed as Record<string, unknown>;\n\t\t} catch (error) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to read project MCP override at ${filePath}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t{ cause: error },\n\t\t\t);\n\t\t}\n\t}\n\n\tconst serverKey =\n\t\traw.mcpServers !== undefined ? \"mcpServers\" : raw[\"mcp-servers\"] !== undefined ? \"mcp-servers\" : \"mcpServers\";\n\tconst rawServers = raw[serverKey];\n\tif (rawServers !== undefined && (!rawServers || typeof rawServers !== \"object\" || Array.isArray(rawServers))) {\n\t\tthrow new Error(`Failed to update project MCP override at ${filePath}: ${serverKey} must be an object`);\n\t}\n\tconst servers = (rawServers ?? {}) as Record<string, unknown>;\n\tconst previous = servers[serverName];\n\tif (previous !== undefined && (!previous || typeof previous !== \"object\" || Array.isArray(previous))) {\n\t\tthrow new Error(`Failed to update project MCP override at ${filePath}: server \"${serverName}\" must be an object`);\n\t}\n\tconst existing = previous as Record<string, unknown> | undefined;\n\n\tlet next: Record<string, unknown>;\n\tif (disabled) {\n\t\tnext = { ...existing, disabled: true };\n\t} else {\n\t\tnext = Object.fromEntries(Object.entries(existing ?? {}).filter(([key]) => key !== \"disabled\"));\n\t\tlet lowerConfig: McpConfig = { mcpServers: {} };\n\t\tfor (const source of getConfigSources(overridePath, cwd)) {\n\t\t\tif (source.readPath === filePath) continue;\n\t\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\t\tif (loaded) lowerConfig = mergeConfigs(lowerConfig, expandImports(loaded, cwd));\n\t\t}\n\t\tif (raw.imports !== undefined) {\n\t\t\tif (\n\t\t\t\t!Array.isArray(raw.imports) ||\n\t\t\t\traw.imports.some((kind) => typeof kind !== \"string\" || !Object.hasOwn(IMPORT_PATHS, kind))\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to update project MCP override at ${filePath}: imports contains an unsupported config kind`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tlowerConfig = mergeConfigs(\n\t\t\t\tlowerConfig,\n\t\t\t\texpandImports({ mcpServers: {}, imports: raw.imports as ImportKind[] }, cwd),\n\t\t\t);\n\t\t}\n\t\tif (isServerDisabled(lowerConfig.mcpServers[serverName])) next.disabled = false;\n\t}\n\n\tif ((!existing && Object.keys(next).length === 0) || JSON.stringify(existing) === JSON.stringify(next)) {\n\t\treturn { path: filePath, changed: false };\n\t}\n\tif (Object.keys(next).length === 0) delete servers[serverName];\n\telse servers[serverName] = next;\n\n\traw[serverKey] = servers;\n\twriteRawConfigObject(filePath, raw);\n\treturn { path: filePath, changed: true };\n}\n\nfunction isRepoPromptServer(name: string, entry: ServerEntry): boolean {\n\tconst normalizedName = name.toLowerCase();\n\tif (normalizedName.includes(\"repoprompt\") || normalizedName === \"rp\") {\n\t\treturn true;\n\t}\n\n\tconst command = entry.command?.toLowerCase() ?? \"\";\n\tif (command.includes(\"repoprompt\") || command.includes(\"rp-mcp\") || command.endsWith(\"repoprompt_cli\")) {\n\t\treturn true;\n\t}\n\n\treturn (entry.args ?? []).some((arg) => typeof arg === \"string\" && arg.toLowerCase().includes(\"repoprompt\"));\n}\n\nfunction findProjectRoot(cwd = process.cwd()): string | null {\n\tlet current = resolve(cwd);\n\twhile (true) {\n\t\tif (\n\t\t\texistsSync(join(current, \".git\")) ||\n\t\t\texistsSync(join(current, \"package.json\")) ||\n\t\t\texistsSync(getProjectConfigPath(current)) ||\n\t\t\texistsSync(join(current, getConfigDirName()))\n\t\t) {\n\t\t\treturn current;\n\t\t}\n\n\t\tconst parent = dirname(current);\n\t\tif (parent === current) return null;\n\t\tcurrent = parent;\n\t}\n}\n\nfunction buildRepoPromptEntry(executablePath: string): ServerEntry {\n\treturn {\n\t\tcommand: executablePath,\n\t\targs: [],\n\t\tlifecycle: \"lazy\",\n\t};\n}\n\nfunction detectRepoPrompt(\n\tsummary: Omit<McpDiscoverySummary, \"fingerprint\" | \"repoPrompt\">,\n\tcwd = process.cwd(),\n): RepoPromptDiscovery {\n\tfor (const source of summary.sources) {\n\t\tif (source.serverCount === 0) continue;\n\t\tconst config = readValidatedConfig(source.path, `MCP config from ${source.path}`);\n\t\tif (!config) continue;\n\t\tfor (const [name, entry] of Object.entries(config.mcpServers)) {\n\t\t\tif (isRepoPromptServer(name, entry)) {\n\t\t\t\treturn { configured: true, configuredPath: source.path };\n\t\t\t}\n\t\t}\n\t}\n\n\tconst executablePath = REPOPROMPT_BINARY_CANDIDATES.find((candidate) => existsSync(candidate));\n\tif (!executablePath) {\n\t\treturn { configured: false };\n\t}\n\n\tconst projectRoot = findProjectRoot(cwd);\n\tconst targetPath = projectRoot ? getProjectConfigPath(projectRoot) : NEXUS_GLOBAL_CONFIG_PATH;\n\treturn {\n\t\tconfigured: false,\n\t\texecutablePath,\n\t\ttargetPath,\n\t\tserverName: \"repoprompt\",\n\t\tentry: buildRepoPromptEntry(executablePath),\n\t};\n}\n\nexport function previewCompatibilityImports(importKinds: ImportKind[], overridePath?: string): ConfigWritePreview {\n\tconst targetPath = getNexusGlobalConfigPath(overridePath);\n\tconst raw = readRawConfigObject(targetPath);\n\tconst currentImports = Array.isArray(raw.imports)\n\t\t? raw.imports.filter((value): value is ImportKind => typeof value === \"string\")\n\t\t: [];\n\tconst merged = [...new Set([...currentImports, ...importKinds])];\n\tconst nextRaw = { ...raw, imports: merged };\n\tsetServersObject(nextRaw, getServersObject(nextRaw));\n\treturn buildConfigWritePreview(targetPath, nextRaw);\n}\n\nexport function ensureCompatibilityImports(\n\timportKinds: ImportKind[],\n\toverridePath?: string,\n): { path: string; added: ImportKind[] } {\n\tconst targetPath = getNexusGlobalConfigPath(overridePath);\n\tconst raw = readRawConfigObject(targetPath);\n\tconst currentImports = Array.isArray(raw.imports)\n\t\t? raw.imports.filter((value): value is ImportKind => typeof value === \"string\")\n\t\t: [];\n\tconst merged = [...new Set([...currentImports, ...importKinds])];\n\tconst added = merged.filter((kind) => !currentImports.includes(kind));\n\tif (added.length === 0) {\n\t\treturn { path: targetPath, added: [] };\n\t}\n\n\traw.imports = merged;\n\tconst servers = getServersObject(raw);\n\tsetServersObject(raw, servers);\n\twriteRawConfigObject(targetPath, raw);\n\treturn { path: targetPath, added };\n}\n\nexport function buildStarterProjectConfig(): McpConfig {\n\treturn {\n\t\tmcpServers: {},\n\t};\n}\n\nexport function previewStarterProjectConfig(cwd = process.cwd()): ConfigWritePreview {\n\tconst targetPath = getProjectConfigPath(cwd);\n\tconst nextRaw = { mcpServers: buildStarterProjectConfig().mcpServers };\n\treturn buildConfigWritePreview(targetPath, nextRaw);\n}\n\nexport function writeStarterProjectConfig(cwd = process.cwd()): string {\n\tconst targetPath = getProjectConfigPath(cwd);\n\tconst raw = { mcpServers: buildStarterProjectConfig().mcpServers };\n\twriteRawConfigObject(targetPath, raw);\n\treturn targetPath;\n}\n\nexport function previewSharedServerEntry(filePath: string, serverName: string, entry: ServerEntry): ConfigWritePreview {\n\tconst raw = readRawConfigObject(filePath);\n\tconst nextRaw = { ...raw };\n\tconst servers = getServersObject(nextRaw);\n\tservers[serverName] = entry;\n\tsetServersObject(nextRaw, servers);\n\treturn buildConfigWritePreview(filePath, nextRaw);\n}\n\nexport function writeSharedServerEntry(filePath: string, serverName: string, entry: ServerEntry): string {\n\tconst raw = readRawConfigObject(filePath);\n\tconst servers = getServersObject(raw);\n\tservers[serverName] = entry;\n\tsetServersObject(raw, servers);\n\twriteRawConfigObject(filePath, raw);\n\treturn filePath;\n}\n\nexport function getServerProvenance(overridePath?: string, cwd = process.cwd()): Map<string, ServerProvenance> {\n\tconst provenance = new Map<string, ServerProvenance>();\n\tconst userPath = getNexusGlobalConfigPath(overridePath);\n\n\tif (getConfiguredHostConfigDiscovery(overridePath, cwd) === \"on\") {\n\t\tfor (const importKind of Object.keys(IMPORT_PATHS) as ImportKind[]) {\n\t\t\tconst imported = loadImportedConfig(\n\t\t\t\timportKind,\n\t\t\t\tcwd,\n\t\t\t\t`Failed to inspect imported MCP config from ${importKind}:`,\n\t\t\t);\n\t\t\tif (!imported) continue;\n\t\t\tfor (const name of Object.keys(extractServers(imported.value, importKind))) {\n\t\t\t\t// Keep writes inside Nexus-owned storage even though the source is external.\n\t\t\t\t// Later import kinds win in the same deterministic order as loadDiscoveredHostConfigs.\n\t\t\t\tprovenance.set(name, { path: userPath, kind: \"import\", importKind });\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const source of getConfigSources(overridePath, cwd)) {\n\t\tconst loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);\n\t\tif (!loaded) continue;\n\n\t\tif (loaded.imports?.length) {\n\t\t\tfor (const importKind of loaded.imports) {\n\t\t\t\tconst imported = loadImportedConfig(\n\t\t\t\t\timportKind,\n\t\t\t\t\tcwd,\n\t\t\t\t\t`Failed to inspect imported MCP config from ${importKind}:`,\n\t\t\t\t);\n\t\t\t\tif (!imported) continue;\n\n\t\t\t\tconst servers = extractServers(imported.value, importKind);\n\t\t\t\tfor (const name of Object.keys(servers)) {\n\t\t\t\t\t// Sources and their imports are visited from lower to higher precedence.\n\t\t\t\t\t// Always replace the prior provenance so writes follow the definition\n\t\t\t\t\t// that actually won the merge.\n\t\t\t\t\tprovenance.set(name, { path: userPath, kind: \"import\", importKind });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const name of Object.keys(loaded.mcpServers)) {\n\t\t\tprovenance.set(name, {\n\t\t\t\tpath: source.writePath,\n\t\t\t\tkind: source.kind,\n\t\t\t\t...(source.importKind !== undefined ? { importKind: source.importKind } : {}),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn provenance;\n}\n\nexport function writeDirectToolsConfig(\n\tchanges: Map<string, true | string[] | false>,\n\tprovenance: Map<string, ServerProvenance>,\n): void {\n\tconst byPath = new Map<string, { name: string; value: true | string[] | false; prov: ServerProvenance }[]>();\n\n\tfor (const [serverName, value] of changes) {\n\t\tconst prov = provenance.get(serverName);\n\t\tif (!prov) continue;\n\n\t\tconst targetPath = prov.path;\n\n\t\tif (!byPath.has(targetPath)) byPath.set(targetPath, []);\n\t\tbyPath.get(targetPath)!.push({ name: serverName, value, prov });\n\t}\n\n\tfor (const [filePath, entries] of byPath) {\n\t\tconst raw = readRawConfigObject(filePath);\n\t\tconst servers = getServersObject(raw);\n\n\t\tfor (const { name, value, prov } of entries) {\n\t\t\tif (prov.kind === \"import\") {\n\t\t\t\t// Imported definitions can contain credentials. Persist only Nexus's\n\t\t\t\t// field-level override and let mergeServerMaps inherit the definition\n\t\t\t\t// from the selected compatibility source on the next load.\n\t\t\t\tservers[name] = { ...(servers[name] ?? {}), directTools: value };\n\t\t\t} else if (servers[name]) {\n\t\t\t\tservers[name] = { ...servers[name], directTools: value };\n\t\t\t}\n\t\t}\n\n\t\tsetServersObject(raw, servers);\n\t\twriteRawConfigObject(filePath, raw);\n\t}\n}\n\nexport function resolveConfiguredOAuthDir(raw: unknown, cwd = process.cwd()): string | undefined {\n\tif (raw === undefined || raw === null) return undefined;\n\tif (typeof raw !== \"string\") {\n\t\tthrow new Error(\"settings.oauthDir must be a string\");\n\t}\n\n\tconst trimmed = raw.trim();\n\tif (!trimmed) return undefined;\n\treturn resolve(cwd, trimmed);\n}\n"]}
|