@usenaive-sdk/cli 0.15.0 → 1.0.0
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 +43 -354
- package/dist/index.js +51775 -502
- package/package.json +22 -18
- package/dist/client.d.ts +0 -108
- package/dist/client.js +0 -458
- package/dist/client.js.map +0 -1
- package/dist/commands/account-kits.d.ts +0 -2
- package/dist/commands/account-kits.js +0 -71
- package/dist/commands/account-kits.js.map +0 -1
- package/dist/commands/aeo.d.ts +0 -2
- package/dist/commands/aeo.js +0 -451
- package/dist/commands/aeo.js.map +0 -1
- package/dist/commands/agent-profiles.d.ts +0 -11
- package/dist/commands/agent-profiles.js +0 -120
- package/dist/commands/agent-profiles.js.map +0 -1
- package/dist/commands/agents.d.ts +0 -2
- package/dist/commands/agents.js +0 -916
- package/dist/commands/agents.js.map +0 -1
- package/dist/commands/app-data.d.ts +0 -2
- package/dist/commands/app-data.js +0 -445
- package/dist/commands/app-data.js.map +0 -1
- package/dist/commands/approvals.d.ts +0 -2
- package/dist/commands/approvals.js +0 -242
- package/dist/commands/approvals.js.map +0 -1
- package/dist/commands/apps.d.ts +0 -9
- package/dist/commands/apps.js +0 -844
- package/dist/commands/apps.js.map +0 -1
- package/dist/commands/audio.d.ts +0 -9
- package/dist/commands/audio.js +0 -391
- package/dist/commands/audio.js.map +0 -1
- package/dist/commands/auth.d.ts +0 -31
- package/dist/commands/auth.js +0 -428
- package/dist/commands/auth.js.map +0 -1
- package/dist/commands/billing.d.ts +0 -2
- package/dist/commands/billing.js +0 -245
- package/dist/commands/billing.js.map +0 -1
- package/dist/commands/brain.d.ts +0 -2
- package/dist/commands/brain.js +0 -1300
- package/dist/commands/brain.js.map +0 -1
- package/dist/commands/browser.d.ts +0 -2
- package/dist/commands/browser.js +0 -378
- package/dist/commands/browser.js.map +0 -1
- package/dist/commands/business.d.ts +0 -2
- package/dist/commands/business.js +0 -566
- package/dist/commands/business.js.map +0 -1
- package/dist/commands/cards.d.ts +0 -2
- package/dist/commands/cards.js +0 -419
- package/dist/commands/cards.js.map +0 -1
- package/dist/commands/ceo.d.ts +0 -2
- package/dist/commands/ceo.js +0 -369
- package/dist/commands/ceo.js.map +0 -1
- package/dist/commands/clone.d.ts +0 -2
- package/dist/commands/clone.js +0 -203
- package/dist/commands/clone.js.map +0 -1
- package/dist/commands/companies.d.ts +0 -10
- package/dist/commands/companies.js +0 -283
- package/dist/commands/companies.js.map +0 -1
- package/dist/commands/company-data.d.ts +0 -2
- package/dist/commands/company-data.js +0 -168
- package/dist/commands/company-data.js.map +0 -1
- package/dist/commands/compute.d.ts +0 -2
- package/dist/commands/compute.js +0 -498
- package/dist/commands/compute.js.map +0 -1
- package/dist/commands/config.d.ts +0 -2
- package/dist/commands/config.js +0 -36
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/connections.d.ts +0 -8
- package/dist/commands/connections.js +0 -137
- package/dist/commands/connections.js.map +0 -1
- package/dist/commands/cron-jobs.d.ts +0 -2
- package/dist/commands/cron-jobs.js +0 -245
- package/dist/commands/cron-jobs.js.map +0 -1
- package/dist/commands/domains.d.ts +0 -2
- package/dist/commands/domains.js +0 -474
- package/dist/commands/domains.js.map +0 -1
- package/dist/commands/ecommerce.d.ts +0 -2
- package/dist/commands/ecommerce.js +0 -277
- package/dist/commands/ecommerce.js.map +0 -1
- package/dist/commands/email.d.ts +0 -2
- package/dist/commands/email.js +0 -336
- package/dist/commands/email.js.map +0 -1
- package/dist/commands/employees.d.ts +0 -2
- package/dist/commands/employees.js +0 -190
- package/dist/commands/employees.js.map +0 -1
- package/dist/commands/env.d.ts +0 -7
- package/dist/commands/env.js +0 -112
- package/dist/commands/env.js.map +0 -1
- package/dist/commands/formation.d.ts +0 -2
- package/dist/commands/formation.js +0 -273
- package/dist/commands/formation.js.map +0 -1
- package/dist/commands/identity.d.ts +0 -2
- package/dist/commands/identity.js +0 -110
- package/dist/commands/identity.js.map +0 -1
- package/dist/commands/images.d.ts +0 -2
- package/dist/commands/images.js +0 -371
- package/dist/commands/images.js.map +0 -1
- package/dist/commands/init.d.ts +0 -5
- package/dist/commands/init.js +0 -43
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/jobs.d.ts +0 -2
- package/dist/commands/jobs.js +0 -144
- package/dist/commands/jobs.js.map +0 -1
- package/dist/commands/keys.d.ts +0 -2
- package/dist/commands/keys.js +0 -156
- package/dist/commands/keys.js.map +0 -1
- package/dist/commands/legacy-auth.d.ts +0 -27
- package/dist/commands/legacy-auth.js +0 -64
- package/dist/commands/legacy-auth.js.map +0 -1
- package/dist/commands/llm.d.ts +0 -2
- package/dist/commands/llm.js +0 -106
- package/dist/commands/llm.js.map +0 -1
- package/dist/commands/login.d.ts +0 -2
- package/dist/commands/login.js +0 -65
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -7
- package/dist/commands/logout.js +0 -55
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js +0 -42
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/loops.d.ts +0 -2
- package/dist/commands/loops.js +0 -260
- package/dist/commands/loops.js.map +0 -1
- package/dist/commands/media.d.ts +0 -2
- package/dist/commands/media.js +0 -183
- package/dist/commands/media.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -2
- package/dist/commands/memory.js +0 -151
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/mobile.d.ts +0 -4
- package/dist/commands/mobile.js +0 -382
- package/dist/commands/mobile.js.map +0 -1
- package/dist/commands/module.d.ts +0 -8
- package/dist/commands/module.js +0 -48
- package/dist/commands/module.js.map +0 -1
- package/dist/commands/objectives.d.ts +0 -2
- package/dist/commands/objectives.js +0 -243
- package/dist/commands/objectives.js.map +0 -1
- package/dist/commands/payments.d.ts +0 -2
- package/dist/commands/payments.js +0 -131
- package/dist/commands/payments.js.map +0 -1
- package/dist/commands/people.d.ts +0 -2
- package/dist/commands/people.js +0 -197
- package/dist/commands/people.js.map +0 -1
- package/dist/commands/phone.d.ts +0 -2
- package/dist/commands/phone.js +0 -289
- package/dist/commands/phone.js.map +0 -1
- package/dist/commands/projects.d.ts +0 -13
- package/dist/commands/projects.js +0 -220
- package/dist/commands/projects.js.map +0 -1
- package/dist/commands/queue.d.ts +0 -2
- package/dist/commands/queue.js +0 -121
- package/dist/commands/queue.js.map +0 -1
- package/dist/commands/register.d.ts +0 -2
- package/dist/commands/register.js +0 -80
- package/dist/commands/register.js.map +0 -1
- package/dist/commands/report.d.ts +0 -17
- package/dist/commands/report.js +0 -109
- package/dist/commands/report.js.map +0 -1
- package/dist/commands/sandbox.d.ts +0 -2
- package/dist/commands/sandbox.js +0 -558
- package/dist/commands/sandbox.js.map +0 -1
- package/dist/commands/search.d.ts +0 -2
- package/dist/commands/search.js +0 -223
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/seo.d.ts +0 -2
- package/dist/commands/seo.js +0 -528
- package/dist/commands/seo.js.map +0 -1
- package/dist/commands/sessions.d.ts +0 -6
- package/dist/commands/sessions.js +0 -109
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/social-data.d.ts +0 -2
- package/dist/commands/social-data.js +0 -245
- package/dist/commands/social-data.js.map +0 -1
- package/dist/commands/social.d.ts +0 -2
- package/dist/commands/social.js +0 -407
- package/dist/commands/social.js.map +0 -1
- package/dist/commands/status.d.ts +0 -2
- package/dist/commands/status.js +0 -73
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/support.d.ts +0 -2
- package/dist/commands/support.js +0 -134
- package/dist/commands/support.js.map +0 -1
- package/dist/commands/tasks.d.ts +0 -2
- package/dist/commands/tasks.js +0 -409
- package/dist/commands/tasks.js.map +0 -1
- package/dist/commands/teams.d.ts +0 -69
- package/dist/commands/teams.js +0 -503
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/trading.d.ts +0 -2
- package/dist/commands/trading.js +0 -333
- package/dist/commands/trading.js.map +0 -1
- package/dist/commands/up.d.ts +0 -551
- package/dist/commands/up.js +0 -1149
- package/dist/commands/up.js.map +0 -1
- package/dist/commands/usage.d.ts +0 -2
- package/dist/commands/usage.js +0 -73
- package/dist/commands/usage.js.map +0 -1
- package/dist/commands/use.d.ts +0 -12
- package/dist/commands/use.js +0 -96
- package/dist/commands/use.js.map +0 -1
- package/dist/commands/users.d.ts +0 -10
- package/dist/commands/users.js +0 -82
- package/dist/commands/users.js.map +0 -1
- package/dist/commands/vault.d.ts +0 -2
- package/dist/commands/vault.js +0 -101
- package/dist/commands/vault.js.map +0 -1
- package/dist/commands/verification.d.ts +0 -2
- package/dist/commands/verification.js +0 -152
- package/dist/commands/verification.js.map +0 -1
- package/dist/commands/verify-email.d.ts +0 -19
- package/dist/commands/verify-email.js +0 -112
- package/dist/commands/verify-email.js.map +0 -1
- package/dist/commands/video.d.ts +0 -2
- package/dist/commands/video.js +0 -417
- package/dist/commands/video.js.map +0 -1
- package/dist/commands/voice.d.ts +0 -2
- package/dist/commands/voice.js +0 -516
- package/dist/commands/voice.js.map +0 -1
- package/dist/commands/wallet.d.ts +0 -2
- package/dist/commands/wallet.js +0 -244
- package/dist/commands/wallet.js.map +0 -1
- package/dist/commands/webhooks.d.ts +0 -13
- package/dist/commands/webhooks.js +0 -119
- package/dist/commands/webhooks.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -2
- package/dist/commands/whoami.js +0 -53
- package/dist/commands/whoami.js.map +0 -1
- package/dist/config.d.ts +0 -42
- package/dist/config.js +0 -83
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js.map +0 -1
- package/dist/lib/brain-select.d.ts +0 -193
- package/dist/lib/brain-select.js +0 -403
- package/dist/lib/brain-select.js.map +0 -1
- package/dist/lib/cli-validation.d.ts +0 -12
- package/dist/lib/cli-validation.js +0 -46
- package/dist/lib/cli-validation.js.map +0 -1
- package/dist/lib/config-errors.d.ts +0 -4
- package/dist/lib/config-errors.js +0 -13
- package/dist/lib/config-errors.js.map +0 -1
- package/dist/lib/deprecation.d.ts +0 -158
- package/dist/lib/deprecation.js +0 -140
- package/dist/lib/deprecation.js.map +0 -1
- package/dist/lib/duration.d.ts +0 -8
- package/dist/lib/duration.js +0 -11
- package/dist/lib/duration.js.map +0 -1
- package/dist/lib/http-response.d.ts +0 -11
- package/dist/lib/http-response.js +0 -96
- package/dist/lib/http-response.js.map +0 -1
- package/dist/lib/pricing.d.ts +0 -132
- package/dist/lib/pricing.js +0 -148
- package/dist/lib/pricing.js.map +0 -1
- package/dist/lib/starter-config.d.ts +0 -13
- package/dist/lib/starter-config.js +0 -71
- package/dist/lib/starter-config.js.map +0 -1
- package/dist/lib/stream-frames.d.ts +0 -114
- package/dist/lib/stream-frames.js +0 -169
- package/dist/lib/stream-frames.js.map +0 -1
- package/dist/lib/teams-catalog.d.ts +0 -141
- package/dist/lib/teams-catalog.js +0 -841
- package/dist/lib/teams-catalog.js.map +0 -1
- package/dist/lib/unknown-command.d.ts +0 -71
- package/dist/lib/unknown-command.js +0 -132
- package/dist/lib/unknown-command.js.map +0 -1
- package/dist/lib/version-check.d.ts +0 -26
- package/dist/lib/version-check.js +0 -21
- package/dist/lib/version-check.js.map +0 -1
- package/dist/output.d.ts +0 -174
- package/dist/output.js +0 -435
- package/dist/output.js.map +0 -1
- package/dist/prompt.d.ts +0 -17
- package/dist/prompt.js +0 -70
- package/dist/prompt.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.js +0 -14
- package/dist/version.js.map +0 -1
package/dist/commands/wallet.js
DELETED
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { apiRequest, sessionRequest, handleApiError, activeUserId } from "../client.js";
|
|
3
|
-
import { agentOutput, agentError } from "../output.js";
|
|
4
|
-
export const walletCmd = new Command("wallet")
|
|
5
|
-
.description("Wallet — the agent's crypto wallet, its balance, and its spend policy")
|
|
6
|
-
.addHelpText("after", `
|
|
7
|
-
Subcommands:
|
|
8
|
-
naive wallet show Show the agent's wallet (address, network, custody)
|
|
9
|
-
naive wallet balance Read USDC balances
|
|
10
|
-
|
|
11
|
-
Operator subcommands (human-only — see Governance):
|
|
12
|
-
naive wallet create Provision the wallet
|
|
13
|
-
naive wallet fund Credit it from the treasury or a testnet faucet
|
|
14
|
-
naive wallet transfer Send USDC to an address or another agent
|
|
15
|
-
naive wallet policy Set the spend policy (per-tx max / daily budget)
|
|
16
|
-
naive wallet sweep Drain it back to the treasury (decommission)
|
|
17
|
-
|
|
18
|
-
How it works:
|
|
19
|
-
Each agent gets its own crypto wallet. The agent SPENDS from it via
|
|
20
|
-
'naive payments pay' (x402), but cannot administer it — funding, transferring,
|
|
21
|
-
re-policying and sweeping are the operator surface.
|
|
22
|
-
|
|
23
|
-
Spend control:
|
|
24
|
-
There is NO approval queue here, and that is deliberate — unlike cards and
|
|
25
|
-
trading, the cap is enforced inside the custody plane at signing time:
|
|
26
|
-
1. Balance is the primary budget — an agent can never spend what isn't there.
|
|
27
|
-
2. perTxMax is enforced TWICE: at runtime, AND as a static account policy in
|
|
28
|
-
the custody plane. The second check survives a fully compromised runtime,
|
|
29
|
-
which an approval queue would not.
|
|
30
|
-
3. dailyBudget (optional) is a rolling runtime counter.
|
|
31
|
-
Fund the wallet with what you can afford to lose, and set perTxMax.
|
|
32
|
-
|
|
33
|
-
Governance:
|
|
34
|
-
create/fund/transfer/policy/sweep require an OPERATOR credential — a signed-in
|
|
35
|
-
session ('naive auth login'), or an api key minted with the "wallet:admin"
|
|
36
|
-
scope for CI. An agent's key is refused. Reads (show/balance) are agent-safe.
|
|
37
|
-
|
|
38
|
-
Examples:
|
|
39
|
-
$ naive use alice
|
|
40
|
-
$ naive wallet create
|
|
41
|
-
$ naive wallet policy --per-tx-max 1.00 --daily-budget 10.00
|
|
42
|
-
$ naive wallet fund --amount 5.00 --source faucet
|
|
43
|
-
$ naive wallet balance
|
|
44
|
-
$ naive wallet transfer --to 0xabc... --amount 1.50 --purpose "settle invoice"
|
|
45
|
-
$ naive wallet sweep
|
|
46
|
-
`);
|
|
47
|
-
/**
|
|
48
|
-
* The user-scoped wallet base. `wallet` has no company-level mount, so a
|
|
49
|
-
* subject is required. Operator verbs go through sessionRequest (which does no
|
|
50
|
-
* path rewriting), so they need the resolved path up front.
|
|
51
|
-
*/
|
|
52
|
-
function walletBase(action) {
|
|
53
|
-
const userId = activeUserId();
|
|
54
|
-
if (!userId) {
|
|
55
|
-
agentError({
|
|
56
|
-
action,
|
|
57
|
-
error: {
|
|
58
|
-
code: "no_active_user",
|
|
59
|
-
message: "The wallet is per-agent, so this command needs an active user.",
|
|
60
|
-
hint: "Select one with 'naive use <user>'. Unlike cards, the wallet has no company-level fallback — it exists only per-agent.",
|
|
61
|
-
},
|
|
62
|
-
recovery_steps: [
|
|
63
|
-
{ command: "naive users list", description: "List the tenant users" },
|
|
64
|
-
{ command: "naive use <user>", description: "Set the active user" },
|
|
65
|
-
],
|
|
66
|
-
});
|
|
67
|
-
process.exit(1);
|
|
68
|
-
}
|
|
69
|
-
return `/v1/users/${userId}/wallet`;
|
|
70
|
-
}
|
|
71
|
-
walletCmd
|
|
72
|
-
.command("show")
|
|
73
|
-
.description("Show the agent's crypto wallet")
|
|
74
|
-
.action(async () => {
|
|
75
|
-
const resp = await apiRequest("GET", "/v1/wallet");
|
|
76
|
-
if (resp.status === 404) {
|
|
77
|
-
agentError({
|
|
78
|
-
action: "wallet.show",
|
|
79
|
-
error: {
|
|
80
|
-
code: "no_wallet",
|
|
81
|
-
message: "This agent has no wallet yet.",
|
|
82
|
-
hint: "Provision one with 'naive wallet create', or declare has.crypto on the agent in naive.config.ts.",
|
|
83
|
-
},
|
|
84
|
-
recovery_steps: [{ command: "naive wallet create", description: "Provision the wallet" }],
|
|
85
|
-
});
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
handleApiError("wallet.show", resp);
|
|
89
|
-
agentOutput({
|
|
90
|
-
action: "wallet.show",
|
|
91
|
-
result: resp.data,
|
|
92
|
-
next_steps: [
|
|
93
|
-
{ command: "naive wallet balance", description: "Read the USDC balance" },
|
|
94
|
-
{ command: "naive payments receipts", description: "See what it has paid for" },
|
|
95
|
-
],
|
|
96
|
-
related_commands: ["naive wallet balance", "naive payments pay"],
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
walletCmd
|
|
100
|
-
.command("balance")
|
|
101
|
-
.description("Read the wallet's USDC balances")
|
|
102
|
-
.option("--network <network>", "Filter to one network (CAIP-2, e.g. eip155:8453)")
|
|
103
|
-
.action(async (opts) => {
|
|
104
|
-
const query = opts.network ? `?network=${encodeURIComponent(opts.network)}` : "";
|
|
105
|
-
const resp = await apiRequest("GET", `/v1/wallet/balances${query}`);
|
|
106
|
-
handleApiError("wallet.balance", resp);
|
|
107
|
-
// getBalances returns a bare WalletBalance[] (not { balances: [...] }).
|
|
108
|
-
const balances = Array.isArray(resp.data) ? resp.data : [];
|
|
109
|
-
const usdc = balances.find((b) => b.asset === "USDC");
|
|
110
|
-
agentOutput({
|
|
111
|
-
action: "wallet.balance",
|
|
112
|
-
result: resp.data,
|
|
113
|
-
next_steps: [{ command: "naive payments pay --url <url>", description: "Pay for an x402 resource" }],
|
|
114
|
-
hints: [
|
|
115
|
-
usdc
|
|
116
|
-
? `USDC balance: ${usdc.amount}. The balance IS the budget — an agent cannot spend past it.`
|
|
117
|
-
: "No USDC balance. Fund the wallet with 'naive wallet fund' before paying.",
|
|
118
|
-
],
|
|
119
|
-
related_commands: ["naive wallet fund", "naive wallet show"],
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
walletCmd
|
|
123
|
-
.command("create")
|
|
124
|
-
.description("Provision the agent's wallet (OPERATOR)")
|
|
125
|
-
.option("--custody <custody>", "Custody backend: cdp | local | fake (default: the configured provider)")
|
|
126
|
-
.option("--network <network>", "Network to provision on (CAIP-2, e.g. eip155:8453)")
|
|
127
|
-
.option("--per-tx-max <amount>", "Max value of a single payment, decimal USDC (e.g. 1.00)")
|
|
128
|
-
.option("--daily-budget <amount>", "Optional rolling daily cap, decimal USDC")
|
|
129
|
-
.option("--smart-account", "Provision as a smart account")
|
|
130
|
-
.action(async (opts) => {
|
|
131
|
-
const policy = opts.perTxMax || opts.dailyBudget
|
|
132
|
-
? { perTxMax: opts.perTxMax, dailyBudget: opts.dailyBudget }
|
|
133
|
-
: undefined;
|
|
134
|
-
const resp = await sessionRequest("POST", walletBase("wallet.create"), {
|
|
135
|
-
body: {
|
|
136
|
-
...(opts.custody && { custody: opts.custody }),
|
|
137
|
-
...(opts.network && { networks: [opts.network] }),
|
|
138
|
-
...(policy && { policy }),
|
|
139
|
-
...(opts.smartAccount && { smartAccount: true }),
|
|
140
|
-
},
|
|
141
|
-
});
|
|
142
|
-
handleApiError("wallet.create", resp);
|
|
143
|
-
agentOutput({
|
|
144
|
-
action: "wallet.create",
|
|
145
|
-
result: resp.data,
|
|
146
|
-
next_steps: [
|
|
147
|
-
{ command: "naive wallet policy --per-tx-max 1.00", description: "Set the spend cap" },
|
|
148
|
-
{ command: "naive wallet fund --amount 5.00 --source faucet", description: "Fund it" },
|
|
149
|
-
],
|
|
150
|
-
hints: [
|
|
151
|
-
"Provisioning is idempotent — re-running returns the existing wallet.",
|
|
152
|
-
"perTxMax is written into the custody plane as a static account policy, so it holds even if the agent runtime is compromised.",
|
|
153
|
-
],
|
|
154
|
-
related_commands: ["naive wallet fund", "naive wallet policy"],
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
walletCmd
|
|
158
|
-
.command("fund")
|
|
159
|
-
.description("Credit the wallet from the treasury or a testnet faucet (OPERATOR)")
|
|
160
|
-
.requiredOption("--amount <amount>", "Decimal USDC amount (e.g. 5.00)")
|
|
161
|
-
.requiredOption("--source <source>", "treasury | faucet (faucet is testnet only)")
|
|
162
|
-
.option("--asset <asset>", "Asset to credit (default: USDC)")
|
|
163
|
-
.action(async (opts) => {
|
|
164
|
-
const resp = await sessionRequest("POST", `${walletBase("wallet.fund")}/fund`, {
|
|
165
|
-
body: { amount: opts.amount, source: opts.source, ...(opts.asset && { asset: opts.asset }) },
|
|
166
|
-
});
|
|
167
|
-
handleApiError("wallet.fund", resp);
|
|
168
|
-
agentOutput({
|
|
169
|
-
action: "wallet.fund",
|
|
170
|
-
result: resp.data,
|
|
171
|
-
next_steps: [{ command: "naive wallet balance", description: "Confirm the credit landed" }],
|
|
172
|
-
hints: ["The balance is the agent's real budget — fund only what you can afford to lose."],
|
|
173
|
-
related_commands: ["naive wallet balance", "naive wallet policy"],
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
walletCmd
|
|
177
|
-
.command("transfer")
|
|
178
|
-
.description("Send USDC from the wallet to an address or another agent (OPERATOR)")
|
|
179
|
-
.requiredOption("--to <to>", "Destination address, or an agent id to target that agent's wallet")
|
|
180
|
-
.requiredOption("--amount <amount>", "Decimal USDC amount")
|
|
181
|
-
.requiredOption("--purpose <purpose>", "Why — recorded on the transfer for audit")
|
|
182
|
-
.option("--asset <asset>", "Asset (default: USDC)")
|
|
183
|
-
.option("--network <network>", "Network (CAIP-2)")
|
|
184
|
-
.action(async (opts) => {
|
|
185
|
-
const resp = await sessionRequest("POST", `${walletBase("wallet.transfer")}/transfer`, {
|
|
186
|
-
body: {
|
|
187
|
-
to: opts.to,
|
|
188
|
-
amount: opts.amount,
|
|
189
|
-
purpose: opts.purpose,
|
|
190
|
-
...(opts.asset && { asset: opts.asset }),
|
|
191
|
-
...(opts.network && { network: opts.network }),
|
|
192
|
-
},
|
|
193
|
-
});
|
|
194
|
-
handleApiError("wallet.transfer", resp);
|
|
195
|
-
agentOutput({
|
|
196
|
-
action: "wallet.transfer",
|
|
197
|
-
result: resp.data,
|
|
198
|
-
next_steps: [{ command: "naive wallet balance", description: "Confirm the new balance" }],
|
|
199
|
-
hints: ["Transfers are bounded by the wallet's perTxMax, the same cap that bounds agent payments."],
|
|
200
|
-
related_commands: ["naive wallet balance", "naive wallet policy"],
|
|
201
|
-
});
|
|
202
|
-
});
|
|
203
|
-
walletCmd
|
|
204
|
-
.command("policy")
|
|
205
|
-
.description("Set the wallet's spend policy (OPERATOR)")
|
|
206
|
-
.requiredOption("--per-tx-max <amount>", "Max value of a single payment, decimal USDC (required)")
|
|
207
|
-
.option("--daily-budget <amount>", "Optional rolling daily cap, decimal USDC")
|
|
208
|
-
.action(async (opts) => {
|
|
209
|
-
const resp = await sessionRequest("POST", `${walletBase("wallet.policy")}/policy`, {
|
|
210
|
-
body: {
|
|
211
|
-
policy: { perTxMax: opts.perTxMax, ...(opts.dailyBudget && { dailyBudget: opts.dailyBudget }) },
|
|
212
|
-
},
|
|
213
|
-
});
|
|
214
|
-
handleApiError("wallet.policy", resp);
|
|
215
|
-
agentOutput({
|
|
216
|
-
action: "wallet.policy",
|
|
217
|
-
result: resp.data,
|
|
218
|
-
next_steps: [{ command: "naive wallet show", description: "Read back the wallet" }],
|
|
219
|
-
hints: [
|
|
220
|
-
"perTxMax is now enforced twice — at runtime AND re-issued into the custody plane, so it holds at signing time even if the agent runtime is compromised.",
|
|
221
|
-
"If the custody plane can't be reached the change fails and nothing is saved, rather than storing a cap that isn't really enforced.",
|
|
222
|
-
"The spend policy is the control that replaces an approval queue for payments.",
|
|
223
|
-
],
|
|
224
|
-
related_commands: ["naive wallet show", "naive payments receipts"],
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
walletCmd
|
|
228
|
-
.command("sweep")
|
|
229
|
-
.description("Drain the wallet back to the treasury — decommission (OPERATOR)")
|
|
230
|
-
.option("--to <address>", "Destination address (default: the treasury)")
|
|
231
|
-
.action(async (opts) => {
|
|
232
|
-
const resp = await sessionRequest("POST", `${walletBase("wallet.sweep")}/sweep`, {
|
|
233
|
-
body: { ...(opts.to && { to: opts.to }) },
|
|
234
|
-
});
|
|
235
|
-
handleApiError("wallet.sweep", resp);
|
|
236
|
-
agentOutput({
|
|
237
|
-
action: "wallet.sweep",
|
|
238
|
-
result: resp.data,
|
|
239
|
-
next_steps: [{ command: "naive wallet balance", description: "Confirm the wallet is drained" }],
|
|
240
|
-
hints: ["Sweeping moves the funds out but does not delete the wallet — the agent simply has nothing to spend."],
|
|
241
|
-
related_commands: ["naive wallet balance", "naive wallet show"],
|
|
242
|
-
});
|
|
243
|
-
});
|
|
244
|
-
//# sourceMappingURL=wallet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `naive webhooks` — OUTBOUND notifications: naive POSTs to a URL you own. The
|
|
3
|
-
* other direction (someone POSTs to naive to wake an agent) is `naive agents
|
|
4
|
-
* webhook-add` — different secret, different signature string, opposite failure
|
|
5
|
-
* modes, so deliberately a different verb on a different noun.
|
|
6
|
-
*
|
|
7
|
-
* 🔴 NO HARDCODED EVENT-TYPE LIST HERE. `event-types` asks the server, which
|
|
8
|
-
* advertises exactly what its code emits. A copy here would be a fourth thing to
|
|
9
|
-
* drift, and the drift has a precedent: `call.received` was advertised for
|
|
10
|
-
* months after the routes that fired it were deleted.
|
|
11
|
-
*/
|
|
12
|
-
import { Command } from "commander";
|
|
13
|
-
export declare const webhooksCmd: Command;
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `naive webhooks` — OUTBOUND notifications: naive POSTs to a URL you own. The
|
|
3
|
-
* other direction (someone POSTs to naive to wake an agent) is `naive agents
|
|
4
|
-
* webhook-add` — different secret, different signature string, opposite failure
|
|
5
|
-
* modes, so deliberately a different verb on a different noun.
|
|
6
|
-
*
|
|
7
|
-
* 🔴 NO HARDCODED EVENT-TYPE LIST HERE. `event-types` asks the server, which
|
|
8
|
-
* advertises exactly what its code emits. A copy here would be a fourth thing to
|
|
9
|
-
* drift, and the drift has a precedent: `call.received` was advertised for
|
|
10
|
-
* months after the routes that fired it were deleted.
|
|
11
|
-
*/
|
|
12
|
-
import { Command } from "commander";
|
|
13
|
-
import { apiRequest, handleApiError } from "../client.js";
|
|
14
|
-
import { agentOutput, humanMode } from "../output.js";
|
|
15
|
-
export const webhooksCmd = new Command("webhooks")
|
|
16
|
-
.description("Outbound webhooks — naive POSTs signed events to a URL you own")
|
|
17
|
-
.addHelpText("after", `
|
|
18
|
-
Verifying a delivery:
|
|
19
|
-
Body is {"event":..., "data":..., "ts": <unix ms>}. X-Naive-Signature is
|
|
20
|
-
hex(HMAC-SHA256(secret, RAW BODY)) — raw bytes, not a re-serialised parse, or
|
|
21
|
-
key order differs. The ts is INSIDE the signed body, so a captured delivery
|
|
22
|
-
cannot be replayed with a fresher one; reject a stale ts after the MAC checks.
|
|
23
|
-
|
|
24
|
-
Delivery guarantees:
|
|
25
|
-
At-least-once, bounded. Three attempts, jittered exponential backoff, ~10s
|
|
26
|
-
timeout each — one dead endpoint costs ~40s and no more. A subscription whose
|
|
27
|
-
last ten deliveries ALL failed is set inactive rather than retried forever.
|
|
28
|
-
|
|
29
|
-
Example:
|
|
30
|
-
$ naive webhooks add https://you.example/hooks agent.job_complete
|
|
31
|
-
`);
|
|
32
|
-
webhooksCmd
|
|
33
|
-
.command("list", { isDefault: true })
|
|
34
|
-
.description("Your subscriptions. Secrets are reported as secret_set, never returned.")
|
|
35
|
-
.action(async () => {
|
|
36
|
-
const resp = await apiRequest("GET", "/v1/webhooks");
|
|
37
|
-
handleApiError("webhooks.list", resp);
|
|
38
|
-
const subs = (resp.data ?? {}).subscriptions ?? [];
|
|
39
|
-
if (humanMode()) {
|
|
40
|
-
if (subs.length === 0)
|
|
41
|
-
process.stdout.write(" no subscriptions. `naive webhooks add <url> <type...>`\n");
|
|
42
|
-
// INACTIVE is printed loudly: it is what ten consecutive failed
|
|
43
|
-
// deliveries leave behind, and reading it as "fine" is why nothing arrives.
|
|
44
|
-
for (const s of subs) {
|
|
45
|
-
const state = s.active === false ? "INACTIVE" : "active";
|
|
46
|
-
process.stdout.write(` ${String(s.id ?? "")} ${String(s.url ?? "")} ${state} ${s.eventTypes?.join(",") ?? ""}\n`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
agentOutput({
|
|
50
|
-
action: "webhooks.list",
|
|
51
|
-
result: resp.data,
|
|
52
|
-
next_steps: [{ command: "naive webhooks event-types", description: "What this deployment emits" }],
|
|
53
|
-
hints: [`${subs.length} subscription${subs.length === 1 ? "" : "s"}. INACTIVE means delivery was disabled after repeated failures.`],
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
webhooksCmd
|
|
57
|
-
.command("event-types")
|
|
58
|
-
.description("What this deployment actually emits — asked of the server, never cached here.")
|
|
59
|
-
.action(async () => {
|
|
60
|
-
const resp = await apiRequest("GET", "/v1/webhooks/event-types");
|
|
61
|
-
handleApiError("webhooks.event-types", resp);
|
|
62
|
-
const types = (resp.data ?? {}).event_types ?? [];
|
|
63
|
-
if (humanMode())
|
|
64
|
-
for (const t of types)
|
|
65
|
-
process.stdout.write(` ${t}\n`);
|
|
66
|
-
agentOutput({
|
|
67
|
-
action: "webhooks.event-types",
|
|
68
|
-
result: resp.data,
|
|
69
|
-
next_steps: [{ command: `naive webhooks add <url> ${types[0] ?? "<type>"}`, description: "Subscribe" }],
|
|
70
|
-
hints: ["Every type listed is emitted by code today; a test enforces that in both directions."],
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
webhooksCmd
|
|
74
|
-
.command("add <url> <types...>")
|
|
75
|
-
.description("Subscribe. The signing secret prints ONCE.")
|
|
76
|
-
.action(async (url, types) => {
|
|
77
|
-
const resp = await apiRequest("POST", "/v1/webhooks", { url, eventTypes: types });
|
|
78
|
-
handleApiError("webhooks.add", resp);
|
|
79
|
-
const s = (resp.data ?? {});
|
|
80
|
-
if (humanMode()) {
|
|
81
|
-
process.stdout.write(` id ${s.id ?? ""}\n`);
|
|
82
|
-
process.stdout.write(` secret ${s.secret ?? ""}\n`);
|
|
83
|
-
process.stdout.write(" ⚠ the secret prints once and is never returned by list.\n");
|
|
84
|
-
}
|
|
85
|
-
agentOutput({
|
|
86
|
-
action: "webhooks.add",
|
|
87
|
-
result: resp.data,
|
|
88
|
-
next_steps: [{ command: `naive webhooks test ${s.id ?? "<id>"}`, description: "Send a delivery and check your verifier" }],
|
|
89
|
-
hints: ["Verify with hex(HMAC-SHA256(secret, RAW BODY)) against X-Naive-Signature."],
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
webhooksCmd
|
|
93
|
-
.command("test <id>")
|
|
94
|
-
.description("Send a `webhook.test` delivery through the real delivery path.")
|
|
95
|
-
.action(async (id) => {
|
|
96
|
-
const resp = await apiRequest("POST", `/v1/webhooks/${id}/test`, {});
|
|
97
|
-
handleApiError("webhooks.test", resp);
|
|
98
|
-
agentOutput({
|
|
99
|
-
action: "webhooks.test",
|
|
100
|
-
result: resp.data,
|
|
101
|
-
next_steps: [],
|
|
102
|
-
// The difference between this proving something and proving nothing.
|
|
103
|
-
hints: ["Same signer, same retry bound, same failure accounting as a real event — a failed test counts toward deactivation."],
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
webhooksCmd
|
|
107
|
-
.command("rm <id>")
|
|
108
|
-
.description("Unsubscribe. Refuses if it deleted nothing.")
|
|
109
|
-
.action(async (id) => {
|
|
110
|
-
const resp = await apiRequest("DELETE", `/v1/webhooks/${id}`);
|
|
111
|
-
handleApiError("webhooks.rm", resp);
|
|
112
|
-
agentOutput({
|
|
113
|
-
action: "webhooks.rm",
|
|
114
|
-
result: resp.data,
|
|
115
|
-
next_steps: [{ command: "naive webhooks list", description: "Confirm it is gone" }],
|
|
116
|
-
hints: ["A delete that removed nothing 404s — 'it stopped' and 'it is still firing' must not share a response."],
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
//# sourceMappingURL=webhooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/whoami.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { apiRequest, handleApiError } from "../client.js";
|
|
3
|
-
import { loadConfig } from "../config.js";
|
|
4
|
-
import { agentOutput } from "../output.js";
|
|
5
|
-
export const whoamiCmd = new Command("whoami")
|
|
6
|
-
.description("Display current authenticated agent identity and company context")
|
|
7
|
-
.addHelpText("after", `
|
|
8
|
-
Examples:
|
|
9
|
-
$ naive whoami
|
|
10
|
-
|
|
11
|
-
What this does:
|
|
12
|
-
Returns the agent name, ID, company name, and company ID associated
|
|
13
|
-
with the currently configured API key.
|
|
14
|
-
|
|
15
|
-
Use this to:
|
|
16
|
-
- Confirm which account is active
|
|
17
|
-
- Verify the API key is valid before running operations
|
|
18
|
-
- Check which company context you're operating under
|
|
19
|
-
`)
|
|
20
|
-
.action(async () => {
|
|
21
|
-
const resp = await apiRequest("GET", "/v1/auth/me");
|
|
22
|
-
handleApiError("whoami", resp);
|
|
23
|
-
const data = resp.data;
|
|
24
|
-
// WHICH PROJECT AM I IN is half of "who am I" now. The selection is local
|
|
25
|
-
// (`naive projects use` / `naive use`) and every command silently carries
|
|
26
|
-
// it, so an answer that omits it lets an operator read a `staging` result as
|
|
27
|
-
// a production one.
|
|
28
|
-
const config = loadConfig();
|
|
29
|
-
agentOutput({
|
|
30
|
-
action: "whoami",
|
|
31
|
-
result: {
|
|
32
|
-
...data,
|
|
33
|
-
organization_id: data.company_id,
|
|
34
|
-
organization_name: data.company_name,
|
|
35
|
-
active_project_id: config.active_project_id ?? null,
|
|
36
|
-
active_project_name: config.active_project_name ?? null,
|
|
37
|
-
active_child_project_id: config.active_user_id ?? null,
|
|
38
|
-
},
|
|
39
|
-
next_steps: [
|
|
40
|
-
{ command: "naive status", description: "See full status including credits and resources" },
|
|
41
|
-
{ command: "naive companies", description: "List all companies you have access to" },
|
|
42
|
-
{ command: "naive identity", description: "View provisioned resources (email, phone)" },
|
|
43
|
-
],
|
|
44
|
-
hints: [
|
|
45
|
-
`Currently operating as "${data.agent_name}" under "${data.company_name}"`,
|
|
46
|
-
config.active_project_id
|
|
47
|
-
? `Inside project ${config.active_project_name ?? config.active_project_id}.`
|
|
48
|
-
: "Inside the organization's default project (`naive projects use <id>` to switch).",
|
|
49
|
-
],
|
|
50
|
-
related_commands: ["naive status", "naive companies", "naive identity", "naive keys list"],
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
//# sourceMappingURL=whoami.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC3C,WAAW,CAAC,kEAAkE,CAAC;KAC/E,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;CAYvB,CAAC;KACC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACpD,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAA0F,CAAC;IAE7G,0EAA0E;IAC1E,0EAA0E;IAC1E,6EAA6E;IAC7E,oBAAoB;IACpB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,WAAW,CAAC;QACV,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,GAAG,IAAI;YACP,eAAe,EAAE,IAAI,CAAC,UAAU;YAChC,iBAAiB,EAAE,IAAI,CAAC,YAAY;YACpC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;YACnD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,IAAI;YACvD,uBAAuB,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;SACvD;QACD,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,iDAAiD,EAAE;YAC3F,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,uCAAuC,EAAE;YACpF,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,2CAA2C,EAAE;SACxF;QACD,KAAK,EAAE;YACL,2BAA2B,IAAI,CAAC,UAAU,YAAY,IAAI,CAAC,YAAY,GAAG;YAC1E,MAAM,CAAC,iBAAiB;gBACtB,CAAC,CAAC,kBAAkB,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,iBAAiB,GAAG;gBAC7E,CAAC,CAAC,kFAAkF;SACvF;QACD,gBAAgB,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;KAC3F,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/config.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export interface NaiveConfig {
|
|
2
|
-
api_key?: string;
|
|
3
|
-
base_url: string;
|
|
4
|
-
agent_id?: string;
|
|
5
|
-
company_id?: string;
|
|
6
|
-
company_name?: string;
|
|
7
|
-
session_token?: string;
|
|
8
|
-
user_email?: string;
|
|
9
|
-
session_company_id?: string;
|
|
10
|
-
session_company_name?: string;
|
|
11
|
-
/** Active subject tenant_user — the child project CLI commands act on by default. */
|
|
12
|
-
active_user_id?: string;
|
|
13
|
-
/**
|
|
14
|
-
* Active project — the project CLI commands act inside by default. Unset means
|
|
15
|
-
* the organization's DEFAULT project, which is where every row created before
|
|
16
|
-
* projects existed lives, so an unset value is not an unscoped one.
|
|
17
|
-
*/
|
|
18
|
-
active_project_id?: string;
|
|
19
|
-
/** Display name of {@link active_project_id}, for `naive whoami` / `status`. */
|
|
20
|
-
active_project_name?: string;
|
|
21
|
-
/** Output format preference. Default (unset) = machine JSON — safe for agents/pipes/CI/pty
|
|
22
|
-
* callers. "human" opts into chalk-rendered output + interactive wizards/confirms. Set via
|
|
23
|
-
* `naive config output human`. Never inferred from isTTY (a pty-wrapped agent looks like a TTY). */
|
|
24
|
-
output?: "human" | "json";
|
|
25
|
-
/** One-time flag: the "run 'naive config output human'" discovery hint has been shown. */
|
|
26
|
-
human_hint_shown?: boolean;
|
|
27
|
-
}
|
|
28
|
-
export declare function loadConfig(): NaiveConfig;
|
|
29
|
-
export declare function saveConfig(config: Partial<NaiveConfig>): void;
|
|
30
|
-
export declare function getApiKey(): string;
|
|
31
|
-
/** Human session token for human-only operations (voice clone/revoke). NEVER falls back
|
|
32
|
-
* to the agent api_key — the two auth modes are deliberately separate. */
|
|
33
|
-
export declare function getSessionToken(): string;
|
|
34
|
-
/** Clear only the session fields (used by `naive auth logout`). */
|
|
35
|
-
export declare function clearSession(): void;
|
|
36
|
-
/**
|
|
37
|
-
* Clear the agent API-key credentials written by `naive login` / `naive
|
|
38
|
-
* register`. Deliberately does NOT touch the human session — `naive auth
|
|
39
|
-
* logout` owns that — and does NOT revoke anything server-side; the key stays
|
|
40
|
-
* valid until `naive keys revoke`.
|
|
41
|
-
*/
|
|
42
|
-
export declare function clearApiKey(): void;
|
package/dist/config.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync, renameSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { homedir } from "node:os";
|
|
4
|
-
const CONFIG_DIR = join(homedir(), ".naive");
|
|
5
|
-
const CONFIG_FILE = join(CONFIG_DIR, "config.json");
|
|
6
|
-
const DEFAULT_CONFIG = {
|
|
7
|
-
base_url: "https://api.usenaive.ai",
|
|
8
|
-
};
|
|
9
|
-
export function loadConfig() {
|
|
10
|
-
let config = { ...DEFAULT_CONFIG };
|
|
11
|
-
if (existsSync(CONFIG_FILE)) {
|
|
12
|
-
try {
|
|
13
|
-
const raw = readFileSync(CONFIG_FILE, "utf-8");
|
|
14
|
-
config = { ...config, ...JSON.parse(raw) };
|
|
15
|
-
}
|
|
16
|
-
catch { }
|
|
17
|
-
}
|
|
18
|
-
if (process.env.NAIVE_BASE_URL)
|
|
19
|
-
config.base_url = process.env.NAIVE_BASE_URL;
|
|
20
|
-
return config;
|
|
21
|
-
}
|
|
22
|
-
// Atomic, owner-only write. The file holds an api_key AND a 30-day session token, so it
|
|
23
|
-
// must never be world-readable. Write to a fresh temp path (mode 0600, never world-
|
|
24
|
-
// readable since umask only clears bits), rename into place, then chmod the final file
|
|
25
|
-
// (the writeFileSync `mode` is ignored when the destination already exists).
|
|
26
|
-
function writeConfigFile(config) {
|
|
27
|
-
mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
|
|
28
|
-
const tmp = `${CONFIG_FILE}.${process.pid}.tmp`;
|
|
29
|
-
writeFileSync(tmp, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
30
|
-
renameSync(tmp, CONFIG_FILE);
|
|
31
|
-
chmodSync(CONFIG_FILE, 0o600);
|
|
32
|
-
}
|
|
33
|
-
export function saveConfig(config) {
|
|
34
|
-
writeConfigFile({ ...loadConfig(), ...config });
|
|
35
|
-
}
|
|
36
|
-
export function getApiKey() {
|
|
37
|
-
const envKey = process.env.NAIVE_API_KEY;
|
|
38
|
-
if (envKey)
|
|
39
|
-
return envKey;
|
|
40
|
-
const config = loadConfig();
|
|
41
|
-
if (!config.api_key) {
|
|
42
|
-
console.error("No API key found. Run `naive register` or `naive auth email <email>` first.");
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}
|
|
45
|
-
return config.api_key;
|
|
46
|
-
}
|
|
47
|
-
/** Human session token for human-only operations (voice clone/revoke). NEVER falls back
|
|
48
|
-
* to the agent api_key — the two auth modes are deliberately separate. */
|
|
49
|
-
export function getSessionToken() {
|
|
50
|
-
const envToken = process.env.NAIVE_SESSION_TOKEN;
|
|
51
|
-
if (envToken)
|
|
52
|
-
return envToken;
|
|
53
|
-
const config = loadConfig();
|
|
54
|
-
if (!config.session_token) {
|
|
55
|
-
console.error("No human session found. Run `naive auth session-login --email <e> --password <p>` first.");
|
|
56
|
-
process.exit(1);
|
|
57
|
-
}
|
|
58
|
-
return config.session_token;
|
|
59
|
-
}
|
|
60
|
-
/** Clear only the session fields (used by `naive auth logout`). */
|
|
61
|
-
export function clearSession() {
|
|
62
|
-
const current = loadConfig();
|
|
63
|
-
delete current.session_token;
|
|
64
|
-
delete current.user_email;
|
|
65
|
-
delete current.session_company_id;
|
|
66
|
-
delete current.session_company_name;
|
|
67
|
-
writeConfigFile(current);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Clear the agent API-key credentials written by `naive login` / `naive
|
|
71
|
-
* register`. Deliberately does NOT touch the human session — `naive auth
|
|
72
|
-
* logout` owns that — and does NOT revoke anything server-side; the key stays
|
|
73
|
-
* valid until `naive keys revoke`.
|
|
74
|
-
*/
|
|
75
|
-
export function clearApiKey() {
|
|
76
|
-
const current = loadConfig();
|
|
77
|
-
delete current.api_key;
|
|
78
|
-
delete current.agent_id;
|
|
79
|
-
delete current.company_id;
|
|
80
|
-
delete current.company_name;
|
|
81
|
-
writeConfigFile(current);
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|