@usenaive-sdk/cli 0.15.1 → 1.0.1

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 (281) hide show
  1. package/README.md +43 -402
  2. package/dist/index.js +51796 -502
  3. package/package.json +22 -18
  4. package/dist/client.d.ts +0 -108
  5. package/dist/client.js +0 -458
  6. package/dist/client.js.map +0 -1
  7. package/dist/commands/account-kits.d.ts +0 -2
  8. package/dist/commands/account-kits.js +0 -71
  9. package/dist/commands/account-kits.js.map +0 -1
  10. package/dist/commands/aeo.d.ts +0 -2
  11. package/dist/commands/aeo.js +0 -451
  12. package/dist/commands/aeo.js.map +0 -1
  13. package/dist/commands/agent-profiles.d.ts +0 -11
  14. package/dist/commands/agent-profiles.js +0 -120
  15. package/dist/commands/agent-profiles.js.map +0 -1
  16. package/dist/commands/agents.d.ts +0 -2
  17. package/dist/commands/agents.js +0 -916
  18. package/dist/commands/agents.js.map +0 -1
  19. package/dist/commands/app-data.d.ts +0 -2
  20. package/dist/commands/app-data.js +0 -445
  21. package/dist/commands/app-data.js.map +0 -1
  22. package/dist/commands/approvals.d.ts +0 -2
  23. package/dist/commands/approvals.js +0 -242
  24. package/dist/commands/approvals.js.map +0 -1
  25. package/dist/commands/apps.d.ts +0 -9
  26. package/dist/commands/apps.js +0 -844
  27. package/dist/commands/apps.js.map +0 -1
  28. package/dist/commands/audio.d.ts +0 -9
  29. package/dist/commands/audio.js +0 -391
  30. package/dist/commands/audio.js.map +0 -1
  31. package/dist/commands/auth.d.ts +0 -31
  32. package/dist/commands/auth.js +0 -428
  33. package/dist/commands/auth.js.map +0 -1
  34. package/dist/commands/billing.d.ts +0 -2
  35. package/dist/commands/billing.js +0 -250
  36. package/dist/commands/billing.js.map +0 -1
  37. package/dist/commands/brain.d.ts +0 -2
  38. package/dist/commands/brain.js +0 -1300
  39. package/dist/commands/brain.js.map +0 -1
  40. package/dist/commands/browser.d.ts +0 -2
  41. package/dist/commands/browser.js +0 -378
  42. package/dist/commands/browser.js.map +0 -1
  43. package/dist/commands/business.d.ts +0 -2
  44. package/dist/commands/business.js +0 -566
  45. package/dist/commands/business.js.map +0 -1
  46. package/dist/commands/cards.d.ts +0 -2
  47. package/dist/commands/cards.js +0 -419
  48. package/dist/commands/cards.js.map +0 -1
  49. package/dist/commands/ceo.d.ts +0 -2
  50. package/dist/commands/ceo.js +0 -369
  51. package/dist/commands/ceo.js.map +0 -1
  52. package/dist/commands/clone.d.ts +0 -2
  53. package/dist/commands/clone.js +0 -203
  54. package/dist/commands/clone.js.map +0 -1
  55. package/dist/commands/companies.d.ts +0 -10
  56. package/dist/commands/companies.js +0 -283
  57. package/dist/commands/companies.js.map +0 -1
  58. package/dist/commands/company-data.d.ts +0 -2
  59. package/dist/commands/company-data.js +0 -168
  60. package/dist/commands/company-data.js.map +0 -1
  61. package/dist/commands/compute.d.ts +0 -2
  62. package/dist/commands/compute.js +0 -498
  63. package/dist/commands/compute.js.map +0 -1
  64. package/dist/commands/config.d.ts +0 -2
  65. package/dist/commands/config.js +0 -36
  66. package/dist/commands/config.js.map +0 -1
  67. package/dist/commands/connections.d.ts +0 -8
  68. package/dist/commands/connections.js +0 -137
  69. package/dist/commands/connections.js.map +0 -1
  70. package/dist/commands/cron-jobs.d.ts +0 -2
  71. package/dist/commands/cron-jobs.js +0 -245
  72. package/dist/commands/cron-jobs.js.map +0 -1
  73. package/dist/commands/domains.d.ts +0 -2
  74. package/dist/commands/domains.js +0 -474
  75. package/dist/commands/domains.js.map +0 -1
  76. package/dist/commands/ecommerce.d.ts +0 -2
  77. package/dist/commands/ecommerce.js +0 -277
  78. package/dist/commands/ecommerce.js.map +0 -1
  79. package/dist/commands/email.d.ts +0 -2
  80. package/dist/commands/email.js +0 -336
  81. package/dist/commands/email.js.map +0 -1
  82. package/dist/commands/employees.d.ts +0 -2
  83. package/dist/commands/employees.js +0 -190
  84. package/dist/commands/employees.js.map +0 -1
  85. package/dist/commands/env.d.ts +0 -7
  86. package/dist/commands/env.js +0 -112
  87. package/dist/commands/env.js.map +0 -1
  88. package/dist/commands/formation.d.ts +0 -2
  89. package/dist/commands/formation.js +0 -273
  90. package/dist/commands/formation.js.map +0 -1
  91. package/dist/commands/identity.d.ts +0 -2
  92. package/dist/commands/identity.js +0 -110
  93. package/dist/commands/identity.js.map +0 -1
  94. package/dist/commands/images.d.ts +0 -2
  95. package/dist/commands/images.js +0 -371
  96. package/dist/commands/images.js.map +0 -1
  97. package/dist/commands/init.d.ts +0 -5
  98. package/dist/commands/init.js +0 -43
  99. package/dist/commands/init.js.map +0 -1
  100. package/dist/commands/jobs.d.ts +0 -2
  101. package/dist/commands/jobs.js +0 -144
  102. package/dist/commands/jobs.js.map +0 -1
  103. package/dist/commands/keys.d.ts +0 -2
  104. package/dist/commands/keys.js +0 -156
  105. package/dist/commands/keys.js.map +0 -1
  106. package/dist/commands/legacy-auth.d.ts +0 -27
  107. package/dist/commands/legacy-auth.js +0 -64
  108. package/dist/commands/legacy-auth.js.map +0 -1
  109. package/dist/commands/llm.d.ts +0 -2
  110. package/dist/commands/llm.js +0 -125
  111. package/dist/commands/llm.js.map +0 -1
  112. package/dist/commands/login.d.ts +0 -2
  113. package/dist/commands/login.js +0 -65
  114. package/dist/commands/login.js.map +0 -1
  115. package/dist/commands/logout.d.ts +0 -7
  116. package/dist/commands/logout.js +0 -55
  117. package/dist/commands/logout.js.map +0 -1
  118. package/dist/commands/logs.d.ts +0 -2
  119. package/dist/commands/logs.js +0 -42
  120. package/dist/commands/logs.js.map +0 -1
  121. package/dist/commands/loops.d.ts +0 -2
  122. package/dist/commands/loops.js +0 -260
  123. package/dist/commands/loops.js.map +0 -1
  124. package/dist/commands/media.d.ts +0 -2
  125. package/dist/commands/media.js +0 -183
  126. package/dist/commands/media.js.map +0 -1
  127. package/dist/commands/memory.d.ts +0 -2
  128. package/dist/commands/memory.js +0 -151
  129. package/dist/commands/memory.js.map +0 -1
  130. package/dist/commands/mobile.d.ts +0 -4
  131. package/dist/commands/mobile.js +0 -382
  132. package/dist/commands/mobile.js.map +0 -1
  133. package/dist/commands/module.d.ts +0 -8
  134. package/dist/commands/module.js +0 -48
  135. package/dist/commands/module.js.map +0 -1
  136. package/dist/commands/objectives.d.ts +0 -2
  137. package/dist/commands/objectives.js +0 -243
  138. package/dist/commands/objectives.js.map +0 -1
  139. package/dist/commands/payments.d.ts +0 -2
  140. package/dist/commands/payments.js +0 -131
  141. package/dist/commands/payments.js.map +0 -1
  142. package/dist/commands/people.d.ts +0 -2
  143. package/dist/commands/people.js +0 -197
  144. package/dist/commands/people.js.map +0 -1
  145. package/dist/commands/phone.d.ts +0 -2
  146. package/dist/commands/phone.js +0 -289
  147. package/dist/commands/phone.js.map +0 -1
  148. package/dist/commands/projects.d.ts +0 -13
  149. package/dist/commands/projects.js +0 -220
  150. package/dist/commands/projects.js.map +0 -1
  151. package/dist/commands/queue.d.ts +0 -2
  152. package/dist/commands/queue.js +0 -121
  153. package/dist/commands/queue.js.map +0 -1
  154. package/dist/commands/register.d.ts +0 -2
  155. package/dist/commands/register.js +0 -88
  156. package/dist/commands/register.js.map +0 -1
  157. package/dist/commands/report.d.ts +0 -17
  158. package/dist/commands/report.js +0 -109
  159. package/dist/commands/report.js.map +0 -1
  160. package/dist/commands/sandbox.d.ts +0 -2
  161. package/dist/commands/sandbox.js +0 -558
  162. package/dist/commands/sandbox.js.map +0 -1
  163. package/dist/commands/search.d.ts +0 -2
  164. package/dist/commands/search.js +0 -223
  165. package/dist/commands/search.js.map +0 -1
  166. package/dist/commands/seo.d.ts +0 -2
  167. package/dist/commands/seo.js +0 -528
  168. package/dist/commands/seo.js.map +0 -1
  169. package/dist/commands/sessions.d.ts +0 -6
  170. package/dist/commands/sessions.js +0 -109
  171. package/dist/commands/sessions.js.map +0 -1
  172. package/dist/commands/social-data.d.ts +0 -2
  173. package/dist/commands/social-data.js +0 -245
  174. package/dist/commands/social-data.js.map +0 -1
  175. package/dist/commands/social.d.ts +0 -2
  176. package/dist/commands/social.js +0 -407
  177. package/dist/commands/social.js.map +0 -1
  178. package/dist/commands/status.d.ts +0 -2
  179. package/dist/commands/status.js +0 -79
  180. package/dist/commands/status.js.map +0 -1
  181. package/dist/commands/support.d.ts +0 -2
  182. package/dist/commands/support.js +0 -134
  183. package/dist/commands/support.js.map +0 -1
  184. package/dist/commands/tasks.d.ts +0 -2
  185. package/dist/commands/tasks.js +0 -409
  186. package/dist/commands/tasks.js.map +0 -1
  187. package/dist/commands/teams.d.ts +0 -69
  188. package/dist/commands/teams.js +0 -503
  189. package/dist/commands/teams.js.map +0 -1
  190. package/dist/commands/trading.d.ts +0 -2
  191. package/dist/commands/trading.js +0 -333
  192. package/dist/commands/trading.js.map +0 -1
  193. package/dist/commands/up.d.ts +0 -551
  194. package/dist/commands/up.js +0 -1149
  195. package/dist/commands/up.js.map +0 -1
  196. package/dist/commands/usage.d.ts +0 -2
  197. package/dist/commands/usage.js +0 -73
  198. package/dist/commands/usage.js.map +0 -1
  199. package/dist/commands/use.d.ts +0 -12
  200. package/dist/commands/use.js +0 -96
  201. package/dist/commands/use.js.map +0 -1
  202. package/dist/commands/users.d.ts +0 -10
  203. package/dist/commands/users.js +0 -82
  204. package/dist/commands/users.js.map +0 -1
  205. package/dist/commands/vault.d.ts +0 -2
  206. package/dist/commands/vault.js +0 -101
  207. package/dist/commands/vault.js.map +0 -1
  208. package/dist/commands/verification.d.ts +0 -2
  209. package/dist/commands/verification.js +0 -152
  210. package/dist/commands/verification.js.map +0 -1
  211. package/dist/commands/verify-email.d.ts +0 -19
  212. package/dist/commands/verify-email.js +0 -130
  213. package/dist/commands/verify-email.js.map +0 -1
  214. package/dist/commands/video.d.ts +0 -2
  215. package/dist/commands/video.js +0 -417
  216. package/dist/commands/video.js.map +0 -1
  217. package/dist/commands/voice.d.ts +0 -2
  218. package/dist/commands/voice.js +0 -516
  219. package/dist/commands/voice.js.map +0 -1
  220. package/dist/commands/wallet.d.ts +0 -2
  221. package/dist/commands/wallet.js +0 -244
  222. package/dist/commands/wallet.js.map +0 -1
  223. package/dist/commands/webhooks.d.ts +0 -13
  224. package/dist/commands/webhooks.js +0 -119
  225. package/dist/commands/webhooks.js.map +0 -1
  226. package/dist/commands/whoami.d.ts +0 -2
  227. package/dist/commands/whoami.js +0 -53
  228. package/dist/commands/whoami.js.map +0 -1
  229. package/dist/config.d.ts +0 -42
  230. package/dist/config.js +0 -83
  231. package/dist/config.js.map +0 -1
  232. package/dist/index.d.ts +0 -3
  233. package/dist/index.js.map +0 -1
  234. package/dist/lib/brain-select.d.ts +0 -193
  235. package/dist/lib/brain-select.js +0 -403
  236. package/dist/lib/brain-select.js.map +0 -1
  237. package/dist/lib/cli-validation.d.ts +0 -12
  238. package/dist/lib/cli-validation.js +0 -46
  239. package/dist/lib/cli-validation.js.map +0 -1
  240. package/dist/lib/config-errors.d.ts +0 -4
  241. package/dist/lib/config-errors.js +0 -13
  242. package/dist/lib/config-errors.js.map +0 -1
  243. package/dist/lib/deprecation.d.ts +0 -158
  244. package/dist/lib/deprecation.js +0 -140
  245. package/dist/lib/deprecation.js.map +0 -1
  246. package/dist/lib/duration.d.ts +0 -8
  247. package/dist/lib/duration.js +0 -11
  248. package/dist/lib/duration.js.map +0 -1
  249. package/dist/lib/http-response.d.ts +0 -11
  250. package/dist/lib/http-response.js +0 -96
  251. package/dist/lib/http-response.js.map +0 -1
  252. package/dist/lib/llm-paywall.d.ts +0 -82
  253. package/dist/lib/llm-paywall.js +0 -231
  254. package/dist/lib/llm-paywall.js.map +0 -1
  255. package/dist/lib/pricing.d.ts +0 -132
  256. package/dist/lib/pricing.js +0 -148
  257. package/dist/lib/pricing.js.map +0 -1
  258. package/dist/lib/starter-config.d.ts +0 -13
  259. package/dist/lib/starter-config.js +0 -71
  260. package/dist/lib/starter-config.js.map +0 -1
  261. package/dist/lib/stream-frames.d.ts +0 -114
  262. package/dist/lib/stream-frames.js +0 -169
  263. package/dist/lib/stream-frames.js.map +0 -1
  264. package/dist/lib/teams-catalog.d.ts +0 -141
  265. package/dist/lib/teams-catalog.js +0 -841
  266. package/dist/lib/teams-catalog.js.map +0 -1
  267. package/dist/lib/unknown-command.d.ts +0 -71
  268. package/dist/lib/unknown-command.js +0 -132
  269. package/dist/lib/unknown-command.js.map +0 -1
  270. package/dist/lib/version-check.d.ts +0 -26
  271. package/dist/lib/version-check.js +0 -21
  272. package/dist/lib/version-check.js.map +0 -1
  273. package/dist/output.d.ts +0 -246
  274. package/dist/output.js +0 -539
  275. package/dist/output.js.map +0 -1
  276. package/dist/prompt.d.ts +0 -17
  277. package/dist/prompt.js +0 -70
  278. package/dist/prompt.js.map +0 -1
  279. package/dist/version.d.ts +0 -2
  280. package/dist/version.js +0 -14
  281. package/dist/version.js.map +0 -1
