@usenaive-sdk/cli 0.3.1 → 0.4.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 (39) hide show
  1. package/README.md +53 -6
  2. package/dist/commands/apps.d.ts +2 -0
  3. package/dist/commands/apps.js +424 -0
  4. package/dist/commands/apps.js.map +1 -0
  5. package/dist/commands/ceo.d.ts +2 -0
  6. package/dist/commands/ceo.js +369 -0
  7. package/dist/commands/ceo.js.map +1 -0
  8. package/dist/commands/companies.js +105 -0
  9. package/dist/commands/companies.js.map +1 -1
  10. package/dist/commands/cron-jobs.d.ts +2 -0
  11. package/dist/commands/cron-jobs.js +208 -0
  12. package/dist/commands/cron-jobs.js.map +1 -0
  13. package/dist/commands/employees.d.ts +2 -0
  14. package/dist/commands/employees.js +190 -0
  15. package/dist/commands/employees.js.map +1 -0
  16. package/dist/commands/media.d.ts +2 -0
  17. package/dist/commands/media.js +183 -0
  18. package/dist/commands/media.js.map +1 -0
  19. package/dist/commands/memory.d.ts +2 -0
  20. package/dist/commands/memory.js +151 -0
  21. package/dist/commands/memory.js.map +1 -0
  22. package/dist/commands/objectives.d.ts +2 -0
  23. package/dist/commands/objectives.js +243 -0
  24. package/dist/commands/objectives.js.map +1 -0
  25. package/dist/commands/register.js +5 -6
  26. package/dist/commands/register.js.map +1 -1
  27. package/dist/commands/social.js +3 -0
  28. package/dist/commands/social.js.map +1 -1
  29. package/dist/commands/tasks.d.ts +2 -0
  30. package/dist/commands/tasks.js +400 -0
  31. package/dist/commands/tasks.js.map +1 -0
  32. package/dist/commands/usage.js +5 -5
  33. package/dist/commands/video.js +259 -11
  34. package/dist/commands/video.js.map +1 -1
  35. package/dist/config.js +1 -1
  36. package/dist/config.js.map +1 -1
  37. package/dist/index.js +30 -6
  38. package/dist/index.js.map +1 -1
  39. package/package.json +1 -1
