nia-wizard 0.1.26 → 0.1.28
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 +35 -8
- package/dist/bin.js +21 -11
- package/dist/bin.js.map +1 -1
- package/dist/{chunk-TOXYR2OK.js → chunk-5A4LUPM5.js} +104 -91
- package/dist/chunk-5A4LUPM5.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +3 -1
- package/package.json +19 -12
- package/dist/chunk-TOXYR2OK.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# nia-wizard
|
|
2
2
|
|
|
3
3
|
CLI wizard to install Nia to your coding agents via Nia CLI, Skills, or direct agent setup.
|
|
4
4
|
|
|
@@ -26,6 +26,12 @@ npx nia-wizard
|
|
|
26
26
|
|
|
27
27
|
Press Enter to continue with the recommended default setup, which signs you in and installs or updates `nia-cli` to the latest version, or use the arrow keys to choose advanced or manual setup.
|
|
28
28
|
|
|
29
|
+
Print the agent-specific onboarding prompt:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx nia-wizard --agent
|
|
33
|
+
```
|
|
34
|
+
|
|
29
35
|
### With API Key
|
|
30
36
|
|
|
31
37
|
```bash
|
|
@@ -41,20 +47,20 @@ npx nia-wizard nk_your_api_key
|
|
|
41
47
|
If you already have an API key:
|
|
42
48
|
|
|
43
49
|
```bash
|
|
44
|
-
npx
|
|
50
|
+
npx nia-wizard nk_your_api_key_here
|
|
45
51
|
```
|
|
46
52
|
|
|
47
53
|
### MCP Commands
|
|
48
54
|
|
|
49
55
|
```bash
|
|
50
56
|
# Add Nia MCP server
|
|
51
|
-
npx
|
|
57
|
+
npx nia-wizard mcp add
|
|
52
58
|
|
|
53
59
|
# Add with API key and local mode
|
|
54
|
-
npx
|
|
60
|
+
npx nia-wizard mcp add --api-key nk_xxx --local
|
|
55
61
|
|
|
56
62
|
# Remove Nia MCP server
|
|
57
|
-
npx
|
|
63
|
+
npx nia-wizard mcp remove
|
|
58
64
|
```
|
|
59
65
|
|
|
60
66
|
### Skills Installation
|
|
@@ -102,10 +108,10 @@ npx nia-wizard skill add \
|
|
|
102
108
|
--ci
|
|
103
109
|
```
|
|
104
110
|
|
|
105
|
-
Print the
|
|
111
|
+
Print the agent-facing onboarding prompt:
|
|
106
112
|
|
|
107
113
|
```bash
|
|
108
|
-
npx nia-wizard agent
|
|
114
|
+
npx nia-wizard --agent
|
|
109
115
|
```
|
|
110
116
|
|
|
111
117
|
## Options
|
|
@@ -116,6 +122,7 @@ npx nia-wizard agent-guide
|
|
|
116
122
|
| `--remote` | Use remote mode (connects to Nia cloud) |
|
|
117
123
|
| `--debug` | Enable debug logging |
|
|
118
124
|
| `--ci` | CI mode (skip prompts, use defaults) |
|
|
125
|
+
| `--agent` | Print agent-facing Nia CLI onboarding prompt (root command) |
|
|
119
126
|
| `--api-key`, `-k` | Nia API key |
|
|
120
127
|
| `--non-interactive` | Fail fast instead of waiting for prompts (skill command) |
|
|
121
128
|
| `--target` | Target coding agent for skill installation (skill command) |
|
|
@@ -144,9 +151,29 @@ This is the fastest way to get started - no manual copying required!
|
|
|
144
151
|
If you prefer, you can:
|
|
145
152
|
|
|
146
153
|
- Get your API key from [app.trynia.ai](https://app.trynia.ai)
|
|
147
|
-
- Pass it directly: `npx
|
|
154
|
+
- Pass it directly: `npx nia-wizard nk_xxx`
|
|
148
155
|
- Or select "Enter API key manually" when prompted
|
|
149
156
|
|
|
157
|
+
## Agent Onboarding Prompt
|
|
158
|
+
|
|
159
|
+
Use the root `--agent` flag when you want an external coding agent to perform the Nia CLI setup steps on the user's machine instead of launching the local interactive wizard.
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npx nia-wizard --agent
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
This prints the canonical agent workflow:
|
|
166
|
+
|
|
167
|
+
1. Run `bun --version`
|
|
168
|
+
2. Install `@nozomioai/nia@latest` globally with Bun or npm
|
|
169
|
+
3. Tell the user to open `https://app.trynia.ai`
|
|
170
|
+
4. Tell the user to go to `Settings -> API Keys` and create an API key
|
|
171
|
+
5. Ask the user to paste the `nk_...` key back to the agent
|
|
172
|
+
6. Run `nia auth login --api-key <nk_api_key>`
|
|
173
|
+
7. Run `nia skill --all`
|
|
174
|
+
|
|
175
|
+
This is a prompt-only flow intended for external agents. The user retrieves the API key manually and sends it back to the agent to finish setup.
|
|
176
|
+
|
|
150
177
|
## Supported Coding Agents
|
|
151
178
|
|
|
152
179
|
### Full Support (Local + Remote)
|
package/dist/bin.js
CHANGED
|
@@ -8,11 +8,12 @@ import {
|
|
|
8
8
|
runWizard,
|
|
9
9
|
shutdown,
|
|
10
10
|
track
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-5A4LUPM5.js";
|
|
12
12
|
|
|
13
13
|
// src/bin.ts
|
|
14
14
|
import yargs from "yargs";
|
|
15
15
|
import { hideBin } from "yargs/helpers";
|
|
16
|
+
var isInteractive = Boolean(process.stdin.isTTY);
|
|
16
17
|
function printCliError(error) {
|
|
17
18
|
if (error instanceof Error) {
|
|
18
19
|
console.error(`Error: ${error.message}`);
|
|
@@ -20,7 +21,7 @@ function printCliError(error) {
|
|
|
20
21
|
}
|
|
21
22
|
console.error("Error:", error);
|
|
22
23
|
}
|
|
23
|
-
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]").
|
|
24
|
+
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]").command(
|
|
24
25
|
"$0 [api-key]",
|
|
25
26
|
"Install Nia to your coding agents",
|
|
26
27
|
(yargs2) => yargs2.positional("api-key", {
|
|
@@ -40,14 +41,31 @@ var cli = yargs(hideBin(process.argv)).scriptName("nia-wizard").usage("$0 [api-k
|
|
|
40
41
|
type: "boolean",
|
|
41
42
|
default: false,
|
|
42
43
|
description: "CI mode (skip prompts)"
|
|
44
|
+
}).option("agent", {
|
|
45
|
+
type: "boolean",
|
|
46
|
+
default: false,
|
|
47
|
+
description: "Print agent-facing Nia CLI onboarding prompt"
|
|
43
48
|
}),
|
|
44
49
|
async (argv) => {
|
|
45
50
|
try {
|
|
51
|
+
if (argv.agent) {
|
|
52
|
+
printAgentGuide();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const apiKeyArg = typeof argv["api-key"] === "string" ? argv["api-key"] : typeof argv.apiKey === "string" ? argv.apiKey : void 0;
|
|
56
|
+
if (apiKeyArg === "agent-guide") {
|
|
57
|
+
throw new Error("The `agent-guide` subcommand has been removed. Use `npx nia-wizard --agent`.");
|
|
58
|
+
}
|
|
59
|
+
const ci = argv.ci || !isInteractive;
|
|
60
|
+
if (!isInteractive && !argv.ci) {
|
|
61
|
+
console.log("Non-interactive terminal detected, running in CI mode.");
|
|
62
|
+
console.log("For the full interactive experience, run: npx nia-wizard\n");
|
|
63
|
+
}
|
|
46
64
|
await runWizard({
|
|
47
65
|
apiKey: argv["api-key"],
|
|
48
66
|
local: argv.local ?? (argv.remote ? false : void 0),
|
|
49
67
|
debug: argv.debug,
|
|
50
|
-
ci
|
|
68
|
+
ci
|
|
51
69
|
});
|
|
52
70
|
} catch (error) {
|
|
53
71
|
track("cli_wizard_error", { error_type: "wizard", error_message: error instanceof Error ? error.message : String(error) });
|
|
@@ -56,14 +74,6 @@ var cli = yargs(hideBin(process.argv)).scriptName("nia-wizard").usage("$0 [api-k
|
|
|
56
74
|
process.exit(1);
|
|
57
75
|
}
|
|
58
76
|
}
|
|
59
|
-
).command(
|
|
60
|
-
"agent-guide",
|
|
61
|
-
"Print API-first agent onboarding guide in Markdown",
|
|
62
|
-
() => {
|
|
63
|
-
},
|
|
64
|
-
() => {
|
|
65
|
-
printAgentGuide();
|
|
66
|
-
}
|
|
67
77
|
).command(
|
|
68
78
|
"skill <command>",
|
|
69
79
|
"Manage skill installation",
|
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';\nimport { track, shutdown } from './utils/analytics.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 track('cli_wizard_error', { error_type: 'wizard', error_message: error instanceof Error ? error.message : String(error) });\n await shutdown();\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"]}
|
|
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';\nimport { track, shutdown } from './utils/analytics.js';\n\nconst isInteractive = Boolean(process.stdin.isTTY);\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 .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 .option('agent', {\n type: 'boolean',\n default: false,\n description: 'Print agent-facing Nia CLI onboarding prompt',\n }),\n async (argv) => {\n try {\n if (argv.agent) {\n printAgentGuide();\n return;\n }\n\n const apiKeyArg = typeof argv['api-key'] === 'string'\n ? argv['api-key']\n : typeof argv.apiKey === 'string'\n ? argv.apiKey\n : undefined;\n\n if (apiKeyArg === 'agent-guide') {\n throw new Error('The `agent-guide` subcommand has been removed. Use `npx nia-wizard --agent`.');\n }\n\n const ci = argv.ci || !isInteractive;\n if (!isInteractive && !argv.ci) {\n console.log('Non-interactive terminal detected, running in CI mode.');\n console.log('For the full interactive experience, run: npx nia-wizard\\n');\n }\n\n await runWizard({\n apiKey: argv['api-key'],\n local: argv.local ?? (argv.remote ? false : undefined),\n debug: argv.debug,\n ci,\n });\n } catch (error) {\n track('cli_wizard_error', { error_type: 'wizard', error_message: error instanceof Error ? error.message : String(error) });\n await shutdown();\n printCliError(error);\n process.exit(1);\n }\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"]}
|
|
@@ -9,8 +9,9 @@ var require_package = __commonJS({
|
|
|
9
9
|
"package.json"(exports, module) {
|
|
10
10
|
module.exports = {
|
|
11
11
|
name: "nia-wizard",
|
|
12
|
-
version: "0.1.
|
|
12
|
+
version: "0.1.28",
|
|
13
13
|
description: "CLI wizard to install Nia to your coding agents",
|
|
14
|
+
packageManager: "pnpm@10.30.3",
|
|
14
15
|
type: "module",
|
|
15
16
|
main: "dist/index.js",
|
|
16
17
|
bin: {
|
|
@@ -18,10 +19,13 @@ var require_package = __commonJS({
|
|
|
18
19
|
},
|
|
19
20
|
scripts: {
|
|
20
21
|
build: "tsup",
|
|
22
|
+
changeset: "changeset",
|
|
21
23
|
dev: "tsup --watch",
|
|
22
24
|
start: "node dist/bin.js",
|
|
23
25
|
try: "pnpm build && node dist/bin.js",
|
|
24
26
|
typecheck: "tsc --noEmit",
|
|
27
|
+
"version-packages": "changeset version",
|
|
28
|
+
release: "pnpm build && changeset publish",
|
|
25
29
|
lint: "eslint src --ext .ts",
|
|
26
30
|
prepublishOnly: "pnpm build"
|
|
27
31
|
},
|
|
@@ -43,7 +47,11 @@ var require_package = __commonJS({
|
|
|
43
47
|
license: "MIT",
|
|
44
48
|
repository: {
|
|
45
49
|
type: "git",
|
|
46
|
-
url: "https://github.com/nozomio/nia-wizard"
|
|
50
|
+
url: "git+https://github.com/nozomio-labs/nia-wizard.git"
|
|
51
|
+
},
|
|
52
|
+
homepage: "https://github.com/nozomio-labs/nia-wizard",
|
|
53
|
+
bugs: {
|
|
54
|
+
url: "https://github.com/nozomio-labs/nia-wizard/issues"
|
|
47
55
|
},
|
|
48
56
|
dependencies: {
|
|
49
57
|
"@clack/prompts": "^0.9.1",
|
|
@@ -55,6 +63,7 @@ var require_package = __commonJS({
|
|
|
55
63
|
zod: "^3.24.0"
|
|
56
64
|
},
|
|
57
65
|
devDependencies: {
|
|
66
|
+
"@changesets/cli": "^2.30.0",
|
|
58
67
|
"@types/node": "^22.10.0",
|
|
59
68
|
"@types/yargs": "^17.0.33",
|
|
60
69
|
tsup: "^8.3.5",
|
|
@@ -483,6 +492,18 @@ async function getApiKey(providedKey, options = {}) {
|
|
|
483
492
|
track("cli_auth_completed", { auth_method: authMethod, duration_ms: Date.now() - authStartTime });
|
|
484
493
|
return apiKey;
|
|
485
494
|
}
|
|
495
|
+
function printManualOnboardingFallback() {
|
|
496
|
+
console.log("");
|
|
497
|
+
clack_default.note(
|
|
498
|
+
`${chalk.bold("Finish setup at:")}
|
|
499
|
+
|
|
500
|
+
${chalk.cyan(NIA_APP_URL)}
|
|
501
|
+
|
|
502
|
+
Once signed in, go to ${chalk.bold("Settings \u2192 API Keys")} to create a key.
|
|
503
|
+
Then re-run: ${chalk.yellow("npx nia-wizard <your-api-key>")}`,
|
|
504
|
+
"Manual Setup"
|
|
505
|
+
);
|
|
506
|
+
}
|
|
486
507
|
async function runDeviceFlow() {
|
|
487
508
|
const spinner = clack_default.spinner();
|
|
488
509
|
spinner.start("Connecting to Nia...");
|
|
@@ -499,6 +520,7 @@ async function runDeviceFlow() {
|
|
|
499
520
|
clack_default.log.error("Failed to connect to Nia servers. Check your internet connection.");
|
|
500
521
|
debug(`Device flow error: ${error}`);
|
|
501
522
|
}
|
|
523
|
+
printManualOnboardingFallback();
|
|
502
524
|
clack_default.log.info("Falling back to manual API key entry.");
|
|
503
525
|
return await promptForManualApiKey();
|
|
504
526
|
}
|
|
@@ -544,7 +566,8 @@ async function waitForAuthorizationAndExchange(session) {
|
|
|
544
566
|
while (true) {
|
|
545
567
|
if (!isSessionValid(session)) {
|
|
546
568
|
spinner.stop("Session expired");
|
|
547
|
-
clack_default.log.error("
|
|
569
|
+
clack_default.log.error("Authorization session expired before completing.");
|
|
570
|
+
printManualOnboardingFallback();
|
|
548
571
|
return abort("Session expired", 1);
|
|
549
572
|
}
|
|
550
573
|
try {
|
|
@@ -560,8 +583,8 @@ async function waitForAuthorizationAndExchange(session) {
|
|
|
560
583
|
break;
|
|
561
584
|
case "expired":
|
|
562
585
|
spinner.stop("Session expired");
|
|
563
|
-
clack_default.log.error("
|
|
564
|
-
|
|
586
|
+
clack_default.log.error("Authorization session expired.");
|
|
587
|
+
printManualOnboardingFallback();
|
|
565
588
|
return abort("Session expired", 1);
|
|
566
589
|
case "consumed":
|
|
567
590
|
spinner.stop("Session already used");
|
|
@@ -571,21 +594,21 @@ async function waitForAuthorizationAndExchange(session) {
|
|
|
571
594
|
case "invalid":
|
|
572
595
|
spinner.stop("Invalid session");
|
|
573
596
|
clack_default.log.error(error.message);
|
|
574
|
-
|
|
597
|
+
printManualOnboardingFallback();
|
|
575
598
|
return abort("Invalid session", 1);
|
|
576
599
|
case "network":
|
|
577
600
|
consecutiveNetworkErrors++;
|
|
578
601
|
if (consecutiveNetworkErrors >= MAX_NETWORK_ERRORS) {
|
|
579
602
|
spinner.stop("Connection failed");
|
|
580
603
|
clack_default.log.error(`Failed to reach Nia servers after ${MAX_NETWORK_ERRORS} attempts.`);
|
|
581
|
-
|
|
604
|
+
printManualOnboardingFallback();
|
|
582
605
|
return await promptForManualApiKey();
|
|
583
606
|
}
|
|
584
607
|
break;
|
|
585
608
|
default:
|
|
586
609
|
spinner.stop("Error");
|
|
587
610
|
clack_default.log.error(error.message);
|
|
588
|
-
|
|
611
|
+
printManualOnboardingFallback();
|
|
589
612
|
return await promptForManualApiKey();
|
|
590
613
|
}
|
|
591
614
|
} else {
|
|
@@ -594,7 +617,7 @@ async function waitForAuthorizationAndExchange(session) {
|
|
|
594
617
|
spinner.stop("Connection failed");
|
|
595
618
|
clack_default.log.error("Lost connection to Nia servers.");
|
|
596
619
|
debug(`Exchange error: ${error}`);
|
|
597
|
-
|
|
620
|
+
printManualOnboardingFallback();
|
|
598
621
|
return await promptForManualApiKey();
|
|
599
622
|
}
|
|
600
623
|
}
|
|
@@ -604,6 +627,10 @@ async function waitForAuthorizationAndExchange(session) {
|
|
|
604
627
|
}
|
|
605
628
|
}
|
|
606
629
|
async function promptForManualApiKey() {
|
|
630
|
+
if (!process.stdin.isTTY) {
|
|
631
|
+
printManualOnboardingFallback();
|
|
632
|
+
return abort("No interactive terminal available. Please re-run with an API key.", 1);
|
|
633
|
+
}
|
|
607
634
|
const shouldOpen = await abortIfCancelled(
|
|
608
635
|
clack_default.confirm({
|
|
609
636
|
message: `Open ${chalk.cyan(NIA_APP_URL)} to get your API key?`,
|
|
@@ -3409,7 +3436,7 @@ async function runAddMcpInstall(apiKey) {
|
|
|
3409
3436
|
const result = spawnSync6(
|
|
3410
3437
|
"npx",
|
|
3411
3438
|
[
|
|
3412
|
-
"add-mcp",
|
|
3439
|
+
"add-mcp@latest",
|
|
3413
3440
|
REMOTE_MCP_URL,
|
|
3414
3441
|
"--header",
|
|
3415
3442
|
`"Authorization: Bearer ${apiKey}"`,
|
|
@@ -3426,7 +3453,7 @@ async function runAddMcpInstall(apiKey) {
|
|
|
3426
3453
|
}
|
|
3427
3454
|
async function runSkillsInstall() {
|
|
3428
3455
|
clack_default.log.info("Launching Nia skill installer...\n");
|
|
3429
|
-
const result = spawnSync6("npx", ["skills", "add", "nozomio-labs/nia-skill"], {
|
|
3456
|
+
const result = spawnSync6("npx", ["skills@latest", "add", "nozomio-labs/nia-skill"], {
|
|
3430
3457
|
stdio: "inherit",
|
|
3431
3458
|
shell: true
|
|
3432
3459
|
});
|
|
@@ -3975,86 +4002,71 @@ function runSkillsInstall2(params) {
|
|
|
3975
4002
|
}
|
|
3976
4003
|
|
|
3977
4004
|
// src/agent-guide.ts
|
|
3978
|
-
|
|
3979
|
-
|
|
3980
|
-
|
|
3981
|
-
|
|
3982
|
-
|
|
3983
|
-
|
|
3984
|
-
|
|
3985
|
-
|
|
3986
|
-
|
|
3987
|
-
|
|
3988
|
-
|
|
3989
|
-
|
|
3990
|
-
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4008
|
-
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
""
|
|
4040
|
-
|
|
4041
|
-
'npx nia-wizard skill add --api-key "<nk_api_key>" --target codex --non-interactive --ci',
|
|
4042
|
-
"```",
|
|
4043
|
-
"",
|
|
4044
|
-
"Supported `--target` values:",
|
|
4045
|
-
"",
|
|
4046
|
-
"`amp`, `kimi-cli`, `replit`, `universal`, `antigravity`, `augment`, `claude-code`, `openclaw`, `cline`, `codebuddy`, `codex`, `command-code`, `continue`, `cortex`, `crush`, `cursor`, `droid`, `gemini-cli`, `github-copilot`, `goose`, `junie`, `iflow-cli`, `kilo`, `kiro-cli`, `kode`, `mcpjam`, `mistral-vibe`, `mux`, `opencode`, `openhands`, `pi`, `qoder`, `qwen-code`, `roo`, `trae`, `trae-cn`, `windsurf`, `zencoder`, `neovate`, `pochi`, `adal`",
|
|
4047
|
-
"",
|
|
4048
|
-
"## Command",
|
|
4049
|
-
"",
|
|
4050
|
-
"Print this guide any time:",
|
|
4051
|
-
"",
|
|
4052
|
-
"```bash",
|
|
4053
|
-
"npx nia-wizard agent-guide",
|
|
4054
|
-
"```"
|
|
4055
|
-
].join("\n");
|
|
4005
|
+
function getAgentGuideMarkdown() {
|
|
4006
|
+
return [
|
|
4007
|
+
"# Nia Agent Onboarding Prompt",
|
|
4008
|
+
"",
|
|
4009
|
+
"Run this workflow when you are setting up Nia for the user from an external coding agent session.",
|
|
4010
|
+
"",
|
|
4011
|
+
"## Goal",
|
|
4012
|
+
"",
|
|
4013
|
+
"Install the Nia CLI, direct the user to retrieve their API key manually, ask them to paste the key back to you, then finish CLI authentication and skill setup.",
|
|
4014
|
+
"",
|
|
4015
|
+
"## Steps",
|
|
4016
|
+
"",
|
|
4017
|
+
"1. Check whether Bun is installed:",
|
|
4018
|
+
"",
|
|
4019
|
+
"```bash",
|
|
4020
|
+
"bun --version",
|
|
4021
|
+
"```",
|
|
4022
|
+
"",
|
|
4023
|
+
"2. Install `@nozomioai/nia@latest` globally:",
|
|
4024
|
+
"",
|
|
4025
|
+
"- If `bun --version` succeeds, run:",
|
|
4026
|
+
"",
|
|
4027
|
+
"```bash",
|
|
4028
|
+
"bun add -g @nozomioai/nia@latest",
|
|
4029
|
+
"```",
|
|
4030
|
+
"",
|
|
4031
|
+
"- If `bun --version` fails, run:",
|
|
4032
|
+
"",
|
|
4033
|
+
"```bash",
|
|
4034
|
+
"npm install -g @nozomioai/nia@latest",
|
|
4035
|
+
"```",
|
|
4036
|
+
"",
|
|
4037
|
+
"3. Tell the user to open this URL and sign in:",
|
|
4038
|
+
"",
|
|
4039
|
+
"`https://app.trynia.ai`",
|
|
4040
|
+
"",
|
|
4041
|
+
"4. Tell the user to go to `Settings -> API Keys`, create a key, and copy the `nk_...` token.",
|
|
4042
|
+
"",
|
|
4043
|
+
"5. Ask the user to paste the API key back into the agent chat or session.",
|
|
4044
|
+
"",
|
|
4045
|
+
"6. After the user provides the key, configure the CLI:",
|
|
4046
|
+
"",
|
|
4047
|
+
"```bash",
|
|
4048
|
+
"nia auth login --api-key <nk_api_key>",
|
|
4049
|
+
"```",
|
|
4050
|
+
"",
|
|
4051
|
+
"7. Configure Nia skills:",
|
|
4052
|
+
"",
|
|
4053
|
+
"```bash",
|
|
4054
|
+
"nia skill --all",
|
|
4055
|
+
"```",
|
|
4056
|
+
"",
|
|
4057
|
+
"## Agent Message Template",
|
|
4058
|
+
"",
|
|
4059
|
+
"Send the user a message like this:",
|
|
4060
|
+
"",
|
|
4061
|
+
"> I need your Nia API key to finish setup. Please open https://app.trynia.ai, sign in, go to Settings -> API Keys, create a key, and paste the `nk_...` value here. Once you send it, I will finish the setup for you.",
|
|
4062
|
+
"",
|
|
4063
|
+
"## Expected Result",
|
|
4064
|
+
"",
|
|
4065
|
+
"`nia` is installed, authenticated with the user-provided API key, and `nia skill --all` has completed."
|
|
4066
|
+
].join("\n");
|
|
4067
|
+
}
|
|
4056
4068
|
function printAgentGuide() {
|
|
4057
|
-
console.log(
|
|
4069
|
+
console.log(getAgentGuideMarkdown());
|
|
4058
4070
|
}
|
|
4059
4071
|
|
|
4060
4072
|
export {
|
|
@@ -4074,6 +4086,7 @@ export {
|
|
|
4074
4086
|
runMCPAdd,
|
|
4075
4087
|
runMCPRemove,
|
|
4076
4088
|
runSkillAdd,
|
|
4089
|
+
getAgentGuideMarkdown,
|
|
4077
4090
|
printAgentGuide
|
|
4078
4091
|
};
|
|
4079
|
-
//# sourceMappingURL=chunk-
|
|
4092
|
+
//# sourceMappingURL=chunk-5A4LUPM5.js.map
|