@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,407 +0,0 @@
1
- import { Command } from "commander";
2
- import { apiRequest, handleApiError } from "../client.js";
3
- import { agentOutput } from "../output.js";
4
- import { FIXED_CREDIT_COSTS } from "../lib/pricing.js";
5
- export const socialCmd = new Command("social")
6
- .description("Social media — connect accounts, create posts, view analytics")
7
- .addHelpText("after", `
8
- Subcommands:
9
- naive social status Check activation + connected accounts
10
- naive social activate Activate social media for your company
11
- naive social connect Get OAuth URL for a platform
12
- naive social portal Get multi-platform portal URL
13
- naive social accounts List connected accounts
14
- naive social label <id> --label ... Set a label on an account
15
- naive social disconnect <id> Disconnect an account
16
- naive social sync Sync connected accounts
17
- naive social upload --url <url> Upload media from URL
18
- naive social posts List posts
19
- naive social post <content> Create a post (draft by default)
20
- naive social get <id> Get post details
21
- naive social edit <id> Edit a draft post
22
- naive social delete <id> Delete a post
23
- naive social publish <id> Publish a draft
24
- naive social analytics <id> Get post analytics
25
- naive social comments <id> Get post comments
26
- naive social account-analytics <id> Get account analytics
27
-
28
- Supported Platforms:
29
- TWITTER, LINKEDIN, INSTAGRAM, FACEBOOK, TIKTOK, YOUTUBE,
30
- THREADS, PINTEREST, REDDIT, BLUESKY
31
-
32
- Platform Tips:
33
- YouTube: --youtube-type SHORT (vertical, <3min) or VIDEO (landscape)
34
- TikTok: privacy auto-set to PUBLIC_TO_EVERYONE
35
- Instagram: defaults to Reel type for video posts
36
- Twitter: auto-truncated to 280 chars
37
- Reddit: pass --platform-data '{"REDDIT":{"sr":"subreddit"}}' for subreddit
38
-
39
- Cost:
40
- - Publishing a post: ${FIXED_CREDIT_COSTS.socialPost} credits, plus ${FIXED_CREDIT_COSTS.socialXPost} if it targets X
41
- (${FIXED_CREDIT_COSTS.socialXPostWithLink} instead when that X post contains a link — X charges us far more for those)
42
- - Drafts, analytics, account management: free
43
- `);
44
- socialCmd
45
- .command("status")
46
- .description("Check social media activation status and connected accounts")
47
- .action(async () => {
48
- const resp = await apiRequest("GET", "/v1/social/status");
49
- handleApiError("social.status", resp);
50
- agentOutput({
51
- action: "social.status",
52
- result: resp.data,
53
- next_steps: [
54
- ...(resp.data.activated
55
- ? [{ command: "naive social accounts", description: "List connected accounts" }]
56
- : [{ command: "naive social activate", description: "Activate social media" }]),
57
- ],
58
- hints: [resp.data.activated ? "Social media is active" : "Social media is not yet activated"],
59
- });
60
- });
61
- socialCmd
62
- .command("activate")
63
- .description("Activate social media integration for your company")
64
- .action(async () => {
65
- const resp = await apiRequest("POST", "/v1/social/activate");
66
- handleApiError("social.activate", resp);
67
- agentOutput({
68
- action: "social.activate",
69
- result: resp.data,
70
- next_steps: [
71
- { command: 'naive social connect --platform twitter --redirect-url https://example.com', description: "Connect a social account" },
72
- { command: "naive social portal --redirect-url https://example.com", description: "Open multi-platform connect portal" },
73
- ],
74
- hints: ["Social media activated. Connect accounts to start posting."],
75
- });
76
- });
77
- socialCmd
78
- .command("connect")
79
- .description("Get OAuth URL to connect a social media account")
80
- .requiredOption("--platform <platform>", "Platform: TWITTER, LINKEDIN, INSTAGRAM, FACEBOOK, TIKTOK, YOUTUBE, THREADS, PINTEREST, REDDIT, BLUESKY")
81
- .option("--redirect-url <url>", "URL to redirect after connection", "https://dashboard.usenaive.ai")
82
- .action(async (opts) => {
83
- const resp = await apiRequest("POST", "/v1/social/connect", {
84
- platform: opts.platform.toUpperCase(),
85
- redirect_url: opts.redirectUrl,
86
- });
87
- handleApiError("social.connect", resp);
88
- agentOutput({
89
- action: "social.connect",
90
- result: resp.data,
91
- next_steps: [
92
- { command: "naive social sync", description: "Sync accounts after connecting" },
93
- { command: "naive social accounts", description: "List connected accounts" },
94
- ],
95
- hints: [
96
- `Open this URL to connect your ${opts.platform.toUpperCase()} account:`,
97
- resp.data.url,
98
- "After connecting, run 'naive social sync' to refresh accounts.",
99
- ],
100
- });
101
- });
102
- socialCmd
103
- .command("portal")
104
- .description("Get a portal URL to connect multiple social media platforms at once")
105
- .option("--redirect-url <url>", "URL to redirect after connection", "https://dashboard.usenaive.ai")
106
- .option("--platforms <list>", "Comma-separated platform list to show")
107
- .action(async (opts) => {
108
- const body = { redirect_url: opts.redirectUrl };
109
- if (opts.platforms)
110
- body.platforms = opts.platforms.split(",").map((p) => p.trim().toUpperCase());
111
- const resp = await apiRequest("POST", "/v1/social/portal", body);
112
- handleApiError("social.portal", resp);
113
- agentOutput({
114
- action: "social.portal",
115
- result: resp.data,
116
- next_steps: [
117
- { command: "naive social sync", description: "Sync accounts after connecting" },
118
- ],
119
- hints: [
120
- "Open this URL to connect multiple social accounts:",
121
- resp.data.url,
122
- ],
123
- });
124
- });
125
- socialCmd
126
- .command("accounts")
127
- .description("List connected social media accounts")
128
- .action(async () => {
129
- const resp = await apiRequest("GET", "/v1/social/accounts");
130
- handleApiError("social.accounts", resp);
131
- agentOutput({
132
- action: "social.accounts",
133
- result: resp.data,
134
- next_steps: [
135
- { command: 'naive social post "Hello!" --platforms twitter', description: "Create a post" },
136
- { command: 'naive social connect --platform <platform> --redirect-url <url>', description: "Connect more accounts" },
137
- ],
138
- hints: [`${(resp.data.accounts ?? []).length} connected account(s)`],
139
- });
140
- });
141
- socialCmd
142
- .command("label <account-id>")
143
- .description("Set a label on a social media account")
144
- .requiredOption("--label <label>", "Label text to set")
145
- .action(async (accountId, opts) => {
146
- const resp = await apiRequest("POST", `/v1/social/accounts/${accountId}/label`, { label: opts.label });
147
- handleApiError("social.label", resp);
148
- agentOutput({
149
- action: "social.label",
150
- result: resp.data,
151
- next_steps: [
152
- { command: "naive social accounts", description: "List accounts" },
153
- ],
154
- hints: [`Label set to "${opts.label}"`],
155
- });
156
- });
157
- socialCmd
158
- .command("disconnect <account-id>")
159
- .description("Disconnect a social media account")
160
- .action(async (accountId) => {
161
- const resp = await apiRequest("DELETE", `/v1/social/accounts/${accountId}`);
162
- handleApiError("social.disconnect", resp);
163
- agentOutput({
164
- action: "social.disconnect",
165
- result: resp.data,
166
- next_steps: [
167
- { command: "naive social accounts", description: "List remaining accounts" },
168
- ],
169
- hints: ["Account disconnected"],
170
- });
171
- });
172
- socialCmd
173
- .command("sync")
174
- .description("Sync connected social accounts")
175
- .action(async () => {
176
- const resp = await apiRequest("POST", "/v1/social/sync");
177
- handleApiError("social.sync", resp);
178
- agentOutput({
179
- action: "social.sync",
180
- result: resp.data,
181
- next_steps: [
182
- { command: "naive social accounts", description: "View synced accounts" },
183
- ],
184
- hints: [`Synced ${resp.data.synced ?? 0} account(s)`],
185
- });
186
- });
187
- socialCmd
188
- .command("upload")
189
- .description("Upload media from a URL for use in social posts")
190
- .requiredOption("--url <url>", "Public URL of the media file")
191
- .action(async (opts) => {
192
- const resp = await apiRequest("POST", "/v1/social/upload", { url: opts.url });
193
- handleApiError("social.upload", resp);
194
- agentOutput({
195
- action: "social.upload",
196
- result: resp.data,
197
- next_steps: [
198
- { command: 'naive social post "content" --platforms youtube --media-url <url>', description: "Create a post with media" },
199
- ],
200
- hints: ["Media uploaded. Use the upload ID or pass media_urls when creating posts (auto-upload)."],
201
- });
202
- });
203
- socialCmd
204
- .command("posts")
205
- .description("List social media posts")
206
- .option("--status <status>", "Filter by status: draft, scheduled, published, failed")
207
- .option("--limit <n>", "Max results", "50")
208
- .option("--offset <n>", "Pagination offset", "0")
209
- .action(async (opts) => {
210
- const params = new URLSearchParams();
211
- if (opts.status)
212
- params.set("status", opts.status);
213
- params.set("limit", opts.limit);
214
- params.set("offset", opts.offset);
215
- const resp = await apiRequest("GET", `/v1/social/posts?${params}`);
216
- handleApiError("social.posts", resp);
217
- agentOutput({
218
- action: "social.posts",
219
- result: resp.data,
220
- next_steps: [
221
- { command: 'naive social post "content" --platforms twitter', description: "Create a new post" },
222
- ],
223
- hints: [`${resp.data.count ?? 0} post(s) returned`],
224
- });
225
- });
226
- socialCmd
227
- .command("post [content]")
228
- .description("Create a social media post (draft by default, use --publish to publish immediately)")
229
- .requiredOption("--platforms <list>", "Comma-separated platforms: twitter,linkedin,youtube,...")
230
- .option("--publish", "Publish immediately (default: create as draft)")
231
- .option("--media-url <url>", "Media URL (auto-uploaded for video/image platforms)")
232
- .option("--upload-ids <ids>", "Comma-separated pre-uploaded media IDs (bundle_upload_id from Media Assets). Skips re-upload.")
233
- .option("--youtube-type <type>", "YouTube type: SHORT (vertical, <3min) or VIDEO (landscape)")
234
- .option("--platform-data <json>", "Per-platform overrides as JSON")
235
- .option("--title <title>", "Post title (auto-generated from content if omitted)")
236
- .option("--account-ids <ids>", "Comma-separated account UUIDs to post from")
237
- .option("--schedule-at <datetime>", "ISO 8601 datetime to schedule the post")
238
- .action(async (content, opts) => {
239
- if (!content) {
240
- console.log(JSON.stringify({
241
- success: false,
242
- action: "social.post",
243
- error: { code: "missing_argument", message: "Provide the post content as a positional argument" },
244
- recovery_steps: [
245
- { command: 'naive social post "Your content here" --platforms twitter,linkedin --publish', description: "Create and publish a post" },
246
- { command: 'naive social post "Your content here" --platforms twitter,linkedin', description: "Create a draft" },
247
- ],
248
- }, null, 2));
249
- process.exit(1);
250
- }
251
- const body = {
252
- content,
253
- platforms: opts.platforms.split(",").map((p) => p.trim().toUpperCase()),
254
- publish_now: !!(opts.publish || opts.scheduleAt),
255
- };
256
- if (opts.title)
257
- body.title = opts.title;
258
- if (opts.mediaUrl)
259
- body.media_urls = [opts.mediaUrl];
260
- if (opts.uploadIds)
261
- body.upload_ids = opts.uploadIds.split(",").map((id) => id.trim());
262
- if (opts.youtubeType)
263
- body.youtube_type = opts.youtubeType.toUpperCase();
264
- if (opts.platformData)
265
- body.platform_data = JSON.parse(opts.platformData);
266
- if (opts.accountIds)
267
- body.account_ids = opts.accountIds.split(",").map((id) => id.trim());
268
- if (opts.scheduleAt)
269
- body.scheduled_at = opts.scheduleAt;
270
- const resp = await apiRequest("POST", "/v1/social/posts", body);
271
- handleApiError("social.post", resp);
272
- const data = resp.data;
273
- agentOutput({
274
- action: "social.post",
275
- result: resp.data,
276
- next_steps: [
277
- ...(data.status === "draft"
278
- ? [{ command: `naive social publish ${data.id}`, description: "Publish this draft" }]
279
- : [{ command: `naive social get ${data.id}`, description: "Check post status" }]),
280
- { command: `naive social analytics ${data.id}`, description: "View post analytics (after publishing)" },
281
- ],
282
- hints: [
283
- data.status === "draft"
284
- ? "Draft created. Use 'naive social publish' to publish, or re-run with --publish."
285
- : `Post ${data.status === "publishing" ? "queued for publishing" : "scheduled"}. From ${FIXED_CREDIT_COSTS.socialPost} credits deducted (see 'naive usage').`,
286
- ],
287
- related_commands: ["naive social posts", "naive social analytics"],
288
- });
289
- });
290
- socialCmd
291
- .command("get <post-id>")
292
- .description("Get details of a social media post")
293
- .action(async (postId) => {
294
- const resp = await apiRequest("GET", `/v1/social/posts/${postId}`);
295
- handleApiError("social.get", resp);
296
- agentOutput({
297
- action: "social.get",
298
- result: resp.data,
299
- next_steps: [
300
- { command: `naive social analytics ${postId}`, description: "View analytics" },
301
- { command: `naive social comments ${postId}`, description: "View comments" },
302
- ],
303
- hints: [`Post status: ${resp.data.status}`],
304
- });
305
- });
306
- socialCmd
307
- .command("edit <post-id>")
308
- .description("Edit a draft social media post")
309
- .option("--content <text>", "Updated content")
310
- .option("--platforms <list>", "Updated comma-separated platform list")
311
- .option("--platform-data <json>", "Updated per-platform overrides as JSON")
312
- .action(async (postId, opts) => {
313
- const body = {};
314
- if (opts.content)
315
- body.content = opts.content;
316
- if (opts.platforms)
317
- body.platforms = opts.platforms.split(",").map((p) => p.trim().toUpperCase());
318
- if (opts.platformData)
319
- body.platform_data = JSON.parse(opts.platformData);
320
- const resp = await apiRequest("PATCH", `/v1/social/posts/${postId}`, body);
321
- handleApiError("social.edit", resp);
322
- agentOutput({
323
- action: "social.edit",
324
- result: resp.data,
325
- next_steps: [
326
- { command: `naive social publish ${postId}`, description: "Publish the updated draft" },
327
- ],
328
- hints: ["Draft updated"],
329
- });
330
- });
331
- socialCmd
332
- .command("delete <post-id>")
333
- .description("Delete a social media post")
334
- .action(async (postId) => {
335
- const resp = await apiRequest("DELETE", `/v1/social/posts/${postId}`);
336
- handleApiError("social.delete", resp);
337
- agentOutput({
338
- action: "social.delete",
339
- result: resp.data,
340
- next_steps: [
341
- { command: "naive social posts", description: "View remaining posts" },
342
- ],
343
- hints: ["Post deleted"],
344
- });
345
- });
346
- socialCmd
347
- .command("publish <post-id>")
348
- .description(`Publish a draft social media post (from ${FIXED_CREDIT_COSTS.socialPost} credits)`)
349
- .action(async (postId) => {
350
- const resp = await apiRequest("POST", `/v1/social/posts/${postId}/publish`);
351
- handleApiError("social.publish", resp);
352
- agentOutput({
353
- action: "social.publish",
354
- result: resp.data,
355
- next_steps: [
356
- { command: `naive social get ${postId}`, description: "Check post status" },
357
- { command: `naive social analytics ${postId}`, description: "View analytics" },
358
- ],
359
- hints: [`Post published (from ${FIXED_CREDIT_COSTS.socialPost} credits deducted — see 'naive usage')`],
360
- });
361
- });
362
- socialCmd
363
- .command("analytics <post-id>")
364
- .description("Get analytics for a published social media post")
365
- .action(async (postId) => {
366
- const resp = await apiRequest("GET", `/v1/social/posts/${postId}/analytics`);
367
- handleApiError("social.analytics", resp);
368
- agentOutput({
369
- action: "social.analytics",
370
- result: resp.data,
371
- next_steps: [
372
- { command: `naive social comments ${postId}`, description: "View comments" },
373
- ],
374
- hints: ["Post analytics retrieved"],
375
- });
376
- });
377
- socialCmd
378
- .command("comments <post-id>")
379
- .description("Get comments on a published social media post")
380
- .action(async (postId) => {
381
- const resp = await apiRequest("GET", `/v1/social/posts/${postId}/comments`);
382
- handleApiError("social.comments", resp);
383
- agentOutput({
384
- action: "social.comments",
385
- result: resp.data,
386
- next_steps: [
387
- { command: `naive social analytics ${postId}`, description: "View analytics" },
388
- ],
389
- hints: ["Post comments retrieved"],
390
- });
391
- });
392
- socialCmd
393
- .command("account-analytics <account-id>")
394
- .description("Get analytics for a connected social media account")
395
- .action(async (accountId) => {
396
- const resp = await apiRequest("GET", `/v1/social/accounts/${accountId}/analytics`);
397
- handleApiError("social.account-analytics", resp);
398
- agentOutput({
399
- action: "social.account-analytics",
400
- result: resp.data,
401
- next_steps: [
402
- { command: "naive social accounts", description: "List all accounts" },
403
- ],
404
- hints: ["Account analytics retrieved"],
405
- });
406
- });
407
- //# sourceMappingURL=social.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"social.js","sourceRoot":"","sources":["../../src/commands/social.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const statusCmd: Command;
@@ -1,79 +0,0 @@
1
- import { Command } from "commander";
2
- import { apiRequest, handleApiError } from "../client.js";
3
- import { agentOutput } from "../output.js";
4
- export const statusCmd = new Command("status")
5
- .description("Show full agent status: identity, credits, tier, and resource summary")
6
- .addHelpText("after", `
7
- Examples:
8
- $ naive status
9
-
10
- What this does:
11
- Returns a comprehensive status overview:
12
- - Agent identity (name, ID)
13
- - Company context (name, ID)
14
- - Credit balance and billing tier
15
- - Resource counts (inboxes, active jobs, etc.)
16
- - API connectivity confirmation
17
-
18
- Use this to:
19
- - Verify the CLI is properly configured and authenticated
20
- - Check remaining credits before starting a task
21
- - Get a quick overview of available resources
22
- - Confirm which company you're operating under
23
- `)
24
- .action(async () => {
25
- const resp = await apiRequest("GET", "/v1/status");
26
- handleApiError("status", resp);
27
- const data = resp.data;
28
- const lowCredits = data.credits?.balance < 10;
29
- // Strictly `=== false`. The field is null when no owner row resolves, and a
30
- // null must not be rendered as "unverified" — that would tell a working
31
- // account to go and fix something that is not wrong with it.
32
- const unverified = data.account?.email_verified === false;
33
- agentOutput({
34
- action: "status",
35
- result: resp.data,
36
- next_steps: [
37
- // FIRST, and ahead of the low-balance line, because for an unverified
38
- // account the balance is not low — it is withheld, and buying credits
39
- // is the wrong action. This is the most common state a new account can
40
- // be in and `status` used to report it as a bare "0" with no cause.
41
- ...(unverified
42
- ? [
43
- {
44
- command: "naive verify-email --resend",
45
- description: `Verify ${data.account?.email ?? "the account email"} to release the 20 free signup credits`,
46
- when: "The account email is not verified yet",
47
- },
48
- ]
49
- : []),
50
- ...(lowCredits && !unverified
51
- ? [{ command: "# Add credits at https://usenaive.ai/billing", description: "Your credit balance is low", when: "Balance below 10 credits" }]
52
- : []),
53
- { command: "naive usage", description: "See detailed credit usage history" },
54
- { command: "naive identity", description: "View full resource details" },
55
- { command: "naive jobs --status processing", description: "Check active async jobs" },
56
- ],
57
- hints: [
58
- `Balance: ${data.credits?.balance ?? "?"} credits (${data.credits?.tier ?? "free"} tier)`,
59
- ...(unverified
60
- ? [
61
- `EMAIL NOT VERIFIED: the 20 free signup credits are withheld until ${data.account?.email ?? "the account email"} is verified. ` +
62
- `Every billable call is refused with insufficient_credits until then. Run 'naive verify-email --resend', then 'naive verify-email <token>'.`,
63
- // Said HERE, next to the promise, and not only at the moment the
64
- // router refuses. This hint is what an agent plans against: it is
65
- // about to conclude "verify, then everything works", and for the
66
- // one primitive it is most likely to reach for, that is false.
67
- `Verification does not unlock the LLM router. 'naive llm chat' (and /v1/llm, and the provider proxies) ` +
68
- `require a PAID account — a credit pack or a subscription. Free credit does not buy model routing.`,
69
- ]
70
- : []),
71
- // Suppressed while unverified: "low balance, some operations may fail"
72
- // is true but points at the wrong remedy, and a zero that is EXPLAINED
73
- // one line above does not also need to be alarming.
74
- ...(lowCredits && !unverified ? ["WARNING: Low credit balance. Some operations may fail."] : []),
75
- ],
76
- related_commands: ["naive whoami", "naive usage", "naive identity", "naive jobs"],
77
- });
78
- });
79
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.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,uEAAuE,CAAC;KACpF,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;CAiBvB,CAAC;KACC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACnD,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAMjB,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,CAAC;IAC9C,4EAA4E;IAC5E,wEAAwE;IACxE,6DAA6D;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,KAAK,KAAK,CAAC;IAE1D,WAAW,CAAC;QACV,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,sEAAsE;YACtE,sEAAsE;YACtE,uEAAuE;YACvE,oEAAoE;YACpE,GAAG,CAAC,UAAU;gBACZ,CAAC,CAAC;oBACE;wBACE,OAAO,EAAE,6BAA6B;wBACtC,WAAW,EAAE,UAAU,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,mBAAmB,wCAAwC;wBACzG,IAAI,EAAE,uCAAuC;qBAC9C;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,UAAU,IAAI,CAAC,UAAU;gBAC3B,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,8CAA8C,EAAE,WAAW,EAAE,4BAA4B,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;gBAC5I,CAAC,CAAC,EAAE,CAAC;YACP,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mCAAmC,EAAE;YAC5E,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,4BAA4B,EAAE;YACxE,EAAE,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,yBAAyB,EAAE;SACtF;QACD,KAAK,EAAE;YACL,YAAY,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,GAAG,aAAa,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,QAAQ;YACzF,GAAG,CAAC,UAAU;gBACZ,CAAC,CAAC;oBACE,qEAAqE,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,mBAAmB,gBAAgB;wBAC7H,4IAA4I;oBAC9I,iEAAiE;oBACjE,kEAAkE;oBAClE,iEAAiE;oBACjE,+DAA+D;oBAC/D,wGAAwG;wBACtG,mGAAmG;iBACtG;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,uEAAuE;YACvE,uEAAuE;YACvE,oDAAoD;YACpD,GAAG,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACjG;QACD,gBAAgB,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,CAAC;KAClF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const supportCmd: Command;
@@ -1,134 +0,0 @@
1
- import { Command } from "commander";
2
- import { apiRequest, handleApiError } from "../client.js";
3
- import { agentOutput } from "../output.js";
4
- /**
5
- * Agent-facing context for the reply. When the support agent escalated the
6
- * conversation (bug or manual-intervention), the hints instruct the caller's
7
- * agent to relay that to the user explicitly.
8
- */
9
- function replyHints(reply, fallback) {
10
- if (!reply)
11
- return [fallback];
12
- const hints = [`Support agent: ${reply.text}`];
13
- const tools = (reply.metadata?.tool_calls ?? []).map((t) => t.tool);
14
- if (tools.includes("escalate_bug")) {
15
- hints.push("CONTEXT FOR YOUR AGENT: this bug was reported to the naive team and an automated fix has been queued. Tell the user explicitly: the bug has been reported to the naive team, they can contact us at support@usenaive.ai, and ask them whether they'd like to share any follow-up feedback or details (send it with `naive support send <ticketId> \"…\"`).");
16
- }
17
- else if (tools.includes("escalate")) {
18
- hints.push("CONTEXT FOR YOUR AGENT: this ticket was escalated to a human on the naive team. Tell the user explicitly: the naive team has been notified and will follow up, they can contact us at support@usenaive.ai, and ask them whether they'd like to add any follow-up details (send it with `naive support send <ticketId> \"…\"`).");
19
- }
20
- return hints;
21
- }
22
- function printThread(messages) {
23
- return messages.map((m) => {
24
- const who = m.role === "user" ? "you" : m.role === "human_agent" ? "naive team" : m.role;
25
- return `[${who}] ${m.text}`;
26
- });
27
- }
28
- const askCmd = new Command("ask")
29
- .description("Open a support ticket — the naive support agent replies immediately")
30
- .argument("<message...>", "What you need help with")
31
- .option("-s, --subject <subject>", "Ticket subject (defaults to the message)")
32
- .action(async (messageWords, opts) => {
33
- const message = messageWords.join(" ");
34
- const resp = await apiRequest("POST", "/v1/support/tickets", {
35
- message,
36
- ...(opts.subject ? { subject: opts.subject } : {}),
37
- });
38
- handleApiError("support ask", resp);
39
- const data = resp.data;
40
- agentOutput({
41
- action: "support ask",
42
- result: resp.data,
43
- next_steps: [
44
- { command: `naive support show ${data.ticket.id}`, description: "View the full thread" },
45
- { command: `naive support send ${data.ticket.id} "…"`, description: "Reply on this ticket" },
46
- ],
47
- hints: replyHints(data.reply, "Ticket created — the team will follow up."),
48
- related_commands: ["naive support list", "naive report"],
49
- });
50
- });
51
- const listCmd = new Command("list")
52
- .description("List your support tickets")
53
- .action(async () => {
54
- const resp = await apiRequest("GET", "/v1/support/tickets");
55
- handleApiError("support list", resp);
56
- const data = resp.data;
57
- agentOutput({
58
- action: "support list",
59
- result: resp.data,
60
- next_steps: [{ command: "naive support show <ticketId>", description: "View a ticket's thread" }],
61
- hints: data.tickets.map((t) => `${t.id} · ${t.status} · ${t.subject}`),
62
- related_commands: ["naive support ask"],
63
- });
64
- });
65
- const showCmd = new Command("show")
66
- .description("Show a support ticket's full thread")
67
- .argument("<ticketId>", "Ticket id")
68
- .action(async (ticketId) => {
69
- const resp = await apiRequest("GET", `/v1/support/tickets/${ticketId}`);
70
- handleApiError("support show", resp);
71
- const data = resp.data;
72
- agentOutput({
73
- action: "support show",
74
- result: resp.data,
75
- next_steps: [
76
- { command: `naive support send ${ticketId} "…"`, description: "Reply on this ticket" },
77
- { command: `naive support close ${ticketId}`, description: "Mark it resolved" },
78
- ],
79
- hints: printThread(data.messages),
80
- related_commands: ["naive support list"],
81
- });
82
- });
83
- const sendCmd = new Command("send")
84
- .description("Send a message on a support ticket")
85
- .argument("<ticketId>", "Ticket id")
86
- .argument("<message...>", "Your message")
87
- .action(async (ticketId, messageWords) => {
88
- const resp = await apiRequest("POST", `/v1/support/tickets/${ticketId}/messages`, {
89
- message: messageWords.join(" "),
90
- });
91
- handleApiError("support send", resp);
92
- const data = resp.data;
93
- agentOutput({
94
- action: "support send",
95
- result: resp.data,
96
- next_steps: [{ command: `naive support show ${ticketId}`, description: "View the full thread" }],
97
- hints: replyHints(data.reply, "Message delivered — a human from the naive team holds this ticket and will reply."),
98
- related_commands: ["naive support list"],
99
- });
100
- });
101
- const closeCmd = new Command("close")
102
- .description("Mark a support ticket resolved")
103
- .argument("<ticketId>", "Ticket id")
104
- .action(async (ticketId) => {
105
- const resp = await apiRequest("POST", `/v1/support/tickets/${ticketId}/close`);
106
- handleApiError("support close", resp);
107
- agentOutput({
108
- action: "support close",
109
- result: resp.data,
110
- next_steps: [{ command: "naive support ask <message>", description: "Open a new ticket" }],
111
- related_commands: ["naive support list"],
112
- });
113
- });
114
- export const supportCmd = new Command("support")
115
- .description("Contact naive support: chat with the support agent, manage your tickets")
116
- .addHelpText("after", `
117
- Examples:
118
- $ naive support ask "My agent's card decline says spend_cap_exceeded but the cap looks fine"
119
- $ naive support list
120
- $ naive support show <ticketId>
121
- $ naive support send <ticketId> "Here is the error output..."
122
- $ naive support close <ticketId>
123
-
124
- What this does:
125
- Opens a ticket with the naive support agent — it answers from the docs,
126
- escalates refunds/account changes to a human, and files platform bugs to
127
- the team plus an automated fix queue. Humans reply on the same thread.
128
- `)
129
- .addCommand(askCmd)
130
- .addCommand(listCmd)
131
- .addCommand(showCmd)
132
- .addCommand(sendCmd)
133
- .addCommand(closeCmd);
134
- //# sourceMappingURL=support.js.map