@usenaive-sdk/cli 0.12.0 → 0.12.5

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.
Files changed (87) hide show
  1. package/README.md +22 -0
  2. package/dist/client.d.ts +26 -1
  3. package/dist/client.js +167 -5
  4. package/dist/client.js.map +1 -1
  5. package/dist/commands/aeo.js +13 -6
  6. package/dist/commands/aeo.js.map +1 -1
  7. package/dist/commands/auth.d.ts +30 -0
  8. package/dist/commands/auth.js +400 -0
  9. package/dist/commands/auth.js.map +1 -0
  10. package/dist/commands/billing.js +9 -9
  11. package/dist/commands/billing.js.map +1 -1
  12. package/dist/commands/brain.d.ts +2 -0
  13. package/dist/commands/brain.js +509 -0
  14. package/dist/commands/brain.js.map +1 -0
  15. package/dist/commands/browser.js +28 -1
  16. package/dist/commands/browser.js.map +1 -1
  17. package/dist/commands/clone.d.ts +2 -0
  18. package/dist/commands/clone.js +199 -0
  19. package/dist/commands/clone.js.map +1 -0
  20. package/dist/commands/config.d.ts +2 -0
  21. package/dist/commands/config.js +36 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/env.d.ts +3 -3
  24. package/dist/commands/env.js +68 -4
  25. package/dist/commands/env.js.map +1 -1
  26. package/dist/commands/images.js +2 -2
  27. package/dist/commands/init.js +38 -23
  28. package/dist/commands/init.js.map +1 -1
  29. package/dist/commands/keys.js +26 -3
  30. package/dist/commands/keys.js.map +1 -1
  31. package/dist/commands/loops.d.ts +2 -0
  32. package/dist/commands/loops.js +260 -0
  33. package/dist/commands/loops.js.map +1 -0
  34. package/dist/commands/mobile.d.ts +2 -0
  35. package/dist/commands/mobile.js +341 -0
  36. package/dist/commands/mobile.js.map +1 -0
  37. package/dist/commands/payments.d.ts +2 -0
  38. package/dist/commands/payments.js +131 -0
  39. package/dist/commands/payments.js.map +1 -0
  40. package/dist/commands/phone.js +77 -2
  41. package/dist/commands/phone.js.map +1 -1
  42. package/dist/commands/register.js +4 -4
  43. package/dist/commands/register.js.map +1 -1
  44. package/dist/commands/up.js +14 -4
  45. package/dist/commands/up.js.map +1 -1
  46. package/dist/commands/usage.js +4 -4
  47. package/dist/commands/video.js +94 -273
  48. package/dist/commands/video.js.map +1 -1
  49. package/dist/commands/voice.d.ts +2 -0
  50. package/dist/commands/voice.js +516 -0
  51. package/dist/commands/voice.js.map +1 -0
  52. package/dist/commands/wallet.d.ts +2 -0
  53. package/dist/commands/wallet.js +244 -0
  54. package/dist/commands/wallet.js.map +1 -0
  55. package/dist/config.d.ts +15 -0
  56. package/dist/config.js +35 -6
  57. package/dist/config.js.map +1 -1
  58. package/dist/index.js +70 -4
  59. package/dist/index.js.map +1 -1
  60. package/dist/lib/unknown-command.d.ts +17 -0
  61. package/dist/lib/unknown-command.js +19 -0
  62. package/dist/lib/unknown-command.js.map +1 -0
  63. package/dist/lib/version-check.d.ts +26 -0
  64. package/dist/lib/version-check.js +21 -0
  65. package/dist/lib/version-check.js.map +1 -0
  66. package/dist/output.d.ts +20 -5
  67. package/dist/output.js +150 -5
  68. package/dist/output.js.map +1 -1
  69. package/dist/prompt.d.ts +17 -0
  70. package/dist/prompt.js +70 -0
  71. package/dist/prompt.js.map +1 -0
  72. package/package.json +10 -5
  73. package/dist/commands/billing-client.d.ts +0 -2
  74. package/dist/commands/billing-client.js +0 -271
  75. package/dist/commands/billing-client.js.map +0 -1
  76. package/dist/commands/crm-app.d.ts +0 -2
  77. package/dist/commands/crm-app.js +0 -306
  78. package/dist/commands/crm-app.js.map +0 -1
  79. package/dist/commands/crm.d.ts +0 -2
  80. package/dist/commands/crm.js +0 -319
  81. package/dist/commands/crm.js.map +0 -1
  82. package/dist/commands/integrations.d.ts +0 -2
  83. package/dist/commands/integrations.js +0 -199
  84. package/dist/commands/integrations.js.map +0 -1
  85. package/dist/commands/operators.d.ts +0 -11
  86. package/dist/commands/operators.js +0 -120
  87. package/dist/commands/operators.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import semver from "semver";
