@usenaive-sdk/cli 0.2.0 → 0.2.2

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 (65) hide show
  1. package/README.md +25 -0
  2. package/dist/client.d.ts +10 -0
  3. package/dist/client.js +25 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/commands/billing.d.ts +2 -0
  6. package/dist/commands/billing.js +204 -0
  7. package/dist/commands/billing.js.map +1 -0
  8. package/dist/commands/companies.d.ts +2 -0
  9. package/dist/commands/companies.js +88 -0
  10. package/dist/commands/companies.js.map +1 -0
  11. package/dist/commands/domains.d.ts +2 -0
  12. package/dist/commands/domains.js +252 -0
  13. package/dist/commands/domains.js.map +1 -0
  14. package/dist/commands/email.d.ts +2 -0
  15. package/dist/commands/email.js +289 -0
  16. package/dist/commands/email.js.map +1 -0
  17. package/dist/commands/identity.d.ts +2 -0
  18. package/dist/commands/identity.js +109 -0
  19. package/dist/commands/identity.js.map +1 -0
  20. package/dist/commands/images.d.ts +2 -0
  21. package/dist/commands/images.js +291 -0
  22. package/dist/commands/images.js.map +1 -0
  23. package/dist/commands/jobs.d.ts +2 -0
  24. package/dist/commands/jobs.js +143 -0
  25. package/dist/commands/jobs.js.map +1 -0
  26. package/dist/commands/keys.d.ts +2 -0
  27. package/dist/commands/keys.js +133 -0
  28. package/dist/commands/keys.js.map +1 -0
  29. package/dist/commands/link.d.ts +3 -0
  30. package/dist/commands/link.js +91 -0
  31. package/dist/commands/link.js.map +1 -0
  32. package/dist/commands/login.d.ts +2 -0
  33. package/dist/commands/login.js +63 -0
  34. package/dist/commands/login.js.map +1 -0
  35. package/dist/commands/register.d.ts +2 -0
  36. package/dist/commands/register.js +68 -0
  37. package/dist/commands/register.js.map +1 -0
  38. package/dist/commands/search.d.ts +2 -0
  39. package/dist/commands/search.js +209 -0
  40. package/dist/commands/search.js.map +1 -0
  41. package/dist/commands/social.d.ts +2 -0
  42. package/dist/commands/social.js +402 -0
  43. package/dist/commands/social.js.map +1 -0
  44. package/dist/commands/status.d.ts +2 -0
  45. package/dist/commands/status.js +47 -0
  46. package/dist/commands/status.js.map +1 -0
  47. package/dist/commands/usage.d.ts +2 -0
  48. package/dist/commands/usage.js +62 -0
  49. package/dist/commands/usage.js.map +1 -0
  50. package/dist/commands/video.d.ts +2 -0
  51. package/dist/commands/video.js +243 -0
  52. package/dist/commands/video.js.map +1 -0
  53. package/dist/commands/whoami.d.ts +2 -0
  54. package/dist/commands/whoami.js +37 -0
  55. package/dist/commands/whoami.js.map +1 -0
  56. package/dist/config.d.ts +10 -0
  57. package/dist/config.js +40 -0
  58. package/dist/config.js.map +1 -0
  59. package/dist/index.d.ts +2 -0
  60. package/dist/index.js +83 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/output.d.ts +37 -0
  63. package/dist/output.js +84 -0
  64. package/dist/output.js.map +1 -0
  65. package/package.json +1 -1