@@ -0,0 +1,400 @@
1
+ import { Command } from "commander";
2
+ import { apiRequest, handleApiError } from "../client.js";
3
+ import { agentOutput } from "../output.js";
4
+ export const tasksCmd = new Command("tasks")
5
+ .description("Kanban task management — list, create, complete, and manage tasks across your AI workforce")
6
+ .addHelpText("after", `
7
+ Subcommands:
8
+ naive tasks list List tasks (with optional filters)
9
+ naive tasks create <title> Create a new task
10
+ naive tasks show <id> Show full task details
11
+ naive tasks run <id> Trigger a worker to start executing a task
12
+ naive tasks complete <id> Mark a task as completed
13
+ naive tasks block <id> Mark a task as blocked
14
+ naive tasks unblock <id> Remove blocked status from a task
15
+ naive tasks comment <id> <text> Add a comment to a task
16
+ naive tasks dispatch Dispatch pending tasks to available employees
17
+ naive tasks stats Show task board statistics
18
+
19
+ Workflow:
20
+ 1. naive tasks create "Write blog post" --assignee writer-1 → create a task
21
+ 2. naive tasks list --status in_progress → monitor active work
22
+ 3. naive tasks comment <id> "Add SEO keywords" → provide guidance
23
+ 4. naive tasks complete <id> --summary "Published to blog" → close the task
24
+ 5. naive tasks stats → review board health
25
+
26
+ Tasks are the unit of work in the naive kanban system. The CEO creates
27
+ objectives, which are broken into tasks, which are assigned to employees.
28
+
29
+ Examples:
30
+ $ naive tasks list
31
+ $ naive tasks list --status blocked --assignee engineer-1
32
+ $ naive tasks create "Deploy landing page" --assignee engineer-1
33
+ $ naive tasks complete abc-123 --summary "Deployed to production"
34
+ $ naive tasks dispatch
35
+ `);
36
+ tasksCmd
37
+ .command("list")
38
+ .description("List tasks with optional filters")
39
+ .option("--status <status>", "Filter by status: pending | in_progress | completed | blocked")
40
+ .option("--assignee <agent>", "Filter by assignee agent ID or name")
41
+ .option("--objective <id>", "Filter by parent objective ID")
42
+ .addHelpText("after", `
43
+ Examples:
44
+ $ naive tasks list
45
+ $ naive tasks list --status in_progress
46
+ $ naive tasks list --assignee marketer-1
47
+ $ naive tasks list --objective obj-abc-123
48
+
49
+ Returns tasks with:
50
+ - id, title, status, assignee
51
+ - Parent objective reference
52
+ - Created/updated timestamps
53
+ - Priority and tags
54
+ `)
55
+ .action(async (opts) => {
56
+ const params = new URLSearchParams();
57
+ if (opts.status)
58
+ params.set("status", opts.status);
59
+ if (opts.assignee)
60
+ params.set("assignee", opts.assignee);
61
+ if (opts.objective)
62
+ params.set("objective", opts.objective);
63
+ const qs = params.toString();
64
+ const resp = await apiRequest("GET", `/v1/tasks${qs ? `?${qs}` : ""}`);
65
+ handleApiError("tasks.list", resp);
66
+ const data = resp.data;
67
+ const count = data.tasks?.length ?? 0;
68
+ const blocked = data.tasks?.filter((t) => t.status === "blocked") ?? [];
69
+ agentOutput({
70
+ action: "tasks.list",
71
+ result: resp.data,
72
+ next_steps: [
73
+ ...(count > 0
74
+ ? [{ command: `naive tasks show ${data.tasks[0].id}`, description: "View details of the first task" }]
75
+ : []),
76
+ ...(blocked.length > 0
77
+ ? [{ command: `naive tasks unblock ${blocked[0].id}`, description: "Unblock a stuck task" }]
78
+ : []),
79
+ { command: "naive tasks create <title>", description: "Create a new task" },
80
+ { command: "naive tasks dispatch", description: "Auto-assign pending tasks to employees" },
81
+ ],
82
+ hints: [
83
+ `${count} task${count !== 1 ? "s" : ""} found${opts.status ? ` (status: ${opts.status})` : ""}`,
84
+ ...(blocked.length > 0 ? [`${blocked.length} task${blocked.length !== 1 ? "s" : ""} currently blocked`] : []),
85
+ ],
86
+ related_commands: ["naive tasks show", "naive tasks create", "naive tasks dispatch", "naive tasks stats"],
87
+ });
88
+ });
89
+ tasksCmd
90
+ .command("create <title>")
91
+ .description("Create a new task on the kanban board")
92
+ .option("--assignee <agent>", "Assign to a specific employee agent")
93
+ .option("--objective <id>", "Link to a parent objective")
94
+ .option("--priority <level>", "Priority: low | medium | high | critical", "medium")
95
+ .option("--description <text>", "Detailed task description")
96
+ .addHelpText("after", `
97
+ Examples:
98
+ $ naive tasks create "Write blog post about AI trends"
99
+ $ naive tasks create "Deploy landing page" --assignee engineer-1 --priority high
100
+ $ naive tasks create "Research competitors" --objective obj-abc-123
101
+
102
+ What this does:
103
+ Creates a new task in 'pending' status. If --assignee is provided,
104
+ the task is immediately assigned. Otherwise, use 'naive tasks dispatch'
105
+ to auto-assign pending tasks to available employees.
106
+ `)
107
+ .action(async (title, opts) => {
108
+ const resp = await apiRequest("POST", "/v1/tasks", {
109
+ title,
110
+ ...(opts.assignee && { assignee: opts.assignee }),
111
+ ...(opts.objective && { objective_id: opts.objective }),
112
+ ...(opts.priority && { priority: opts.priority }),
113
+ ...(opts.description && { description: opts.description }),
114
+ });
115
+ handleApiError("tasks.create", resp);
116
+ const data = resp.data;
117
+ agentOutput({
118
+ action: "tasks.create",
119
+ result: resp.data,
120
+ next_steps: [
121
+ ...(data.assignee
122
+ ? [{ command: `naive tasks show ${data.id}`, description: "Monitor the assigned task" }]
123
+ : [{ command: "naive tasks dispatch", description: "Dispatch this task to an available employee" }]),
124
+ { command: "naive tasks list", description: "View the full task board" },
125
+ ],
126
+ hints: [
127
+ `Task created: "${data.title}" (id: ${data.id})`,
128
+ data.assignee ? `Assigned to: ${data.assignee}` : "Task is unassigned — use dispatch or assign manually",
129
+ ],
130
+ related_commands: ["naive tasks list", "naive tasks dispatch", "naive tasks show"],
131
+ });
132
+ });
133
+ tasksCmd
134
+ .command("show <id>")
135
+ .description("Show full details for a specific task")
136
+ .addHelpText("after", `
137
+ Examples:
138
+ $ naive tasks show abc-123-task-id
139
+
140
+ Returns complete task details:
141
+ - Title, description, status, priority
142
+ - Assignee and parent objective
143
+ - Comments and activity log
144
+ - Created/updated/completed timestamps
145
+ - Metadata and handoff summary
146
+ `)
147
+ .action(async (id) => {
148
+ const resp = await apiRequest("GET", `/v1/tasks/${id}`);
149
+ handleApiError("tasks.show", resp);
150
+ const data = resp.data;
151
+ agentOutput({
152
+ action: "tasks.show",
153
+ result: resp.data,
154
+ next_steps: [
155
+ ...(data.status === "in_progress"
156
+ ? [{ command: `naive tasks complete ${id} --summary "..."`, description: "Mark as completed" }]
157
+ : []),
158
+ ...(data.status === "pending"
159
+ ? [{ command: "naive tasks dispatch", description: "Dispatch pending tasks" }]
160
+ : []),
161
+ ...(data.status === "blocked"
162
+ ? [{ command: `naive tasks unblock ${id}`, description: "Unblock this task" }]
163
+ : []),
164
+ { command: `naive tasks comment ${id} "<text>"`, description: "Add a comment" },
165
+ { command: "naive tasks list", description: "Back to task list" },
166
+ ],
167
+ hints: [
168
+ `Task "${data.title}": ${data.status}`,
169
+ ],
170
+ related_commands: ["naive tasks complete", "naive tasks comment", "naive tasks list"],
171
+ });
172
+ });
173
+ tasksCmd
174
+ .command("complete <id>")
175
+ .description("Mark a task as completed with an optional summary and metadata")
176
+ .option("--summary <text>", "Completion summary describing what was accomplished")
177
+ .option("--metadata <json>", "JSON metadata to attach (e.g., output URLs, metrics)")
178
+ .addHelpText("after", `
179
+ Examples:
180
+ $ naive tasks complete abc-123 --summary "Blog post published at /blog/ai-trends"
181
+ $ naive tasks complete abc-123 --summary "Done" --metadata '{"url": "https://example.com/post"}'
182
+
183
+ What this does:
184
+ Moves the task to 'completed' status. The summary and metadata are
185
+ stored as the task's handoff — visible to the CEO and other agents
186
+ for downstream coordination.
187
+ `)
188
+ .action(async (id, opts) => {
189
+ const body = { status: "completed" };
190
+ if (opts.summary)
191
+ body.summary = opts.summary;
192
+ if (opts.metadata) {
193
+ try {
194
+ body.metadata = JSON.parse(opts.metadata);
195
+ }
196
+ catch {
197
+ body.metadata = opts.metadata;
198
+ }
199
+ }
200
+ const resp = await apiRequest("POST", `/v1/tasks/${id}/complete`, body);
201
+ handleApiError("tasks.complete", resp);
202
+ agentOutput({
203
+ action: "tasks.complete",
204
+ result: resp.data,
205
+ next_steps: [
206
+ { command: "naive tasks list --status pending", description: "Pick up the next pending task" },
207
+ { command: "naive tasks stats", description: "View board statistics" },
208
+ ],
209
+ hints: [
210
+ `Task ${id} marked as completed`,
211
+ ...(opts.summary ? [`Summary: ${opts.summary}`] : []),
212
+ ],
213
+ related_commands: ["naive tasks list", "naive tasks stats", "naive tasks dispatch"],
214
+ });
215
+ });
216
+ tasksCmd
217
+ .command("block <id>")
218
+ .description("Mark a task as blocked — requires a reason")
219
+ .requiredOption("--reason <reason>", "Why is this task blocked?")
220
+ .addHelpText("after", `
221
+ Examples:
222
+ $ naive tasks block abc-123 --reason "Waiting for domain DNS propagation"
223
+ $ naive tasks block abc-123 --reason "Need API credentials from client"
224
+
225
+ Blocked tasks are surfaced to the CEO for resolution or re-assignment.
226
+ `)
227
+ .action(async (id, opts) => {
228
+ const resp = await apiRequest("POST", `/v1/tasks/${id}/block`, {
229
+ reason: opts.reason,
230
+ });
231
+ handleApiError("tasks.block", resp);
232
+ agentOutput({
233
+ action: "tasks.block",
234
+ result: resp.data,
235
+ next_steps: [
236
+ { command: `naive tasks unblock ${id}`, description: "Unblock when the issue is resolved" },
237
+ { command: "naive tasks list --status blocked", description: "View all blocked tasks" },
238
+ { command: "naive ceo message \"Task blocked: " + opts.reason + "\"", description: "Notify the CEO" },
239
+ ],
240
+ hints: [
241
+ `Task ${id} is now blocked`,
242
+ `Reason: ${opts.reason}`,
243
+ ],
244
+ related_commands: ["naive tasks unblock", "naive tasks list", "naive ceo message"],
245
+ });
246
+ });
247
+ tasksCmd
248
+ .command("unblock <id>")
249
+ .description("Remove blocked status from a task — returns it to in_progress")
250
+ .addHelpText("after", `
251
+ Examples:
252
+ $ naive tasks unblock abc-123
253
+
254
+ Moves the task from 'blocked' back to 'in_progress' so the assignee
255
+ can resume work.
256
+ `)
257
+ .action(async (id) => {
258
+ const resp = await apiRequest("POST", `/v1/tasks/${id}/unblock`);
259
+ handleApiError("tasks.unblock", resp);
260
+ agentOutput({
261
+ action: "tasks.unblock",
262
+ result: resp.data,
263
+ next_steps: [
264
+ { command: `naive tasks show ${id}`, description: "View the unblocked task" },
265
+ { command: "naive tasks list --status in_progress", description: "See all active tasks" },
266
+ ],
267
+ hints: [
268
+ `Task ${id} unblocked — back to in_progress`,
269
+ ],
270
+ related_commands: ["naive tasks show", "naive tasks list", "naive tasks block"],
271
+ });
272
+ });
273
+ tasksCmd
274
+ .command("comment <id> <text>")
275
+ .description("Add a comment to a task — visible to all agents and the CEO")
276
+ .addHelpText("after", `
277
+ Examples:
278
+ $ naive tasks comment abc-123 "Added SEO meta tags to the blog post"
279
+ $ naive tasks comment abc-123 "Waiting on design assets from the marketer"
280
+
281
+ Comments create an activity trail on the task for coordination.
282
+ `)
283
+ .action(async (id, text) => {
284
+ const resp = await apiRequest("POST", `/v1/tasks/${id}/comments`, {
285
+ text,
286
+ });
287
+ handleApiError("tasks.comment", resp);
288
+ agentOutput({
289
+ action: "tasks.comment",
290
+ result: resp.data,
291
+ next_steps: [
292
+ { command: `naive tasks show ${id}`, description: "View the task with all comments" },
293
+ { command: "naive tasks list", description: "Back to task list" },
294
+ ],
295
+ hints: [
296
+ `Comment added to task ${id}`,
297
+ ],
298
+ related_commands: ["naive tasks show", "naive tasks list"],
299
+ });
300
+ });
301
+ tasksCmd
302
+ .command("run <id>")
303
+ .description("Directly trigger a worker to start executing a specific task")
304
+ .addHelpText("after", `
305
+ Examples:
306
+ $ naive tasks run abc-123
307
+ $ naive tasks run t_a2a1ae0c
308
+
309
+ What this does:
310
+ Triggers the kanban dispatcher to immediately spawn a worker for
311
+ the specified task. The task must already be assigned to an employee.
312
+ Use 'naive tasks list --status in_progress' to monitor the worker's progress.
313
+ `)
314
+ .action(async (id) => {
315
+ const resp = await apiRequest("POST", `/v1/tasks/${id}/run`);
316
+ handleApiError("tasks.run", resp);
317
+ const data = resp.data;
318
+ agentOutput({
319
+ action: "tasks.run",
320
+ result: resp.data,
321
+ next_steps: [
322
+ { command: `naive tasks show ${id}`, description: "Monitor task progress" },
323
+ { command: "naive tasks list --status in_progress", description: "View all running tasks" },
324
+ ],
325
+ hints: [
326
+ `Worker triggered for task "${data.task.title}"`,
327
+ ...(data.task.assignee ? [`Assigned to: ${data.task.assignee}`] : []),
328
+ data.run_triggered ? "Dispatch triggered successfully" : "Dispatch may have failed",
329
+ ],
330
+ related_commands: ["naive tasks show", "naive tasks list", "naive tasks dispatch"],
331
+ });
332
+ });
333
+ tasksCmd
334
+ .command("dispatch")
335
+ .description("Auto-dispatch pending tasks to available employees based on skills and capacity")
336
+ .addHelpText("after", `
337
+ Examples:
338
+ $ naive tasks dispatch
339
+
340
+ What this does:
341
+ The system examines all pending tasks and available employees,
342
+ then assigns tasks based on:
343
+ - Employee skill match
344
+ - Current workload / capacity
345
+ - Task priority
346
+ - Objective deadlines
347
+
348
+ Returns the list of newly assigned tasks and their assignees.
349
+ `)
350
+ .action(async () => {
351
+ const resp = await apiRequest("POST", "/v1/tasks/dispatch");
352
+ handleApiError("tasks.dispatch", resp);
353
+ const data = resp.data;
354
+ const count = data.dispatched?.length ?? 0;
355
+ agentOutput({
356
+ action: "tasks.dispatch",
357
+ result: resp.data,
358
+ next_steps: [
359
+ { command: "naive tasks list --status in_progress", description: "View newly assigned tasks" },
360
+ { command: "naive tasks stats", description: "Check board statistics" },
361
+ ],
362
+ hints: [
363
+ `${count} task${count !== 1 ? "s" : ""} dispatched to employees`,
364
+ ...(count === 0 ? ["No pending tasks to dispatch, or no employees available"] : []),
365
+ ],
366
+ related_commands: ["naive tasks list", "naive tasks stats", "naive employees list"],
367
+ });
368
+ });
369
+ tasksCmd
370
+ .command("stats")
371
+ .description("Show kanban board statistics — task counts by status, employee utilization")
372
+ .addHelpText("after", `
373
+ Examples:
374
+ $ naive tasks stats
375
+
376
+ Returns:
377
+ - Task counts by status (pending, in_progress, completed, blocked)
378
+ - Average completion time
379
+ - Employee utilization rates
380
+ - Blocked task summary
381
+ - Objective progress overview
382
+ `)
383
+ .action(async () => {
384
+ const resp = await apiRequest("GET", "/v1/tasks/stats");
385
+ handleApiError("tasks.stats", resp);
386
+ agentOutput({
387
+ action: "tasks.stats",
388
+ result: resp.data,
389
+ next_steps: [
390
+ { command: "naive tasks list --status blocked", description: "Address blocked tasks" },
391
+ { command: "naive tasks dispatch", description: "Dispatch pending tasks" },
392
+ { command: "naive objectives list", description: "Review objective progress" },
393
+ ],
394
+ hints: [
395
+ "Stats reflect the current state of your kanban board",
396
+ ],
397
+ related_commands: ["naive tasks list", "naive tasks dispatch", "naive objectives list", "naive employees list"],
398
+ });
399
+ });
400
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
@@ -27,16 +27,16 @@ Use this to:
27
27
 
28
28
  Credit costs reference:
29
29
  Fixed-price operations:
30
- - Web search: 0.01 credits
31
- - URL extraction: 0.02 credits
32
- - Email send: 1.0 credits
30
+ - Web search: 1 credit
31
+ - URL read: 1 credit
32
+ - Email send: 1 credit
33
33
  - Stock photo search: free (0 credits)
34
- - Deep research: 1.05.0 credits (depth-dependent)
34
+ - Deep research: 38 credits (depth-dependent)
35
35
 
36
36
  Dynamic-price operations (model-dependent):
37
+ - LLM tokens: per-token billing based on model (see docs)
37
38
  - Image generation: varies (GET /v1/images/pricing to preview)
38
39
  - Video generation: varies (GET /v1/video/pricing to preview)
39
- - Pricing: based on model costs, at $0.50 per credit
40
40
  `)
41
41
  .action(async (opts) => {
42
42
  const resp = await apiRequest("GET", `/v1/usage?days=${opts.days}&limit=${opts.limit}`);