nia-wizard 0.1.17 → 0.1.19

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @nia/wizard
2
2
 
3
- CLI wizard to install Nia to your coding agents via MCP server or Skills.
3
+ CLI wizard to install Nia to your coding agents via Nia CLI, Skills, or direct agent setup.
4
4
 
5
5
  ## Installation
6
6
 
@@ -66,8 +66,9 @@ npx nia-wizard
66
66
 
67
67
  The wizard stores your API key at `~/.config/nia/api_key`.
68
68
 
69
+ - Select `Install Nia CLI (recommended)` to auto-install `nia-cli`, run `nia auth login --api-key ...`, and then run `nia skill`.
69
70
  - Select `Install Nia Skill` to use the existing `skills` CLI flow.
70
- - Select `Install Nia CLI` to auto-install `nia-cli`, run `nia auth login --api-key ...`, and then run `nia skill`.
71
+ - Select `Install via add-mcp` for a quick install to supported agents.
71
72
 
72
73
  For deterministic agent/CI usage:
73
74
 
package/dist/bin.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  runMCPRemove,
7
7
  runSkillAdd,
8
8
  runWizard
9
- } from "./chunk-XF23S5X2.js";
9
+ } from "./chunk-MC6VAW7S.js";
10
10
 
11
11
  // src/bin.ts
12
12
  import yargs from "yargs";
@@ -20,7 +20,7 @@ function printCliError(error) {
20
20
  }
