@usenaive-sdk/cli 0.15.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/README.md +43 -402
  2. package/dist/index.js +51775 -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,369 +0,0 @@
1
- import { Command } from "commander";
2
- import { apiRequest, handleApiError } from "../client.js";
3
- import { loadConfig, getApiKey } from "../config.js";
4
- import { agentOutput, agentError } from "../output.js";
5
- export const ceoCmd = new Command("ceo")
6
- .description("Communicate with the CEO agent — run prompts, send messages, monitor sessions")
7
- .addHelpText("after", `
8
- Subcommands:
9
- naive ceo run <prompt> Start a new CEO run with a prompt
10
- naive ceo message <text> Send a message to an active CEO session
11
- naive ceo status Get the CEO agent's current status
12
- naive ceo sessions List all CEO sessions
13
- naive ceo stream <runId> Stream real-time output from a CEO run (SSE)
14
- naive ceo team-approve Approve a CEO-proposed team and provision agents
15
-
16
- Workflow:
17
- 1. naive ceo run "Launch a new product line" → start a CEO task
18
- 2. naive ceo stream <runId> → watch output in real-time
19
- 3. naive ceo team-approve --team '[...]' → approve the proposed team
20
- 4. naive ceo message "Focus on marketing" → steer the CEO mid-run
21
- 5. naive ceo status → check if the CEO is working
22
- 6. naive ceo sessions → review all past sessions
23
-
24
- The CEO is a persistent Hermes gateway that orchestrates your company's
25
- AI workforce. It decomposes objectives into tasks, proposes teams, and
26
- dispatches work to employees once you approve the team composition.
27
-
28
- Examples:
29
- $ naive ceo run "Analyze our competitors and draft a strategy"
30
- $ naive ceo status
31
- $ naive ceo sessions
32
- $ naive ceo stream abc-123
33
- $ naive ceo message "Prioritize the SEO analysis"
34
- `);
35
- ceoCmd
36
- .command("run <prompt>")
37
- .description("Start a new CEO run — the CEO will interpret the prompt and begin executing")
38
- .addHelpText("after", `
39
- Examples:
40
- $ naive ceo run "Set up email infrastructure and send welcome emails to our leads"
41
- $ naive ceo run "Research competitors in the AI space and write a report"
42
-
43
- What this does:
44
- 1. Sends the prompt to the CEO agent
45
- 2. The CEO decomposes the prompt into objectives and tasks
46
- 3. Tasks are dispatched to available employees
47
- 4. Returns a run ID for tracking progress
48
-
49
- The CEO operates asynchronously — use 'naive ceo stream <runId>' to
50
- watch output in real-time, or 'naive ceo status' to check progress.
51
- `)
52
- .action(async (prompt) => {
53
- const config = loadConfig();
54
- const resp = await apiRequest("POST", `/v1/companies/${config.company_id}/ceo/run`, {
55
- prompt,
56
- });
57
- handleApiError("ceo.run", resp);
58
- const data = resp.data;
59
- agentOutput({
60
- action: "ceo.run",
61
- result: resp.data,
62
- next_steps: [
63
- { command: `naive ceo stream ${data.run_id}`, description: "Stream real-time output from this run" },
64
- { command: "naive ceo status", description: "Check the CEO's current status" },
65
- { command: "naive tasks list", description: "See tasks the CEO has created" },
66
- ],
67
- hints: [
68
- `CEO run started (id: ${data.run_id})`,
69
- "The CEO is now decomposing your prompt into actionable tasks",
70
- "Use 'naive ceo stream' to watch progress in real-time",
71
- ],
72
- related_commands: ["naive ceo stream", "naive ceo status", "naive ceo message", "naive tasks list"],
73
- });
74
- });
75
- ceoCmd
76
- .command("message <text>")
77
- .description("Send a message to the CEO agent during an active session")
78
- .addHelpText("after", `
79
- Examples:
80
- $ naive ceo message "Focus on the marketing tasks first"
81
- $ naive ceo message "Pause all work and give me a status update"
82
-
83
- What this does:
84
- Sends a real-time message to the active CEO session. Use this to:
85
- - Steer the CEO's priorities mid-execution
86
- - Ask for a progress update
87
- - Provide additional context or constraints
88
- - Request course corrections
89
-
90
- The CEO will incorporate your message into its current workflow.
91
- `)
92
- .action(async (text) => {
93
- const config = loadConfig();
94
- const resp = await apiRequest("POST", `/v1/companies/${config.company_id}/ceo/message`, {
95
- text,
96
- });
97
- handleApiError("ceo.message", resp);
98
- agentOutput({
99
- action: "ceo.message",
100
- result: resp.data,
101
- next_steps: [
102
- { command: "naive ceo status", description: "Check how the CEO is responding to your message" },
103
- { command: "naive ceo sessions", description: "View session history" },
104
- ],
105
- hints: [
106
- "Message delivered to the CEO agent",
107
- "The CEO will incorporate this into its current execution plan",
108
- ],
109
- related_commands: ["naive ceo status", "naive ceo run", "naive ceo sessions"],
110
- });
111
- });
112
- ceoCmd
113
- .command("status")
114
- .description("Get the CEO agent's current status — active run, idle, or error")
115
- .addHelpText("after", `
116
- Examples:
117
- $ naive ceo status
118
-
119
- Returns:
120
- - Current state (idle, running, error)
121
- - Active run ID (if running)
122
- - Current objective being worked on
123
- - Number of active tasks dispatched
124
- - Last activity timestamp
125
- `)
126
- .action(async () => {
127
- const config = loadConfig();
128
- const resp = await apiRequest("GET", `/v1/companies/${config.company_id}/ceo/status`);
129
- handleApiError("ceo.status", resp);
130
- const data = resp.data;
131
- agentOutput({
132
- action: "ceo.status",
133
- result: resp.data,
134
- next_steps: [
135
- ...(data.state === "running" && data.active_run_id
136
- ? [{ command: `naive ceo stream ${data.active_run_id}`, description: "Stream the active run's output" }]
137
- : []),
138
- ...(data.state === "idle"
139
- ? [{ command: 'naive ceo run "<prompt>"', description: "Start a new CEO run" }]
140
- : []),
141
- { command: "naive ceo sessions", description: "View all past sessions" },
142
- { command: "naive tasks list", description: "See active tasks" },
143
- ],
144
- hints: [
145
- `CEO is currently: ${data.state}`,
146
- ...(data.active_run_id ? [`Active run: ${data.active_run_id}`] : []),
147
- ],
148
- related_commands: ["naive ceo run", "naive ceo stream", "naive ceo sessions", "naive tasks list"],
149
- });
150
- });
151
- ceoCmd
152
- .command("sessions")
153
- .description("List all CEO sessions — past and current runs")
154
- .addHelpText("after", `
155
- Examples:
156
- $ naive ceo sessions
157
-
158
- Returns a list of all CEO sessions including:
159
- - Session/run ID
160
- - Original prompt
161
- - Status (running, completed, failed)
162
- - Start and end timestamps
163
- - Number of tasks created
164
- - Summary (for completed sessions)
165
- `)
166
- .action(async () => {
167
- const config = loadConfig();
168
- const resp = await apiRequest("GET", `/v1/companies/${config.company_id}/ceo/sessions`);
169
- handleApiError("ceo.sessions", resp);
170
- const data = resp.data;
171
- const count = data.sessions?.length ?? 0;
172
- agentOutput({
173
- action: "ceo.sessions",
174
- result: resp.data,
175
- next_steps: [
176
- ...(count > 0
177
- ? [{ command: `naive ceo stream ${data.sessions[0].id}`, description: "Stream the most recent session" }]
178
- : []),
179
- { command: 'naive ceo run "<prompt>"', description: "Start a new CEO session" },
180
- ],
181
- hints: [
182
- `${count} session${count !== 1 ? "s" : ""} found`,
183
- "Each session represents a CEO run with its tasks and results",
184
- ],
185
- related_commands: ["naive ceo run", "naive ceo stream", "naive ceo status"],
186
- });
187
- });
188
- ceoCmd
189
- .command("team-approve")
190
- .description("Approve a CEO-proposed team — provisions agent profiles and begins task assignment")
191
- .requiredOption("--team <json>", "JSON array of team members (each with name, title, template, optional skills/context)")
192
- .option("--tasks <json>", "JSON array of pre-defined tasks (each with title, description, assignee, optional priority/phase)")
193
- .option("--objective-id <id>", "Link the team to an objective")
194
- .addHelpText("after", `
195
- Examples:
196
- $ naive ceo team-approve --team '[{"name":"Landing Page Engineer","title":"Engineer","template":"engineer"}]'
197
- $ naive ceo team-approve --team '[{"name":"Growth Marketer","title":"Marketer","template":"writer"}]' --tasks '[{"title":"Create GTM Plan","description":"Develop go-to-market plan","assignee":"Growth Marketer","priority":"high"}]'
198
-
199
- What this does:
200
- 1. Creates agent records in the database
201
- 2. Provisions Hermes profiles on the container (with template specialization)
202
- 3. Creates and assigns any pre-defined tasks
203
- 4. Notifies the CEO that the team is ready
204
- 5. Workers are spawned automatically when tasks are dispatched
205
-
206
- Team member fields:
207
- name (required) — Display name (use role-based names, e.g. "Landing Page Engineer")
208
- title (required) — Role/title (Engineer, Marketer, Writer, etc.)
209
- template (optional) — Specialization: engineer, writer, hunter, or legal
210
- skills (optional) — Array of skill tags for task routing
211
- context (optional) — What this agent works on (e.g. "Build the company landing page")
212
- persona (optional) — Custom persona/system prompt
213
-
214
- Task fields:
215
- title (required) — Task title
216
- description (required) — Detailed description of the deliverable
217
- assignee (required) — Agent name to assign to (must match a team member name)
218
- priority (optional) — low, medium, high, or critical (default: medium)
219
- phase (optional) — 1 or 2. Phase 1 runs immediately, phase 2 is delegated later.
220
- `)
221
- .action(async (opts) => {
222
- const config = loadConfig();
223
- let team;
224
- try {
225
- team = JSON.parse(opts.team);
226
- }
227
- catch {
228
- agentError({
229
- action: "ceo.team-approve",
230
- error: { code: "invalid_json", message: "The --team flag must be valid JSON" },
231
- recovery_steps: [
232
- { command: `naive ceo team-approve --team '[{"name":"Alice","title":"Engineer"}]'`, description: "Example with valid JSON" },
233
- ],
234
- });
235
- return;
236
- }
237
- let tasks;
238
- if (opts.tasks) {
239
- try {
240
- tasks = JSON.parse(opts.tasks);
241
- }
242
- catch {
243
- agentError({
244
- action: "ceo.team-approve",
245
- error: { code: "invalid_json", message: "The --tasks flag must be valid JSON" },
246
- recovery_steps: [
247
- { command: `naive ceo team-approve --team '[...]' --tasks '[{"title":"Build Page","description":"...","assignee":"Engineer"}]'`, description: "Example with valid JSON" },
248
- ],
249
- });
250
- return;
251
- }
252
- }
253
- const body = { team };
254
- if (tasks)
255
- body.tasks = tasks;
256
- if (opts.objectiveId)
257
- body.objective_id = opts.objectiveId;
258
- const resp = await apiRequest("POST", `/v1/companies/${config.company_id}/ceo/team/approve`, body);
259
- handleApiError("ceo.team-approve", resp);
260
- const data = resp.data;
261
- agentOutput({
262
- action: "ceo.team-approve",
263
- result: resp.data,
264
- next_steps: [
265
- { command: "naive employees list", description: "View your provisioned team" },
266
- { command: "naive tasks list", description: "See tasks being assigned to the team" },
267
- { command: "naive ceo status", description: "Check if the CEO is dispatching work" },
268
- ],
269
- hints: [
270
- `Team approved: ${data.count ?? data.agents_created?.length ?? 0} agent(s) provisioned`,
271
- ...(data.agents_created?.length
272
- ? [`Agents: ${data.agents_created.map((a) => a.name).join(", ")}`]
273
- : []),
274
- "The CEO will begin assigning tasks to the new team members",
275
- ],
276
- related_commands: ["naive employees list", "naive tasks list", "naive ceo run"],
277
- });
278
- });
279
- ceoCmd
280
- .command("stream <runId>")
281
- .description("Stream real-time output from a CEO run via Server-Sent Events")
282
- .addHelpText("after", `
283
- Examples:
284
- $ naive ceo stream abc-123-run-id
285
-
286
- What this does:
287
- Opens an SSE (Server-Sent Events) connection to stream the CEO's
288
- real-time output. Events include:
289
- - thought: CEO's reasoning steps
290
- - task_created: new task dispatched
291
- - task_completed: employee finished a task
292
- - message: CEO status updates
293
- - done: run completed
294
- - error: something went wrong
295
-
296
- Press Ctrl+C to stop streaming (the run continues in the background).
297
- `)
298
- .action(async (runId) => {
299
- const config = loadConfig();
300
- const apiKey = getApiKey();
301
- const url = `${config.base_url}/v1/companies/${config.company_id}/ceo/runs/${runId}/stream`;
302
- console.error(`Connecting to CEO stream for run ${runId}...`);
303
- try {
304
- const resp = await fetch(url, {
305
- headers: {
306
- Authorization: `Bearer ${apiKey}`,
307
- Accept: "text/event-stream",
308
- },
309
- });
310
- if (!resp.ok || !resp.body) {
311
- agentError({
312
- action: "ceo.stream",
313
- error: { code: "stream_failed", message: `HTTP ${resp.status}: Failed to connect to stream` },
314
- recovery_steps: [
315
- { command: `naive ceo stream ${runId}`, description: "Retry the stream connection" },
316
- { command: "naive ceo status", description: "Check if the run is still active" },
317
- ],
318
- });
319
- return;
320
- }
321
- const reader = resp.body.getReader();
322
- const decoder = new TextDecoder();
323
- let buffer = "";
324
- while (true) {
325
- const { done, value } = await reader.read();
326
- if (done)
327
- break;
328
- buffer += decoder.decode(value, { stream: true });
329
- const lines = buffer.split("\n");
330
- buffer = lines.pop() ?? "";
331
- for (const line of lines) {
332
- if (line.startsWith("data: ")) {
333
- const payload = line.slice(6);
334
- if (payload === "[DONE]") {
335
- agentOutput({
336
- action: "ceo.stream",
337
- result: { status: "completed", run_id: runId },
338
- next_steps: [
339
- { command: "naive tasks list", description: "View tasks created during this run" },
340
- { command: "naive ceo sessions", description: "View all sessions" },
341
- ],
342
- hints: ["CEO run completed — stream ended"],
343
- related_commands: ["naive ceo status", "naive tasks list"],
344
- });
345
- return;
346
- }
347
- try {
348
- const event = JSON.parse(payload);
349
- console.log(JSON.stringify(event));
350
- }
351
- catch {
352
- console.log(payload);
353
- }
354
- }
355
- }
356
- }
357
- }
358
- catch (err) {
359
- agentError({
360
- action: "ceo.stream",
361
- error: { code: "stream_error", message: String(err) },
362
- recovery_steps: [
363
- { command: `naive ceo stream ${runId}`, description: "Retry the stream" },
364
- { command: "naive ceo status", description: "Check CEO status" },
365
- ],
366
- });
367
- }
368
- });
369
- //# sourceMappingURL=ceo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ceo.js","sourceRoot":"","sources":["../../src/commands/ceo.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const cloneCmd: Command;
@@ -1,203 +0,0 @@
1
- import { Command, Option } from "commander";
2
- import { readFileSync, existsSync } from "node:fs";
3
- import { basename } from "node:path";
4
- import { apiRequest, handleApiError, parseJsonOrUpstreamError } from "../client.js";
5
- import { loadConfig, getApiKey } from "../config.js";
6
- import { agentOutput, formatApiError } from "../output.js";
7
- // naive clone generate — one-shot digital-twin video (reference image + a saved cloned
8
- // voice + a script + an optional scene -> a lip-synced talking video). Mirrors
9
- // `naive video generate`: submit (async, returns a job id), optional --wait poll.
10
- // If --image is a LOCAL path, it is uploaded via `media upload` first to get a public URL.
11
- export const cloneCmd = new Command("clone")
12
- .description("Generate a lip-synced talking video of a real person from a reference image + a saved cloned voice + a script")
13
- .addHelpText("after", `
14
- Subcommands:
15
- naive clone generate Generate a talking video (image + voice + script -> video)
16
- naive clone status Check a clone generation job
17
-
18
- Examples:
19
- $ naive clone generate --voice <voice_id> --image ./frame.png --text "Hey, welcome." --i-affirm
20
- $ naive clone generate --voice <voice_id> --image https://example.com/frame.jpg \\
21
- --text "Walking the pool deck" --scene "cliffside mansion pool deck at golden hour" --i-affirm --wait
22
-
23
- Cost:
24
- - Image edit (only with --scene) + animate, billed on completion. The voice synth is
25
- billed on its own meter. Credits deducted only on successful completion.
26
- `);
27
- cloneCmd
28
- .command("generate")
29
- .description("Generate a talking video (async — returns a job ID)")
30
- .requiredOption("--voice <id>", "An existing cloned voice profile id (the subject's voice + consent)")
31
- .requiredOption("--image <path|url>", "Reference image — a local file path or a public https URL")
32
- .requiredOption("--text <script>", "The script the cloned voice should speak")
33
- .option("--scene <description>", "Optional scene/relight, e.g. 'cliffside pool deck at golden hour'")
34
- .addOption(new Option("--quality <tier>", "Animate model: 'max' (OmniHuman, best lip-sync, default) or 'fast' (Kling, ~27% cheaper, stabler background)").choices(["max", "fast"]))
35
- .option("--i-affirm", "Affirm the depicted person consented to this likeness animation (required)")
36
- .option("--wait", "Wait for the job to complete (polls until done)")
37
- .addHelpText("after", `
38
- What this does:
39
- 1. (If --image is a local file) uploads it to get a public URL
40
- 2. Submits a clone generation job (image + voice + script [+ scene])
41
- 3. Returns a job ID (async, typically 1-3 minutes)
42
- 4. Use --wait to block until done, or check with 'naive clone status'
43
-
44
- Consent:
45
- --i-affirm is required: you attest the depicted person consented to this likeness
46
- animation. The voice must be a saved cloned-voice profile with self or verified
47
- third-party consent (you are animating that subject's likeness), AND that consent
48
- must authorize the clone_generate use. Clone the voice with that use enabled:
49
- naive voice clone <file> --consent-type self --i-affirm \\
50
- --authorized-uses voice_synthesis,clone_generate ...
51
- A voice cloned without clone_generate in --authorized-uses will be rejected.
52
- `)
53
- .action(async (opts) => {
54
- if (!opts.iAffirm) {
55
- console.log(JSON.stringify({
56
- success: false,
57
- action: "clone.generate",
58
- error: {
59
- code: "missing_argument",
60
- message: "--i-affirm is required: affirm the depicted person consented to this likeness animation",
61
- },
62
- recovery_steps: [
63
- {
64
- command: 'naive clone generate --voice <id> --image <path|url> --text "..." --i-affirm',
65
- description: "Re-run with the consent affirmation",
66
- },
67
- ],
68
- }, null, 2));
69
- process.exit(1);
70
- }
71
- // Resolve --image to a public URL. A local path is uploaded first (the S3 bucket
72
- // returns a presigned URL fal can GET); an http(s) URL is passed through unchanged.
73
- let imageUrl = opts.image;
74
- if (!/^https?:\/\//i.test(opts.image)) {
75
- if (!existsSync(opts.image)) {
76
- console.log(JSON.stringify({
77
- success: false,
78
- action: "clone.generate",
79
- error: { code: "invalid_input", message: `Image file not found: ${opts.image}` },
80
- }, null, 2));
81
- process.exit(1);
82
- }
83
- imageUrl = await uploadLocalImage(opts.image);
84
- }
85
- const resp = await apiRequest("POST", "/v1/clone/generate", {
86
- voice_id: opts.voice,
87
- image_url: imageUrl,
88
- text: opts.text,
89
- ...(opts.scene ? { scene: opts.scene } : {}),
90
- ...(opts.quality ? { quality: opts.quality } : {}),
91
- i_affirm: true,
92
- });
93
- handleApiError("clone.generate", resp);
94
- const data = resp.data;
95
- if (opts.wait) {
96
- agentOutput({
97
- action: "clone.generate.submitted",
98
- result: { job_id: data.job_id, status: "polling" },
99
- next_steps: [],
100
- hints: ["Waiting for clone generation to complete (typically 1-3 minutes)..."],
101
- });
102
- await pollJob(data.job_id);
103
- }
104
- else {
105
- agentOutput({
106
- action: "clone.generate.submitted",
107
- result: { job_id: data.job_id, status: "queued" },
108
- next_steps: [
109
- { command: `naive clone status ${data.job_id}`, description: "Check clone generation progress" },
110
- { command: `naive jobs get ${data.job_id}`, description: "Get full job details" },
111
- ],
112
- hints: [
113
- "Clone generation submitted",
114
- "Credits deducted only on successful completion",
115
- "Typical time: 1-3 minutes",
116
- ],
117
- related_commands: ["naive clone status", "naive jobs"],
118
- });
119
- }
120
- });
121
- cloneCmd
122
- .command("status <job_id>")
123
- .description("Check the status of a clone generation job")
124
- .addHelpText("after", `
125
- Examples:
126
- $ naive clone status 550e8400-e29b-41d4-a716-446655440000
127
-
128
- When completed, the result includes the talking-video URL (result.url).
129
- `)
130
- .action(async (jobId) => {
131
- const resp = await apiRequest("GET", `/v1/clone/${jobId}`);
132
- handleApiError("clone.status", resp);
133
- const data = resp.data;
134
- agentOutput({
135
- action: "clone.status",
136
- result: resp.data,
137
- next_steps: [
138
- ...(data.status === "completed" && data.result?.url
139
- ? [{ command: `# Download: curl -o clone.mp4 "${data.result.url}"`, description: "Download the talking video" }]
140
- : []),
141
- ...(data.status === "queued" || data.status === "processing"
142
- ? [{ command: `naive clone status ${jobId}`, description: "Check again in 10-30 seconds" }]
143
- : []),
144
- ],
145
- hints: [`Job status: ${data.status}`],
146
- related_commands: ["naive clone generate", "naive jobs"],
147
- });
148
- });
149
- // Upload a local image and return its presigned public URL (so fal can GET it). Mirrors
150
- // the local-file branch of `media upload` (multipart to /v1/media/upload/file).
151
- async function uploadLocalImage(filePath) {
152
- const fileBuffer = readFileSync(filePath);
153
- const filename = basename(filePath);
154
- const config = loadConfig();
155
- const url = `${config.base_url}/v1/media/upload/file`;
156
- const formData = new FormData();
157
- formData.append("file", new Blob([fileBuffer]), filename);
158
- const resp = await fetch(url, {
159
- method: "POST",
160
- headers: { Authorization: `Bearer ${getApiKey()}` },
161
- body: formData,
162
- });
163
- // parseJsonOrUpstreamError never throws on a non-JSON gateway page; a non-JSON
164
- // body comes back as { error: { code: "upstream_error", … } }, so the guard below
165
- // routes it through formatApiError like any other failure.
166
- const data = (await parseJsonOrUpstreamError(resp));
167
- if (resp.status >= 400 || !data.url) {
168
- formatApiError("clone.generate", data);
169
- process.exit(1);
170
- }
171
- return data.url;
172
- }
173
- // Polls a clone job to completion for `clone generate --wait`. Mirrors video.ts's pollJob.
174
- async function pollJob(jobId) {
175
- while (true) {
176
- await new Promise((r) => setTimeout(r, 3000));
177
- const resp = await apiRequest("GET", `/v1/jobs/${jobId}`);
178
- handleApiError("clone.generate.poll", resp);
179
- const data = resp.data;
180
- if (data.status === "completed" || data.status === "failed") {
181
- const videoUrl = data.result?.url;
182
- agentOutput({
183
- action: "clone.generate.completed",
184
- result: resp.data,
185
- // On success surface a download command; on failure point at the full job details.
186
- next_steps: data.status === "completed" && videoUrl
187
- ? [{ command: `curl -L -o clone.mp4 "${videoUrl}"`, description: "Download the talking video" }]
188
- : [{ command: `naive jobs get ${jobId}`, description: "Get full job details" }],
189
- hints: [
190
- data.status === "completed"
191
- ? videoUrl
192
- ? `Clone generation complete — video: ${videoUrl}`
193
- : "Clone generation complete"
194
- : `Generation failed: ${data.error ?? "see job details"} (no credits deducted)`,
195
- ],
196
- related_commands: ["naive clone generate", "naive clone status", "naive jobs"],
197
- });
198
- return;
199
- }
200
- process.stderr.write(` Progress: ${data.progress ?? 0}% (${data.status})\n`);
201
- }
202
- }
203
- //# sourceMappingURL=clone.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/commands/clone.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import { Command } from "commander";
2
- /**
3
- * `naive companies` — the ORGANIZATION.
4
- *
5
- * `organization` is the product noun and the alias below is what the docs and
6
- * help text use; `companies` stays as the command name, the route
7
- * (`/v1/company`) and the config key, because every script and agent profile in
8
- * the wild already types it.
9
- */
10
- export declare const companiesCmd: Command;