@@ -1,110 +0,0 @@
1
- import { Command } from "commander";
2
- import { apiRequest, handleApiError } from "../client.js";
3
- import { agentOutput } from "../output.js";
4
- export const identityCmd = new Command("identity")
5
- .description("View agent identity and all provisioned resources for the current company")
6
- .addHelpText("after", `
7
- Examples:
8
- $ naive identity
9
- $ naive identity emails
10
- $ naive identity resources
11
-
12
- What this does:
13
- Returns complete identity info for the current agent/company:
14
- - Agent details (name, role, status)
15
- - Company info
16
- - Email inboxes available for sending
17
- - Phone numbers (if provisioned)
18
- - Connected integrations
19
-
20
- Use this to:
21
- - Discover what email addresses you can send from
22
- - Check what resources are provisioned before using them
23
- - Verify your agent has the necessary access for a task
24
- `)
25
- .action(async () => {
26
- const resp = await apiRequest("GET", "/v1/identity");
27
- handleApiError("identity", resp);
28
- agentOutput({
29
- action: "identity",
30
- result: resp.data,
31
- next_steps: [
32
- { command: "naive identity emails", description: "List only email inboxes (with UUIDs for sending)" },
33
- { command: "naive email send --from-inbox <uuid> --to user@example.com --subject Hi --body Hello", description: "Send an email using a discovered inbox", when: "You need to send an email" },
34
- { command: "naive status", description: "Check credits and API status" },
35
- ],
36
- hints: [
37
- "Email inboxes listed here provide the UUID needed for the --from-inbox parameter",
38
- "Resources shown are specific to your current company context",
39
- ],
40
- related_commands: ["naive identity emails", "naive identity resources", "naive email inboxes"],
41
- });
42
- });
43
- identityCmd
44
- .command("emails")
45
- .description("List email inboxes available for sending (returns inbox UUIDs)")
46
- .addHelpText("after", `
47
- Examples:
48
- $ naive identity emails
49
-
50
- What this does:
51
- Lists all email addresses provisioned for your company that you can
52
- send from. Each inbox has a UUID that you use as --from-inbox when
53
- sending emails.
54
-
55
- Output includes:
56
- - inbox_id: UUID to use in email commands
57
- - address: the email address
58
- - name: display name
59
- - status: active/disabled
60
- `)
61
- .action(async () => {
62
- const resp = await apiRequest("GET", "/v1/identity/emails");
63
- handleApiError("identity.emails", resp);
64
- const data = resp.data;
65
- const emails = data.emails ?? data.inboxes ?? [];
66
- agentOutput({
67
- action: "identity.emails",
68
- result: resp.data,
69
- next_steps: [
70
- ...(emails.length > 0
71
- ? [{ command: `naive email send --from-inbox ${emails[0].id} --to <recipient> --subject <subject> --body <body>`, description: "Send an email from the first available inbox" }]
72
- : []),
73
- { command: "naive email inbox", description: "View received emails" },
74
- ],
75
- hints: [
76
- `Found ${emails.length} email inboxes`,
77
- "Use the inbox UUID as --from-inbox when calling 'naive email send'",
78
- ],
79
- related_commands: ["naive email send", "naive email inbox", "naive email read"],
80
- });
81
- });
82
- identityCmd
83
- .command("resources")
84
- .description("List all provisioned resources (email, phone, integrations)")
85
- .addHelpText("after", `
86
- Examples:
87
- $ naive identity resources
88
-
89
- What this does:
90
- Returns a comprehensive list of all resources provisioned for your
91
- company, grouped by type: email inboxes, phone numbers, domains,
92
- and connected third-party integrations.
93
- `)
94
- .action(async () => {
95
- const resp = await apiRequest("GET", "/v1/identity/resources");
96
- handleApiError("identity.resources", resp);
97
- agentOutput({
98
- action: "identity.resources",
99
- result: resp.data,
100
- next_steps: [
101
- { command: "naive identity emails", description: "See detailed email inbox info" },
102
- { command: "naive status", description: "Check overall account status" },
103
- ],
104
- hints: [
105
- "Resources are scoped to your current company. Switch companies with 'naive companies select' to see different resources.",
106
- ],
107
- related_commands: ["naive identity", "naive identity emails", "naive companies"],
108
- });
109
- });
110
- //# sourceMappingURL=identity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/commands/identity.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const imagesCmd: Command;
@@ -1,371 +0,0 @@
1
- import { Command } from "commander";
2
- import { apiRequest, handleApiError } from "../client.js";
3
- import { agentOutput, creditCostHint, creditEstimateHint } from "../output.js";
4
- export const imagesCmd = new Command("images")
5
- .description("Generate AI images or search stock photos")
6
- .addHelpText("after", `
7
- Subcommands:
8
- naive images generate <prompt> Generate images using AI models
9
- naive images stock <query> Search stock photos
10
- naive images status <job_id> Check generation job status
11
- naive images models List available image generation models
12
-
13
- Examples:
14
- $ naive images generate "a futuristic city at sunset" --model fal-ai/flux/schnell
15
- $ naive images generate --input '{"prompt":"cat","image_size":"landscape_16_9"}' --model fal-ai/flux-pro/v1.1
16
- $ naive images stock "team collaboration" --count 5 --orientation landscape
17
- $ naive images models
18
- $ naive images status job-uuid-123
19
-
20
- Cost:
21
- - Image generation: dynamic, model-dependent (run 'naive images pricing --model <id>' to preview)
22
- - Pricing based on model costs, converted to credits ($0.05/credit)
23
- - Stock photo search: 0 credits (free)
24
- - Credits deducted only on successful job completion
25
- `);
26
- imagesCmd
27
- .command("generate [prompt]")
28
- .description("Generate images using AI models (async — returns job ID)")
29
- .option("--model <model>", "Model ID (default: fal-ai/flux/schnell)")
30
- .option("--input <json>", "Full input parameters as JSON (overrides prompt)")
31
- .option("--size <size>", "Image size: square_hd, landscape_4_3, landscape_16_9, portrait_4_3, portrait_16_9")
32
- .option("--num <n>", "Number of images to generate (default: 1)", "1")
33
- .option("--wait", "Wait for job to complete (polls until done)")
34
- .addHelpText("after", `
35
- Examples:
36
- $ naive images generate "a cat in a space suit" --model fal-ai/flux/schnell
37
- $ naive images generate "minimalist logo" --model fal-ai/flux-pro/v1.1 --size square_hd --num 4
38
- $ naive images generate --model fal-ai/flux/schnell --input '{"prompt":"sunset","image_size":"landscape_16_9","num_images":2}'
39
- $ naive images generate "product photo" --model fal-ai/flux/schnell --wait
40
-
41
- What this does:
42
- 1. Submits an image generation request
43
- 2. Returns a job ID (async processing)
44
- 3. Use --wait to block until images are ready, or check with 'naive images status'
45
-
46
- Available models (use 'naive images models' for full list):
47
- fal-ai/flux/schnell Fast generation (~5s), good quality (default)
48
- fal-ai/flux-pro/v1.1 High quality (~15s)
49
- fal-ai/flux/dev Development model (~10s)
50
- fal-ai/flux-realism Photorealistic results
51
- fal-ai/recraft-v3 Design-focused (logos, illustrations)
52
-
53
- Parameters (via --input JSON):
54
- prompt Text description of the image (required)
55
- image_size square_hd | square | landscape_4_3 | landscape_16_9 | portrait_4_3 | portrait_16_9
56
- num_images Number of images (1-4)
57
- seed Reproducibility seed (same seed + prompt = same result)
58
- guidance_scale CFG guidance scale (FLUX Schnell/Dev only, default 3.5)
59
- num_inference_steps Quality steps (FLUX Schnell: 1-12, default 4)
60
- output_format "jpeg" or "png" (default: jpeg)
61
- enable_safety_checker Boolean (default: true)
62
- image_url / image_urls Source image for edit/image-to-image models. Either form
63
- is accepted — a single image_url is auto-wrapped to image_urls.
64
-
65
- Reading the result (after completion, via 'naive images status <id>'):
66
- Submit returns the job under 'id' (job_id is a deprecated alias).
67
- The output URL is at result.media[0].url — a flat, model-independent path.
68
- (result.result.images[0].url is the raw provider payload; media[] is preferred.)
69
-
70
- Cost: dynamic — based on model pricing ($0.05/credit)
71
- Run 'naive images pricing --model <id> --num <n>' to preview cost before generating.
72
- Credits deducted only on successful completion. Failed jobs are free.
73
- `)
74
- .action(async (prompt, opts) => {
75
- let input;
76
- if (opts.input) {
77
- input = JSON.parse(opts.input);
78
- }
79
- else if (prompt) {
80
- input = {
81
- prompt,
82
- image_size: opts.size ?? "square_hd",
83
- num_images: parseInt(opts.num),
84
- };
85
- }
86
- else {
87
- console.log(JSON.stringify({
88
- success: false,
89
- action: "images.generate",
90
- error: { code: "missing_argument", message: "Provide a prompt or --input JSON" },
91
- recovery_steps: [
92
- { command: 'naive images generate "your prompt" --model fal-ai/flux/schnell', description: "Generate with a text prompt" },
93
- { command: "naive images generate --model <model> --input '{...}'", description: "Generate with full model parameters" },
94
- { command: "naive images models", description: "List available models" },
95
- ],
96
- }, null, 2));
97
- process.exit(1);
98
- }
99
- const resp = await apiRequest("POST", "/v1/images/generate", {
100
- model: opts.model,
101
- input,
102
- });
103
- handleApiError("images.generate", resp);
104
- if (resp.status === 202) {
105
- const data = resp.data;
106
- const modelUsed = opts.model ?? "fal-ai/flux/schnell";
107
- if (opts.wait) {
108
- agentOutput({
109
- action: "images.generate.submitted",
110
- // Surface the estimate at submit so spend is visible before the wait (N6).
111
- result: { job_id: data.job_id, status: "polling", model: modelUsed, estimated_credits: data.estimated_credits ?? null },
112
- next_steps: [],
113
- hints: [
114
- "Waiting for image generation to complete...",
115
- ...(creditEstimateHint(resp.data) ? [creditEstimateHint(resp.data)] : []),
116
- ],
117
- });
118
- await pollJob(data.job_id);
119
- }
120
- else {
121
- agentOutput({
122
- action: "images.generate.submitted",
123
- result: { job_id: data.job_id, status: "queued", model: modelUsed, estimated_credits: data.estimated_credits ?? null },
124
- next_steps: [
125
- { command: `naive images status ${data.job_id}`, description: "Check generation progress" },
126
- { command: `naive jobs get ${data.job_id}`, description: "Get full job details" },
127
- ],
128
- hints: [
129
- `Image generation submitted (model: ${modelUsed})`,
130
- // Echoes the API's pre-flight estimate (same source that bills at completion) — N6.
131
- ...(creditEstimateHint(resp.data) ? [creditEstimateHint(resp.data)] : ["Credits deducted only on successful completion"]),
132
- "Typical time: 5-15 seconds depending on model",
133
- ],
134
- related_commands: ["naive images status", "naive jobs get", "naive jobs"],
135
- });
136
- }
137
- }
138
- else {
139
- agentOutput({
140
- action: "images.generate",
141
- result: resp.data,
142
- next_steps: [
143
- { command: 'naive images generate "another prompt" --model <model>', description: "Generate another image" },
144
- { command: "naive images stock <query>", description: "Search stock photos instead" },
145
- ],
146
- hints: ["Image generated synchronously"],
147
- related_commands: ["naive images stock", "naive images models"],
148
- });
149
- }
150
- });
151
- imagesCmd
152
- .command("status <job_id>")
153
- .description("Check the status of an image generation job")
154
- .addHelpText("after", `
155
- Examples:
156
- $ naive images status 550e8400-e29b-41d4-a716-446655440000
157
-
158
- What this does:
159
- Returns the current status of an image generation job:
160
- - queued: waiting to be processed
161
- - processing: actively generating
162
- - completed: images ready (includes URLs)
163
- - failed: generation failed (includes error message)
164
-
165
- When completed, the result includes image URLs that you can download or use.
166
- `)
167
- .action(async (jobId) => {
168
- const resp = await apiRequest("GET", `/v1/images/${jobId}`);
169
- handleApiError("images.status", resp);
170
- const data = resp.data;
171
- // N12: prefer the flat, model-independent media[] path; fall back to the raw
172
- // provider nesting for older API responses that predate media[].
173
- const imageUrl = data.media?.[0]?.url ?? data.result?.images?.[0]?.url;
174
- agentOutput({
175
- action: "images.status",
176
- result: resp.data,
177
- next_steps: [
178
- ...(data.status === "completed" && imageUrl
179
- ? [{ command: `# Download: curl -o image.png "${imageUrl}"`, description: "Download the generated image (result.media[0].url)" }]
180
- : []),
181
- ...(data.status === "queued" || data.status === "processing"
182
- ? [{ command: `naive images status ${jobId}`, description: "Check again in a few seconds" }]
183
- : []),
184
- { command: 'naive images generate "new prompt" --model <model>', description: "Generate another image" },
185
- ],
186
- hints: [
187
- `Job status: ${data.status}`,
188
- ...(data.status === "completed" ? [`${data.result?.images?.length ?? 0} image(s) generated`] : []),
189
- // Post-hoc: the completed job's ACTUAL credits_used — same single source
190
- // as the pre-flight estimate, so before/at/after agree (N6).
191
- ...(creditCostHint(resp.data) ? [creditCostHint(resp.data)] : []),
192
- ...(data.status === "failed" ? [`Failed (no credits deducted). Reason: ${data.error || "unknown"}`] : []),
193
- ],
194
- related_commands: ["naive images generate", "naive jobs"],
195
- });
196
- });
197
- imagesCmd
198
- .command("stock <query>")
199
- .description("Search stock photos")
200
- .option("--count <n>", "Number of results (default: 10, max: 80)", "10")
201
- .option("--orientation <type>", "Filter: landscape | portrait | square")
202
- .option("--color <color>", "Filter by color (red, orange, yellow, green, turquoise, blue, violet, pink, brown, black, gray, white, or hex like #ffffff)")
203
- .option("--size <size>", "Minimum photo size: large | medium | small")
204
- .addHelpText("after", `
205
- Examples:
206
- $ naive images stock "team collaboration"
207
- $ naive images stock "nature mountain" --count 5 --orientation landscape
208
- $ naive images stock "office workspace" --orientation square
209
- $ naive images stock "abstract background" --color blue --size large
210
-
211
- What this does:
212
- Searches stock photos matching the query.
213
- Returns photo URLs in multiple sizes (original, large, medium, small).
214
-
215
- Parameters:
216
- query Search terms (natural language)
217
- --count Number of results (1-80, default 10)
218
- --orientation Filter by aspect ratio: landscape, portrait, or square
219
- --color Filter by dominant color
220
- --size Minimum photo size: large (24MP+), medium (12MP+), small
221
-
222
- Cost: 0 credits (free)
223
- `)
224
- .action(async (query, opts) => {
225
- const params = new URLSearchParams({ query, count: opts.count });
226
- if (opts.orientation)
227
- params.set("orientation", opts.orientation);
228
- if (opts.color)
229
- params.set("color", opts.color);
230
- if (opts.size)
231
- params.set("size", opts.size);
232
- const resp = await apiRequest("GET", `/v1/images/stock?${params}`);
233
- handleApiError("images.stock", resp);
234
- const data = resp.data;
235
- const count = data.photos?.length ?? 0;
236
- agentOutput({
237
- action: "images.stock",
238
- result: resp.data,
239
- next_steps: [
240
- { command: `naive images stock "${query}" --count 20`, description: "Get more results" },
241
- { command: `naive images stock "${query}" --orientation landscape`, description: "Filter by orientation" },
242
- { command: 'naive images generate "custom version of this concept"', description: "Generate a custom AI image instead", when: "Stock photos don't match your needs" },
243
- ],
244
- hints: [
245
- `Found ${count} stock photos for "${query}"`,
246
- "Photos include URLs in multiple sizes (original, large, medium, small)",
247
- "Cost: 0 credits (free)",
248
- ],
249
- related_commands: ["naive images generate", "naive images models"],
250
- });
251
- });
252
- imagesCmd
253
- .command("models")
254
- .description("List available image generation models with pricing")
255
- .addHelpText("after", `
256
- Examples:
257
- $ naive images models
258
-
259
- What this does:
260
- Returns all supported models with:
261
- - Model ID (use as --model parameter)
262
- - Name and description
263
- - Approximate generation time
264
- - Credit cost per generation
265
- `)
266
- .action(async () => {
267
- const resp = await apiRequest("GET", "/v1/images/models");
268
- handleApiError("images.models", resp);
269
- agentOutput({
270
- action: "images.models",
271
- result: resp.data,
272
- next_steps: [
273
- { command: 'naive images generate "your prompt" --model <model_id>', description: "Generate an image with one of these models" },
274
- ],
275
- hints: [
276
- "Use the model 'id' field as the --model parameter in 'naive images generate'",
277
- "Faster models cost fewer credits; higher-quality models cost more",
278
- "Each model includes credits_estimate (1 image; null when pricing is unavailable)",
279
- "For an exact quote: naive images pricing --model <id> --num <n>",
280
- ],
281
- related_commands: ["naive images generate", "naive images pricing", "naive images stock"],
282
- });
283
- });
284
- imagesCmd
285
- .command("pricing")
286
- .description("Preview the estimated credit cost of an image model before generating")
287
- .requiredOption("--model <model>", "Image model ID (get IDs from 'naive images models')")
288
- .option("--num <n>", "Number of images to price (default: 1)", "1")
289
- .addHelpText("after", `
290
- Examples:
291
- $ naive images pricing --model fal-ai/flux/schnell
292
- $ naive images pricing --model fal-ai/flux-pro/v1.1 --num 4
293
-
294
- What this does:
295
- Returns the ESTIMATED credit cost, derived from the model's live fal.ai price —
296
- the same source that bills the job on completion, so the estimate tracks the
297
- real charge. Nothing is spent by this command.
298
-
299
- Cost: free (this is a price preview; generation itself is charged on completion)
300
- `)
301
- .action(async (opts) => {
302
- const numImages = parseInt(opts.num ?? "1", 10);
303
- if (!Number.isFinite(numImages) || numImages <= 0) {
304
- console.log(JSON.stringify({
305
- success: false,
306
- action: "images.pricing",
307
- error: { code: "invalid_argument", message: "--num must be a positive integer" },
308
- recovery_steps: [
309
- { command: `naive images pricing --model ${opts.model} --num 1`, description: "Price a single image" },
310
- ],
311
- }, null, 2));
312
- process.exit(1);
313
- }
314
- const params = new URLSearchParams({ model: opts.model, num_images: String(numImages) });
315
- const resp = await apiRequest("GET", `/v1/images/pricing?${params}`);
316
- handleApiError("images.pricing", resp);
317
- const data = resp.data;
318
- agentOutput({
319
- action: "images.pricing",
320
- result: resp.data,
321
- next_steps: [
322
- { command: `naive images generate "your prompt" --model ${opts.model} --num ${numImages}`, description: "Generate images with this model" },
323
- { command: "naive images models", description: "Compare estimates across all models" },
324
- ],
325
- hints: [
326
- typeof data.estimated_credits === "number"
327
- ? `Estimated cost: ${data.estimated_credits} credits for ${data.num_images ?? numImages} image(s) (charged only on successful completion)`
328
- : "Pricing unavailable for this model",
329
- "This is an estimate; the exact charge is metered from the number of images delivered",
330
- ],
331
- related_commands: ["naive images generate", "naive images models"],
332
- });
333
- });
334
- async function pollJob(jobId) {
335
- while (true) {
336
- await new Promise((r) => setTimeout(r, 2000));
337
- const resp = await apiRequest("GET", `/v1/jobs/${jobId}`);
338
- handleApiError("images.generate.poll", resp);
339
- const data = resp.data;
340
- if (data.status === "completed" || data.status === "failed") {
341
- agentOutput({
342
- action: "images.generate.completed",
343
- result: resp.data,
344
- next_steps: [
345
- ...(data.status === "completed" && data.result?.images
346
- ? [
347
- { command: `# Download: curl -o image.png "${data.result.images[0]?.url}"`, description: "Download the generated image" },
348
- { command: `naive social post "Your caption here" --platforms instagram --media-url "${data.result.images[0]?.url}" --publish`, description: "Post to Instagram" },
349
- { command: `naive social post "Your caption here" --platforms twitter --media-url "${data.result.images[0]?.url}" --publish`, description: "Post to Twitter/X" },
350
- { command: `naive social post "Your caption here" --platforms linkedin --media-url "${data.result.images[0]?.url}" --publish`, description: "Post to LinkedIn" },
351
- ]
352
- : []),
353
- { command: 'naive images generate "another prompt" --model <model>', description: "Generate another image" },
354
- { command: "naive images stock <query>", description: "Search stock photos instead" },
355
- ],
356
- hints: [
357
- data.status === "completed"
358
- ? `Generation complete — ${data.result?.images?.length ?? 0} image(s) ready`
359
- : `Generation failed — no credits deducted. Reason: ${data.error || "unknown"}`,
360
- // Actual charge, derived from the completed job's credits_used (N6/N7).
361
- ...(creditCostHint(resp.data) ? [creditCostHint(resp.data)] : []),
362
- ...(data.status === "completed" ? ["Tip: Use 'naive social post' to publish directly to Instagram, Twitter, LinkedIn, etc."] : []),
363
- ],
364
- related_commands: ["naive images generate", "naive images stock", "naive social post", "naive jobs"],
365
- });
366
- return;
367
- }
368
- process.stderr.write(` Progress: ${data.progress ?? 0}% (${data.status})\n`);
369
- }
370
- }
371
- //# sourceMappingURL=images.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"images.js","sourceRoot":"","sources":["../../src/commands/images.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { Command } from "commander";
2
- import { STARTER_CONFIG } from "../lib/starter-config.js";
3
- export declare const initCmd: Command;
4
- /** The starter config, exported so the suite can compile it with the real DSL. */
5
- export { STARTER_CONFIG };
@@ -1,43 +0,0 @@
1
- import { Command } from "commander";
2
- import { existsSync, writeFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { agentOutput } from "../output.js";
5
- import { STARTER_CONFIG } from "../lib/starter-config.js";
6
- export const initCmd = new Command("init")
7
- .description("Scaffold a naive.config.ts with a starter team")
8
- .option("--force", "Overwrite an existing naive.config.ts")
9
- .action((opts) => {
10
- const path = join(process.cwd(), "naive.config.ts");
11
- if (existsSync(path) && !opts.force) {
12
- agentOutput({
13
- action: "init",
14
- result: { path, created: false },
15
- next_steps: [
16
- { command: "naive init --force", description: "Overwrite the existing naive.config.ts" },
17
- { command: "naive up", description: "Plan + apply what naive.config.ts declares" },
18
- ],
19
- hints: ["naive.config.ts already exists — not overwritten. Use --force to replace it."],
20
- });
21
- return;
22
- }
23
- writeFileSync(path, STARTER_CONFIG, "utf8");
24
- agentOutput({
25
- action: "init",
26
- result: { path, created: true },
27
- next_steps: [
28
- { command: "pnpm add @usenaive-sdk/iac @usenaive-sdk/server", description: "Install the SDK packages" },
29
- { command: "naive up", description: "Plan + apply what naive.config.ts declares" },
30
- ],
31
- hints: [
32
- "Edit naive.config.ts: declare shared infrastructure (cloud) once, then a team per unit of work (lead + agents + edges).",
33
- // The starter scaffolds `team(...)`, which has no root to get wrong. This
34
- // is here for the config that adds `systems:` later: assertSystemRoots
35
- // now refuses a non-`ceo` root at define time rather than at apply, so
36
- // the rule is worth stating before it is hit.
37
- 'If you declare `systems:`, the root agent must be named "ceo" — the container runs one Hermes gateway pinned to that profile.',
38
- ],
39
- });
40
- });
41
- /** The starter config, exported so the suite can compile it with the real DSL. */
42
- export { STARTER_CONFIG };
43
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KACvC,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC;KAC1D,MAAM,CAAC,CAAC,IAAyB,EAAE,EAAE;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACpD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,WAAW,CAAC;YACV,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;YAChC,UAAU,EAAE;gBACV,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACxF,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,4CAA4C,EAAE;aACnF;YACD,KAAK,EAAE,CAAC,8EAA8E,CAAC;SACxF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAC5C,WAAW,CAAC;QACV,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;QAC/B,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,iDAAiD,EAAE,WAAW,EAAE,0BAA0B,EAAE;YACvG,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,4CAA4C,EAAE;SACnF;QACD,KAAK,EAAE;YACL,yHAAyH;YACzH,0EAA0E;YAC1E,uEAAuE;YACvE,uEAAuE;YACvE,8CAA8C;YAC9C,+HAA+H;SAChI;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,kFAAkF;AAClF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const jobsCmd: Command;