@danainnovations/cortex-mcp 1.0.88 → 1.0.89

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.
@@ -95,16 +95,15 @@ var AVAILABLE_MCPS = [
95
95
  description: "Expense reports, entries, receipts, approvals (16 tools)",
96
96
  serverName: "cortex-concur",
97
97
  authMode: "personal"
98
+ },
99
+ {
100
+ name: "sonance_brand",
101
+ displayName: "Sonance Brand",
102
+ description: "Brand guidelines, design tokens, component library, logos (28 tools)",
103
+ serverName: "cortex-sonance-brand",
104
+ authMode: "company"
98
105
  }
99
106
  ];
100
- var SONANCE_BRAND_CONFIG = {
101
- name: "sonance-brand",
102
- displayName: "Sonance Brand",
103
- description: "Brand guidelines, design tokens, component library, logos (28 tools)",
104
- serverName: "sonance-brand",
105
- command: "npx",
106
- args: ["-y", "sonance-brand-mcp@latest"]
107
- };
108
107
  var MCP_NAMES = AVAILABLE_MCPS.map((m) => m.name);
109
108
  var DEFAULT_MCPS = [...MCP_NAMES];
110
109
  var DEFAULT_API_KEY = "ctx_07d37a81_9f7be06af38d04753090a4034f907a65ec06cd675ed26f65653898388e2d1709";
