@usenaive-sdk/cli 0.15.0 → 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.
- package/README.md +43 -354
- package/dist/index.js +51775 -502
- package/package.json +22 -18
- package/dist/client.d.ts +0 -108
- package/dist/client.js +0 -458
- package/dist/client.js.map +0 -1
- package/dist/commands/account-kits.d.ts +0 -2
- package/dist/commands/account-kits.js +0 -71
- package/dist/commands/account-kits.js.map +0 -1
- package/dist/commands/aeo.d.ts +0 -2
- package/dist/commands/aeo.js +0 -451
- package/dist/commands/aeo.js.map +0 -1
- package/dist/commands/agent-profiles.d.ts +0 -11
- package/dist/commands/agent-profiles.js +0 -120
- package/dist/commands/agent-profiles.js.map +0 -1
- package/dist/commands/agents.d.ts +0 -2
- package/dist/commands/agents.js +0 -916
- package/dist/commands/agents.js.map +0 -1
- package/dist/commands/app-data.d.ts +0 -2
- package/dist/commands/app-data.js +0 -445
- package/dist/commands/app-data.js.map +0 -1
- package/dist/commands/approvals.d.ts +0 -2
- package/dist/commands/approvals.js +0 -242
- package/dist/commands/approvals.js.map +0 -1
- package/dist/commands/apps.d.ts +0 -9
- package/dist/commands/apps.js +0 -844
- package/dist/commands/apps.js.map +0 -1
- package/dist/commands/audio.d.ts +0 -9
- package/dist/commands/audio.js +0 -391
- package/dist/commands/audio.js.map +0 -1
- package/dist/commands/auth.d.ts +0 -31
- package/dist/commands/auth.js +0 -428
- package/dist/commands/auth.js.map +0 -1
- package/dist/commands/billing.d.ts +0 -2
- package/dist/commands/billing.js +0 -245
- package/dist/commands/billing.js.map +0 -1
- package/dist/commands/brain.d.ts +0 -2
- package/dist/commands/brain.js +0 -1300
- package/dist/commands/brain.js.map +0 -1
- package/dist/commands/browser.d.ts +0 -2
- package/dist/commands/browser.js +0 -378
- package/dist/commands/browser.js.map +0 -1
- package/dist/commands/business.d.ts +0 -2
- package/dist/commands/business.js +0 -566
- package/dist/commands/business.js.map +0 -1
- package/dist/commands/cards.d.ts +0 -2
- package/dist/commands/cards.js +0 -419
- package/dist/commands/cards.js.map +0 -1
- package/dist/commands/ceo.d.ts +0 -2
- package/dist/commands/ceo.js +0 -369
- package/dist/commands/ceo.js.map +0 -1
- package/dist/commands/clone.d.ts +0 -2
- package/dist/commands/clone.js +0 -203
- package/dist/commands/clone.js.map +0 -1
- package/dist/commands/companies.d.ts +0 -10
- package/dist/commands/companies.js +0 -283
- package/dist/commands/companies.js.map +0 -1
- package/dist/commands/company-data.d.ts +0 -2
- package/dist/commands/company-data.js +0 -168
- package/dist/commands/company-data.js.map +0 -1
- package/dist/commands/compute.d.ts +0 -2
- package/dist/commands/compute.js +0 -498
- package/dist/commands/compute.js.map +0 -1
- package/dist/commands/config.d.ts +0 -2
- package/dist/commands/config.js +0 -36
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/connections.d.ts +0 -8
- package/dist/commands/connections.js +0 -137
- package/dist/commands/connections.js.map +0 -1
- package/dist/commands/cron-jobs.d.ts +0 -2
- package/dist/commands/cron-jobs.js +0 -245
- package/dist/commands/cron-jobs.js.map +0 -1
- package/dist/commands/domains.d.ts +0 -2
- package/dist/commands/domains.js +0 -474
- package/dist/commands/domains.js.map +0 -1
- package/dist/commands/ecommerce.d.ts +0 -2
- package/dist/commands/ecommerce.js +0 -277
- package/dist/commands/ecommerce.js.map +0 -1
- package/dist/commands/email.d.ts +0 -2
- package/dist/commands/email.js +0 -336
- package/dist/commands/email.js.map +0 -1
- package/dist/commands/employees.d.ts +0 -2
- package/dist/commands/employees.js +0 -190
- package/dist/commands/employees.js.map +0 -1
- package/dist/commands/env.d.ts +0 -7
- package/dist/commands/env.js +0 -112
- package/dist/commands/env.js.map +0 -1
- package/dist/commands/formation.d.ts +0 -2
- package/dist/commands/formation.js +0 -273
- package/dist/commands/formation.js.map +0 -1
- package/dist/commands/identity.d.ts +0 -2
- package/dist/commands/identity.js +0 -110
- package/dist/commands/identity.js.map +0 -1
- package/dist/commands/images.d.ts +0 -2
- package/dist/commands/images.js +0 -371
- package/dist/commands/images.js.map +0 -1
- package/dist/commands/init.d.ts +0 -5
- package/dist/commands/init.js +0 -43
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/jobs.d.ts +0 -2
- package/dist/commands/jobs.js +0 -144
- package/dist/commands/jobs.js.map +0 -1
- package/dist/commands/keys.d.ts +0 -2
- package/dist/commands/keys.js +0 -156
- package/dist/commands/keys.js.map +0 -1
- package/dist/commands/legacy-auth.d.ts +0 -27
- package/dist/commands/legacy-auth.js +0 -64
- package/dist/commands/legacy-auth.js.map +0 -1
- package/dist/commands/llm.d.ts +0 -2
- package/dist/commands/llm.js +0 -106
- package/dist/commands/llm.js.map +0 -1
- package/dist/commands/login.d.ts +0 -2
- package/dist/commands/login.js +0 -65
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -7
- package/dist/commands/logout.js +0 -55
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js +0 -42
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/loops.d.ts +0 -2
- package/dist/commands/loops.js +0 -260
- package/dist/commands/loops.js.map +0 -1
- package/dist/commands/media.d.ts +0 -2
- package/dist/commands/media.js +0 -183
- package/dist/commands/media.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -2
- package/dist/commands/memory.js +0 -151
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/mobile.d.ts +0 -4
- package/dist/commands/mobile.js +0 -382
- package/dist/commands/mobile.js.map +0 -1
- package/dist/commands/module.d.ts +0 -8
- package/dist/commands/module.js +0 -48
- package/dist/commands/module.js.map +0 -1
- package/dist/commands/objectives.d.ts +0 -2
- package/dist/commands/objectives.js +0 -243
- package/dist/commands/objectives.js.map +0 -1
- package/dist/commands/payments.d.ts +0 -2
- package/dist/commands/payments.js +0 -131
- package/dist/commands/payments.js.map +0 -1
- package/dist/commands/people.d.ts +0 -2
- package/dist/commands/people.js +0 -197
- package/dist/commands/people.js.map +0 -1
- package/dist/commands/phone.d.ts +0 -2
- package/dist/commands/phone.js +0 -289
- package/dist/commands/phone.js.map +0 -1
- package/dist/commands/projects.d.ts +0 -13
- package/dist/commands/projects.js +0 -220
- package/dist/commands/projects.js.map +0 -1
- package/dist/commands/queue.d.ts +0 -2
- package/dist/commands/queue.js +0 -121
- package/dist/commands/queue.js.map +0 -1
- package/dist/commands/register.d.ts +0 -2
- package/dist/commands/register.js +0 -80
- package/dist/commands/register.js.map +0 -1
- package/dist/commands/report.d.ts +0 -17
- package/dist/commands/report.js +0 -109
- package/dist/commands/report.js.map +0 -1
- package/dist/commands/sandbox.d.ts +0 -2
- package/dist/commands/sandbox.js +0 -558
- package/dist/commands/sandbox.js.map +0 -1
- package/dist/commands/search.d.ts +0 -2
- package/dist/commands/search.js +0 -223
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/seo.d.ts +0 -2
- package/dist/commands/seo.js +0 -528
- package/dist/commands/seo.js.map +0 -1
- package/dist/commands/sessions.d.ts +0 -6
- package/dist/commands/sessions.js +0 -109
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/social-data.d.ts +0 -2
- package/dist/commands/social-data.js +0 -245
- package/dist/commands/social-data.js.map +0 -1
- package/dist/commands/social.d.ts +0 -2
- package/dist/commands/social.js +0 -407
- package/dist/commands/social.js.map +0 -1
- package/dist/commands/status.d.ts +0 -2
- package/dist/commands/status.js +0 -73
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/support.d.ts +0 -2
- package/dist/commands/support.js +0 -134
- package/dist/commands/support.js.map +0 -1
- package/dist/commands/tasks.d.ts +0 -2
- package/dist/commands/tasks.js +0 -409
- package/dist/commands/tasks.js.map +0 -1
- package/dist/commands/teams.d.ts +0 -69
- package/dist/commands/teams.js +0 -503
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/trading.d.ts +0 -2
- package/dist/commands/trading.js +0 -333
- package/dist/commands/trading.js.map +0 -1
- package/dist/commands/up.d.ts +0 -551
- package/dist/commands/up.js +0 -1149
- package/dist/commands/up.js.map +0 -1
- package/dist/commands/usage.d.ts +0 -2
- package/dist/commands/usage.js +0 -73
- package/dist/commands/usage.js.map +0 -1
- package/dist/commands/use.d.ts +0 -12
- package/dist/commands/use.js +0 -96
- package/dist/commands/use.js.map +0 -1
- package/dist/commands/users.d.ts +0 -10
- package/dist/commands/users.js +0 -82
- package/dist/commands/users.js.map +0 -1
- package/dist/commands/vault.d.ts +0 -2
- package/dist/commands/vault.js +0 -101
- package/dist/commands/vault.js.map +0 -1
- package/dist/commands/verification.d.ts +0 -2
- package/dist/commands/verification.js +0 -152
- package/dist/commands/verification.js.map +0 -1
- package/dist/commands/verify-email.d.ts +0 -19
- package/dist/commands/verify-email.js +0 -112
- package/dist/commands/verify-email.js.map +0 -1
- package/dist/commands/video.d.ts +0 -2
- package/dist/commands/video.js +0 -417
- package/dist/commands/video.js.map +0 -1
- package/dist/commands/voice.d.ts +0 -2
- package/dist/commands/voice.js +0 -516
- package/dist/commands/voice.js.map +0 -1
- package/dist/commands/wallet.d.ts +0 -2
- package/dist/commands/wallet.js +0 -244
- package/dist/commands/wallet.js.map +0 -1
- package/dist/commands/webhooks.d.ts +0 -13
- package/dist/commands/webhooks.js +0 -119
- package/dist/commands/webhooks.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -2
- package/dist/commands/whoami.js +0 -53
- package/dist/commands/whoami.js.map +0 -1
- package/dist/config.d.ts +0 -42
- package/dist/config.js +0 -83
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js.map +0 -1
- package/dist/lib/brain-select.d.ts +0 -193
- package/dist/lib/brain-select.js +0 -403
- package/dist/lib/brain-select.js.map +0 -1
- package/dist/lib/cli-validation.d.ts +0 -12
- package/dist/lib/cli-validation.js +0 -46
- package/dist/lib/cli-validation.js.map +0 -1
- package/dist/lib/config-errors.d.ts +0 -4
- package/dist/lib/config-errors.js +0 -13
- package/dist/lib/config-errors.js.map +0 -1
- package/dist/lib/deprecation.d.ts +0 -158
- package/dist/lib/deprecation.js +0 -140
- package/dist/lib/deprecation.js.map +0 -1
- package/dist/lib/duration.d.ts +0 -8
- package/dist/lib/duration.js +0 -11
- package/dist/lib/duration.js.map +0 -1
- package/dist/lib/http-response.d.ts +0 -11
- package/dist/lib/http-response.js +0 -96
- package/dist/lib/http-response.js.map +0 -1
- package/dist/lib/pricing.d.ts +0 -132
- package/dist/lib/pricing.js +0 -148
- package/dist/lib/pricing.js.map +0 -1
- package/dist/lib/starter-config.d.ts +0 -13
- package/dist/lib/starter-config.js +0 -71
- package/dist/lib/starter-config.js.map +0 -1
- package/dist/lib/stream-frames.d.ts +0 -114
- package/dist/lib/stream-frames.js +0 -169
- package/dist/lib/stream-frames.js.map +0 -1
- package/dist/lib/teams-catalog.d.ts +0 -141
- package/dist/lib/teams-catalog.js +0 -841
- package/dist/lib/teams-catalog.js.map +0 -1
- package/dist/lib/unknown-command.d.ts +0 -71
- package/dist/lib/unknown-command.js +0 -132
- package/dist/lib/unknown-command.js.map +0 -1
- package/dist/lib/version-check.d.ts +0 -26
- package/dist/lib/version-check.js +0 -21
- package/dist/lib/version-check.js.map +0 -1
- package/dist/output.d.ts +0 -174
- package/dist/output.js +0 -435
- package/dist/output.js.map +0 -1
- package/dist/prompt.d.ts +0 -17
- package/dist/prompt.js +0 -70
- package/dist/prompt.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.js +0 -14
- package/dist/version.js.map +0 -1
package/dist/commands/ceo.js
DELETED
|
@@ -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
|
package/dist/commands/ceo.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ceo.js","sourceRoot":"","sources":["../../src/commands/ceo.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/clone.d.ts
DELETED
package/dist/commands/clone.js
DELETED
|
@@ -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;
|