@usenaive-sdk/cli 0.11.0 → 0.12.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/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/commands/agent-profiles.d.ts +11 -0
- package/dist/commands/agent-profiles.js +120 -0
- package/dist/commands/agent-profiles.js.map +1 -0
- package/dist/commands/approvals.js +1 -1
- package/dist/commands/billing-client.d.ts +2 -0
- package/dist/commands/billing-client.js +271 -0
- package/dist/commands/billing-client.js.map +1 -0
- package/dist/commands/crm-app.d.ts +2 -0
- package/dist/commands/crm-app.js +306 -0
- package/dist/commands/crm-app.js.map +1 -0
- package/dist/commands/crm.d.ts +2 -0
- package/dist/commands/crm.js +319 -0
- package/dist/commands/crm.js.map +1 -0
- package/dist/commands/env.d.ts +7 -0
- package/dist/commands/env.js +48 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.js +67 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/integrations.d.ts +2 -0
- package/dist/commands/integrations.js +199 -0
- package/dist/commands/integrations.js.map +1 -0
- package/dist/commands/logs.js +1 -1
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/module.d.ts +8 -0
- package/dist/commands/module.js +48 -0
- package/dist/commands/module.js.map +1 -0
- package/dist/commands/operators.d.ts +11 -0
- package/dist/commands/operators.js +120 -0
- package/dist/commands/operators.js.map +1 -0
- package/dist/commands/report.d.ts +17 -0
- package/dist/commands/report.js +109 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/up.d.ts +3 -0
- package/dist/commands/up.js +251 -0
- package/dist/commands/up.js.map +1 -0
- package/dist/index.js +40 -14
- package/dist/index.js.map +1 -1
- package/dist/output.js +11 -0
- package/dist/output.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.js +14 -0
- package/dist/version.js.map +1 -0
- package/package.json +10 -10
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Command, Option } from "commander";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { apiRequest, handleApiError } from "../client.js";
|
|
4
|
+
import { loadConfig } from "../config.js";
|
|
5
|
+
import { agentOutput } from "../output.js";
|
|
6
|
+
import { readVersion } from "../version.js";
|
|
7
|
+
// Mirrors the API's MAX_MESSAGE/MAX_STACK (packages/api/src/routes/reports.ts) —
|
|
8
|
+
// the API zod schema is the authoritative cap; this just trims before sending.
|
|
9
|
+
const MAX_FIELD = 8 * 1024;
|
|
10
|
+
const HOME = homedir();
|
|
11
|
+
/**
|
|
12
|
+
* Best-effort client-side scrub — a FIRST pass before anything leaves the machine.
|
|
13
|
+
* The internal-agent re-redacts at ingest and is the authoritative layer; this is
|
|
14
|
+
* NOT a guarantee (the command help says so). Covers common key shapes plus
|
|
15
|
+
* key=value and "key":"value" forms, and collapses the home dir out of paths.
|
|
16
|
+
*/
|
|
17
|
+
const SCRUB = [
|
|
18
|
+
[/\bnv_(?:sk|sess)_[A-Za-z0-9_-]{6,}\b/g, "[redacted-key]"],
|
|
19
|
+
[/\bsk-(?:ant-)?[A-Za-z0-9_-]{20,}\b/g, "[redacted-key]"],
|
|
20
|
+
[/\b(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{16,}\b/g, "[redacted-key]"],
|
|
21
|
+
[/\b(?:AKIA|ASIA)[A-Z0-9]{16}\b/g, "[redacted-key]"],
|
|
22
|
+
[/\bgh[pousr]_[A-Za-z0-9]{20,}\b/g, "[redacted-key]"],
|
|
23
|
+
[/Bearer\s+[A-Za-z0-9._-]+/gi, "Bearer [redacted]"],
|
|
24
|
+
// key=value and "key":"value" — tolerate a word-char prefix (OPENAI_API_KEY) and quotes.
|
|
25
|
+
[/([A-Za-z_]*(?:api[_-]?key|token|secret|password|authorization))(["']?\s*[=:]\s*["']?)[^\s"',;}]+/gi, "$1$2[redacted]"],
|
|
26
|
+
];
|
|
27
|
+
function scrub(text) {
|
|
28
|
+
let out = text;
|
|
29
|
+
for (const [re, repl] of SCRUB)
|
|
30
|
+
out = out.replace(re, repl);
|
|
31
|
+
if (HOME)
|
|
32
|
+
out = out.split(HOME).join("~"); // guard: empty HOME would garble via split("")
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
function truncate(text, max = MAX_FIELD) {
|
|
36
|
+
return text.length > max ? text.slice(0, max) + "\n…[truncated]" : text;
|
|
37
|
+
}
|
|
38
|
+
function buildBody(input) {
|
|
39
|
+
const context = {
|
|
40
|
+
os: `${process.platform} ${process.arch}`,
|
|
41
|
+
cliVersion: readVersion(),
|
|
42
|
+
};
|
|
43
|
+
if (input.command)
|
|
44
|
+
context.command = input.command;
|
|
45
|
+
if (input.sessionId)
|
|
46
|
+
context.sessionId = input.sessionId;
|
|
47
|
+
if (input.stack)
|
|
48
|
+
context.stack = truncate(scrub(input.stack));
|
|
49
|
+
return {
|
|
50
|
+
kind: input.kind ?? "error",
|
|
51
|
+
message: truncate(scrub(input.message)),
|
|
52
|
+
context,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Programmatic, best-effort report. Used by the auto-report path (a Claude
|
|
57
|
+
* subagent, or a future top-level error boundary behind NAIVE_AUTO_REPORT).
|
|
58
|
+
* NEVER throws and never exits — a failed report must not mask the original
|
|
59
|
+
* error. Stays silent if there's no API key (can't report unauthenticated).
|
|
60
|
+
*/
|
|
61
|
+
export async function reportError(input) {
|
|
62
|
+
try {
|
|
63
|
+
const hasKey = !!(process.env.NAIVE_API_KEY || loadConfig().api_key);
|
|
64
|
+
if (!hasKey)
|
|
65
|
+
return;
|
|
66
|
+
await apiRequest("POST", "/v1/reports", buildBody(input));
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
/* best-effort: swallow */
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export const reportCmd = new Command("report")
|
|
73
|
+
.description("Report a bug or send feedback to the naive team (files a tracked issue)")
|
|
74
|
+
.argument("<message>", "the error or feedback to report")
|
|
75
|
+
.addOption(new Option("--kind <kind>", "report kind").choices(["error", "feedback"]).default("error"))
|
|
76
|
+
.option("--command <command>", "the naive command that triggered this (e.g. 'naive video create')")
|
|
77
|
+
.option("--session <id>", "session id, for context")
|
|
78
|
+
.option("--stack <text>", "a stack trace or log excerpt to attach")
|
|
79
|
+
.addHelpText("after", `
|
|
80
|
+
Examples:
|
|
81
|
+
$ naive report "video create failed with a 500" --command "naive video create" --kind error
|
|
82
|
+
$ naive report "wish I could pass a seed to image gen" --kind feedback
|
|
83
|
+
|
|
84
|
+
What this does:
|
|
85
|
+
Files a tracked bug/feedback report with the naive team. Common secret shapes are
|
|
86
|
+
scrubbed client-side (best-effort — don't paste secrets you wouldn't want seen).
|
|
87
|
+
You get a tracking id back — receipt confirmation, not that the issue is filed yet.`)
|
|
88
|
+
.action(async (message, opts) => {
|
|
89
|
+
const resp = await apiRequest("POST", "/v1/reports", buildBody({
|
|
90
|
+
message,
|
|
91
|
+
kind: opts.kind,
|
|
92
|
+
command: opts.command,
|
|
93
|
+
sessionId: opts.session,
|
|
94
|
+
stack: opts.stack,
|
|
95
|
+
}));
|
|
96
|
+
handleApiError("report", resp);
|
|
97
|
+
const data = resp.data;
|
|
98
|
+
agentOutput({
|
|
99
|
+
action: "report",
|
|
100
|
+
result: resp.data,
|
|
101
|
+
next_steps: [],
|
|
102
|
+
hints: [
|
|
103
|
+
`Report received (tracking id: ${data.reportId ?? "?"}).`,
|
|
104
|
+
"This confirms receipt — reports are batched, so the tracked issue is filed shortly after.",
|
|
105
|
+
],
|
|
106
|
+
related_commands: ["naive status"],
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
3
|
+
import { join, relative } from "node:path";
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
5
|
+
import { agentOutput, agentError } from "../output.js";
|
|
6
|
+
import { apiRequest, handleApiError } from "../client.js";
|
|
7
|
+
const WEB_IGNORE = new Set([
|
|
8
|
+
"node_modules", ".next", ".git", ".vercel", ".ready", "dist", ".turbo", ".cache", "data", ".DS_Store",
|
|
9
|
+
]);
|
|
10
|
+
/** Never upload secrets/local state to the deploy. */
|
|
11
|
+
function isExcludedWebFile(name) {
|
|
12
|
+
return name.startsWith(".env"); // .env, .env.local, .env.production, …
|
|
13
|
+
}
|
|
14
|
+
/** Recursively collect a web project's source as base64 files for Vercel deploy. */
|
|
15
|
+
function collectWebFiles(root) {
|
|
16
|
+
const out = [];
|
|
17
|
+
const walk = (dir) => {
|
|
18
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
19
|
+
if (WEB_IGNORE.has(entry.name) || isExcludedWebFile(entry.name))
|
|
20
|
+
continue;
|
|
21
|
+
const full = join(dir, entry.name);
|
|
22
|
+
if (entry.isDirectory())
|
|
23
|
+
walk(full);
|
|
24
|
+
else if (entry.isFile()) {
|
|
25
|
+
if (statSync(full).size > 8 * 1024 * 1024)
|
|
26
|
+
continue; // skip very large files
|
|
27
|
+
out.push({ path: relative(root, full), data: readFileSync(full).toString("base64") });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
walk(root);
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
const CONFIG_CANDIDATES = ["naive.config.ts", "naive.config.js", "naive.config.mjs", "naive.config.json"];
|
|
35
|
+
/** Evaluate naive.config.{ts,js,json} to its full object (the whole NaiveConfig). */
|
|
36
|
+
async function loadConfig(path) {
|
|
37
|
+
if (path.endsWith(".json")) {
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(readFileSync(path, "utf8"));
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const { createJiti } = await import("jiti");
|
|
47
|
+
const jiti = createJiti(pathToFileURL(path).href);
|
|
48
|
+
const mod = (await jiti.import(path));
|
|
49
|
+
const cfg = mod?.default ?? mod;
|
|
50
|
+
return cfg && typeof cfg === "object" ? cfg : null;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null; // jiti/@usenaive-sdk/iac not resolvable — fall back to regex extraction
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Extract top-level keys inside a named object block, e.g. agentProfiles: { a, b }. */
|
|
57
|
+
function extractKeys(source, section) {
|
|
58
|
+
const re = new RegExp(`${section}\\s*:\\s*\\{`);
|
|
59
|
+
const m = re.exec(source);
|
|
60
|
+
if (!m)
|
|
61
|
+
return [];
|
|
62
|
+
let i = m.index + m[0].length;
|
|
63
|
+
let depth = 1;
|
|
64
|
+
const start = i;
|
|
65
|
+
for (; i < source.length && depth > 0; i++) {
|
|
66
|
+
if (source[i] === "{")
|
|
67
|
+
depth++;
|
|
68
|
+
else if (source[i] === "}")
|
|
69
|
+
depth--;
|
|
70
|
+
}
|
|
71
|
+
const block = source.slice(start, i - 1);
|
|
72
|
+
const keys = new Set();
|
|
73
|
+
let d = 0;
|
|
74
|
+
const keyRe = /([A-Za-z0-9_]+)\s*:/g;
|
|
75
|
+
for (let j = 0; j < block.length; j++) {
|
|
76
|
+
const ch = block[j];
|
|
77
|
+
if (ch === "{" || ch === "(" || ch === "[")
|
|
78
|
+
d++;
|
|
79
|
+
else if (ch === "}" || ch === ")" || ch === "]")
|
|
80
|
+
d--;
|
|
81
|
+
else if (d === 0) {
|
|
82
|
+
keyRe.lastIndex = j;
|
|
83
|
+
const km = keyRe.exec(block);
|
|
84
|
+
if (km && km.index === j) {
|
|
85
|
+
keys.add(km[1]);
|
|
86
|
+
j = keyRe.lastIndex - 1;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return [...keys];
|
|
91
|
+
}
|
|
92
|
+
function findConfig() {
|
|
93
|
+
return CONFIG_CANDIDATES.map((c) => join(process.cwd(), c)).find(existsSync) ?? null;
|
|
94
|
+
}
|
|
95
|
+
export const upCmd = new Command("up")
|
|
96
|
+
.description("Plan + apply the infrastructure, runtime pools, agent profiles, and systems declared in naive.config.ts")
|
|
97
|
+
.option("--plan", "Preview the plan (diff) without applying")
|
|
98
|
+
.option("--local", "Validate the config locally only; do not contact the API")
|
|
99
|
+
.option("--yes", "Apply without confirmation (default for non-interactive use)")
|
|
100
|
+
.option("--no-deploy", "Provision infrastructure but skip deploying cloud.web source")
|
|
101
|
+
.action(async (opts) => {
|
|
102
|
+
const found = findConfig();
|
|
103
|
+
if (!found) {
|
|
104
|
+
agentError({
|
|
105
|
+
action: "up",
|
|
106
|
+
error: { code: "not_found", message: "No naive.config.ts found in the current directory" },
|
|
107
|
+
recovery_steps: [{ command: "naive init", description: "Scaffold a naive.config.ts" }],
|
|
108
|
+
});
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const config = opts.local ? null : await loadConfig(found);
|
|
112
|
+
// Fallback: config couldn't be evaluated — local validation only.
|
|
113
|
+
if (!config) {
|
|
114
|
+
const source = readFileSync(found, "utf8");
|
|
115
|
+
const projectMatch = /project\s*:\s*["'`]([^"'`]+)["'`]/.exec(source);
|
|
116
|
+
const project = projectMatch?.[1] ?? "(unknown)";
|
|
117
|
+
agentOutput({
|
|
118
|
+
action: "up",
|
|
119
|
+
result: {
|
|
120
|
+
config: found,
|
|
121
|
+
project,
|
|
122
|
+
infrastructure: extractKeys(source, "infrastructure"),
|
|
123
|
+
runtime_pools: extractKeys(source, "runtime"),
|
|
124
|
+
agent_profiles: extractKeys(source, "agentProfiles").length ? extractKeys(source, "agentProfiles") : extractKeys(source, "templates"),
|
|
125
|
+
systems: extractKeys(source, "systems"),
|
|
126
|
+
applied: false,
|
|
127
|
+
},
|
|
128
|
+
next_steps: [{ command: "pnpm add @usenaive-sdk/iac jiti", description: "Install so naive up can evaluate + apply the config" }],
|
|
129
|
+
hints: [
|
|
130
|
+
opts.local
|
|
131
|
+
? `Local validation only for "${project}".`
|
|
132
|
+
: `Validated ${found} locally, but could not evaluate it (install @usenaive-sdk/iac + jiti, or commit a naive.config.json).`,
|
|
133
|
+
],
|
|
134
|
+
});
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const project = typeof config.project === "string" ? config.project : undefined;
|
|
138
|
+
if (!project) {
|
|
139
|
+
agentError({ action: "up", error: { code: "invalid_input", message: "naive.config.ts must export a `project` name" }, recovery_steps: [] });
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
// 1. Plan (diff desired vs current).
|
|
143
|
+
const planResp = await apiRequest("PUT", `/v1/deployments/${encodeURIComponent(project)}`, config);
|
|
144
|
+
handleApiError("up", planResp);
|
|
145
|
+
const plan = planResp.data?.plan;
|
|
146
|
+
if (opts.plan) {
|
|
147
|
+
agentOutput({
|
|
148
|
+
action: "up",
|
|
149
|
+
result: { config: found, project, plan, applied: false },
|
|
150
|
+
next_steps: [{ command: "naive up", description: "Apply the plan" }],
|
|
151
|
+
hints: ["Plan only — nothing was provisioned."],
|
|
152
|
+
});
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
// 2. Apply (provision infra, register pools/systems/agent profiles).
|
|
156
|
+
const applyResp = await apiRequest("POST", `/v1/deployments/${encodeURIComponent(project)}/apply`, config);
|
|
157
|
+
handleApiError("up", applyResp);
|
|
158
|
+
const data = applyResp.data;
|
|
159
|
+
const deployment = data.deployment;
|
|
160
|
+
const needsAction = (deployment?.resources ?? []).filter((r) => r.status === "needs_action" || r.status === "failed");
|
|
161
|
+
// Deploy cloud.web source to the provisioned web project(s) (Vercel builds + hosts).
|
|
162
|
+
const webDeploys = {};
|
|
163
|
+
if (opts.deploy !== false) {
|
|
164
|
+
const infra = config.infrastructure ?? {};
|
|
165
|
+
for (const r of deployment?.resources ?? []) {
|
|
166
|
+
if (r.kind !== "cloud.web" || r.status !== "ready")
|
|
167
|
+
continue;
|
|
168
|
+
const dir = join(process.cwd(), infra[r.name]?.dir ?? ".");
|
|
169
|
+
try {
|
|
170
|
+
const files = collectWebFiles(dir);
|
|
171
|
+
const dep = await apiRequest("POST", `/v1/deployments/${encodeURIComponent(project)}/web/${encodeURIComponent(r.name)}/deploy`, { files });
|
|
172
|
+
const url = dep.data?.url;
|
|
173
|
+
if (dep.status >= 200 && dep.status < 300 && url)
|
|
174
|
+
webDeploys[r.name] = url;
|
|
175
|
+
else
|
|
176
|
+
webDeploys[r.name] = `deploy failed (${dep.status})`;
|
|
177
|
+
}
|
|
178
|
+
catch (e) {
|
|
179
|
+
webDeploys[r.name] = `deploy error: ${e instanceof Error ? e.message : String(e)}`;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
agentOutput({
|
|
184
|
+
action: "up",
|
|
185
|
+
result: {
|
|
186
|
+
config: found,
|
|
187
|
+
project,
|
|
188
|
+
status: deployment?.status,
|
|
189
|
+
resources: deployment?.resources,
|
|
190
|
+
runtime_pools: Object.keys(config.runtime ?? {}),
|
|
191
|
+
systems: Object.keys(config.systems ?? {}),
|
|
192
|
+
agent_profiles: Object.keys(config.agentProfiles ?? config.templates ?? {}),
|
|
193
|
+
outputs: deployment?.outputs ?? {},
|
|
194
|
+
web_deployments: webDeploys,
|
|
195
|
+
applied: true,
|
|
196
|
+
},
|
|
197
|
+
next_steps: [
|
|
198
|
+
...needsAction.map((r) => ({ command: `naive status`, description: `${r.name}: ${r.requirement ?? r.status}` })),
|
|
199
|
+
{ command: `naive agent-profiles provision <name> --user <tenant>`, description: "Provision an agent profile for a tenant" },
|
|
200
|
+
],
|
|
201
|
+
hints: [
|
|
202
|
+
`Deployment "${project}" is ${deployment?.status ?? "?"}.`,
|
|
203
|
+
needsAction.length ? `${needsAction.length} resource(s) need action — see next_steps.` : "All declared infrastructure is ready.",
|
|
204
|
+
],
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
export const downCmd = new Command("down")
|
|
208
|
+
.description("Tear down the infrastructure provisioned for this project (naive.config.ts)")
|
|
209
|
+
.option("--yes", "Confirm the destructive teardown (required to actually destroy)")
|
|
210
|
+
.action(async (opts) => {
|
|
211
|
+
const found = findConfig();
|
|
212
|
+
if (!found) {
|
|
213
|
+
agentError({ action: "down", error: { code: "not_found", message: "No naive.config.ts found in the current directory" }, recovery_steps: [] });
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const source = readFileSync(found, "utf8");
|
|
217
|
+
const project = /project\s*:\s*["'`]([^"'`]+)["'`]/.exec(source)?.[1];
|
|
218
|
+
if (!project) {
|
|
219
|
+
agentError({ action: "down", error: { code: "invalid_input", message: "Could not read `project` from naive.config.ts" }, recovery_steps: [] });
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
// Without --yes: preview what would be destroyed (no side effects).
|
|
223
|
+
if (!opts.yes) {
|
|
224
|
+
const current = await apiRequest("GET", `/v1/deployments/${encodeURIComponent(project)}`);
|
|
225
|
+
const d = current.data ?? {};
|
|
226
|
+
agentOutput({
|
|
227
|
+
action: "down",
|
|
228
|
+
result: {
|
|
229
|
+
project,
|
|
230
|
+
applied: false,
|
|
231
|
+
would_destroy: {
|
|
232
|
+
resources: (d.resources ?? []).map((r) => `${r.kind}:${r.name}`),
|
|
233
|
+
runtime_pools: (d.runtime_pools ?? []).map((p) => p.name),
|
|
234
|
+
systems: (d.systems ?? []).map((s) => s.name),
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
next_steps: [{ command: "naive down --yes", description: "Confirm and permanently destroy this infrastructure" }],
|
|
238
|
+
hints: [`This will DROP databases, delete buckets, and remove web/pools/systems for "${project}". Irreversible. Re-run with --yes to proceed.`],
|
|
239
|
+
});
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
const resp = await apiRequest("DELETE", `/v1/deployments/${encodeURIComponent(project)}?confirm=true`);
|
|
243
|
+
handleApiError("down", resp);
|
|
244
|
+
agentOutput({
|
|
245
|
+
action: "down",
|
|
246
|
+
result: { project, applied: true, ...resp.data },
|
|
247
|
+
next_steps: [{ command: "naive up", description: "Re-provision the project's infrastructure" }],
|
|
248
|
+
hints: [`Tore down infrastructure for "${project}".`],
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
//# sourceMappingURL=up.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../src/commands/up.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from "commander";
|
|
3
|
-
import {
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
5
|
-
import { dirname, join } from "node:path";
|
|
3
|
+
import { readVersion } from "./version.js";
|
|
6
4
|
import { registerCmd } from "./commands/register.js";
|
|
7
5
|
import { loginCmd } from "./commands/login.js";
|
|
8
6
|
import { linkCmd, verifyCmd } from "./commands/link.js";
|
|
@@ -49,19 +47,21 @@ import { logsCmd } from "./commands/logs.js";
|
|
|
49
47
|
import { connectionsCmd } from "./commands/connections.js";
|
|
50
48
|
import { approvalsCmd } from "./commands/approvals.js";
|
|
51
49
|
import { browserCmd } from "./commands/browser.js";
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return "0.0.0";
|
|
59
|
-
}
|
|
60
|
-
}
|
|
50
|
+
import { agentProfilesCmd, revokeCmd } from "./commands/agent-profiles.js";
|
|
51
|
+
import { initCmd } from "./commands/init.js";
|
|
52
|
+
import { upCmd, downCmd } from "./commands/up.js";
|
|
53
|
+
import { moduleCmd } from "./commands/module.js";
|
|
54
|
+
import { envCmd } from "./commands/env.js";
|
|
55
|
+
import { reportCmd } from "./commands/report.js";
|
|
61
56
|
const program = new Command();
|
|
62
57
|
program
|
|
63
58
|
.name("naive")
|
|
64
|
-
.description(`
|
|
59
|
+
.description(`Naïve CLI — give every AI agent its own governed real-world agentProfile.
|
|
60
|
+
|
|
61
|
+
Provision a per-tenant agent profile (verified identity/EIN, a spend-capped card, an
|
|
62
|
+
inbox and phone number, optional runtime), pull its governed tools into any
|
|
63
|
+
runtime (Eve / AgentCore / LangGraph / your own), and revoke it instantly. The
|
|
64
|
+
underlying primitives (email, search, cards, comms, …) are also available directly.
|
|
65
65
|
|
|
66
66
|
Built for agentic use: every command returns structured JSON with result data,
|
|
67
67
|
next steps, and contextual guidance for autonomous operation.`)
|
|
@@ -69,8 +69,18 @@ next steps, and contextual guidance for autonomous operation.`)
|
|
|
69
69
|
.addHelpText("after", `
|
|
70
70
|
Getting Started:
|
|
71
71
|
$ naive register --name "My Agent" --email me@example.com --password mypassword
|
|
72
|
+
$ naive init # scaffold naive.config.ts (agentProfile template)
|
|
73
|
+
$ naive up # register templates
|
|
74
|
+
$ naive agent-profiles provision support --user <tenant>
|
|
72
75
|
$ naive status
|
|
73
|
-
|
|
76
|
+
|
|
77
|
+
AgentProfiles (the governed real-world bundle):
|
|
78
|
+
init Scaffold a naive.config.ts with an agent profile template
|
|
79
|
+
up Register infrastructure, runtime pool, and agent profile templates
|
|
80
|
+
agent profiles Provision / list / get / revoke per-tenant agent profiles
|
|
81
|
+
revoke Absolute revoke of an agent profile (freeze card, halt sends, tear down)
|
|
82
|
+
module Add/list modules (capabilities) for your agent profiles
|
|
83
|
+
env Switch API environment / create per-tenant preview sandboxes
|
|
74
84
|
|
|
75
85
|
Authentication:
|
|
76
86
|
register Create a new account (email + password → API key)
|
|
@@ -116,6 +126,13 @@ Primitives:
|
|
|
116
126
|
formation Company formation (LLC incorporation) via Doola
|
|
117
127
|
jobs Monitor async generation/research jobs
|
|
118
128
|
|
|
129
|
+
Feedback & Bug Reports:
|
|
130
|
+
report File a bug or send feedback to the naive team. Use on unexpected
|
|
131
|
+
errors (provider_error/internal_error/5xx) or when the user reports
|
|
132
|
+
something broken — NOT for self-correctable errors (credits, auth,
|
|
133
|
+
invalid input). Example:
|
|
134
|
+
naive report "video create failed" --command "naive video create" --kind error
|
|
135
|
+
|
|
119
136
|
Governance (human-in-the-loop):
|
|
120
137
|
approvals Review & resolve agent-requested approvals for sensitive actions
|
|
121
138
|
Sensitive actions (issue/fund a card, purchase a domain, KYC, form a company,
|
|
@@ -171,6 +188,15 @@ program.addCommand(appsCmd);
|
|
|
171
188
|
program.addCommand(computeCmd);
|
|
172
189
|
program.addCommand(queueCmd);
|
|
173
190
|
program.addCommand(browserCmd);
|
|
191
|
+
program.addCommand(reportCmd);
|
|
192
|
+
// AgentProfiles (governed real-world bundle) + IaC
|
|
193
|
+
program.addCommand(initCmd);
|
|
194
|
+
program.addCommand(upCmd);
|
|
195
|
+
program.addCommand(downCmd);
|
|
196
|
+
program.addCommand(agentProfilesCmd);
|
|
197
|
+
program.addCommand(revokeCmd);
|
|
198
|
+
program.addCommand(moduleCmd);
|
|
199
|
+
program.addCommand(envCmd);
|
|
174
200
|
// Multi-tenant v2
|
|
175
201
|
program.addCommand(useCmd);
|
|
176
202
|
program.addCommand(usersCmd);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/output.js
CHANGED
|
@@ -75,6 +75,17 @@ function getRecoverySteps(code) {
|
|
|
75
75
|
return [
|
|
76
76
|
{ command: "naive <command> --help", description: "See required parameters and examples" },
|
|
77
77
|
];
|
|
78
|
+
// Genuinely-broken-on-our-side codes — these are worth reporting (unlike the
|
|
79
|
+
// self-correctable cases above). Retry first (often transient), then report.
|
|
80
|
+
case "provider_error":
|
|
81
|
+
case "internal_error":
|
|
82
|
+
return [
|
|
83
|
+
{ command: "# retry — provider/internal errors are often transient", description: "Retry once before reporting" },
|
|
84
|
+
{
|
|
85
|
+
command: 'naive report "<what failed>" --command "<the command you ran>" --kind error',
|
|
86
|
+
description: "Report it to the naive team if it persists",
|
|
87
|
+
},
|
|
88
|
+
];
|
|
78
89
|
default:
|
|
79
90
|
return [
|
|
80
91
|
{ command: "naive status", description: "Check API connectivity and auth status" },
|
package/dist/output.js.map
CHANGED
|
@@ -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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"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
/** This package's version from package.json. Returns "0.0.0" on failure. */
|
|
5
|
+
export function readVersion() {
|
|
6
|
+
try {
|
|
7
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
return JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8")).version ?? "0.0.0";
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return "0.0.0";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,4EAA4E;AAC5E,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usenaive-sdk/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "CLI
|
|
5
|
+
"description": "Naïve CLI — provision and govern a real-world agent profile per agent (identity, card, comms, runtime). Formerly @usenaive-sdk/cli.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"bin": {
|
|
8
8
|
"naive": "dist/index.js"
|
|
@@ -13,19 +13,19 @@
|
|
|
13
13
|
"publishConfig": {
|
|
14
14
|
"access": "public"
|
|
15
15
|
},
|
|
16
|
-
"scripts": {
|
|
17
|
-
"dev": "tsx src/index.ts",
|
|
18
|
-
"build": "tsc",
|
|
19
|
-
"typecheck": "tsc --noEmit",
|
|
20
|
-
"prepublishOnly": "tsc"
|
|
21
|
-
},
|
|
22
16
|
"dependencies": {
|
|
23
17
|
"commander": "^13.1.0",
|
|
24
|
-
"chalk": "^5.4.1"
|
|
18
|
+
"chalk": "^5.4.1",
|
|
19
|
+
"jiti": "^2.4.2"
|
|
25
20
|
},
|
|
26
21
|
"devDependencies": {
|
|
27
22
|
"@types/node": "^22.15.3",
|
|
28
23
|
"tsx": "^4.19.4",
|
|
29
24
|
"typescript": "^5.7.3"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"dev": "tsx src/index.ts",
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"typecheck": "tsc --noEmit"
|
|
30
30
|
}
|
|
31
|
-
}
|
|
31
|
+
}
|