@@ -116,7 +115,6 @@ export {
116
115
  DEFAULT_SERVER_URL,
117
116
  PROTOCOL_VERSION,
118
117
  AVAILABLE_MCPS,
119
- SONANCE_BRAND_CONFIG,
120
118
  MCP_NAMES,
121
119
  DEFAULT_MCPS,
122
120
  DEFAULT_API_KEY,
@@ -124,4 +122,4 @@ export {
124
122
  CONFIG_FILE_NAME,
125
123
  CREDENTIALS_FILE_NAME
126
124
  };
127
- //# sourceMappingURL=chunk-3X6WPEWI.js.map
125
+ //# sourceMappingURL=chunk-RB5AKDLX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["/** Default Cortex server URL */\nexport const DEFAULT_SERVER_URL = \"https://cortex-bice.vercel.app\";\n\n/** MCP protocol version supported by Cortex (Streamable HTTP) */\nexport const PROTOCOL_VERSION = \"2025-03-26\";\n\n/** Available MCPs with their metadata */\nexport const AVAILABLE_MCPS = [\n {\n name: \"m365\",\n displayName: \"Microsoft 365\",\n description: \"Email, calendar, OneDrive, Teams, meetings, contacts, tasks, notes (33 tools)\",\n serverName: \"cortex-m365\",\n authMode: \"personal\" as const,\n },\n {\n name: \"asana\",\n displayName: \"Asana\",\n description: \"Projects, tasks, teams, workspaces (17 tools)\",\n serverName: \"cortex-asana\",\n authMode: \"personal\" as const,\n },\n {\n name: \"github\",\n displayName: \"GitHub\",\n description: \"Repos, PRs, issues, branches, code review (30 tools)\",\n serverName: \"cortex-github\",\n authMode: \"company\" as const,\n },\n {\n name: \"vercel\",\n displayName: \"Vercel\",\n description: \"Deployments, projects, env vars (15 tools)\",\n serverName: \"cortex-vercel\",\n authMode: \"company\" as const,\n },\n {\n name: \"supabase\",\n displayName: \"Supabase\",\n description: \"Database, migrations, edge functions (20+ tools)\",\n serverName: \"cortex-supabase\",\n authMode: \"company\" as const,\n },\n {\n name: \"bestbuy\",\n displayName: \"Best Buy\",\n description: \"Product search, pricing, reviews, store locations (7 tools)\",\n serverName: \"cortex-bestbuy\",\n authMode: \"company\" as const,\n },\n {\n name: \"mailchimp\",\n displayName: \"Mailchimp\",\n description: \"Audiences, contacts, campaigns, templates, analytics (28 tools)\",\n serverName: \"cortex-mailchimp\",\n authMode: \"personal\" as const,\n },\n {\n name: \"salesforce\",\n displayName: \"Salesforce\",\n description: \"CRM queries, records, reports, and org data (14 tools)\",\n serverName: \"cortex-salesforce\",\n authMode: \"personal\" as const,\n },\n {\n name: \"monday\",\n displayName: \"Monday.com\",\n description: \"Boards, items, groups, updates, workspaces (18 tools)\",\n serverName: \"cortex-monday\",\n authMode: \"personal\" as const,\n installUrl: \"https://auth.monday.com/oauth2/authorize?client_id=c8d2c70bd792a4c36c6f023c0b707517&response_type=install\",\n },\n {\n name: \"slack\",\n displayName: \"Slack\",\n description: \"Messaging, channels, search, reactions, bookmarks (22 tools)\",\n serverName: \"cortex-slack\",\n authMode: \"personal\" as const,\n },\n {\n name: \"powerbi\",\n displayName: \"Power BI\",\n description: \"Workspaces, datasets, push data, DAX queries, reports, dashboards (14 tools)\",\n serverName: \"cortex-powerbi\",\n authMode: \"personal\" as const,\n },\n {\n name: \"databricks\",\n displayName: \"Databricks\",\n description: \"Unity Catalog discovery, SQL queries, data dictionary, jobs (18 tools)\",\n serverName: \"cortex-databricks\",\n authMode: \"company\" as const,\n },\n {\n name: \"concur\",\n displayName: \"SAP Concur\",\n description: \"Expense reports, entries, receipts, approvals (16 tools)\",\n serverName: \"cortex-concur\",\n authMode: \"personal\" as const,\n },\n] as const;\n\n/** Sonance Brand MCP — standalone stdio server, not proxied through Cortex */\nexport const SONANCE_BRAND_CONFIG = {\n name: \"sonance-brand\",\n displayName: \"Sonance Brand\",\n description: \"Brand guidelines, design tokens, component library, logos (28 tools)\",\n serverName: \"sonance-brand\",\n command: \"npx\",\n args: [\"-y\", \"sonance-brand-mcp@latest\"],\n} as const;\n\n/** All available MCP names */\nexport const MCP_NAMES: string[] = AVAILABLE_MCPS.map((m) => m.name);\n\n/** Default MCPs enabled on fresh setup */\nexport const DEFAULT_MCPS: string[] = [...MCP_NAMES];\n\n/** Shared API key embedded in the package (no user prompt needed) */\nexport const DEFAULT_API_KEY =\n \"ctx_07d37a81_9f7be06af38d04753090a4034f907a65ec06cd675ed26f65653898388e2d1709\";\n\n/** Config directory name */\nexport const CONFIG_DIR_NAME = \".cortex-mcp\";\n\n/** Config file name */\nexport const CONFIG_FILE_NAME = \"config.json\";\n\n/** Credentials file name (stores personal API key from login) */\nexport const CREDENTIALS_FILE_NAME = \"credentials.json\";\n"],"mappings":";;;AACO,IAAM,qBAAqB;AAG3B,IAAM,mBAAmB;AAGzB,IAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AACF;AAGO,IAAM,uBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,MAAM,CAAC,MAAM,0BAA0B;AACzC;AAGO,IAAM,YAAsB,eAAe,IAAI,CAAC,MAAM,EAAE,IAAI;AAG5D,IAAM,eAAyB,CAAC,GAAG,SAAS;AAG5C,IAAM,kBACX;AAGK,IAAM,kBAAkB;AAGxB,IAAM,mBAAmB;AAGzB,IAAM,wBAAwB;","names":[]}
1
+ {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["/** Default Cortex server URL */\nexport const DEFAULT_SERVER_URL = \"https://cortex-bice.vercel.app\";\n\n/** MCP protocol version supported by Cortex (Streamable HTTP) */\nexport const PROTOCOL_VERSION = \"2025-03-26\";\n\n/** Available MCPs with their metadata */\nexport const AVAILABLE_MCPS = [\n {\n name: \"m365\",\n displayName: \"Microsoft 365\",\n description: \"Email, calendar, OneDrive, Teams, meetings, contacts, tasks, notes (33 tools)\",\n serverName: \"cortex-m365\",\n authMode: \"personal\" as const,\n },\n {\n name: \"asana\",\n displayName: \"Asana\",\n description: \"Projects, tasks, teams, workspaces (17 tools)\",\n serverName: \"cortex-asana\",\n authMode: \"personal\" as const,\n },\n {\n name: \"github\",\n displayName: \"GitHub\",\n description: \"Repos, PRs, issues, branches, code review (30 tools)\",\n serverName: \"cortex-github\",\n authMode: \"company\" as const,\n },\n {\n name: \"vercel\",\n displayName: \"Vercel\",\n description: \"Deployments, projects, env vars (15 tools)\",\n serverName: \"cortex-vercel\",\n authMode: \"company\" as const,\n },\n {\n name: \"supabase\",\n displayName: \"Supabase\",\n description: \"Database, migrations, edge functions (20+ tools)\",\n serverName: \"cortex-supabase\",\n authMode: \"company\" as const,\n },\n {\n name: \"bestbuy\",\n displayName: \"Best Buy\",\n description: \"Product search, pricing, reviews, store locations (7 tools)\",\n serverName: \"cortex-bestbuy\",\n authMode: \"company\" as const,\n },\n {\n name: \"mailchimp\",\n displayName: \"Mailchimp\",\n description: \"Audiences, contacts, campaigns, templates, analytics (28 tools)\",\n serverName: \"cortex-mailchimp\",\n authMode: \"personal\" as const,\n },\n {\n name: \"salesforce\",\n displayName: \"Salesforce\",\n description: \"CRM queries, records, reports, and org data (14 tools)\",\n serverName: \"cortex-salesforce\",\n authMode: \"personal\" as const,\n },\n {\n name: \"monday\",\n displayName: \"Monday.com\",\n description: \"Boards, items, groups, updates, workspaces (18 tools)\",\n serverName: \"cortex-monday\",\n authMode: \"personal\" as const,\n installUrl: \"https://auth.monday.com/oauth2/authorize?client_id=c8d2c70bd792a4c36c6f023c0b707517&response_type=install\",\n },\n {\n name: \"slack\",\n displayName: \"Slack\",\n description: \"Messaging, channels, search, reactions, bookmarks (22 tools)\",\n serverName: \"cortex-slack\",\n authMode: \"personal\" as const,\n },\n {\n name: \"powerbi\",\n displayName: \"Power BI\",\n description: \"Workspaces, datasets, push data, DAX queries, reports, dashboards (14 tools)\",\n serverName: \"cortex-powerbi\",\n authMode: \"personal\" as const,\n },\n {\n name: \"databricks\",\n displayName: \"Databricks\",\n description: \"Unity Catalog discovery, SQL queries, data dictionary, jobs (18 tools)\",\n serverName: \"cortex-databricks\",\n authMode: \"company\" as const,\n },\n {\n name: \"concur\",\n displayName: \"SAP Concur\",\n description: \"Expense reports, entries, receipts, approvals (16 tools)\",\n serverName: \"cortex-concur\",\n authMode: \"personal\" as const,\n },\n {\n name: \"sonance_brand\",\n displayName: \"Sonance Brand\",\n description: \"Brand guidelines, design tokens, component library, logos (28 tools)\",\n serverName: \"cortex-sonance-brand\",\n authMode: \"company\" as const,\n },\n] as const;\n\n/** All available MCP names */\nexport const MCP_NAMES: string[] = AVAILABLE_MCPS.map((m) => m.name);\n\n/** Default MCPs enabled on fresh setup */\nexport const DEFAULT_MCPS: string[] = [...MCP_NAMES];\n\n/** Shared API key embedded in the package (no user prompt needed) */\nexport const DEFAULT_API_KEY =\n \"ctx_07d37a81_9f7be06af38d04753090a4034f907a65ec06cd675ed26f65653898388e2d1709\";\n\n/** Config directory name */\nexport const CONFIG_DIR_NAME = \".cortex-mcp\";\n\n/** Config file name */\nexport const CONFIG_FILE_NAME = \"config.json\";\n\n/** Credentials file name (stores personal API key from login) */\nexport const CREDENTIALS_FILE_NAME = \"credentials.json\";\n"],"mappings":";;;AACO,IAAM,qBAAqB;AAG3B,IAAM,mBAAmB;AAGzB,IAAM,iBAAiB;AAAA,EAC5B;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AACF;AAGO,IAAM,YAAsB,eAAe,IAAI,CAAC,MAAM,EAAE,IAAI;AAG5D,IAAM,eAAyB,CAAC,GAAG,SAAS;AAG5C,IAAM,kBACX;AAGK,IAAM,kBAAkB;AAGxB,IAAM,mBAAmB;AAGzB,IAAM,wBAAwB;","names":[]}
package/dist/cli.js CHANGED
@@ -8,9 +8,8 @@ import {
8
8
  DEFAULT_MCPS,
9
9
  DEFAULT_SERVER_URL,
10
10
  MCP_NAMES,
11
- PROTOCOL_VERSION,
12
- SONANCE_BRAND_CONFIG
13
- } from "./chunk-3X6WPEWI.js";
11
+ PROTOCOL_VERSION
12
+ } from "./chunk-RB5AKDLX.js";
14
13
  import {
15
14
  getAntigravityConfigPath,
16
15
  getClaudeDesktopConfigPath,
@@ -878,7 +877,7 @@ function getWizardHtml() {
878
877
  powerbi: '<svg viewBox="0 0 16 16"><rect x="2" y="8" width="3" height="6" rx="1"/><rect x="6.5" y="5" width="3" height="9" rx="1"/><rect x="11" y="2" width="3" height="12" rx="1"/></svg>',
879
878
  bestbuy: '<svg viewBox="0 0 16 16"><path d="M2 3h12a1 1 0 011 1v8a1 1 0 01-1 1H2a1 1 0 01-1-1V4a1 1 0 011-1zm3 3v4h2V6H5zm4 0v4h2V6H9z"/></svg>',
880
879
  mailchimp: '<svg viewBox="0 0 16 16"><path d="M8 2a6 6 0 100 12A6 6 0 008 2zM6.5 10.5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3z"/></svg>',
881
- 'sonance-brand': '<svg viewBox="0 0 16 16"><path d="M2 3a1 1 0 011-1h2a1 1 0 011 1v10a1 1 0 01-1 1H3a1 1 0 01-1-1V3zm5 2a1 1 0 011-1h2a1 1 0 011 1v8a1 1 0 01-1 1H8a1 1 0 01-1-1V5zm5-3a1 1 0 011-1h1a1 1 0 011 1v11a1 1 0 01-1 1h-1a1 1 0 01-1-1V2z"/></svg>',
880
+ sonance_brand: '<svg viewBox="0 0 16 16"><path d="M2 3a1 1 0 011-1h2a1 1 0 011 1v10a1 1 0 01-1 1H3a1 1 0 01-1-1V3zm5 2a1 1 0 011-1h2a1 1 0 011 1v8a1 1 0 01-1 1H8a1 1 0 01-1-1V5zm5-3a1 1 0 011-1h1a1 1 0 011 1v11a1 1 0 01-1 1h-1a1 1 0 01-1-1V2z"/></svg>',
882
881
  };
883
882
 
884
883
  // \u2500\u2500 Client Icons (inline SVG) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
@@ -902,8 +901,6 @@ function getWizardHtml() {
902
901
  state.availableMcps = data.availableMcps || [];
903
902
  state.enabledMcps = data.enabledMcps || ['m365'];
904
903
  state.selectedMcps = (data.enabledMcps || ['m365']).slice();
905
- state.sonanceBrand = data.sonanceBrand || null;
906
- state.includeSonanceBrand = true;
907
904
  state.detectedClients = data.detectedClients || [];
908
905
  state.configuredClients = (data.config && data.config.configuredClients) || [];
909
906
  } catch (err) {
@@ -1070,7 +1067,7 @@ function getWizardHtml() {
1070
1067
  powerbi: 'Build dashboards and run data queries on your reports',
1071
1068
  bestbuy: 'Search products, compare prices, and find store locations',
1072
1069
  databricks: 'Query data warehouses, explore Unity Catalog, and manage jobs',
1073
- 'sonance-brand': 'Brand guidelines, design tokens, component library, and logo assets for Sonance, IPORT, and Blaze Audio',
1070
+ sonance_brand: 'Brand guidelines, design tokens, component library, and logo assets for Sonance, IPORT, and Blaze Audio',
1074
1071
  };
1075
1072
 
1076
1073
  function renderMcpList(container) {
@@ -1103,28 +1100,6 @@ function getWizardHtml() {
1103
1100
  html += '</div></div>';
1104
1101
  }
1105
1102
 
1106
- // Sonance Brand \u2014 internal design system MCP (always available)
1107
- if (state.sonanceBrand) {
1108
- var sbChecked = state.includeSonanceBrand !== false;
1109
- html += '<div class="mcp-section">';
1110
- html += '<div class="mcp-section-title">Internal Tools</div>';
1111
- html += '<div class="mcp-section-subtitle">Standalone tools bundled with setup</div>';
1112
- html += '<div class="mcp-list">';
1113
- html += '<label class="mcp-item' + (sbChecked ? ' checked' : '') + '" data-mcp="sonance-brand">' +
1114
- (MCP_TOOLTIPS['sonance-brand'] ? '<span class="mcp-tooltip">' + MCP_TOOLTIPS['sonance-brand'] + '</span>' : '') +
1115
- '<input type="checkbox" value="sonance-brand"' + (sbChecked ? ' checked' : '') + '>' +
1116
- (MCP_ICONS['sonance-brand'] ? '<div class="mcp-icon">' + MCP_ICONS['sonance-brand'] + '</div>' : '') +
1117
- '<div class="mcp-check"><span class="mcp-check-icon">&#10003;</span></div>' +
1118
- '<div class="mcp-info">' +
1119
- '<span class="mcp-name">' + escapeHtml(state.sonanceBrand.displayName) +
1120
- '<span class="mcp-badge company">internal</span>' +
1121
- '</span>' +
1122
- '<span class="mcp-desc">' + escapeHtml(state.sonanceBrand.description) + '</span>' +
1123
- '</div>' +
1124
- '</label>';
1125
- html += '</div></div>';
1126
- }
1127
-
1128
1103
  if (disabledMcps.length > 0) {
1129
1104
  html += '<div class="mcp-section">';
1130
1105
  html += '<div class="mcp-section-title">Coming Soon</div>';
@@ -1203,18 +1178,8 @@ function getWizardHtml() {
1203
1178
 
1204
1179
  function saveMcps() {
1205
1180
  var checkboxes = document.querySelectorAll('.mcp-item:not(.disabled) input[type="checkbox"]');
1206
- var selected = [];
1207
- var includeBrand = false;
1208
- Array.from(checkboxes).forEach(function(cb) {
1209
- if (!cb.checked) return;
1210
- if (cb.value === 'sonance-brand') {
1211
- includeBrand = true;
1212
- } else {
1213
- selected.push(cb.value);
1214
- }
1215
- });
1181
+ var selected = Array.from(checkboxes).filter(function(cb) { return cb.checked; }).map(function(cb) { return cb.value; });
1216
1182
  state.selectedMcps = selected;
1217
- state.includeSonanceBrand = includeBrand;
1218
1183
  goToStep('clients');
1219
1184
  }
1220
1185
 
@@ -1264,9 +1229,12 @@ function getWizardHtml() {
1264
1229
 
1265
1230
  el.innerHTML = html;
1266
1231
 
1232
+ var manualTypes = ['perplexity', 'stdio'];
1267
1233
  el.querySelectorAll('.client-item:not(.disabled):not(.already-configured)').forEach(function(item) {
1268
- // Auto-select all detected clients on first setup
1269
- item.classList.add('checked');
1234
+ // Auto-select detected clients, but NOT manual/additional ones (Perplexity, OpenClaw)
1235
+ if (manualTypes.indexOf(item.dataset.client) === -1) {
1236
+ item.classList.add('checked');
1237
+ }
1270
1238
  item.addEventListener('click', function(e) {
1271
1239
  e.preventDefault();
1272
1240
  item.classList.toggle('checked');
@@ -1303,7 +1271,7 @@ function getWizardHtml() {
1303
1271
  var resp = await fetch('/api/clients/configure', {
1304
1272
  method: 'POST',
1305
1273
  headers: { 'Content-Type': 'application/json' },
1306
- body: JSON.stringify({ clients: state.selectedClients, mcps: state.selectedMcps, includeSonanceBrand: state.includeSonanceBrand !== false }),
1274
+ body: JSON.stringify({ clients: state.selectedClients, mcps: state.selectedMcps }),
1307
1275
  });
1308
1276
  var data = await resp.json();
1309
1277
 
@@ -1661,10 +1629,6 @@ function detectClients() {
1661
1629
  });
1662
1630
  return clients;
1663
1631
  }
1664
- function buildSonanceBrandEntry() {
1665
- const isWindowsTarget = getPlatform() === "windows" || isWSL();
1666
- return isWindowsTarget ? { command: "cmd", args: ["/c", ...SONANCE_BRAND_CONFIG.args] } : { command: SONANCE_BRAND_CONFIG.command, args: [...SONANCE_BRAND_CONFIG.args] };
1667
- }
1668
1632
  function buildHttpEntries(serverUrl, apiKey, mcps) {
1669
1633
  const entries = {};
1670
1634
  for (const mcp of AVAILABLE_MCPS) {
@@ -1676,7 +1640,7 @@ function buildHttpEntries(serverUrl, apiKey, mcps) {
1676
1640
  }
1677
1641
  return entries;
1678
1642
  }
1679
- function configureClaudeDesktop(_serverUrl, apiKey, _mcps, includeSonanceBrand = true) {
1643
+ function configureClaudeDesktop(_serverUrl, apiKey, _mcps) {
1680
1644
  const configPath = getClaudeDesktopConfigPath();
1681
1645
  const dir = dirname(configPath);
1682
1646
  if (!existsSync(dir)) {
@@ -1712,14 +1676,11 @@ function configureClaudeDesktop(_serverUrl, apiKey, _mcps, includeSonanceBrand =
1712
1676
  }
1713
1677
  const servers = config.mcpServers;
1714
1678
  for (const key of Object.keys(servers)) {
1715
- if (key.startsWith("cortex-") || key === "cortex" || key === SONANCE_BRAND_CONFIG.name) {
1679
+ if (key.startsWith("cortex-") || key === "cortex") {
1716
1680
  delete servers[key];
1717
1681
  }
1718
1682
  }
1719
1683
  servers["cortex"] = cortexEntry;
1720
- if (includeSonanceBrand) {
1721
- servers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1722
- }
1723
1684
  writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
1724
1685
  if (getPlatform() === "windows") {
1725
1686
  const storePath = getStoreClaudePath();
@@ -1743,12 +1704,9 @@ function configureClaudeDesktop(_serverUrl, apiKey, _mcps, includeSonanceBrand =
1743
1704
  }
1744
1705
  const altServers = altConfig.mcpServers;
1745
1706
  for (const key of Object.keys(altServers)) {
1746
- if (key.startsWith("cortex-") || key === "cortex" || key === SONANCE_BRAND_CONFIG.name) delete altServers[key];
1707
+ if (key.startsWith("cortex-") || key === "cortex") delete altServers[key];
1747
1708
  }
1748
1709
  altServers["cortex"] = cortexEntry;
1749
- if (includeSonanceBrand) {
1750
- altServers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1751
- }
1752
1710
  writeFileSync(altPath, JSON.stringify(altConfig, null, 2) + "\n");
1753
1711
  } catch {
1754
1712
  }
@@ -1783,7 +1741,7 @@ function configureClaudeDesktop(_serverUrl, apiKey, _mcps, includeSonanceBrand =
1783
1741
  `Failed to write config to ${configPath}. Claude Desktop may be overwriting the file. Please close Claude Desktop completely (quit from the system tray), then re-run setup.`
1784
1742
  );
1785
1743
  }
1786
- function configureClaudeCode(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1744
+ function configureClaudeCode(serverUrl, apiKey, mcps) {
1787
1745
  for (const mcp of AVAILABLE_MCPS) {
1788
1746
  if (!mcps.includes(mcp.name)) continue;
1789
1747
  const url = `${serverUrl}/mcp/${mcp.name}`;
@@ -1796,18 +1754,8 @@ function configureClaudeCode(serverUrl, apiKey, mcps, includeSonanceBrand = true
1796
1754
  { stdio: "pipe" }
1797
1755
  );
1798
1756
  }
1799
- if (includeSonanceBrand) {
1800
- try {
1801
- execSync(`claude mcp remove ${SONANCE_BRAND_CONFIG.name}`, { stdio: "pipe" });
1802
- } catch {
1803
- }
1804
- execSync(
1805
- `claude mcp add ${SONANCE_BRAND_CONFIG.name} -- ${SONANCE_BRAND_CONFIG.command} ${SONANCE_BRAND_CONFIG.args.join(" ")}`,
1806
- { stdio: "pipe" }
1807
- );
1808
- }
1809
1757
  }
1810
- function configureCursor(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1758
+ function configureCursor(serverUrl, apiKey, mcps) {
1811
1759
  const configPath = getCursorConfigPath();
1812
1760
  const dir = dirname(configPath);
1813
1761
  if (!existsSync(dir)) {
@@ -1825,18 +1773,15 @@ function configureCursor(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1825
1773
  }
1826
1774
  const servers = config.mcpServers;
1827
1775
  for (const key of Object.keys(servers)) {
1828
- if (key.startsWith("cortex-") || key === SONANCE_BRAND_CONFIG.name) {
1776
+ if (key.startsWith("cortex-")) {
1829
1777
  delete servers[key];
1830
1778
  }
1831
1779
  }
1832
1780
  const entries = buildHttpEntries(serverUrl, apiKey, mcps);
1833
1781
  Object.assign(servers, entries);
1834
- if (includeSonanceBrand) {
1835
- servers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1836
- }
1837
1782
  writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
1838
1783
  }
1839
- function configureVSCode(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1784
+ function configureVSCode(serverUrl, apiKey, mcps) {
1840
1785
  const configPath = getVSCodeMcpConfigPath();
1841
1786
  const dir = dirname(configPath);
1842
1787
  if (!existsSync(dir)) {
@@ -1854,18 +1799,15 @@ function configureVSCode(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1854
1799
  }
1855
1800
  const servers = config.mcpServers;
1856
1801
  for (const key of Object.keys(servers)) {
1857
- if (key.startsWith("cortex-") || key === SONANCE_BRAND_CONFIG.name) {
1802
+ if (key.startsWith("cortex-")) {
1858
1803
  delete servers[key];
1859
1804
  }
1860
1805
  }
1861
1806
  const entries = buildHttpEntries(serverUrl, apiKey, mcps);
1862
1807
  Object.assign(servers, entries);
1863
- if (includeSonanceBrand) {
1864
- servers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1865
- }
1866
1808
  writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
1867
1809
  }
1868
- function configureAntigravity(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1810
+ function configureAntigravity(serverUrl, apiKey, mcps) {
1869
1811
  const configPath = getAntigravityConfigPath();
1870
1812
  const dir = dirname(configPath);
1871
1813
  if (!existsSync(dir)) {
@@ -1883,18 +1825,15 @@ function configureAntigravity(serverUrl, apiKey, mcps, includeSonanceBrand = tru
1883
1825
  }
1884
1826
  const servers = config.mcpServers;
1885
1827
  for (const key of Object.keys(servers)) {
1886
- if (key.startsWith("cortex-") || key === SONANCE_BRAND_CONFIG.name) {
1828
+ if (key.startsWith("cortex-")) {
1887
1829
  delete servers[key];
1888
1830
  }
1889
1831
  }
1890
1832
  const entries = buildHttpEntries(serverUrl, apiKey, mcps);
1891
1833
  Object.assign(servers, entries);
1892
- if (includeSonanceBrand) {
1893
- servers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1894
- }
1895
1834
  writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
1896
1835
  }
1897
- function configureCodex(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1836
+ function configureCodex(serverUrl, apiKey, mcps) {
1898
1837
  const configPath = getCodexConfigPath();
1899
1838
  const dir = dirname(configPath);
1900
1839
  if (!existsSync(dir)) {
@@ -1908,7 +1847,7 @@ function configureCodex(serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1908
1847
  }
1909
1848
  }
1910
1849
  const cleaned = existingContent.replace(
1911
- /\[mcp_servers\.(?:cortex-[^\]]*|sonance-brand)\][^[]*(?=\[|$)/g,
1850
+ /\[mcp_servers\.cortex-[^\]]*\][^[]*(?=\[|$)/g,
1912
1851
  ""
1913
1852
  ).trim();
1914
1853
  const tomlEntries = [];
@@ -1920,17 +1859,10 @@ url = "${serverUrl}/mcp/${mcp.name}"
1920
1859
  http_headers = { "x-api-key" = "${apiKey}" }`
1921
1860
  );
1922
1861
  }
1923
- if (includeSonanceBrand) {
1924
- tomlEntries.push(
1925
- `[mcp_servers.${SONANCE_BRAND_CONFIG.name}]
1926
- command = "${SONANCE_BRAND_CONFIG.command}"
1927
- args = [${SONANCE_BRAND_CONFIG.args.map((a) => `"${a}"`).join(", ")}]`
1928
- );
1929
- }
1930
1862
  const newContent = (cleaned ? cleaned + "\n\n" : "") + tomlEntries.join("\n\n") + "\n";
1931
1863
  writeFileSync(configPath, newContent);
1932
1864
  }
1933
- function configurePerplexity(serverUrl, _apiKey, mcps, _includeSonanceBrand = true) {
1865
+ function configurePerplexity(serverUrl, _apiKey, mcps) {
1934
1866
  const lines = [
1935
1867
  "Add each MCP as a separate connector in Perplexity:",
1936
1868
  " Settings \u2192 Connectors \u2192 Add custom connector",
@@ -1947,11 +1879,9 @@ function configurePerplexity(serverUrl, _apiKey, mcps, _includeSonanceBrand = tr
1947
1879
  lines.push(` Transport: Streamable HTTP`);
1948
1880
  lines.push("");
1949
1881
  }
1950
- lines.push("Note: Sonance Brand MCP requires stdio transport (npx sonance-brand-mcp).");
1951
- lines.push("Perplexity may not support stdio \u2014 use Claude Desktop or Claude Code for brand tools.");
1952
1882
  return lines.join("\n");
1953
1883
  }
1954
- function generateStdioSnippet(_apiKey, includeSonanceBrand = true) {
1884
+ function generateStdioSnippet(_apiKey) {
1955
1885
  const isWindowsTarget = getPlatform() === "windows" || isWSL();
1956
1886
  const config = {
1957
1887
  mcpServers: {
@@ -1964,9 +1894,6 @@ function generateStdioSnippet(_apiKey, includeSonanceBrand = true) {
1964
1894
  }
1965
1895
  }
1966
1896
  };
1967
- if (includeSonanceBrand) {
1968
- config.mcpServers[SONANCE_BRAND_CONFIG.name] = buildSonanceBrandEntry();
1969
- }
1970
1897
  return JSON.stringify(config, null, 2);
1971
1898
  }
1972
1899
  function resetClaudeDesktop() {
@@ -1978,7 +1905,7 @@ function resetClaudeDesktop() {
1978
1905
  const servers = config.mcpServers;
1979
1906
  let removed = false;
1980
1907
  for (const key of Object.keys(servers)) {
1981
- if (key.startsWith("cortex-") || key === "cortex" || key === SONANCE_BRAND_CONFIG.name) {
1908
+ if (key.startsWith("cortex-") || key === "cortex") {
1982
1909
  delete servers[key];
1983
1910
  removed = true;
1984
1911
  }
@@ -2000,7 +1927,7 @@ function resetCursor() {
2000
1927
  const servers = config.mcpServers;
2001
1928
  let removed = false;
2002
1929
  for (const key of Object.keys(servers)) {
2003
- if (key.startsWith("cortex-") || key === "cortex" || key === SONANCE_BRAND_CONFIG.name) {
1930
+ if (key.startsWith("cortex-") || key === "cortex") {
2004
1931
  delete servers[key];
2005
1932
  removed = true;
2006
1933
  }
@@ -2022,11 +1949,6 @@ function resetClaudeCode() {
2022
1949
  } catch {
2023
1950
  }
2024
1951
  }
2025
- try {
2026
- execSync(`claude mcp remove ${SONANCE_BRAND_CONFIG.name}`, { stdio: "pipe" });
2027
- removed = true;
2028
- } catch {
2029
- }
2030
1952
  return removed;
2031
1953
  }
2032
1954
  function resetCodex() {
@@ -2035,7 +1957,7 @@ function resetCodex() {
2035
1957
  try {
2036
1958
  const content = readFileSync(configPath, "utf-8");
2037
1959
  const cleaned = content.replace(
2038
- /\[mcp_servers\.(?:cortex-[^\]]*|sonance-brand)\][^[]*(?=\[|$)/g,
1960
+ /\[mcp_servers\.cortex-[^\]]*\][^[]*(?=\[|$)/g,
2039
1961
  ""
2040
1962
  ).trim();
2041
1963
  if (cleaned !== content.trim()) {
@@ -2047,31 +1969,31 @@ function resetCodex() {
2047
1969
  return false;
2048
1970
  }
2049
1971
  }
2050
- function configureClient(clientType, serverUrl, apiKey, mcps, includeSonanceBrand = true) {
1972
+ function configureClient(clientType, serverUrl, apiKey, mcps) {
2051
1973
  switch (clientType) {
2052
1974
  case "claude-desktop": {
2053
- const path = configureClaudeDesktop(serverUrl, apiKey, mcps, includeSonanceBrand);
1975
+ const path = configureClaudeDesktop(serverUrl, apiKey, mcps);
2054
1976
  return `Claude Desktop configured (${path})`;
2055
1977
  }
2056
1978
  case "claude-code":
2057
- configureClaudeCode(serverUrl, apiKey, mcps, includeSonanceBrand);
1979
+ configureClaudeCode(serverUrl, apiKey, mcps);
2058
1980
  return "Claude Code configured";
2059
1981
  case "cursor":
2060
- configureCursor(serverUrl, apiKey, mcps, includeSonanceBrand);
1982
+ configureCursor(serverUrl, apiKey, mcps);
2061
1983
  return "Cursor configured";
2062
1984
  case "vscode":
2063
- configureVSCode(serverUrl, apiKey, mcps, includeSonanceBrand);
1985
+ configureVSCode(serverUrl, apiKey, mcps);
2064
1986
  return "VS Code configured";
2065
1987
  case "antigravity":
2066
- configureAntigravity(serverUrl, apiKey, mcps, includeSonanceBrand);
1988
+ configureAntigravity(serverUrl, apiKey, mcps);
2067
1989
  return "Antigravity configured";
2068
1990
  case "codex":
2069
- configureCodex(serverUrl, apiKey, mcps, includeSonanceBrand);
1991
+ configureCodex(serverUrl, apiKey, mcps);
2070
1992
  return "Codex configured";
2071
1993
  case "perplexity":
2072
- return configurePerplexity(serverUrl, apiKey, mcps, includeSonanceBrand);
1994
+ return configurePerplexity(serverUrl, apiKey, mcps);
2073
1995
  case "stdio":
2074
- return "Add this to your client config:\n\n" + generateStdioSnippet(apiKey, includeSonanceBrand);
1996
+ return "Add this to your client config:\n\n" + generateStdioSnippet(apiKey);
2075
1997
  }
2076
1998
  }
2077
1999
 
@@ -2213,11 +2135,6 @@ async function handleApiRoute(path, searchParams, req, res, options, onComplete)
2213
2135
  description: m.description,
2214
2136
  authMode: m.authMode
2215
2137
  })),
2216
- sonanceBrand: {
2217
- name: SONANCE_BRAND_CONFIG.name,
2218
- displayName: SONANCE_BRAND_CONFIG.displayName,
2219
- description: SONANCE_BRAND_CONFIG.description
2220
- },
2221
2138
  detectedClients: clients
2222
2139
  });
2223
2140
  return true;
@@ -2311,7 +2228,6 @@ async function handleApiRoute(path, searchParams, req, res, options, onComplete)
2311
2228
  const body = await parseBody(req);
2312
2229
  const clients = body.clients || [];
2313
2230
  const mcps = body.mcps || [...DEFAULT_MCPS];
2314
- const includeSonanceBrand = body.includeSonanceBrand !== false;
2315
2231
  const apiKey = getState().apiKey;
2316
2232
  const results = [];
2317
2233
  for (const clientType of clients) {
@@ -2320,8 +2236,7 @@ async function handleApiRoute(path, searchParams, req, res, options, onComplete)
2320
2236
  clientType,
2321
2237
  options.serverUrl,
2322
2238
  apiKey,
2323
- mcps,
2324
- includeSonanceBrand
2239
+ mcps
2325
2240
  );
2326
2241
  results.push({ client: clientType, success: true, message: msg });
2327
2242
  } catch (err2) {
@@ -4345,7 +4260,7 @@ program.command("disconnect <provider>").description("Remove your personal OAuth
4345
4260
  }
4346
4261
  });
4347
4262
  program.command("connect-mobile").description("Connect Cortex to Claude on mobile \u2014 opens setup page in browser").action(async () => {
4348
- const { DEFAULT_SERVER_URL: DEFAULT_SERVER_URL3 } = await import("./constants-76SAPZ3D.js");
4263
+ const { DEFAULT_SERVER_URL: DEFAULT_SERVER_URL3 } = await import("./constants-66VQYSV7.js");
4349
4264
  const { openBrowser: openBrowser2 } = await import("./browser-AJPM6AK7.js");
4350
4265
  const url = `${DEFAULT_SERVER_URL3}/connect`;
4351
4266
  console.log("\nOpening Cortex connect page...");