2
+ /**
3
+ * Pure decision function so the staleness policy is unit-testable without a
4
+ * live API. Any missing/invalid version is treated as "ok" — we never block or
5
+ * nag on data we can't trust.
6
+ */
7
+ export function evaluateCliVersion(current, min, latest) {
8
+ const cur = semver.valid(semver.coerce(current) ?? current);
9
+ if (!cur)
10
+ return { kind: "ok" };
11
+ const minValid = min ? semver.valid(semver.coerce(min) ?? min) : null;
12
+ if (minValid && semver.lt(cur, minValid)) {
13
+ return { kind: "block", current: cur, min: minValid, latest: latest ?? undefined };
14
+ }
15
+ const latestValid = latest ? semver.valid(semver.coerce(latest) ?? latest) : null;
16
+ if (latestValid && semver.lt(cur, latestValid)) {
17
+ return { kind: "notice", current: cur, latest: latestValid, min: min ?? undefined };
18
+ }
19
+ return { kind: "ok" };
20
+ }
21
+ //# sourceMappingURL=version-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/lib/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAc5B;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,GAAY,EACZ,MAAe;IAEf,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEhC,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,IAAI,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;IACrF,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClF,IAAI,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;IACtF,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC"}
package/dist/output.d.ts CHANGED
@@ -1,13 +1,25 @@
1
- /**
2
- * Agent-native structured output for CLI responses.
3
- * Every tool call returns JSON with result data + contextual guidance
4
- * following the Meow/Lindy pattern for agentic CLI usage.
5
- */
1
+ /** Set by the global --json / --human options in index.ts, parsed before any action runs. */
2
+ export declare function setOutputFlags(opts: {
3
+ json?: boolean;
4
+ human?: boolean;
5
+ }): void;
6
+ /** TRUE only on an explicit opt-in; default false. Controls OUTPUT FORMAT. */
7
+ export declare function humanMode(): boolean;
8
+ /** Prompts (wizard, destructive confirm) require human mode AND a real interactive stdin — a
9
+ * separate predicate from output format, so a human piping stdout to `tee` still gets the confirm. */
10
+ export declare function isInteractive(): boolean;
6
11
  export interface NextStep {
7
12
  command: string;
8
13
  description: string;
9
14
  when?: string;
10
15
  }