@@ -0,0 +1,243 @@
1
+ import { Command } from "commander";
2
+ import { apiRequest, handleApiError } from "../client.js";
3
+ import { agentOutput } from "../output.js";
4
+ export const videoCmd = new Command("video")
5
+ .description("Generate AI videos using fal.ai models")
6
+ .addHelpText("after", `
7
+ Subcommands:
8
+ naive video generate <prompt> Generate a video from text or image
9
+ naive video status <job_id> Check video generation status
10
+ naive video models List available video models
11
+
12
+ Examples:
13
+ $ naive video generate "a rocket launching into space" --model fal-ai/kling-video/v3/pro/text-to-video
14
+ $ naive video generate --model fal-ai/kling-video/v3/pro/text-to-video --input '{"prompt":"ocean waves","duration":"5"}'
15
+ $ naive video generate --model fal-ai/kling-video/v3/pro/image-to-video --image-url https://example.com/photo.jpg
16
+ $ naive video status job-uuid-123
17
+ $ naive video models
18
+
19
+ Cost:
20
+ - Video generation: dynamic, model/duration-dependent (use GET /v1/video/pricing to preview)
21
+ - Pricing based on fal.ai model costs, converted to credits ($0.50/credit)
22
+ - Credits deducted only on successful completion
23
+ - Typical generation time: 30-120 seconds
24
+ `);
25
+ videoCmd
26
+ .command("generate [prompt]")
27
+ .description("Generate a video using fal.ai (async — returns job ID)")
28
+ .requiredOption("--model <model>", "fal.ai video model ID (required)")
29
+ .option("--input <json>", "Full fal.ai input parameters as JSON (overrides other options)")
30
+ .option("--duration <seconds>", "Video duration in seconds (model-dependent, e.g., 5 or 10)")
31
+ .option("--image-url <url>", "Source image URL for image-to-video models")
32
+ .option("--wait", "Wait for job to complete (polls until done)")
33
+ .addHelpText("after", `
34
+ Examples:
35
+ $ naive video generate "a timelapse of a flower blooming" --model fal-ai/kling-video/v3/pro/text-to-video
36
+ $ naive video generate "product showcase" --model fal-ai/kling-video/v3/pro/text-to-video --duration 10 --wait
37
+ $ naive video generate --model fal-ai/kling-video/v3/pro/image-to-video --image-url https://example.com/img.jpg --input '{"prompt":"zoom in slowly"}'
38
+
39
+ What this does:
40
+ 1. Submits a video generation request to fal.ai
41
+ 2. Returns a job ID (async processing, typically 30-120s)
42
+ 3. Use --wait to block until done, or check with 'naive video status'
43
+
44
+ Text-to-video:
45
+ Provide a prompt describing the video. Models: kling-video text-to-video, minimax-video
46
+
47
+ Image-to-video:
48
+ Provide --image-url to animate a still image. Models: kling-video image-to-video
49
+
50
+ Available models (use 'naive video models' for full list):
51
+ fal-ai/kling-video/v3/pro/text-to-video Text-to-video, pro quality (~60s)
52
+ fal-ai/kling-video/v3/pro/image-to-video Image-to-video, pro quality (~60s)
53
+ fal-ai/kling-video/v3/standard/text-to-video Text-to-video, standard (~45s)
54
+ fal-ai/minimax-video/video-01-live Text-to-video, fast (~45s)
55
+ fal-ai/wan/v2.7/text-to-video Text-to-video (~60s)
56
+ (Use 'naive video models' for the full dynamic list from fal.ai)
57
+
58
+ Parameters (via --input JSON — passed directly to fal.ai):
59
+ prompt Text description of the video
60
+ duration Duration in seconds: "5" or "10" (model-dependent)
61
+ image_url Source image for image-to-video
62
+ aspect_ratio "16:9", "9:16", "1:1" (model-dependent)
63
+ negative_prompt Text describing what to avoid
64
+ cfg_scale Guidance scale 0-1 (higher = more literal, default 0.5)
65
+ generate_audio Enable native audio generation (boolean, default true for Kling v3)
66
+
67
+ Cost: dynamic — based on fal.ai model pricing ($0.50/credit)
68
+ Use 'GET /v1/video/pricing?model=<id>&duration=<s>' to preview cost.
69
+ Credits deducted only on successful completion. Failed jobs are free.
70
+ `)
71
+ .action(async (prompt, opts) => {
72
+ let input;
73
+ if (opts.input) {
74
+ input = JSON.parse(opts.input);
75
+ }
76
+ else if (prompt) {
77
+ input = { prompt };
78
+ if (opts.duration)
79
+ input.duration = opts.duration;
80
+ if (opts.imageUrl)
81
+ input.image_url = opts.imageUrl;
82
+ }
83
+ else if (opts.imageUrl) {
84
+ input = { image_url: opts.imageUrl };
85
+ if (opts.duration)
86
+ input.duration = opts.duration;
87
+ }
88
+ else {
89
+ console.error(JSON.stringify({
90
+ success: false,
91
+ action: "video.generate",
92
+ error: { code: "missing_argument", message: "Provide a prompt, --image-url, or --input JSON" },
93
+ recovery_steps: [
94
+ { command: 'naive video generate "your prompt" --model <model>', description: "Text-to-video generation" },
95
+ { command: "naive video generate --model <model> --image-url <url>", description: "Image-to-video generation" },
96
+ { command: "naive video models", description: "List available video models" },
97
+ ],
98
+ }, null, 2));
99
+ process.exit(1);
100
+ }
101
+ const resp = await apiRequest("POST", "/v1/video/generate", {
102
+ model: opts.model,
103
+ input,
104
+ });
105
+ handleApiError("video.generate", resp);
106
+ if (resp.status === 202) {
107
+ const data = resp.data;
108
+ if (opts.wait) {
109
+ agentOutput({
110
+ action: "video.generate.submitted",
111
+ result: { job_id: data.job_id, status: "polling", model: opts.model },
112
+ next_steps: [],
113
+ hints: ["Waiting for video generation to complete (typically 30-120s)..."],
114
+ });
115
+ await pollJob(data.job_id);
116
+ }
117
+ else {
118
+ agentOutput({
119
+ action: "video.generate.submitted",
120
+ result: { job_id: data.job_id, status: "queued", model: opts.model },
121
+ next_steps: [
122
+ { command: `naive video status ${data.job_id}`, description: "Check generation progress" },
123
+ { command: `naive jobs get ${data.job_id}`, description: "Get full job details" },
124
+ ],
125
+ hints: [
126
+ `Video generation submitted (model: ${opts.model})`,
127
+ "Credits deducted only on successful completion",
128
+ "Typical time: 30-120 seconds depending on model and duration",
129
+ ],
130
+ related_commands: ["naive video status", "naive jobs get", "naive jobs"],
131
+ });
132
+ }
133
+ }
134
+ else {
135
+ agentOutput({
136
+ action: "video.generate",
137
+ result: resp.data,
138
+ next_steps: [
139
+ { command: 'naive video generate "another prompt" --model <model>', description: "Generate another video" },
140
+ ],
141
+ hints: ["Video generated synchronously"],
142
+ related_commands: ["naive video models"],
143
+ });
144
+ }
145
+ });
146
+ videoCmd
147
+ .command("status <job_id>")
148
+ .description("Check the status of a video generation job")
149
+ .addHelpText("after", `
150
+ Examples:
151
+ $ naive video status 550e8400-e29b-41d4-a716-446655440000
152
+
153
+ What this does:
154
+ Returns the current status of a video generation job:
155
+ - queued: waiting to be processed
156
+ - processing: actively generating
157
+ - completed: video ready (includes URL)
158
+ - failed: generation failed (includes error message)
159
+
160
+ When completed, the result includes a video URL.
161
+ `)
162
+ .action(async (jobId) => {
163
+ const resp = await apiRequest("GET", `/v1/video/${jobId}`);
164
+ handleApiError("video.status", resp);
165
+ const data = resp.data;
166
+ agentOutput({
167
+ action: "video.status",
168
+ result: resp.data,
169
+ next_steps: [
170
+ ...(data.status === "completed" && data.result?.video
171
+ ? [{ command: `# Download: curl -o video.mp4 "${data.result.video.url}"`, description: "Download the generated video" }]
172
+ : []),
173
+ ...(data.status === "queued" || data.status === "processing"
174
+ ? [{ command: `naive video status ${jobId}`, description: "Check again in 10-30 seconds" }]
175
+ : []),
176
+ { command: 'naive video generate "new prompt" --model <model>', description: "Generate another video" },
177
+ ],
178
+ hints: [
179
+ `Job status: ${data.status}`,
180
+ ...(data.status === "processing" ? ["Video generation typically takes 30-120 seconds"] : []),
181
+ ],
182
+ related_commands: ["naive video generate", "naive jobs"],
183
+ });
184
+ });
185
+ videoCmd
186
+ .command("models")
187
+ .description("List available fal.ai video generation models with pricing")
188
+ .addHelpText("after", `
189
+ Examples:
190
+ $ naive video models
191
+
192
+ What this does:
193
+ Returns all supported fal.ai video models with:
194
+ - Model ID (use as --model parameter)
195
+ - Type (text-to-video or image-to-video)
196
+ - Approximate generation time
197
+ - Credit cost per generation
198
+ - Supported durations and parameters
199
+ `)
200
+ .action(async () => {
201
+ const resp = await apiRequest("GET", "/v1/video/models");
202
+ handleApiError("video.models", resp);
203
+ agentOutput({
204
+ action: "video.models",
205
+ result: resp.data,
206
+ next_steps: [
207
+ { command: 'naive video generate "your prompt" --model <model_id>', description: "Generate a video with one of these models" },
208
+ ],
209
+ hints: [
210
+ "Use the model 'id' field as the --model parameter in 'naive video generate'",
211
+ "Text-to-video models accept a text prompt; image-to-video models require --image-url",
212
+ ],
213
+ related_commands: ["naive video generate", "naive video status"],
214
+ });
215
+ });
216
+ async function pollJob(jobId) {
217
+ while (true) {
218
+ await new Promise((r) => setTimeout(r, 5000));
219
+ const resp = await apiRequest("GET", `/v1/jobs/${jobId}`);
220
+ const data = resp.data;
221
+ if (data.status === "completed" || data.status === "failed") {
222
+ agentOutput({
223
+ action: "video.generate.completed",
224
+ result: resp.data,
225
+ next_steps: [
226
+ ...(data.status === "completed" && data.result?.video
227
+ ? [{ command: `# Download: curl -o video.mp4 "${data.result.video.url}"`, description: "Download the generated video" }]
228
+ : []),
229
+ { command: 'naive video generate "another prompt" --model <model>', description: "Generate another video" },
230
+ ],
231
+ hints: [
232
+ data.status === "completed"
233
+ ? "Video generation complete — download URL available"
234
+ : "Video generation failed — no credits deducted",
235
+ ],
236
+ related_commands: ["naive video generate", "naive video models", "naive jobs"],
237
+ });
238
+ return;
239
+ }
240
+ process.stderr.write(` Progress: ${data.progress ?? 0}% (${data.status})\n`);
241
+ }
242
+ }
243
+ //# sourceMappingURL=video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/commands/video.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const whoamiCmd: Command;
@@ -0,0 +1,37 @@
1
+ import { Command } from "commander";
2
+ import { apiRequest, handleApiError } from "../client.js";
3
+ import { agentOutput } from "../output.js";
4
+ export const whoamiCmd = new Command("whoami")
5
+ .description("Display current authenticated agent identity and company context")
6
+ .addHelpText("after", `
7
+ Examples:
8
+ $ naive whoami
9
+
10
+ What this does:
11
+ Returns the agent name, ID, company name, and company ID associated
12
+ with the currently configured API key.
13
+
14
+ Use this to:
15
+ - Confirm which account is active
16
+ - Verify the API key is valid before running operations
17
+ - Check which company context you're operating under
18
+ `)
19
+ .action(async () => {
20
+ const resp = await apiRequest("GET", "/v1/auth/me");
21
+ handleApiError("whoami", resp);
22
+ const data = resp.data;
23
+ agentOutput({
24
+ action: "whoami",
25
+ result: data,
26
+ next_steps: [
27
+ { command: "naive status", description: "See full status including credits and resources" },
28
+ { command: "naive companies", description: "List all companies you have access to" },
29
+ { command: "naive identity", description: "View provisioned resources (email, phone)" },
30
+ ],
31
+ hints: [
32
+ `Currently operating as "${data.agent_name}" under "${data.company_name}"`,
33
+ ],
34
+ related_commands: ["naive status", "naive companies", "naive identity", "naive keys list"],
35
+ });
36
+ });
37
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
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,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,WAAW,CAAC;QACV,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,IAAI;QACZ,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;SAC3E;QACD,gBAAgB,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;KAC3F,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
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
+ }
8
+ export declare function loadConfig(): NaiveConfig;
9
+ export declare function saveConfig(config: Partial<NaiveConfig>): void;
10
+ export declare function getApiKey(): string;
package/dist/config.js ADDED
@@ -0,0 +1,40 @@
1
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } 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
+ export function saveConfig(config) {
23
+ if (!existsSync(CONFIG_DIR))
24
+ mkdirSync(CONFIG_DIR, { recursive: true });
25
+ const current = loadConfig();
26
+ const updated = { ...current, ...config };
27
+ writeFileSync(CONFIG_FILE, JSON.stringify(updated, null, 2));
28
+ }
29
+ export function getApiKey() {
30
+ const envKey = process.env.NAIVE_API_KEY;
31
+ if (envKey)
32
+ return envKey;
33
+ const config = loadConfig();
34
+ if (!config.api_key) {
35
+ console.error("No API key found. Run `naive register` or `naive link` first.");
36
+ process.exit(1);
37
+ }
38
+ return config.api_key;
39
+ }
40
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAUpD,MAAM,cAAc,GAAgB;IAClC,QAAQ,EAAE,yBAAyB;CACpC,CAAC;AAEF,MAAM,UAAU,UAAU;IACxB,IAAI,MAAM,GAAgB,EAAE,GAAG,cAAc,EAAE,CAAC;IAChD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA4B;IACrD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1C,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { registerCmd } from "./commands/register.js";
4
+ import { loginCmd } from "./commands/login.js";
5
+ import { linkCmd, verifyCmd } from "./commands/link.js";
6
+ import { companiesCmd } from "./commands/companies.js";
7
+ import { whoamiCmd } from "./commands/whoami.js";
8
+ import { identityCmd } from "./commands/identity.js";
9
+ import { keysCmd } from "./commands/keys.js";
10
+ import { statusCmd } from "./commands/status.js";
11
+ import { usageCmd } from "./commands/usage.js";
12
+ import { emailCmd } from "./commands/email.js";
13
+ import { searchCmd } from "./commands/search.js";
14
+ import { imagesCmd } from "./commands/images.js";
15
+ import { videoCmd } from "./commands/video.js";
16
+ import { jobsCmd } from "./commands/jobs.js";
17
+ import { domainsCmd } from "./commands/domains.js";
18
+ import { billingCmd } from "./commands/billing.js";
19
+ import { socialCmd } from "./commands/social.js";
20
+ const program = new Command();
21
+ program
22
+ .name("naive")
23
+ .description(`Naive AI Business Primitives CLI — unified agent toolkit for email, search, image/video generation, and more.
24
+
25
+ Built for agentic use: every command returns structured JSON with result data,
26
+ next steps, and contextual guidance for autonomous operation.`)
27
+ .version("0.1.0")
28
+ .addHelpText("after", `
29
+ Getting Started:
30
+ $ naive register --name "My Agent" --email me@example.com --password mypassword
31
+ $ naive status
32
+ $ naive identity
33
+
34
+ Authentication:
35
+ register Create a new account (email + password → API key)
36
+ login Log in to existing account (email + password → API key)
37
+ link Passwordless account linking via email verification
38
+ verify Complete the link flow with verification code
39
+
40
+ Account Management:
41
+ whoami Show current identity
42
+ companies List/switch companies
43
+ domains Manage email domains (list, connect, verify, purchase)
44
+ keys Manage API keys
45
+ status Full status overview
46
+ usage Credit transaction history
47
+ identity View provisioned resources
48
+ billing Manage billing — plans, subscriptions, credit top-ups
49
+
50
+ Primitives:
51
+ email Send/receive email via provisioned inboxes
52
+ search Web search, URL extraction, deep research
53
+ images AI image generation (fal.ai) + stock photos (Pexels)
54
+ video AI video generation (fal.ai)
55
+ social Social media — connect accounts, post, analytics
56
+ jobs Monitor async generation/research jobs
57
+
58
+ Environment Variables:
59
+ NAIVE_API_KEY Override API key (for CI/headless use)
60
+ NAIVE_BASE_URL Override API URL (for local dev, default: https://api.usenaive.ai)
61
+
62
+ Documentation: https://docs.usenaive.ai
63
+ `);
64
+ program.addCommand(registerCmd);
65
+ program.addCommand(loginCmd);
66
+ program.addCommand(linkCmd);
67
+ program.addCommand(verifyCmd);
68
+ program.addCommand(companiesCmd);
69
+ program.addCommand(whoamiCmd);
70
+ program.addCommand(identityCmd);
71
+ program.addCommand(keysCmd);
72
+ program.addCommand(statusCmd);
73
+ program.addCommand(usageCmd);
74
+ program.addCommand(domainsCmd);
75
+ program.addCommand(billingCmd);
76
+ program.addCommand(emailCmd);
77
+ program.addCommand(searchCmd);
78
+ program.addCommand(imagesCmd);
79
+ program.addCommand(videoCmd);
80
+ program.addCommand(socialCmd);
81
+ program.addCommand(jobsCmd);
82
+ program.parse();
83
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC;;;8DAG+C,CAAC;KAC5D,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCvB,CAAC,CAAC;AAEH,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5B,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5B,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7B,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7B,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAE5B,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,37 @@
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
+ */
6
+ export interface NextStep {
7
+ command: string;
8
+ description: string;
9
+ when?: string;
10
+ }
11
+ export interface AgentOutput {
12
+ success: boolean;
13
+ action: string;
14
+ result: unknown;
15
+ next_steps: NextStep[];
16
+ hints?: string[];
17
+ related_commands?: string[];
18
+ help_markdown?: string;
19
+ }
20
+ export declare function agentOutput(opts: {
21
+ action: string;
22
+ result: unknown;
23
+ next_steps: NextStep[];
24
+ hints?: string[];
25
+ related_commands?: string[];
26
+ help_markdown?: string;
27
+ }): void;
28
+ export declare function agentError(opts: {
29
+ action: string;
30
+ error: {
31
+ code?: string;
32
+ message?: string;
33
+ hint?: string;
34
+ };
35
+ recovery_steps: NextStep[];
36
+ }): void;
37
+ export declare function formatApiError(action: string, data: unknown): void;
package/dist/output.js ADDED
@@ -0,0 +1,84 @@
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
+ */
6
+ export function agentOutput(opts) {
7
+ const output = {
8
+ success: true,
9
+ action: opts.action,
10
+ result: opts.result,
11
+ next_steps: opts.next_steps,
12
+ ...(opts.hints && { hints: opts.hints }),
13
+ ...(opts.related_commands && { related_commands: opts.related_commands }),
14
+ ...(opts.help_markdown && { help_markdown: opts.help_markdown }),
15
+ };
16
+ console.log(JSON.stringify(output, null, 2));
17
+ }
18
+ export function agentError(opts) {
19
+ const output = {
20
+ success: false,
21
+ action: opts.action,
22
+ error: opts.error,
23
+ recovery_steps: opts.recovery_steps,
24
+ };
25
+ console.error(JSON.stringify(output, null, 2));
26
+ process.exit(1);
27
+ }
28
+ export function formatApiError(action, data) {
29
+ const err = data;
30
+ if (err.error) {
31
+ agentError({
32
+ action,
33
+ error: err.error,
34
+ recovery_steps: getRecoverySteps(err.error.code),
35
+ });
36
+ }
37
+ else {
38
+ agentError({
39
+ action,
40
+ error: { code: "unknown", message: "Unexpected error response" },
41
+ recovery_steps: [{ command: "naive status", description: "Check API connectivity and auth status" }],
42
+ });
43
+ }
44
+ }
45
+ function getRecoverySteps(code) {
46
+ switch (code) {
47
+ case "unauthorized":
48
+ return [
49
+ { command: "naive register --name <name> --email <email> --password <pw>", description: "Create a new account" },
50
+ { command: "naive login --email <email> --password <pw>", description: "Log in to existing account" },
51
+ ];
52
+ case "insufficient_credits":
53
+ 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)" },
57
+ { command: "naive billing packs", description: "See all available credit packs" },
58
+ ];
59
+ case "billing_blocked":
60
+ 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)" },
63
+ { command: "naive billing plans", description: "Compare all plans" },
64
+ ];
65
+ case "rate_limited":
66
+ return [
67
+ { command: "# wait 60 seconds then retry", description: "Rate limits reset after 60s" },
68
+ ];
69
+ case "resource_not_found":
70
+ return [
71
+ { command: "naive identity", description: "List available resources" },
72
+ { command: "naive companies", description: "Check available companies" },
73
+ ];
74
+ case "invalid_input":
75
+ return [
76
+ { command: "naive <command> --help", description: "See required parameters and examples" },
77
+ ];
78
+ default:
79
+ return [
80
+ { command: "naive status", description: "Check API connectivity and auth status" },
81
+ ];
82
+ }
83
+ }
84
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usenaive-sdk/cli",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "type": "module",
5
5
  "description": "CLI for Naive AI Business Primitives API",
6
6
  "license": "MIT",