nia-wizard 0.1.2 → 0.1.3

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/bin.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  runMCPAdd,
5
5
  runMCPRemove,
6
6
  runWizard
7
- } from "./chunk-Y3PXW4WX.js";
7
+ } from "./chunk-KC437AQI.js";
8
8
 
9
9
  // src/bin.ts
10
10
  import yargs from "yargs";
@@ -166,6 +166,18 @@ function getDefaultServerConfig(apiKey, mode) {
166
166
  // src/steps/add-mcp-server-to-clients/MCPClient.ts
167
167
  var SERVER_NAME = "nia";
168
168
  var MCPClient = class {
169
+ /**
170
+ * Documentation URL for this client's MCP setup
171
+ */
172
+ docsUrl;
173
+ /**
174
+ * Special notes for this client (e.g., alternative install methods)
175
+ */
176
+ note;
177
+ /**
178
+ * Whether this client uses CLI commands instead of config files
179
+ */
180
+ usesCLI;
169
181
  /**
170
182
  * Check if server is already installed
171
183
  */
@@ -486,6 +498,7 @@ import * as os from "os";
486
498
  import * as fs2 from "fs";
487
499
  var CursorMCPClient = class extends MCPClient {
488
500
  name = "Cursor";
501
+ docsUrl = "https://cursor.com/docs/context/mcp";
489
502
  async isClientSupported() {
490
503
  const platform = process.platform;
491
504
  if (platform !== "darwin" && platform !== "win32") {
@@ -509,6 +522,7 @@ var CursorMCPClient = class extends MCPClient {
509
522
  return getRemoteServerConfig(apiKey);
510
523
  }
511
524
  return {
525
+ type: "stdio",
512
526
  command: "pipx",
513
527
  args: ["run", "--no-cache", "nia-mcp-server"],
514
528
  env: {
@@ -525,6 +539,8 @@ import * as os2 from "os";
525
539
  import * as fs3 from "fs";
526
540
  var ClaudeDesktopMCPClient = class extends MCPClient {
527
541
  name = "Claude Desktop";
542
+ docsUrl = "https://modelcontextprotocol.io/quickstart/user";
543
+ note = "Only supports local (stdio) mode";
528
544
  async isClientSupported() {
529
545
  const platform = process.platform;
530
546
  if (platform !== "darwin" && platform !== "win32") {
@@ -585,6 +601,8 @@ import * as os3 from "os";
585
601
  import * as path4 from "path";
586
602
  var ClaudeCodeMCPClient = class extends MCPClient {
587
603
  name = "Claude Code";
604
+ docsUrl = "https://docs.anthropic.com/en/docs/claude-code/mcp-servers";
605
+ usesCLI = true;
588
606
  claudeBinaryPath = null;
589
607
  async isClientSupported() {
590
608
  try {
@@ -682,6 +700,7 @@ import * as os4 from "os";
682
700
  import * as fs5 from "fs";
683
701
  var VSCodeMCPClient = class extends MCPClient {
684
702
  name = "VS Code";
703
+ docsUrl = "https://code.visualstudio.com/docs/copilot/chat/mcp-servers";
685
704
  async isClientSupported() {
686
705
  const platform = process.platform;
687
706
  if (platform !== "darwin" && platform !== "win32" && platform !== "linux") {
@@ -744,6 +763,7 @@ import * as os5 from "os";
744
763
  import * as fs6 from "fs";
745
764
  var WindsurfMCPClient = class extends MCPClient {
746
765
  name = "Windsurf";
766
+ docsUrl = "https://docs.windsurf.com/windsurf/cascade/mcp";
747
767
  async isClientSupported() {
748
768
  const platform = process.platform;
749
769
  if (platform !== "darwin" && platform !== "win32" && platform !== "linux") {
@@ -797,6 +817,8 @@ import * as os6 from "os";
797
817
  import * as fs7 from "fs";
798
818
  var ZedMCPClient = class extends MCPClient {
799
819
  name = "Zed";
820
+ docsUrl = "https://zed.dev/docs/ai/mcp";
821
+ note = "Only supports local (stdio) mode";
800
822
  async isClientSupported() {
801
823
  const platform = process.platform;
802
824
  if (platform !== "darwin" && platform !== "linux") {
@@ -845,6 +867,7 @@ import * as os7 from "os";
845
867
  import * as fs8 from "fs";
846
868
  var ClineMCPClient = class extends MCPClient {
847
869
  name = "Cline";
870
+ docsUrl = "https://docs.cline.bot/mcp/configuring-mcp-servers";
848
871
  async isClientSupported() {
849
872
  const configPath = await this.getConfigPath();
850
873
  const configDir = path8.dirname(configPath);
@@ -893,6 +916,9 @@ var ClineMCPClient = class extends MCPClient {
893
916
  import { execSync as execSync2, spawnSync } from "child_process";
894
917
  var CodexMCPClient = class extends MCPClient {
895
918
  name = "Codex CLI";
919
+ docsUrl = "https://developers.openai.com/codex/mcp/";
920
+ usesCLI = true;
921
+ note = "Only supports local mode, uses CLI configuration";
896
922
  async isClientSupported() {
897
923
  try {
898
924
  execSync2("codex --version", { stdio: "ignore" });
@@ -965,6 +991,7 @@ import * as os8 from "os";
965
991
  import * as fs9 from "fs";
966
992
  var ContinueMCPClient = class extends MCPClient {
967
993
  name = "Continue.dev";
994
+ docsUrl = "https://docs.continue.dev/customize/mcp-tools";
968
995
  async isClientSupported() {
969
996
  const configPath = await this.getConfigPath();
970
997
  const configDir = path9.dirname(configPath);
@@ -1016,6 +1043,8 @@ import * as os9 from "os";
1016
1043
  import * as fs10 from "fs";
1017
1044
  var JetBrainsMCPClient = class extends MCPClient {
1018
1045
  name = "JetBrains";
1046
+ docsUrl = "https://www.jetbrains.com/help/idea/mcp-server.html";
1047
+ note = "Only supports local (stdio) mode";
1019
1048
  async isClientSupported() {
1020
1049
  const homeDir = os9.homedir();
1021
1050
  const possibleDirs = [
@@ -1051,6 +1080,7 @@ import * as os10 from "os";
1051
1080
  import * as fs11 from "fs";
1052
1081
  var AntigravityMCPClient = class extends MCPClient {
1053
1082
  name = "Google Antigravity";
1083
+ docsUrl = "https://developers.google.com/gemini-code-assist/docs/use-mcp-servers";
1054
1084
  async isClientSupported() {
1055
1085
  const configPath = await this.getConfigPath();
1056
1086
  const configDir = path11.dirname(configPath);
@@ -1088,6 +1118,7 @@ import * as os11 from "os";
1088
1118
  import * as fs12 from "fs";
1089
1119
  var TraeMCPClient = class extends MCPClient {
1090
1120
  name = "Trae";
1121
+ docsUrl = "https://docs.trae.ai/ide/model-context-protocol";
1091
1122
  async isClientSupported() {
1092
1123
  const configPath = await this.getConfigPath();
1093
1124
  const configDir = path12.dirname(configPath);
@@ -1128,6 +1159,7 @@ import * as os12 from "os";
1128
1159
  import * as fs13 from "fs";
1129
1160
  var RooCodeMCPClient = class extends MCPClient {
1130
1161
  name = "Roo Code";
1162
+ docsUrl = "https://docs.roocode.com/features/mcp/using-mcp-in-roo";
1131
1163
  async isClientSupported() {
1132
1164
  const configPath = await this.getConfigPath();
1133
1165
  const configDir = path13.dirname(configPath);
@@ -1166,6 +1198,7 @@ import * as os13 from "os";
1166
1198
  import * as fs14 from "fs";
1167
1199
  var KiloCodeMCPClient = class extends MCPClient {
1168
1200
  name = "Kilo Code";
1201
+ docsUrl = "https://kilo.ai/docs/features/mcp/using-mcp-in-kilo-code";
1169
1202
  async isClientSupported() {
1170
1203
  const configPath = await this.getConfigPath();
1171
1204
  const configDir = path14.dirname(configPath);
@@ -1208,6 +1241,7 @@ import * as os14 from "os";
1208
1241
  import * as fs15 from "fs";
1209
1242
  var GeminiCLIMCPClient = class extends MCPClient {
1210
1243
  name = "Gemini CLI";
1244
+ docsUrl = "https://googlegemini.com/docs/gemini-cli/tools/mcp-server";
1211
1245
  async isClientSupported() {
1212
1246
  const configPath = await this.getConfigPath();
1213
1247
  const configDir = path15.dirname(configPath);
@@ -1249,6 +1283,8 @@ import * as os15 from "os";
1249
1283
  import * as fs16 from "fs";
1250
1284
  var OpencodeMCPClient = class extends MCPClient {
1251
1285
  name = "Opencode";
1286
+ docsUrl = "https://opencode.ai/docs/mcp-servers/";
1287
+ note = "Also available as dedicated plugin: bunx nia-opencode@latest install (Demo: https://x.com/arlanr/status/1879212916125777962)";
1252
1288
  async isClientSupported() {
1253
1289
  const configPath = await this.getConfigPath();
1254
1290
  const configDir = path16.dirname(configPath);
@@ -1289,6 +1325,7 @@ import * as os16 from "os";
1289
1325
  import * as fs17 from "fs";
1290
1326
  var QodoGenMCPClient = class extends MCPClient {
1291
1327
  name = "Qodo Gen";
1328
+ docsUrl = "https://docs.qodo.ai/qodo-documentation/qodo-gen/tools-mcps/agentic-tools-mcps";
1292
1329
  async isClientSupported() {
1293
1330
  const configPath = await this.getConfigPath();
1294
1331
  const configDir = path17.dirname(configPath);
@@ -1326,6 +1363,7 @@ import * as os17 from "os";
1326
1363
  import * as fs18 from "fs";
1327
1364
  var QwenCoderMCPClient = class extends MCPClient {
1328
1365
  name = "Qwen Coder";
1366
+ docsUrl = "https://qwenlm.github.io/blog/qwen2.5-coder-family/";
1329
1367
  async isClientSupported() {
1330
1368
  const configPath = await this.getConfigPath();
1331
1369
  const configDir = path18.dirname(configPath);
@@ -1367,6 +1405,7 @@ import * as os18 from "os";
1367
1405
  import * as fs19 from "fs";
1368
1406
  var VisualStudioMCPClient = class extends MCPClient {
1369
1407
  name = "Visual Studio 2022";
1408
+ docsUrl = "https://learn.microsoft.com/en-us/visualstudio/ide/mcp-servers";
1370
1409
  async isClientSupported() {
1371
1410
  if (process.platform !== "win32") {
1372
1411
  return false;
@@ -1409,6 +1448,7 @@ import * as os19 from "os";
1409
1448
  import * as fs20 from "fs";
1410
1449
  var CrushMCPClient = class extends MCPClient {
1411
1450
  name = "Crush";
1451
+ docsUrl = "https://github.com/charmbracelet/crush";
1412
1452
  async isClientSupported() {
1413
1453
  const configPath = await this.getConfigPath();
1414
1454
  const configDir = path20.dirname(configPath);
@@ -1449,6 +1489,7 @@ import * as fs21 from "fs";
1449
1489
  var COPILOT_TOOLS = ["index", "search", "manage_resource", "nia_web_search", "nia_deep_research_agent"];
1450
1490
  var CopilotCLIMCPClient = class extends MCPClient {
1451
1491
  name = "Copilot CLI";
1492
+ docsUrl = "https://docs.github.com/en/copilot/how-tos/provide-context/use-mcp/extend-copilot-chat-with-mcp";
1452
1493
  async isClientSupported() {
1453
1494
  const configPath = await this.getConfigPath();
1454
1495
  const configDir = path21.dirname(configPath);
@@ -1488,6 +1529,7 @@ var CopilotCLIMCPClient = class extends MCPClient {
1488
1529
  };
1489
1530
  var CopilotAgentMCPClient = class extends MCPClient {
1490
1531
  name = "Copilot Coding Agent";
1532
+ docsUrl = "https://docs.github.com/en/copilot/how-tos/provide-context/use-mcp/extend-copilot-chat-with-mcp";
1491
1533
  async isClientSupported() {
1492
1534
  return fs21.existsSync(".github");
1493
1535
  }
@@ -1526,6 +1568,8 @@ import * as path22 from "path";
1526
1568
  import * as os21 from "os";
1527
1569
  var AugmentMCPClient = class extends MCPClient {
1528
1570
  name = "Augment Code";
1571
+ docsUrl = "https://docs.augmentcode.com/setup-augment/mcp";
1572
+ note = "Only supports local (stdio) mode";
1529
1573
  async isClientSupported() {
1530
1574
  return false;
1531
1575
  }
@@ -1561,6 +1605,8 @@ import * as os22 from "os";
1561
1605
  import * as fs22 from "fs";
1562
1606
  var KiroMCPClient = class extends MCPClient {
1563
1607
  name = "Kiro";
1608
+ docsUrl = "https://kiro.dev/docs/mcp/";
1609
+ note = "Only supports local (stdio) mode";
1564
1610
  async isClientSupported() {
1565
1611
  const configPath = await this.getConfigPath();
1566
1612
  const configDir = path23.dirname(configPath);
@@ -1595,6 +1641,8 @@ import * as os23 from "os";
1595
1641
  import * as fs23 from "fs";
1596
1642
  var LMStudioMCPClient = class extends MCPClient {
1597
1643
  name = "LM Studio";
1644
+ docsUrl = "https://lmstudio.ai/docs/app/mcp";
1645
+ note = "Only supports local (stdio) mode";
1598
1646
  async isClientSupported() {
1599
1647
  const configPath = await this.getConfigPath();
1600
1648
  const configDir = path24.dirname(configPath);
@@ -1627,6 +1675,8 @@ import * as os24 from "os";
1627
1675
  import * as fs24 from "fs";
1628
1676
  var BoltAIMCPClient = class extends MCPClient {
1629
1677
  name = "BoltAI";
1678
+ docsUrl = "https://docs.boltai.com/docs/plugins/mcp-servers";
1679
+ note = "Only supports local (stdio) mode, macOS only";
1630
1680
  async isClientSupported() {
1631
1681
  if (process.platform !== "darwin") {
1632
1682
  return false;
@@ -1662,6 +1712,8 @@ import * as os25 from "os";
1662
1712
  import * as fs25 from "fs";
1663
1713
  var PerplexityMCPClient = class extends MCPClient {
1664
1714
  name = "Perplexity Desktop";
1715
+ docsUrl = "https://docs.perplexity.ai/guides/mcp-server";
1716
+ note = "Only supports local (stdio) mode, macOS only";
1665
1717
  async isClientSupported() {
1666
1718
  if (process.platform !== "darwin") {
1667
1719
  return false;
@@ -1697,6 +1749,8 @@ import * as os26 from "os";
1697
1749
  import * as fs26 from "fs";
1698
1750
  var WarpMCPClient = class extends MCPClient {
1699
1751
  name = "Warp";
1752
+ docsUrl = "https://docs.warp.dev/knowledge-and-collaboration/mcp";
1753
+ note = "Only supports local (stdio) mode";
1700
1754
  async isClientSupported() {
1701
1755
  const configPath = await this.getConfigPath();
1702
1756
  const configDir = path27.dirname(configPath);
@@ -1731,6 +1785,8 @@ import * as os27 from "os";
1731
1785
  import * as fs27 from "fs";
1732
1786
  var AmazonQMCPClient = class extends MCPClient {
1733
1787
  name = "Amazon Q Developer CLI";
1788
+ docsUrl = "https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-mcp-configuration.html";
1789
+ note = "Only supports local (stdio) mode";
1734
1790
  async isClientSupported() {
1735
1791
  const configPath = await this.getConfigPath();
1736
1792
  const configDir = path28.dirname(configPath);
@@ -1761,6 +1817,9 @@ var AmazonQMCPClient = class extends MCPClient {
1761
1817
  import { execSync as execSync3, spawnSync as spawnSync2 } from "child_process";
1762
1818
  var FactoryMCPClient = class extends MCPClient {
1763
1819
  name = "Factory";
1820
+ docsUrl = "https://docs.factory.ai/cli/configuration/mcp";
1821
+ usesCLI = true;
1822
+ note = "Uses droid CLI for configuration";
1764
1823
  async isClientSupported() {
1765
1824
  try {
1766
1825
  execSync3("droid --version", { stdio: "ignore" });
@@ -1843,6 +1902,9 @@ var FactoryMCPClient = class extends MCPClient {
1843
1902
  import { execSync as execSync4, spawnSync as spawnSync3 } from "child_process";
1844
1903
  var AmpMCPClient = class extends MCPClient {
1845
1904
  name = "Amp";
1905
+ docsUrl = "https://ampcode.com/docs/customize/mcp";
1906
+ usesCLI = true;
1907
+ note = "Only supports remote mode, uses CLI configuration";
1846
1908
  async isClientSupported() {
1847
1909
  try {
1848
1910
  execSync4("amp --version", { stdio: "ignore" });
@@ -1914,6 +1976,8 @@ import * as os28 from "os";
1914
1976
  import * as fs28 from "fs";
1915
1977
  var VibeMCPClient = class extends MCPClient {
1916
1978
  name = "Mistral Vibe CLI";
1979
+ docsUrl = "https://github.com/mistralai/mistral-vibe?tab=readme-ov-file#mcp-server-configuration";
1980
+ note = "Only supports remote mode, uses TOML config";
1917
1981
  async isClientSupported() {
1918
1982
  const configPath = await this.getConfigPath();
1919
1983
  return fs28.existsSync(configPath);
@@ -1991,6 +2055,44 @@ Authorization = "Bearer ${apiKey}"
1991
2055
  };
1992
2056
 
1993
2057
  // src/steps/add-mcp-server-to-clients/index.ts
2058
+ function getAllClients() {
2059
+ return [
2060
+ // Core / popular clients first
2061
+ new CursorMCPClient(),
2062
+ new ClaudeCodeMCPClient(),
2063
+ new ClaudeDesktopMCPClient(),
2064
+ new VSCodeMCPClient(),
2065
+ new WindsurfMCPClient(),
2066
+ new ClineMCPClient(),
2067
+ new ContinueMCPClient(),
2068
+ new ZedMCPClient(),
2069
+ new JetBrainsMCPClient(),
2070
+ // Additional clients
2071
+ new AntigravityMCPClient(),
2072
+ new TraeMCPClient(),
2073
+ new RooCodeMCPClient(),
2074
+ new KiloCodeMCPClient(),
2075
+ new GeminiCLIMCPClient(),
2076
+ new OpencodeMCPClient(),
2077
+ new QodoGenMCPClient(),
2078
+ new QwenCoderMCPClient(),
2079
+ new VisualStudioMCPClient(),
2080
+ new CrushMCPClient(),
2081
+ new CopilotCLIMCPClient(),
2082
+ new CopilotAgentMCPClient(),
2083
+ new AugmentMCPClient(),
2084
+ new KiroMCPClient(),
2085
+ new LMStudioMCPClient(),
2086
+ new BoltAIMCPClient(),
2087
+ new PerplexityMCPClient(),
2088
+ new WarpMCPClient(),
2089
+ new AmazonQMCPClient(),
2090
+ new CodexMCPClient(),
2091
+ new FactoryMCPClient(),
2092
+ new AmpMCPClient(),
2093
+ new VibeMCPClient()
2094
+ ];
2095
+ }
1994
2096
  async function getSupportedClients() {
1995
2097
  const allClients = [
1996
2098
  // Core / popular clients first
@@ -2387,11 +2489,118 @@ function dependenciesReady() {
2387
2489
  }
2388
2490
 
2389
2491
  // src/run.ts
2492
+ async function runManualMode() {
2493
+ const allClients = getAllClients();
2494
+ const selectedName = await abortIfCancelled(
2495
+ clack_default.select({
2496
+ message: "Select a coding agent to view its configuration:",
2497
+ options: allClients.map((client2) => ({
2498
+ value: client2.name,
2499
+ label: client2.name,
2500
+ hint: client2.note || void 0
2501
+ }))
2502
+ })
2503
+ );
2504
+ const client = allClients.find((c) => c.name === selectedName);
2505
+ if (!client) {
2506
+ clack_default.log.error("Client not found");
2507
+ return;
2508
+ }
2509
+ console.log("");
2510
+ clack_default.log.info(chalk3.bold(`Configuration for ${client.name}`));
2511
+ console.log("");
2512
+ if (client.docsUrl) {
2513
+ console.log(chalk3.cyan(" Documentation:"));
2514
+ console.log(` ${chalk3.underline(client.docsUrl)}`);
2515
+ console.log("");
2516
+ }
2517
+ if (client.note) {
2518
+ console.log(chalk3.yellow(" Note:"));
2519
+ console.log(` ${client.note}`);
2520
+ console.log("");
2521
+ }
2522
+ let configPath = "";
2523
+ try {
2524
+ configPath = await client.getConfigPath();
2525
+ console.log(chalk3.cyan(" Config file path:"));
2526
+ console.log(` ${configPath}`);
2527
+ console.log("");
2528
+ } catch {
2529
+ if (client.usesCLI) {
2530
+ console.log(chalk3.cyan(" Configuration method:"));
2531
+ console.log(` Uses CLI commands (no config file)`);
2532
+ console.log("");
2533
+ }
2534
+ }
2535
+ const exampleApiKey = "nk_YOUR_API_KEY_HERE";
2536
+ console.log(chalk3.cyan(" Local mode config (stdio):"));
2537
+ const localConfig = client.getServerConfig(exampleApiKey, "local");
2538
+ console.log(chalk3.dim(" Add this to your config file under the servers section:"));
2539
+ console.log("");
2540
+ console.log(chalk3.green(` "${client.name === "Cursor" ? "mcpServers" : client.getServerPropertyName()}": {`));
2541
+ console.log(chalk3.green(` "nia": ${JSON.stringify(localConfig, null, 6).split("\n").map((line, i) => i === 0 ? line : " " + line).join("\n")}`));
2542
+ console.log(chalk3.green(` }`));
2543
+ console.log("");
2544
+ console.log(chalk3.cyan(" Remote mode config (HTTP):"));
2545
+ const remoteConfig = client.getServerConfig(exampleApiKey, "remote");
2546
+ console.log(chalk3.dim(" Add this to your config file under the servers section:"));
2547
+ console.log("");
2548
+ console.log(chalk3.green(` "${client.name === "Cursor" ? "mcpServers" : client.getServerPropertyName()}": {`));
2549
+ console.log(chalk3.green(` "nia": ${JSON.stringify(remoteConfig, null, 6).split("\n").map((line, i) => i === 0 ? line : " " + line).join("\n")}`));
2550
+ console.log(chalk3.green(` }`));
2551
+ console.log("");
2552
+ if (client.usesCLI) {
2553
+ console.log(chalk3.cyan(" CLI commands:"));
2554
+ if (client.name === "Claude Code") {
2555
+ console.log(chalk3.dim(" Local mode:"));
2556
+ console.log(` claude mcp add nia -e "NIA_API_KEY=${exampleApiKey}" -e "NIA_API_URL=https://apigcp.trynia.ai/" -s user -- pipx run --no-cache nia-mcp-server`);
2557
+ console.log("");
2558
+ console.log(chalk3.dim(" Remote mode:"));
2559
+ console.log(` claude mcp add --transport http nia ${REMOTE_MCP_URL} --header "Authorization: Bearer ${exampleApiKey}" -s user`);
2560
+ } else if (client.name === "Codex CLI") {
2561
+ console.log(chalk3.dim(" Local mode:"));
2562
+ console.log(` codex mcp add nia --env "NIA_API_KEY=${exampleApiKey}" --env "NIA_API_URL=https://apigcp.trynia.ai/" -- pipx run --no-cache nia-mcp-server`);
2563
+ } else if (client.name === "Factory") {
2564
+ console.log(chalk3.dim(" Local mode:"));
2565
+ console.log(` droid mcp add nia "pipx run --no-cache nia-mcp-server" --env "NIA_API_KEY=${exampleApiKey}" --env "NIA_API_URL=https://apigcp.trynia.ai/"`);
2566
+ console.log("");
2567
+ console.log(chalk3.dim(" Remote mode:"));
2568
+ console.log(` droid mcp add nia ${REMOTE_MCP_URL} --type http --header "Authorization: Bearer ${exampleApiKey}"`);
2569
+ } else if (client.name === "Amp") {
2570
+ console.log(chalk3.dim(" Remote mode:"));
2571
+ console.log(` amp mcp add nia --header "Authorization=Bearer ${exampleApiKey}" ${REMOTE_MCP_URL}`);
2572
+ }
2573
+ console.log("");
2574
+ }
2575
+ clack_default.outro(chalk3.dim("Press Enter to exit"));
2576
+ }
2390
2577
  async function runWizard(options) {
2391
2578
  if (options.debug) {
2392
2579
  enableDebug();
2393
2580
  }
2394
2581
  printWelcome();
2582
+ const wizardMode = await abortIfCancelled(
2583
+ clack_default.select({
2584
+ message: "What would you like to do?",
2585
+ options: [
2586
+ {
2587
+ value: "install",
2588
+ label: "Install Nia MCP Server",
2589
+ hint: "Automatically configure your coding agents"
2590
+ },
2591
+ {
2592
+ value: "manual",
2593
+ label: "Manual Setup (View Config)",
2594
+ hint: "View configuration for manual setup or troubleshooting"
2595
+ }
2596
+ ],
2597
+ initialValue: "install"
2598
+ })
2599
+ );
2600
+ if (wizardMode === "manual") {
2601
+ await runManualMode();
2602
+ return;
2603
+ }
2395
2604
  const apiKey = await getApiKey(options.apiKey);
2396
2605
  let mode;
2397
2606
  if (options.local !== void 0) {
@@ -2535,4 +2744,4 @@ export {
2535
2744
  runMCPAdd,
2536
2745
  runMCPRemove
2537
2746
  };
2538
- //# sourceMappingURL=chunk-Y3PXW4WX.js.map
2747
+ //# sourceMappingURL=chunk-KC437AQI.js.map