21
21
  var cli = yargs(hideBin(process.argv)).scriptName("nia-wizard").usage("$0 [api-key] [options]").usage("$0 mcp add [options]").usage("$0 mcp remove [options]").usage("$0 skill add [options]").usage("$0 agent-guide").command(
22
22
  "$0 [api-key]",
23
- "Install Nia MCP server to your coding agents",
23
+ "Install Nia to your coding agents",
24
24
  (yargs2) => yargs2.positional("api-key", {
25
25
  type: "string",
26
26
  description: "Nia API key (nk_xxx)"
@@ -129,10 +129,10 @@ var cli = yargs(hideBin(process.argv)).scriptName("nia-wizard").usage("$0 [api-k
129
129
  }
130
130
  ).command(
131
131
  "mcp <command>",
132
- "Manage MCP server installation",
132
+ "Manage direct agent setup",
133
133
  (yargs2) => yargs2.command(
134
134
  "add",
135
- "Add Nia MCP server to coding agents",
135
+ "Add Nia to coding agents",
136
136
  (yargs3) => yargs3.option("api-key", {
137
137
  type: "string",
138
138
  alias: "k",
@@ -167,7 +167,7 @@ var cli = yargs(hideBin(process.argv)).scriptName("nia-wizard").usage("$0 [api-k
167
167
  }
168
168
  ).command(
169
169
  "remove",
170
- "Remove Nia MCP server from coding agents",
170
+ "Remove Nia from coding agents",
171
171
  (yargs3) => yargs3.option("debug", {
172
172
  type: "boolean",
173
173
  default: false,
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bin.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { runWizard } from './run.js';\nimport { runMCPAdd, runMCPRemove } from './mcp.js';\nimport { runSkillAdd } from './skill.js';\nimport { printAgentGuide } from './agent-guide.js';\n\nfunction printCliError(error: unknown): void {\n if (error instanceof Error) {\n console.error(`Error: ${error.message}`);\n return;\n }\n\n console.error('Error:', error);\n}\n\nconst cli = yargs(hideBin(process.argv))\n .scriptName('nia-wizard')\n .usage('$0 [api-key] [options]')\n .usage('$0 mcp add [options]')\n .usage('$0 mcp remove [options]')\n .usage('$0 skill add [options]')\n .usage('$0 agent-guide')\n .command(\n '$0 [api-key]',\n 'Install Nia MCP server to your coding agents',\n (yargs) =>\n yargs\n .positional('api-key', {\n type: 'string',\n description: 'Nia API key (nk_xxx)',\n })\n .option('local', {\n type: 'boolean',\n description: 'Use local mode (requires pipx)',\n })\n .option('remote', {\n type: 'boolean',\n description: 'Use remote mode (cloud)',\n })\n .option('debug', {\n type: 'boolean',\n default: false,\n description: 'Enable debug logging',\n })\n .option('ci', {\n type: 'boolean',\n default: false,\n description: 'CI mode (skip prompts)',\n }),\n async (argv) => {\n try {\n await runWizard({\n apiKey: argv['api-key'],\n local: argv.local ?? (argv.remote ? false : undefined),\n debug: argv.debug,\n ci: argv.ci,\n });\n } catch (error) {\n printCliError(error);\n process.exit(1);\n }\n },\n )\n .command(\n 'agent-guide',\n 'Print API-first agent onboarding guide in Markdown',\n () => {},\n () => {\n printAgentGuide();\n },\n )\n .command(\n 'skill <command>',\n 'Manage skill installation',\n (yargs) =>\n yargs\n .command(\n 'add',\n 'Add Nia skill',\n (yargs) =>\n yargs\n .option('api-key', {\n type: 'string',\n alias: 'k',\n description: 'Nia API key (nk_xxx)',\n })\n .option('source', {\n type: 'string',\n default: 'nozomio-labs/nia-skill',\n description: 'Skill source to install',\n })\n .option('target', {\n type: 'string',\n description: 'Target coding agent for skill installation',\n })\n .option('all-agents', {\n type: 'boolean',\n default: false,\n description: 'Install to all detected agents (non-interactive)',\n })\n .option('global', {\n type: 'boolean',\n description: 'Install to global user skills directories',\n })\n .option('yes', {\n type: 'boolean',\n default: false,\n description: 'Auto-confirm prompts when supported by the skills CLI',\n })\n .option('non-interactive', {\n type: 'boolean',\n default: false,\n description: 'Fail fast instead of waiting for prompts',\n })\n .option('json', {\n type: 'boolean',\n default: false,\n description: 'Print machine-readable install result',\n })\n .option('debug', {\n type: 'boolean',\n default: false,\n description: 'Enable debug logging',\n })\n .option('ci', {\n type: 'boolean',\n default: false,\n description: 'CI mode (implies non-interactive behavior)',\n }),\n async (argv) => {\n try {\n await runSkillAdd({\n apiKey: argv['api-key'],\n source: argv.source,\n target: argv.target,\n allAgents: argv['all-agents'],\n global: argv.global,\n yes: argv.yes,\n nonInteractive: argv['non-interactive'],\n json: argv.json,\n debug: argv.debug,\n ci: argv.ci,\n });\n } catch (error) {\n printCliError(error);\n process.exit(1);\n }\n },\n )\n .demandCommand(1, 'You need to specify a command (add)'),\n () => {},\n )\n .command(\n 'mcp <command>',\n 'Manage MCP server installation',\n (yargs) =>\n yargs\n .command(\n 'add',\n 'Add Nia MCP server to coding agents',\n (yargs) =>\n yargs\n .option('api-key', {\n type: 'string',\n alias: 'k',\n description: 'Nia API key (nk_xxx)',\n })\n .option('local', {\n type: 'boolean',\n description: 'Use local mode',\n })\n .option('remote', {\n type: 'boolean',\n description: 'Use remote mode',\n })\n .option('debug', {\n type: 'boolean',\n default: false,\n description: 'Enable debug logging',\n })\n .option('ci', {\n type: 'boolean',\n default: false,\n description: 'CI mode (skip prompts)',\n }),\n async (argv) => {\n try {\n await runMCPAdd({\n apiKey: argv['api-key'],\n local: argv.local ?? (argv.remote ? false : undefined),\n debug: argv.debug,\n ci: argv.ci,\n });\n } catch (error) {\n printCliError(error);\n process.exit(1);\n }\n },\n )\n .command(\n 'remove',\n 'Remove Nia MCP server from coding agents',\n (yargs) =>\n yargs.option('debug', {\n type: 'boolean',\n default: false,\n description: 'Enable debug logging',\n }),\n async (argv) => {\n try {\n await runMCPRemove({ debug: argv.debug });\n } catch (error) {\n printCliError(error);\n process.exit(1);\n }\n },\n )\n .demandCommand(1, 'You need to specify a command (add or remove)'),\n () => {},\n )\n .help()\n .version()\n .strict();\n\ncli.parse();\n"],"mappings":"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","names":["yargs"]}
1
+ {"version":3,"sources":["../src/bin.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { runWizard } from './run.js';\nimport { runMCPAdd, runMCPRemove } from './mcp.js';\nimport { runSkillAdd } from './skill.js';\nimport { printAgentGuide } from './agent-guide.js';\n\nfunction printCliError(error: unknown): void {\n if (error instanceof Error) {\n console.error(`Error: ${error.message}`);\n return;\n }\n\n console.error('Error:', error);\n}\n\nconst cli = yargs(hideBin(process.argv))\n .scriptName('nia-wizard')\n .usage('$0 [api-key] [options]')\n .usage('$0 mcp add [options]')\n .usage('$0 mcp remove [options]')\n .usage('$0 skill add [options]')\n .usage('$0 agent-guide')\n .command(\n '$0 [api-key]',\n 'Install Nia to your coding agents',\n (yargs) =>\n yargs\n .positional('api-key', {\n type: 'string',\n description: 'Nia API key (nk_xxx)',\n })\n .option('local', {\n type: 'boolean',\n description: 'Use local mode (requires pipx)',\n })\n .option('remote', {\n type: 'boolean',\n description: 'Use remote mode (cloud)',\n })\n .option('debug', {\n type: 'boolean',\n default: false,\n description: 'Enable debug logging',\n })\n .option('ci', {\n type: 'boolean',\n default: false,\n description: 'CI mode (skip prompts)',\n }),\n async (argv) => {\n try {\n await runWizard({\n apiKey: argv['api-key'],\n local: argv.local ?? (argv.remote ? false : undefined),\n debug: argv.debug,\n ci: argv.ci,\n });\n } catch (error) {\n printCliError(error);\n process.exit(1);\n }\n },\n )\n .command(\n 'agent-guide',\n 'Print API-first agent onboarding guide in Markdown',\n () => {},\n () => {\n printAgentGuide();\n },\n )\n .command(\n 'skill <command>',\n 'Manage skill installation',\n (yargs) =>\n yargs\n .command(\n 'add',\n 'Add Nia skill',\n (yargs) =>\n yargs\n .option('api-key', {\n type: 'string',\n alias: 'k',\n description: 'Nia API key (nk_xxx)',\n })\n .option('source', {\n type: 'string',\n default: 'nozomio-labs/nia-skill',\n description: 'Skill source to install',\n })\n .option('target', {\n type: 'string',\n description: 'Target coding agent for skill installation',\n })\n .option('all-agents', {\n type: 'boolean',\n default: false,\n description: 'Install to all detected agents (non-interactive)',\n })\n .option('global', {\n type: 'boolean',\n description: 'Install to global user skills directories',\n })\n .option('yes', {\n type: 'boolean',\n default: false,\n description: 'Auto-confirm prompts when supported by the skills CLI',\n })\n .option('non-interactive', {\n type: 'boolean',\n default: false,\n description: 'Fail fast instead of waiting for prompts',\n })\n .option('json', {\n type: 'boolean',\n default: false,\n description: 'Print machine-readable install result',\n })\n .option('debug', {\n type: 'boolean',\n default: false,\n description: 'Enable debug logging',\n })\n .option('ci', {\n type: 'boolean',\n default: false,\n description: 'CI mode (implies non-interactive behavior)',\n }),\n async (argv) => {\n try {\n await runSkillAdd({\n apiKey: argv['api-key'],\n source: argv.source,\n target: argv.target,\n allAgents: argv['all-agents'],\n global: argv.global,\n yes: argv.yes,\n nonInteractive: argv['non-interactive'],\n json: argv.json,\n debug: argv.debug,\n ci: argv.ci,\n });\n } catch (error) {\n printCliError(error);\n process.exit(1);\n }\n },\n )\n .demandCommand(1, 'You need to specify a command (add)'),\n () => {},\n )\n .command(\n 'mcp <command>',\n 'Manage direct agent setup',\n (yargs) =>\n yargs\n .command(\n 'add',\n 'Add Nia to coding agents',\n (yargs) =>\n yargs\n .option('api-key', {\n type: 'string',\n alias: 'k',\n description: 'Nia API key (nk_xxx)',\n })\n .option('local', {\n type: 'boolean',\n description: 'Use local mode',\n })\n .option('remote', {\n type: 'boolean',\n description: 'Use remote mode',\n })\n .option('debug', {\n type: 'boolean',\n default: false,\n description: 'Enable debug logging',\n })\n .option('ci', {\n type: 'boolean',\n default: false,\n description: 'CI mode (skip prompts)',\n }),\n async (argv) => {\n try {\n await runMCPAdd({\n apiKey: argv['api-key'],\n local: argv.local ?? (argv.remote ? false : undefined),\n debug: argv.debug,\n ci: argv.ci,\n });\n } catch (error) {\n printCliError(error);\n process.exit(1);\n }\n },\n )\n .command(\n 'remove',\n 'Remove Nia from coding agents',\n (yargs) =>\n yargs.option('debug', {\n type: 'boolean',\n default: false,\n description: 'Enable debug logging',\n }),\n async (argv) => {\n try {\n await runMCPRemove({ debug: argv.debug });\n } catch (error) {\n printCliError(error);\n process.exit(1);\n }\n },\n )\n .demandCommand(1, 'You need to specify a command (add or remove)'),\n () => {},\n )\n .help()\n .version()\n .strict();\n\ncli.parse();\n"],"mappings":"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","names":["yargs"]}
@@ -15,13 +15,15 @@ function debug(...args) {
15
15
  var BACKEND_URL = process.env.NIA_BACKEND_URL || "https://apigcp.trynia.ai";
16
16
  var APP_URL = process.env.NIA_APP_URL || "";
17
17
  var SESSION_TTL_MS = 15 * 60 * 1e3;
18
+ var FETCH_TIMEOUT_MS = 1e4;
18
19
  async function startDeviceSession() {
19
20
  debug("Starting device session...");
20
21
  const response = await fetch(`${BACKEND_URL}/public/mcp-device/start`, {
21
22
  method: "POST",
22
23
  headers: {
23
24
  "Content-Type": "application/json"
24
- }
25
+ },
26
+ signal: AbortSignal.timeout(FETCH_TIMEOUT_MS)
25
27
  });
26
28
  if (!response.ok) {
27
29
  const errorText = await response.text().catch(() => "Unknown error");
@@ -62,7 +64,8 @@ async function exchangeForApiKey(session) {
62
64
  body: JSON.stringify({
63
65
  authorization_session_id: session.authorization_session_id,
64
66
  user_code: session.user_code
65
- })
67
+ }),
68
+ signal: AbortSignal.timeout(FETCH_TIMEOUT_MS)
66
69
  });
67
70
  if (!response.ok) {
68
71
  const errorData = await response.json().catch(() => ({ detail: "Unknown error" }));
@@ -296,9 +299,9 @@ async function abort(message, code = 1) {
296
299
  }
297
300
  function printWelcome() {
298
301
  console.log("");
299
- clack_default.intro(chalk.bgCyan.black(" Nia MCP Wizard "));
302
+ clack_default.intro(chalk.bgCyan.black(" Nia Wizard "));
300
303
  clack_default.note(
301
- "This wizard will install the Nia MCP server to your coding agents.\nGet external docs, code search, and research tools in your IDE."
304
+ "This wizard installs Nia for your coding agents.\nGet external docs, code search, and research tools inside your agent."
302
305
  );
303
306
  }
304
307
  async function getApiKey(providedKey) {
@@ -376,68 +379,81 @@ async function runDeviceFlow() {
376
379
  console.log("");
377
380
  clack_default.log.step(chalk.yellow("Complete these steps in your browser:"));
378
381
  console.log(" 1. Sign in or create an account");
379
- console.log(" 2. The CLI will be authorized automatically");
382
+ console.log(" 2. Complete any setup steps shown");
383
+ console.log("");
384
+ clack_default.log.message(chalk.dim("The CLI will detect when you're done and continue automatically."));
380
385
  console.log("");
381
386
  return await waitForAuthorizationAndExchange(session);
382
387
  }
388
+ function sleep(ms) {
389
+ return new Promise((resolve) => setTimeout(resolve, ms));
390
+ }
383
391
  async function waitForAuthorizationAndExchange(session) {
392
+ const spinner = clack_default.spinner();
393
+ spinner.start("Waiting for browser authorization...");
394
+ const POLL_INTERVAL_MS = 2e3;
395
+ const MAX_NETWORK_ERRORS = 5;
396
+ let consecutiveNetworkErrors = 0;
384
397
  while (true) {
385
398
  if (!isSessionValid(session)) {
399
+ spinner.stop("Session expired");
386
400
  clack_default.log.error("Session has expired. Please start over.");
387
401
  return abort("Session expired", 1);
388
402
  }
389
- const shouldContinue = await abortIfCancelled(
390
- clack_default.confirm({
391
- message: "Press Enter once you've signed in (or N to enter key manually)",
392
- initialValue: true
393
- })
394
- );
395
- if (!shouldContinue) {
396
- return await promptForManualApiKey();
397
- }
398
- const spinner = clack_default.spinner();
399
- spinner.start("Checking authorization...");
400
403
  try {
401
404
  const apiKey = await exchangeForApiKey(session);
402
405
  spinner.stop(chalk.green("\u2713 Authorized!"));
403
406
  clack_default.log.success("API key obtained successfully!");
404
407
  return apiKey;
405
408
  } catch (error) {
406
- spinner.stop("Not ready yet");
407
409
  if (isDeviceFlowError(error)) {
408
410
  switch (error.type) {
409
411
  case "not_ready":
410
- clack_default.log.warn("Browser authorization not complete yet.");
411
- console.log("");
412
- clack_default.log.message(
413
- chalk.dim("Make sure you have:\n") + " \u2022 Signed in to your Nia account\n \u2022 Completed any setup steps in the browser"
414
- );
415
- console.log("");
412
+ consecutiveNetworkErrors = 0;
416
413
  break;
417
414
  case "expired":
415
+ spinner.stop("Session expired");
418
416
  clack_default.log.error("Session has expired.");
419
417
  clack_default.log.info("Please run the wizard again to start a new session.");
420
418
  return abort("Session expired", 1);
421
419
  case "consumed":
420
+ spinner.stop("Session already used");
422
421
  clack_default.log.error("This session was already used.");
423
422
  clack_default.log.info("Please run the wizard again to start a new session.");
424
423
  return abort("Session already used", 1);
425
424
  case "invalid":
425
+ spinner.stop("Invalid session");
426
426
  clack_default.log.error(error.message);
427
427
  clack_default.log.info("Please run the wizard again to start a new session.");
428
428
  return abort("Invalid session", 1);
429
+ case "network":
430
+ consecutiveNetworkErrors++;
431
+ if (consecutiveNetworkErrors >= MAX_NETWORK_ERRORS) {
432
+ spinner.stop("Connection failed");
433
+ clack_default.log.error(`Failed to reach Nia servers after ${MAX_NETWORK_ERRORS} attempts.`);
434
+ clack_default.log.info("Falling back to manual API key entry.");
435
+ return await promptForManualApiKey();
436
+ }
437
+ break;
429
438
  default:
439
+ spinner.stop("Error");
430
440
  clack_default.log.error(error.message);
431
441
  clack_default.log.info("Falling back to manual API key entry.");
432
442
  return await promptForManualApiKey();
433
443
  }
434
444
  } else {
435
- clack_default.log.error("An unexpected error occurred.");
436
- debug(`Exchange error: ${error}`);
437
- clack_default.log.info("Falling back to manual API key entry.");
438
- return await promptForManualApiKey();
445
+ consecutiveNetworkErrors++;
446
+ if (consecutiveNetworkErrors >= MAX_NETWORK_ERRORS) {
447
+ spinner.stop("Connection failed");
448
+ clack_default.log.error("Lost connection to Nia servers.");
449
+ debug(`Exchange error: ${error}`);
450
+ clack_default.log.info("Falling back to manual API key entry.");
451
+ return await promptForManualApiKey();
452
+ }
439
453
  }
440
454
  }
455
+ const backoff = consecutiveNetworkErrors > 0 ? POLL_INTERVAL_MS * Math.min(consecutiveNetworkErrors, 4) : POLL_INTERVAL_MS;
456
+ await sleep(backoff);
441
457
  }
442
458
  }
443
459
  async function promptForManualApiKey() {
@@ -2855,7 +2871,7 @@ async function addMCPServerToClientsStep(options) {
2855
2871
  }
2856
2872
  }
2857
2873
  const spinner = clack_default.spinner();
2858
- spinner.start("Installing Nia MCP server...");
2874
+ spinner.start("Installing Nia in selected agents...");
2859
2875
  const successfulClients = [];
2860
2876
  const failedClients = [];
2861
2877
  for (const client of selectedClients) {
@@ -2911,7 +2927,7 @@ async function removeMCPServerFromClientsStep() {
2911
2927
  return [];
2912
2928
  }
2913
2929
  const spinner = clack_default.spinner();
2914
- spinner.start("Removing Nia MCP server...");
2930
+ spinner.start("Removing Nia from selected agents...");
2915
2931
  const removedClients = [];
2916
2932
  for (const client of selectedClients) {
2917
2933
  const result = await client.removeServer();
@@ -3367,40 +3383,40 @@ async function runWizard(options) {
3367
3383
  enableDebug();
3368
3384
  }
3369
3385
  printWelcome();
3370
- const actions = await abortIfCancelled(
3371
- clack_default.multiselect({
3372
- message: "What would you like to do? (space to select, enter to confirm)",
3386
+ const action = await abortIfCancelled(
3387
+ clack_default.select({
3388
+ message: "Choose how to install Nia:",
3373
3389
  options: [
3374
3390
  {
3375
3391
  value: "nia-cli",
3376
- label: "Install Nia CLI",
3377
- hint: "Installs nia CLI + skill"
3378
- },
3379
- {
3380
- value: "add-mcp",
3381
- label: "Install via add-mcp",
3382
- hint: "Quick install to all agents (new standard)"
3392
+ label: "Install Nia CLI (recommended)",
3393
+ hint: "Preferred path: installs nia CLI + skill"
3383
3394
  },
3384
3395
  {
3385
3396
  value: "skills",
3386
3397
  label: "Install Nia Skill",
3387
3398
  hint: "Install via skills CLI"
3388
3399
  },
3400
+ {
3401
+ value: "add-mcp",
3402
+ label: "Install via add-mcp",
3403
+ hint: "Quick install to supported agents"
3404
+ },
3389
3405
  {
3390
3406
  value: "mcp",
3391
- label: "Install Nia MCP Server",
3392
- hint: "Works, but migrating to add-mcp since it's a new standard"
3407
+ label: "Install via MCP",
3408
+ hint: "Will be deprecated soon; skills are better"
3393
3409
  },
3394
3410
  {
3395
3411
  value: "manual",
3396
3412
  label: "Manual Setup (View Config)",
3397
- hint: "View configuration for manual setup"
3413
+ hint: "View config for a specific agent"
3398
3414
  }
3399
3415
  ],
3400
- required: true
3416
+ initialValue: "nia-cli"
3401
3417
  })
3402
3418
  );
3403
- if (actions.includes("manual") && actions.length === 1) {
3419
+ if (action === "manual") {
3404
3420
  await runManualMode();
3405
3421
  return;
3406
3422
  }
@@ -3411,7 +3427,7 @@ async function runWizard(options) {
3411
3427
  let installedMcp = false;
3412
3428
  let installedSkills = false;
3413
3429
  let installedNiaCliSkill = false;
3414
- if (actions.includes("add-mcp")) {
3430
+ if (action === "add-mcp") {
3415
3431
  console.log("");
3416
3432
  const success = await runAddMcpInstall(apiKey);
3417
3433
  if (success) {
@@ -3421,7 +3437,7 @@ async function runWizard(options) {
3421
3437
  clack_default.log.warn("add-mcp installation may have failed");
3422
3438
  }
3423
3439
  }
3424
- if (actions.includes("mcp")) {
3440
+ if (action === "mcp") {
3425
3441
  let mode;
3426
3442
  if (options.local !== void 0) {
3427
3443
  mode = options.local ? "local" : "remote";
@@ -3462,7 +3478,7 @@ async function runWizard(options) {
3462
3478
  });
3463
3479
  installedMcp = installedClients.length > 0;
3464
3480
  }
3465
- if (actions.includes("skills")) {
3481
+ if (action === "skills") {
3466
3482
  console.log("");
3467
3483
  const success = await runSkillsInstall();
3468
3484
  if (success) {
@@ -3472,7 +3488,7 @@ async function runWizard(options) {
3472
3488
  clack_default.log.warn("Skills installation may have failed");
3473
3489
  }
3474
3490
  }
3475
- if (actions.includes("nia-cli")) {
3491
+ if (action === "nia-cli") {
3476
3492
  console.log("");
3477
3493
  const success = await runNiaCliSkillInstall(apiKey);
3478
3494
  if (success) {
@@ -3499,7 +3515,7 @@ ${chalk3.cyan("Get started:")}
3499
3515
  ${chalk3.cyan("Try in your coding agent:")}
3500
3516
  ${chalk3.yellow('"List my indexed sources"')}
3501
3517
  ${chalk3.yellow('"Search vercel/ai-sdk for streaming"')}
3502
- ${chalk3.yellow('"Run deep research on MCP protocols"')}
3518
+ ${chalk3.yellow('"Run deep research on agent tool protocols"')}
3503
3519
 
3504
3520
  ${chalk3.dim("Using as API?")} ${chalk3.cyan("https://docs.trynia.ai/api-guide")}
3505
3521
  ${chalk3.dim("Follow us:")} ${chalk3.cyan("https://x.com/nozomioai")}
@@ -3516,7 +3532,7 @@ async function runMCPAdd(options) {
3516
3532
  if (options.debug) {
3517
3533
  enableDebug();
3518
3534
  }
3519
- clack_default.intro(chalk4.bgCyan.black(" Nia MCP Server "));
3535
+ clack_default.intro(chalk4.bgCyan.black(" Nia Agent Setup "));
3520
3536
  const apiKey = await getApiKey(options.apiKey);
3521
3537
  let mode;
3522
3538
  if (options.local !== void 0) {
@@ -3567,7 +3583,7 @@ async function runMCPRemove(options = {}) {
3567
3583
  if (options.debug) {
3568
3584
  enableDebug();
3569
3585
  }
3570
- clack_default.intro(chalk4.bgRed.white(" Remove Nia MCP Server "));
3586
+ clack_default.intro(chalk4.bgRed.white(" Remove Nia "));
3571
3587
  const removedClients = await removeMCPServerFromClientsStep();
3572
3588
  if (removedClients.length > 0) {
3573
3589
  clack_default.log.message(
@@ -3889,4 +3905,4 @@ export {
3889
3905
  runSkillAdd,
3890
3906
  printAgentGuide
3891
3907
  };
3892
- //# sourceMappingURL=chunk-XF23S5X2.js.map
3908
+ //# sourceMappingURL=chunk-MC6VAW7S.js.map