16
+ /** Non-fatal "a newer CLI is available" nudge, attached to the next agentOutput. */
17
+ export interface UpdateInfo {
18
+ current: string;
19
+ latest: string;
20
+ update_command: string;
21
+ note: string;
22
+ }
11
23
  export interface AgentOutput {
12
24
  success: boolean;
13
25
  action: string;
@@ -16,7 +28,10 @@ export interface AgentOutput {
16
28
  hints?: string[];
17
29
  related_commands?: string[];
18
30
  help_markdown?: string;
31
+ update?: UpdateInfo;
19
32
  }
33
+ /** Stash a pending update notice for the next agentOutput call (client layer → output). */
34
+ export declare function setPendingUpdate(info: UpdateInfo | undefined): void;
20
35
  export declare function agentOutput(opts: {
21
36
  action: string;
22
37
  result: unknown;
package/dist/output.js CHANGED
@@ -2,8 +2,137 @@
2
2
  * Agent-native structured output for CLI responses.
3
3
  * Every tool call returns JSON with result data + contextual guidance
4
4
  * following the Meow/Lindy pattern for agentic CLI usage.
5
+ *
6
+ * Output mode is OPT-IN human (default machine JSON). Human mode is NEVER inferred from isTTY —
7
+ * a pty-wrapped caller (Claude Code's Bash tool, script(1), tmux, ssh -t, CI runners) reports
8
+ * isTTY===true with no human present, so auto-detect would hang agents in prompts and break their
9
+ * JSON.parse. Machine overrides (--json / NAIVE_JSON / CI) always win.
5
10
  */
11
+ import chalk from "chalk";
12
+ import { loadConfig, saveConfig } from "./config.js";
13
+ let _flagJson = false;
14
+ let _flagHuman = false;
15
+ /** Set by the global --json / --human options in index.ts, parsed before any action runs. */
16
+ export function setOutputFlags(opts) {
17
+ if (opts.json)
18
+ _flagJson = true;
19
+ if (opts.human)
20
+ _flagHuman = true;
21
+ }
22
+ function machineForced() {
23
+ return _flagJson || !!process.env.NAIVE_JSON || !!process.env.CI;
24
+ }
25
+ /** TRUE only on an explicit opt-in; default false. Controls OUTPUT FORMAT. */
26
+ export function humanMode() {
27
+ if (machineForced())
28
+ return false;
29
+ if (_flagHuman || process.env.NAIVE_HUMAN === "1")
30
+ return true;
31
+ try {
32
+ return loadConfig().output === "human";
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ }
38
+ /** Prompts (wizard, destructive confirm) require human mode AND a real interactive stdin — a
39
+ * separate predicate from output format, so a human piping stdout to `tee` still gets the confirm. */
40
+ export function isInteractive() {
41
+ return humanMode() && !!process.stdin.isTTY;
42
+ }
43
+ // One-time stderr nudge so a founder discovers human mode without polluting stdout (stays parseable JSON).
44
+ function maybeDiscoveryHint() {
45
+ if (!process.stdout.isTTY)
46
+ return;
47
+ if (_flagJson || _flagHuman || process.env.NAIVE_JSON || process.env.NAIVE_HUMAN || process.env.CI)
48
+ return;
49
+ let cfg;
50
+ try {
51
+ cfg = loadConfig();
52
+ }
53
+ catch {
54
+ return;
55
+ }
56
+ if (cfg.output !== undefined || cfg.human_hint_shown)
57
+ return;
58
+ process.stderr.write(chalk.dim("\n💡 tip: run `naive config output human` for friendly, readable output.\n"));
59
+ try {
60
+ saveConfig({ human_hint_shown: true });
61
+ }
62
+ catch {
63
+ /* best-effort */
64
+ }
65
+ }
66
+ // Secret guard (security HIGH-2): a key must be shown ONCE, clearly labeled, and NEVER rendered as a
67
+ // runnable/highlighted command (the copy-into-shell-history footgun).
68
+ const SECRET_TOKEN_RE = /nv_sk_[A-Za-z0-9_]+/;
69
+ function isSecretField(key) {
70
+ return key === "api_key" || key === "session_token" || key === "token";
71
+ }
72
+ function fmtVal(v) {
73
+ if (v === null || v === undefined)
74
+ return chalk.dim("—");
75
+ if (typeof v === "object")
76
+ return chalk.dim(JSON.stringify(v));
77
+ return String(v);
78
+ }
79
+ function renderHuman(o) {
80
+ const w = (s) => process.stdout.write(s);
81
+ w(chalk.green.bold(`✓ ${o.action}\n`));
82
+ if (o.result && typeof o.result === "object") {
83
+ for (const [k, v] of Object.entries(o.result)) {
84
+ if (isSecretField(k) && typeof v === "string") {
85
+ w("\n" + chalk.yellow.bold(` ⚠ ${k} — save this now, it won't be shown again:`) + "\n");
86
+ w(" " + chalk.cyan(v) + "\n\n");
87
+ }
88
+ else {
89
+ w(" " + chalk.dim(`${k}:`) + " " + fmtVal(v) + "\n");
90
+ }
91
+ }
92
+ }
93
+ else if (o.result !== null && o.result !== undefined) {
94
+ w(" " + String(o.result) + "\n");
95
+ }
96
+ if (o.hints?.length) {
97
+ w("\n");
98
+ for (const h of o.hints)
99
+ w(chalk.dim(` • ${h}`) + "\n");
100
+ }
101
+ // next_steps as suggested commands — but NEVER one carrying a raw key (secret guard).
102
+ const safe = (o.next_steps ?? []).filter((s) => !SECRET_TOKEN_RE.test(s.command));
103
+ if (safe.length) {
104
+ w("\n" + chalk.dim(" Next:") + "\n");
105
+ for (const s of safe)
106
+ w(" " + chalk.cyan(s.command) + chalk.dim(` — ${s.description}`) + "\n");
107
+ }
108
+ // help_markdown is intentionally NOT rendered in human mode: it's verbose and (in keys create) the
109
+ // place a raw secret would live. The JSON path keeps it for agents.
110
+ }
111
+ function renderHumanError(o) {
112
+ const w = (s) => process.stderr.write(s);
113
+ w(chalk.red.bold(`✗ ${o.action} failed`) + "\n");
114
+ if (o.error.message)
115
+ w(" " + o.error.message + "\n");
116
+ if (o.error.hint)
117
+ w(chalk.dim(" hint: " + o.error.hint) + "\n");
118
+ }
119
+ // A pending, non-fatal update notice discovered by the client layer (from the
120
+ // server version handshake). It rides along on the next successful agentOutput
121
+ // and is cleared once emitted, so it surfaces exactly once per command.
122
+ let _pendingUpdate;
123
+ /** Stash a pending update notice for the next agentOutput call (client layer → output). */
124
+ export function setPendingUpdate(info) {
125
+ _pendingUpdate = info;
126
+ }
6
127
  export function agentOutput(opts) {
128
+ // Consume any pending update notice first (so it's cleared even in human mode),
129
+ // then take the human-mode early return.
130
+ const update = _pendingUpdate;
131
+ _pendingUpdate = undefined;
132
+ if (humanMode()) {
133
+ renderHuman(opts);
134
+ return;
135
+ }
7
136
  const output = {
8
137
  success: true,
9
138
  action: opts.action,
@@ -12,10 +141,16 @@ export function agentOutput(opts) {
12
141
  ...(opts.hints && { hints: opts.hints }),
13
142
  ...(opts.related_commands && { related_commands: opts.related_commands }),
14
143
  ...(opts.help_markdown && { help_markdown: opts.help_markdown }),
144
+ ...(update && { update }),
15
145
  };
16
146
  console.log(JSON.stringify(output, null, 2));
147
+ maybeDiscoveryHint();
17
148
  }
18
149
  export function agentError(opts) {
150
+ if (humanMode()) {
151
+ renderHumanError(opts);
152
+ process.exit(1);
153
+ }
19
154
  const output = {
20
155
  success: false,
21
156
  action: opts.action,
@@ -51,15 +186,15 @@ function getRecoverySteps(code) {
51
186
  ];
52
187
  case "insufficient_credits":
53
188
  return [
54
- { command: "naive billing topup --pack medium", description: "Buy 50 credits for $23 (Popular)" },
55
- { command: "naive billing topup --pack large", description: "Buy 100 credits for $44 (Best Value)" },
56
- { command: "naive billing upgrade --plan pro", description: "Upgrade to Pro (200 credits/mo, $149/mo)" },
189
+ { command: "naive billing topup --pack medium", description: "Buy 500 credits for $23 (Popular)" },
190
+ { command: "naive billing topup --pack large", description: "Buy 1000 credits for $44 (Best Value)" },
191
+ { command: "naive billing upgrade --plan pro", description: "Upgrade to Pro (2000 credits/mo, $149/mo)" },
57
192
  { command: "naive billing packs", description: "See all available credit packs" },
58
193
  ];
59
194
  case "billing_blocked":
60
195
  return [
61
- { command: "naive billing subscribe --plan starter", description: "Subscribe to Starter ($49/mo, 50 credits)" },
62
- { command: "naive billing subscribe --plan pro", description: "Subscribe to Pro ($149/mo, 200 credits)" },
196
+ { command: "naive billing subscribe --plan starter", description: "Subscribe to Starter ($49/mo, 500 credits)" },
197
+ { command: "naive billing subscribe --plan pro", description: "Subscribe to Pro ($149/mo, 2000 credits)" },
63
198
  { command: "naive billing plans", description: "Compare all plans" },
64
199
  ];
65
200
  case "rate_limited":
@@ -75,6 +210,16 @@ function getRecoverySteps(code) {
75
210
  return [
76
211
  { command: "naive <command> --help", description: "See required parameters and examples" },
77
212
  ];
213
+ case "voice_revoked":
214
+ return [
215
+ { command: "naive voice list", description: "List voices that are still available" },
216
+ { command: "# this voice's consent was revoked", description: "Pick another voice, or have an admin re-create it in the Studio UI" },
217
+ ];
218
+ case "voice_reclone_required":
219
+ return [
220
+ { command: "naive voice list", description: "Check the voice's tier/status" },
221
+ { command: "# the requested tier has no clone", description: "Use the voice's native tier, or have an admin re-clone for that tier in Studio" },
222
+ ];
78
223
  // Genuinely-broken-on-our-side codes — these are worth reporting (unlike the
79
224
  // self-correctable cases above). Retry first (often transient), then report.
80
225
  case "provider_error":
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** Free-text answer. Returns null on timeout/abort. */
2
+ export declare function ask(label: string, opts?: {
3
+ default?: string;
4
+ }): Promise<string | null>;
5
+ /** Yes/No. Default NO (returns false on timeout, empty, or anything not starting with y). */
6
+ export declare function confirm(label: string): Promise<boolean>;
7
+ /** Affirmation: Enter (empty) OR 'y' = affirm; 'n'/anything else/timeout = cancel. For consent
8
+ * disclosures where the user has read the terms and presses Enter to take responsibility. */
9
+ export declare function affirm(label: string): Promise<boolean>;
10
+ /** Type-to-confirm for irreversible actions (GitHub-delete pattern). True only if the typed text
11
+ * matches `expected` exactly. Default-deny on timeout/mismatch. */
12
+ export declare function confirmExact(label: string, expected: string): Promise<boolean>;
13
+ /** Numbered single-select. Returns the chosen value, or null on timeout/invalid. */
14
+ export declare function select(label: string, choices: {
15
+ value: string;
16
+ label: string;
17
+ }[]): Promise<string | null>;
package/dist/prompt.js ADDED
@@ -0,0 +1,70 @@
1
+ // Minimal interactive prompts built on Node's built-in readline/promises — NO new dependency
2
+ // (deliberate: this is a credential-handling CLI; a prompt lib would run in the same process as the
3
+ // session token + api_key). Every prompt has a hard timeout that resolves to a SAFE default, so a
4
+ // pty-wrapped caller that somehow reaches a prompt times out into abort instead of hanging forever.
5
+ // Callers MUST gate these on isInteractive() (human mode + interactive stdin) — these helpers do not
6
+ // re-check that themselves.
7
+ import * as readline from "node:readline/promises";
8
+ const DEFAULT_TIMEOUT_MS = 30_000;
9
+ async function question(q, timeoutMs = DEFAULT_TIMEOUT_MS) {
10
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
11
+ let timer;
12
+ try {
13
+ const timeout = new Promise((resolve) => {
14
+ timer = setTimeout(() => {
15
+ process.stdout.write("\n(timed out — aborting)\n");
16
+ resolve(null);
17
+ }, timeoutMs);
18
+ });
19
+ const answer = rl.question(q).then((a) => a);
20
+ const result = await Promise.race([answer, timeout]);
21
+ return result;
22
+ }
23
+ finally {
24
+ if (timer)
25
+ clearTimeout(timer);
26
+ rl.close();
27
+ }
28
+ }
29
+ /** Free-text answer. Returns null on timeout/abort. */
30
+ export async function ask(label, opts = {}) {
31
+ const suffix = opts.default ? ` [${opts.default}]` : "";
32
+ const a = await question(`${label}${suffix}: `);
33
+ if (a === null)
34
+ return null;
35
+ const trimmed = a.trim();
36
+ return trimmed === "" && opts.default !== undefined ? opts.default : trimmed;
37
+ }
38
+ /** Yes/No. Default NO (returns false on timeout, empty, or anything not starting with y). */
39
+ export async function confirm(label) {
40
+ const a = await question(`${label} (y/N): `);
41
+ return a !== null && a.trim().toLowerCase().startsWith("y");
42
+ }
43
+ /** Affirmation: Enter (empty) OR 'y' = affirm; 'n'/anything else/timeout = cancel. For consent
44
+ * disclosures where the user has read the terms and presses Enter to take responsibility. */
45
+ export async function affirm(label) {
46
+ const a = await question(`${label} [Enter to affirm, 'n' to cancel]: `);
47
+ if (a === null)
48
+ return false; // timeout = cancel (safe)
49
+ const t = a.trim().toLowerCase();
50
+ return t === "" || t.startsWith("y");
51
+ }
52
+ /** Type-to-confirm for irreversible actions (GitHub-delete pattern). True only if the typed text
53
+ * matches `expected` exactly. Default-deny on timeout/mismatch. */
54
+ export async function confirmExact(label, expected) {
55
+ const a = await question(`${label}: `);
56
+ return a !== null && a.trim() === expected;
57
+ }
58
+ /** Numbered single-select. Returns the chosen value, or null on timeout/invalid. */
59
+ export async function select(label, choices) {
60
+ process.stdout.write(`${label}\n`);
61
+ choices.forEach((c, i) => process.stdout.write(` ${i + 1}) ${c.label}\n`));
62
+ const a = await question(`Choose 1-${choices.length}: `);
63
+ if (a === null)
64
+ return null;
65
+ const n = parseInt(a.trim(), 10);
66
+ if (Number.isNaN(n) || n < 1 || n > choices.length)
67
+ return null;
68
+ return choices[n - 1].value;
69
+ }
70
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@usenaive-sdk/cli",
3
- "version": "0.12.0",
3
+ "version": "0.12.5",
4
4
  "type": "module",
5
- "description": "Naïve CLI — provision and govern a real-world agent profile per agent (identity, card, comms, runtime). Formerly @usenaive-sdk/cli.",
5
+ "description": "Naïve CLI — provision and govern a real-world agent profile per agent (identity, card, comms, runtime). Formerly @usenaive/cli.",
6
6
  "license": "MIT",
7
7
  "bin": {
8
8
  "naive": "dist/index.js"
@@ -16,16 +16,21 @@
16
16
  "dependencies": {
17
17
  "commander": "^13.1.0",
18
18
  "chalk": "^5.4.1",
19
- "jiti": "^2.4.2"
19
+ "jiti": "^2.4.2",
20
+ "semver": "^7.6.3",
21
+ "update-notifier": "^7.3.1"
20
22
  },
21
23
  "devDependencies": {
22
24
  "@types/node": "^22.15.3",
25
+ "@types/semver": "^7.5.8",
23
26
  "tsx": "^4.19.4",
24
- "typescript": "^5.7.3"
27
+ "typescript": "^5.7.3",
28
+ "vitest": "^2.1.9"
25
29
  },
26
30
  "scripts": {
27
31
  "dev": "tsx src/index.ts",
28
32
  "build": "tsc",
29
- "typecheck": "tsc --noEmit"
33
+ "typecheck": "tsc --noEmit",
34
+ "test": "vitest run"
30
35
  }
31
36
  }
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const billingClientCmd: Command;