@usenaive-sdk/cli 0.6.0 → 0.8.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/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/commands/billing.js +2 -2
- package/dist/commands/billing.js.map +1 -1
- package/dist/commands/compute.d.ts +2 -0
- package/dist/commands/compute.js +221 -0
- package/dist/commands/compute.js.map +1 -0
- package/dist/commands/phone.d.ts +2 -0
- package/dist/commands/phone.js +349 -0
- package/dist/commands/phone.js.map +1 -0
- package/dist/commands/queue.d.ts +2 -0
- package/dist/commands/queue.js +121 -0
- package/dist/commands/queue.js.map +1 -0
- package/dist/commands/register.js +4 -4
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/trading.d.ts +2 -0
- package/dist/commands/trading.js +333 -0
- package/dist/commands/trading.js.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { apiRequest, handleApiError } from "../client.js";
|
|
3
|
+
import { agentOutput } from "../output.js";
|
|
4
|
+
export const phoneCmd = new Command("phone")
|
|
5
|
+
.description("Provision and manage phone numbers (voice + SMS) via Twilio")
|
|
6
|
+
.addHelpText("after", `
|
|
7
|
+
Prerequisites:
|
|
8
|
+
Provisioning a phone number requires a completed LLC formation, which itself
|
|
9
|
+
requires KYC verification. The full chain is:
|
|
10
|
+
1. naive verification start (KYC for company members)
|
|
11
|
+
2. naive formation submit (LLC formation via Doola)
|
|
12
|
+
3. naive phone provision (this command)
|
|
13
|
+
Run \`naive verification list\` or \`naive formation list\` to check current state.
|
|
14
|
+
|
|
15
|
+
Subcommands:
|
|
16
|
+
naive phone provision Buy a US local phone number (voice live immediately; SMS after TCR approval)
|
|
17
|
+
naive phone list List phone numbers for your company
|
|
18
|
+
naive phone status [id] Show provisioning + Trust Hub status for one or all phones
|
|
19
|
+
naive phone send Send an outbound SMS from a provisioned number
|
|
20
|
+
naive phone messages List received SMS for a phone (newest first)
|
|
21
|
+
naive phone read Read full content of one received SMS by id
|
|
22
|
+
|
|
23
|
+
Workflow:
|
|
24
|
+
1. naive phone provision → buys number into a Twilio subaccount,
|
|
25
|
+
submits Trust Hub registration in parallel.
|
|
26
|
+
Voice + inbound SMS work immediately.
|
|
27
|
+
2. naive phone status → check Trust Hub progress (typical: 14-21d).
|
|
28
|
+
3. SMS auto-activates → No customer action needed; we get notified
|
|
29
|
+
when the campaign is approved and flip the
|
|
30
|
+
capability on automatically.
|
|
31
|
+
|
|
32
|
+
Note: Outbound SMS to US numbers is blocked by TCR until your campaign is
|
|
33
|
+
approved (~3 weeks). Attempting to send before activation returns
|
|
34
|
+
compliance_pending with no message sent and no charges incurred.
|
|
35
|
+
|
|
36
|
+
Inbound SMS works the moment the number is provisioned — no TCR gate. Use
|
|
37
|
+
'naive phone messages <phoneId>' to see incoming texts.
|
|
38
|
+
`);
|
|
39
|
+
phoneCmd
|
|
40
|
+
.command("provision")
|
|
41
|
+
.description("Buy a US local number and kick off Trust Hub registration")
|
|
42
|
+
.option("--area-code <code>", "Preferred US area code (3 digits, e.g. 415)")
|
|
43
|
+
.option("--label <label>", "Friendly label for the number")
|
|
44
|
+
.addHelpText("after", `
|
|
45
|
+
Prerequisites:
|
|
46
|
+
Provisioning a phone number requires a completed LLC formation, which itself
|
|
47
|
+
requires KYC verification. The full chain is:
|
|
48
|
+
1. naive verification start (KYC for company members)
|
|
49
|
+
2. naive formation submit (LLC formation via Doola)
|
|
50
|
+
3. naive phone provision (this command)
|
|
51
|
+
Run \`naive verification list\` or \`naive formation list\` to check current state.
|
|
52
|
+
`)
|
|
53
|
+
.action(async (opts) => {
|
|
54
|
+
const body = {};
|
|
55
|
+
if (opts.areaCode)
|
|
56
|
+
body.area_code = opts.areaCode;
|
|
57
|
+
if (opts.label)
|
|
58
|
+
body.label = opts.label;
|
|
59
|
+
const resp = await apiRequest("POST", "/v1/phone/provision", body);
|
|
60
|
+
handleApiError("phone.provision", resp);
|
|
61
|
+
const data = resp.data;
|
|
62
|
+
agentOutput({
|
|
63
|
+
action: "phone.provision",
|
|
64
|
+
result: resp.data,
|
|
65
|
+
next_steps: [
|
|
66
|
+
{ command: `naive phone status ${data.phone.id}`, description: "Check Trust Hub progress" },
|
|
67
|
+
{ command: "naive phone list", description: "List all phone numbers" },
|
|
68
|
+
],
|
|
69
|
+
hints: [
|
|
70
|
+
`Number ${data.phone.e164} is LIVE for voice + inbound SMS.`,
|
|
71
|
+
`Outbound SMS will auto-activate when TCR campaign is approved (${data.trusthub.eta}).`,
|
|
72
|
+
"No customer action required during the pending window.",
|
|
73
|
+
],
|
|
74
|
+
related_commands: ["naive phone list", "naive phone status"],
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
phoneCmd
|
|
78
|
+
.command("list", { isDefault: true })
|
|
79
|
+
.description("List phone numbers for your company")
|
|
80
|
+
.action(async () => {
|
|
81
|
+
const resp = await apiRequest("GET", "/v1/phone");
|
|
82
|
+
handleApiError("phone.list", resp);
|
|
83
|
+
const data = resp.data;
|
|
84
|
+
const count = data.phones?.length ?? 0;
|
|
85
|
+
agentOutput({
|
|
86
|
+
action: "phone.list",
|
|
87
|
+
result: resp.data,
|
|
88
|
+
next_steps: count > 0
|
|
89
|
+
? [{ command: `naive phone status ${data.phones[0].id}`, description: "Inspect first phone number" }]
|
|
90
|
+
: [{ command: "naive phone provision", description: "Provision a new phone number" }],
|
|
91
|
+
hints: [`${count} phone number${count !== 1 ? "s" : ""} on file`],
|
|
92
|
+
related_commands: ["naive phone provision", "naive phone status"],
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
function formatPipelineStatus(state) {
|
|
96
|
+
// Stage 1 — Customer Profile (the SCP from Sprint 1).
|
|
97
|
+
const profileStage = {
|
|
98
|
+
name: "Customer Profile",
|
|
99
|
+
status: state.status,
|
|
100
|
+
icon: state.status === "profile_approved" ? "OK" : state.status === "profile_rejected" ? "FAIL" : "PENDING",
|
|
101
|
+
detail: state.approved_at
|
|
102
|
+
? `approved ${new Date(state.approved_at).toDateString()}`
|
|
103
|
+
: `last updated ${new Date(state.updated_at).toDateString()}`,
|
|
104
|
+
};
|
|
105
|
+
// Stage 2 — Brand Registration.
|
|
106
|
+
const brand = state.brand;
|
|
107
|
+
const brandStage = {
|
|
108
|
+
name: "Brand Registration",
|
|
109
|
+
status: brand?.status ?? "not_started",
|
|
110
|
+
icon: !brand
|
|
111
|
+
? "WAIT"
|
|
112
|
+
: brand.status === "brand_approved"
|
|
113
|
+
? "OK"
|
|
114
|
+
: brand.status === "brand_rejected"
|
|
115
|
+
? "FAIL"
|
|
116
|
+
: "PENDING",
|
|
117
|
+
detail: !brand
|
|
118
|
+
? "waiting on Customer Profile approval"
|
|
119
|
+
: brand.approved_at
|
|
120
|
+
? `approved ${new Date(brand.approved_at).toDateString()}, trust_score: ${brand.brand_score ?? "n/a"}`
|
|
121
|
+
: `pending${brand.mock ? " (mock)" : ""}`,
|
|
122
|
+
};
|
|
123
|
+
// Stage 3 — Campaign.
|
|
124
|
+
const campaign = state.campaign;
|
|
125
|
+
const campaignStage = {
|
|
126
|
+
name: "Campaign",
|
|
127
|
+
status: campaign?.status ?? "not_started",
|
|
128
|
+
icon: !campaign
|
|
129
|
+
? "WAIT"
|
|
130
|
+
: campaign.status === "campaign_approved"
|
|
131
|
+
? "OK"
|
|
132
|
+
: campaign.status === "campaign_rejected"
|
|
133
|
+
? "FAIL"
|
|
134
|
+
: "PENDING",
|
|
135
|
+
detail: !campaign
|
|
136
|
+
? "waiting on Brand approval"
|
|
137
|
+
: campaign.approved_at
|
|
138
|
+
? `approved ${new Date(campaign.approved_at).toDateString()}`
|
|
139
|
+
: campaign.status === "campaign_rejected" && campaign.errors?.[0]
|
|
140
|
+
? `rejected: ${String(campaign.errors[0].message ?? campaign.errors[0].error_code ?? "see errors")}`
|
|
141
|
+
: `pending${campaign.mock ? " (mock)" : ""} (~7-14 more days)`,
|
|
142
|
+
};
|
|
143
|
+
const phones = (state.phones ?? []).map((p) => {
|
|
144
|
+
const outbound = Boolean(p.capabilities?.sms_outbound ?? p.capabilities?.sms);
|
|
145
|
+
return {
|
|
146
|
+
id: p.id,
|
|
147
|
+
e164: p.e164,
|
|
148
|
+
voice: p.capabilities?.voice ? "active" : "pending",
|
|
149
|
+
inbound_sms: p.capabilities?.sms_inbound ? "active" : "pending",
|
|
150
|
+
outbound_sms: campaign?.status === "campaign_rejected"
|
|
151
|
+
? "rejected"
|
|
152
|
+
: outbound
|
|
153
|
+
? "active"
|
|
154
|
+
: "pending",
|
|
155
|
+
carrier_propagation_complete: p.carrier_propagation_complete,
|
|
156
|
+
};
|
|
157
|
+
});
|
|
158
|
+
return { stages: [profileStage, brandStage, campaignStage], phones };
|
|
159
|
+
}
|
|
160
|
+
phoneCmd
|
|
161
|
+
.command("status [id]")
|
|
162
|
+
.description("Show provisioning + Trust Hub pipeline status (omit id for the 3-stage company view)")
|
|
163
|
+
.action(async (id) => {
|
|
164
|
+
if (id) {
|
|
165
|
+
const phoneResp = await apiRequest("GET", `/v1/phone/${id}`);
|
|
166
|
+
handleApiError("phone.status", phoneResp);
|
|
167
|
+
const phone = phoneResp.data;
|
|
168
|
+
const trusthubResp = await apiRequest("GET", "/v1/phone/trusthub/current");
|
|
169
|
+
// status may legitimately 404 before Trust Hub starts — surface but don't fail.
|
|
170
|
+
const trusthub = trusthubResp.status === 200 ? trusthubResp.data : null;
|
|
171
|
+
const pipeline = trusthub ? formatPipelineStatus(trusthub) : null;
|
|
172
|
+
agentOutput({
|
|
173
|
+
action: "phone.status",
|
|
174
|
+
result: { phone, trusthub, pipeline },
|
|
175
|
+
next_steps: (phone.capabilities?.sms_outbound ?? phone.capabilities?.sms)
|
|
176
|
+
? [{ command: `naive phone send --from ${phone.id} --to <e164> --body "..."`, description: "Send an SMS" }]
|
|
177
|
+
: [{ command: `naive phone status ${phone.id}`, description: "Refresh status" }],
|
|
178
|
+
hints: [
|
|
179
|
+
`Phone ${phone.e164}: voice=${phone.capabilities?.voice ?? false}, inbound_sms=${phone.capabilities?.sms_inbound ?? false}, outbound_sms=${phone.capabilities?.sms_outbound ?? phone.capabilities?.sms ?? false}`,
|
|
180
|
+
trusthub ? `Trust Hub: ${trusthub.status}` : "Trust Hub flow not yet started",
|
|
181
|
+
],
|
|
182
|
+
related_commands: ["naive phone provision", "naive phone list"],
|
|
183
|
+
});
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const resp = await apiRequest("GET", "/v1/phone/trusthub/current");
|
|
187
|
+
handleApiError("phone.status", resp);
|
|
188
|
+
const trusthub = resp.data;
|
|
189
|
+
const { stages, phones } = formatPipelineStatus(trusthub);
|
|
190
|
+
// Build human-readable hint lines (the 3-stage pipeline view).
|
|
191
|
+
const hints = [];
|
|
192
|
+
hints.push("Pipeline Status:");
|
|
193
|
+
for (const stage of stages) {
|
|
194
|
+
hints.push(` [${stage.icon}] ${stage.name}: ${stage.status}${stage.detail ? ` — ${stage.detail}` : ""}`);
|
|
195
|
+
}
|
|
196
|
+
if (phones.length > 0) {
|
|
197
|
+
hints.push("");
|
|
198
|
+
hints.push("Phones:");
|
|
199
|
+
for (const p of phones) {
|
|
200
|
+
hints.push(` ${p.e164} (id: ${p.id})`);
|
|
201
|
+
hints.push(` Voice in/out: ${p.voice === "active" ? "active now" : "pending"}`);
|
|
202
|
+
hints.push(` Inbound SMS: ${p.inbound_sms === "active" ? "active now" : "pending"}`);
|
|
203
|
+
hints.push(` Outbound SMS: ${p.outbound_sms === "active"
|
|
204
|
+
? `active${p.carrier_propagation_complete ? " (carrier propagation complete)" : ""} — try naive phone send --from ${p.id} --to <e164> --body "..."`
|
|
205
|
+
: p.outbound_sms === "rejected"
|
|
206
|
+
? "rejected — file support@usenaive.ai"
|
|
207
|
+
: "unlocks when campaign approves"}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
hints.push("");
|
|
212
|
+
hints.push("No phone numbers provisioned yet. Run `naive phone provision`.");
|
|
213
|
+
}
|
|
214
|
+
const allUnlocked = phones.length > 0 && phones.every((p) => p.outbound_sms === "active");
|
|
215
|
+
const anyRejected = phones.some((p) => p.outbound_sms === "rejected") ||
|
|
216
|
+
stages.some((s) => s.icon === "FAIL");
|
|
217
|
+
const nextSteps = phones.length === 0
|
|
218
|
+
? [{ command: "naive phone provision", description: "Provision your first phone number" }]
|
|
219
|
+
: anyRejected
|
|
220
|
+
? [{ command: "naive phone status", description: "Refresh after support resolves the issue" }]
|
|
221
|
+
: allUnlocked
|
|
222
|
+
? [{
|
|
223
|
+
command: `naive phone send --from ${phones[0].id} --to <e164> --body "Hi"`,
|
|
224
|
+
description: "Send an SMS",
|
|
225
|
+
}]
|
|
226
|
+
: [{ command: "naive phone status", description: "Refresh — no action required from you" }];
|
|
227
|
+
agentOutput({
|
|
228
|
+
action: "phone.status",
|
|
229
|
+
result: { stages, phones, trusthub },
|
|
230
|
+
next_steps: nextSteps,
|
|
231
|
+
hints,
|
|
232
|
+
related_commands: ["naive phone provision", "naive phone list"],
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
phoneCmd
|
|
236
|
+
.command("send")
|
|
237
|
+
.description("Send an outbound SMS from one of your provisioned numbers")
|
|
238
|
+
.requiredOption("--from <phoneId>", "Phone number id (UUID — see `naive phone list`)")
|
|
239
|
+
.requiredOption("--to <e164>", "Recipient phone number in E.164 format, e.g. +14155551234")
|
|
240
|
+
.requiredOption("--body <text>", "SMS body text")
|
|
241
|
+
.action(async (opts) => {
|
|
242
|
+
const resp = await apiRequest("POST", `/v1/phone/${opts.from}/sms`, {
|
|
243
|
+
to: opts.to,
|
|
244
|
+
body: opts.body,
|
|
245
|
+
});
|
|
246
|
+
handleApiError("phone.send", resp);
|
|
247
|
+
const result = resp.data;
|
|
248
|
+
agentOutput({
|
|
249
|
+
action: "phone.send",
|
|
250
|
+
result,
|
|
251
|
+
next_steps: [
|
|
252
|
+
{ command: `naive phone status ${opts.from}`, description: "Check phone status" },
|
|
253
|
+
],
|
|
254
|
+
hints: [
|
|
255
|
+
`Sent SMS to ${result.to} (twilio_sid=${result.twilio_sid}, status=${result.status}).`,
|
|
256
|
+
],
|
|
257
|
+
related_commands: ["naive phone status", "naive phone list"],
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
phoneCmd
|
|
261
|
+
.command("messages <phoneId>")
|
|
262
|
+
.description("List received SMS messages for a phone (newest first)")
|
|
263
|
+
.option("--limit <n>", "Maximum number of messages to return (default: 20, max: 100)", "20")
|
|
264
|
+
.option("--cursor <cursor>", "Pagination cursor returned from a previous call")
|
|
265
|
+
.addHelpText("after", `
|
|
266
|
+
Examples:
|
|
267
|
+
$ naive phone messages 550e8400-e29b-41d4-a716-446655440000
|
|
268
|
+
$ naive phone messages <phoneId> --limit 50
|
|
269
|
+
$ naive phone messages <phoneId> --cursor 2026-05-01T00:00:00.000Z
|
|
270
|
+
|
|
271
|
+
What this does:
|
|
272
|
+
Returns received SMS messages for the given phone, ordered by most recent.
|
|
273
|
+
Each message includes:
|
|
274
|
+
- id: message UUID (use with 'naive phone read')
|
|
275
|
+
- from: sender E.164
|
|
276
|
+
- to: your phone's E.164
|
|
277
|
+
- body_preview: first 80 chars of the body
|
|
278
|
+
- num_media: MMS attachment count (0 for plain SMS)
|
|
279
|
+
- received_at: ISO timestamp
|
|
280
|
+
|
|
281
|
+
Use --cursor with the previous response's next_cursor to page older.
|
|
282
|
+
Inbound SMS works immediately on provisioning — no TCR gate.
|
|
283
|
+
`)
|
|
284
|
+
.action(async (phoneId, opts) => {
|
|
285
|
+
const params = new URLSearchParams({ limit: opts.limit });
|
|
286
|
+
if (opts.cursor)
|
|
287
|
+
params.set("cursor", opts.cursor);
|
|
288
|
+
const resp = await apiRequest("GET", `/v1/phone/${phoneId}/messages?${params}`);
|
|
289
|
+
handleApiError("phone.messages", resp);
|
|
290
|
+
const data = resp.data;
|
|
291
|
+
const count = data.messages?.length ?? 0;
|
|
292
|
+
agentOutput({
|
|
293
|
+
action: "phone.messages",
|
|
294
|
+
result: resp.data,
|
|
295
|
+
next_steps: [
|
|
296
|
+
...(count > 0
|
|
297
|
+
? [{ command: `naive phone read ${data.messages[0].id}`, description: "Read the most recent message in full" }]
|
|
298
|
+
: []),
|
|
299
|
+
...(data.next_cursor
|
|
300
|
+
? [{ command: `naive phone messages ${phoneId} --cursor ${data.next_cursor}`, description: "Load older messages" }]
|
|
301
|
+
: []),
|
|
302
|
+
{ command: `naive phone send --from ${phoneId} --to <e164> --body <text>`, description: "Reply to a message" },
|
|
303
|
+
],
|
|
304
|
+
hints: [
|
|
305
|
+
`${count} message${count !== 1 ? "s" : ""} found${data.next_cursor ? " (more available — use --cursor to page)" : ""}`,
|
|
306
|
+
"Use 'naive phone read <id>' to see the full body and any media URLs",
|
|
307
|
+
],
|
|
308
|
+
related_commands: ["naive phone read", "naive phone send", "naive phone list"],
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
phoneCmd
|
|
312
|
+
.command("read <messageId>")
|
|
313
|
+
.description("Read the full content of a received SMS by its id")
|
|
314
|
+
.addHelpText("after", `
|
|
315
|
+
Examples:
|
|
316
|
+
$ naive phone read 550e8400-e29b-41d4-a716-446655440000
|
|
317
|
+
|
|
318
|
+
What this does:
|
|
319
|
+
Returns the full message including:
|
|
320
|
+
- from, to, body
|
|
321
|
+
- num_media + media_urls (for MMS attachments)
|
|
322
|
+
- received_at
|
|
323
|
+
- phone_id (the receiving phone)
|
|
324
|
+
- metadata (raw webhook extras, if any)
|
|
325
|
+
|
|
326
|
+
Use this to:
|
|
327
|
+
- Read a full SMS after seeing it in 'naive phone messages'
|
|
328
|
+
- Extract media URLs for MMS processing
|
|
329
|
+
- Reply with 'naive phone send --from <phone_id> --to <from> --body <text>'
|
|
330
|
+
`)
|
|
331
|
+
.action(async (messageId) => {
|
|
332
|
+
const resp = await apiRequest("GET", `/v1/phone/messages/${messageId}`);
|
|
333
|
+
handleApiError("phone.read", resp);
|
|
334
|
+
const data = resp.data;
|
|
335
|
+
agentOutput({
|
|
336
|
+
action: "phone.read",
|
|
337
|
+
result: resp.data,
|
|
338
|
+
next_steps: [
|
|
339
|
+
{ command: `naive phone messages ${data.phone_id}`, description: "Go back to the inbox list" },
|
|
340
|
+
{ command: `naive phone send --from ${data.phone_id} --to ${data.from} --body <text>`, description: "Reply to this message" },
|
|
341
|
+
],
|
|
342
|
+
hints: [
|
|
343
|
+
`Message from ${data.from} to ${data.to}, received ${data.received_at}`,
|
|
344
|
+
data.num_media > 0 ? `${data.num_media} media attachment${data.num_media !== 1 ? "s" : ""} — see media_urls` : "Plain SMS (no media)",
|
|
345
|
+
],
|
|
346
|
+
related_commands: ["naive phone messages", "naive phone send"],
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
//# sourceMappingURL=phone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone.js","sourceRoot":"","sources":["../../src/commands/phone.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,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KACzC,WAAW,CAAC,6DAA6D,CAAC;KAC1E,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvB,CAAC,CAAC;AAEH,QAAQ;KACL,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;KAC1D,WAAW,CAAC,OAAO,EAAE;;;;;;;;CAQvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;IAClD,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;IACnE,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,IAAI,CAAC,IAGjB,CAAC;IAEF,WAAW,CAAC;QACV,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,sBAAsB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE;YAC3F,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,wBAAwB,EAAE;SACvE;QACD,KAAK,EAAE;YACL,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAmC;YAC5D,kEAAkE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI;YACvF,wDAAwD;SACzD;QACD,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;KAC7D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACpC,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAClD,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAEjB,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;IAEvC,WAAW,CAAC;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE,KAAK,GAAG,CAAC;YACnB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;YACtG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC;QACvF,KAAK,EAAE,CAAC,GAAG,KAAK,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;QACjE,gBAAgB,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;KAClE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AA2DL,SAAS,oBAAoB,CAAC,KAAoB;IAIhD,sDAAsD;IACtD,MAAM,YAAY,GAAkB;QAClC,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC3G,MAAM,EAAE,KAAK,CAAC,WAAW;YACvB,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,YAAY,EAAE,EAAE;YAC1D,CAAC,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,EAAE;KAChE,CAAC;IAEF,gCAAgC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,UAAU,GAAkB;QAChC,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,aAAa;QACtC,IAAI,EAAE,CAAC,KAAK;YACV,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,gBAAgB;gBACnC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,gBAAgB;oBACnC,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,CAAC,KAAK;YACZ,CAAC,CAAC,sCAAsC;YACxC,CAAC,CAAC,KAAK,CAAC,WAAW;gBACnB,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,YAAY,EAAE,kBAAkB,KAAK,CAAC,WAAW,IAAI,KAAK,EAAE;gBACtG,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;KAC5C,CAAC;IAEF,sBAAsB;IACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,aAAa,GAAkB;QACnC,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,aAAa;QACzC,IAAI,EAAE,CAAC,QAAQ;YACb,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,mBAAmB;gBACzC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,mBAAmB;oBACzC,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,CAAC,QAAQ;YACf,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,QAAQ,CAAC,WAAW;gBACtB,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC7D,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,mBAAmB,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBACjE,CAAC,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,UAAU,IAAI,YAAY,CAAC,EAAE;oBACtG,CAAC,CAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB;KACjE,CAAC;IAEF,MAAM,MAAM,GAAoB,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,IAAI,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9E,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACnD,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC/D,YAAY,EAAE,QAAQ,EAAE,MAAM,KAAK,mBAAmB;gBACpD,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,SAAS;YACb,4BAA4B,EAAE,CAAC,CAAC,4BAA4B;SAC7D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACvE,CAAC;AAED,QAAQ;KACL,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,sFAAsF,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;IACnB,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QAC7D,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,IAKvB,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;QAC3E,gFAAgF;QAChF,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAE,YAAY,CAAC,IAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3F,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAElE,WAAW,CAAC;YACV,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACrC,UAAU,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC;gBACvE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,2BAA2B,KAAK,CAAC,EAAE,2BAA2B,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;gBAC3G,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,KAAK,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;YAClF,KAAK,EAAE;gBACL,SAAS,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,iBAAiB,KAAK,CAAC,YAAY,EAAE,WAAW,IAAI,KAAK,kBAAkB,KAAK,CAAC,YAAY,EAAE,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE,GAAG,IAAI,KAAK,EAAE;gBACjN,QAAQ,CAAC,CAAC,CAAC,cAAc,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,gCAAgC;aAC9E;YACD,gBAAgB,EAAE,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;SAChE,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;IACnE,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAqB,CAAC;IAC5C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAE1D,+DAA+D;IAC/D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5G,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YACrF,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3F,KAAK,CAAC,IAAI,CACR,uBACE,CAAC,CAAC,YAAY,KAAK,QAAQ;gBACzB,CAAC,CAAC,SAAS,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC,EAAE,2BAA2B;gBACnJ,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,UAAU;oBAC/B,CAAC,CAAC,qCAAqC;oBACvC,CAAC,CAAC,gCACN,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,WAAW,GACf,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,UAAU,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAExC,MAAM,SAAS,GACb,MAAM,CAAC,MAAM,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;QAC1F,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;YAC9F,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,CAAC;wBACC,OAAO,EAAE,2BAA2B,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,0BAA0B;wBAC3E,WAAW,EAAE,aAAa;qBAC3B,CAAC;gBACJ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC,CAAC;IAEhG,WAAW,CAAC;QACV,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;QACpC,UAAU,EAAE,SAAS;QACrB,KAAK;QACL,gBAAgB,EAAE,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;KAChE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2DAA2D,CAAC;KACxE,cAAc,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;KACrF,cAAc,CAAC,aAAa,EAAE,2DAA2D,CAAC;KAC1F,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,IAAgD,EAAE,EAAE;IACjE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,IAAI,MAAM,EAAE;QAClE,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAC;IACH,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAsE,CAAC;IAC3F,WAAW,CAAC;QACV,MAAM,EAAE,YAAY;QACpB,MAAM;QACN,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,sBAAsB,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE;SAClF;QACD,KAAK,EAAE;YACL,eAAe,MAAM,CAAC,EAAE,gBAAgB,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,MAAM,IAAI;SACvF;QACD,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;KAC7D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,aAAa,EAAE,8DAA8D,EAAE,IAAI,CAAC;KAC3F,MAAM,CAAC,mBAAmB,EAAE,iDAAiD,CAAC;KAC9E,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;CAkBvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,IAAwC,EAAE,EAAE;IAC1E,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,aAAa,OAAO,aAAa,MAAM,EAAE,CAAC,CAAC;IAChF,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAEvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAGjB,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;IAEzC,WAAW,CAAC;QACV,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,GAAG,CAAC,KAAK,GAAG,CAAC;gBACX,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;gBAChH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,wBAAwB,OAAO,aAAa,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;gBACnH,CAAC,CAAC,EAAE,CAAC;YACP,EAAE,OAAO,EAAE,2BAA2B,OAAO,4BAA4B,EAAE,WAAW,EAAE,oBAAoB,EAAE;SAC/G;QACD,KAAK,EAAE;YACL,GAAG,KAAK,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,EAAE,EAAE;YACtH,qEAAqE;SACtE;QACD,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;KAC/E,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,mDAAmD,CAAC;KAChE,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;CAgBvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;IAClC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACxE,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,IASjB,CAAC;IAEF,WAAW,CAAC;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,wBAAwB,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE;YAC9F,EAAE,OAAO,EAAE,2BAA2B,IAAI,CAAC,QAAQ,SAAS,IAAI,CAAC,IAAI,gBAAgB,EAAE,WAAW,EAAE,uBAAuB,EAAE;SAC9H;QACD,KAAK,EAAE;YACL,gBAAgB,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,cAAc,IAAI,CAAC,WAAW,EAAE;YACvE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,oBAAoB,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,sBAAsB;SACtI;QACD,gBAAgB,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { apiRequest, handleApiError } from "../client.js";
|
|
3
|
+
import { agentOutput } from "../output.js";
|
|
4
|
+
export const queueCmd = new Command("queue")
|
|
5
|
+
.description("Queue — durable message queues (SQS) for agent work pipelines")
|
|
6
|
+
.addHelpText("after", `
|
|
7
|
+
Subcommands:
|
|
8
|
+
naive queue list List your queues
|
|
9
|
+
naive queue create --name <n> [--fifo] Create a queue (optional --dlq)
|
|
10
|
+
naive queue show <id> Show queue + depth
|
|
11
|
+
naive queue delete <id> Delete a queue
|
|
12
|
+
naive queue send <id> <body> Enqueue a message
|
|
13
|
+
naive queue receive <id> [--wait 20] Long-poll for messages
|
|
14
|
+
naive queue ack <id> <receiptHandle> Delete a processed message
|
|
15
|
+
naive queue purge <id> Delete all messages
|
|
16
|
+
naive queue attributes <id> Approximate depth / in-flight
|
|
17
|
+
|
|
18
|
+
Worker pattern:
|
|
19
|
+
Pair a queue with a compute service that long-polls (naive queue receive),
|
|
20
|
+
processes, then acks (naive queue ack). See 'naive compute --help'.
|
|
21
|
+
|
|
22
|
+
Examples:
|
|
23
|
+
$ naive queue create --name jobs
|
|
24
|
+
$ naive queue send <id> '{"task":"resize","url":"..."}'
|
|
25
|
+
$ naive queue receive <id> --wait 20
|
|
26
|
+
$ naive queue ack <id> <receiptHandle>
|
|
27
|
+
`);
|
|
28
|
+
queueCmd
|
|
29
|
+
.command("list", { isDefault: true })
|
|
30
|
+
.description("List your queues")
|
|
31
|
+
.action(async () => {
|
|
32
|
+
const resp = await apiRequest("GET", "/v1/queue");
|
|
33
|
+
handleApiError("queue.list", resp);
|
|
34
|
+
agentOutput({ action: "queue.list", result: resp.data, next_steps: [] });
|
|
35
|
+
});
|
|
36
|
+
queueCmd
|
|
37
|
+
.command("create")
|
|
38
|
+
.description("Create a queue")
|
|
39
|
+
.requiredOption("--name <name>", "Queue name")
|
|
40
|
+
.option("--fifo", "Create a FIFO (ordered, exactly-once) queue")
|
|
41
|
+
.option("--dlq", "Attach a dead-letter queue")
|
|
42
|
+
.action(async (opts) => {
|
|
43
|
+
const resp = await apiRequest("POST", "/v1/queue", {
|
|
44
|
+
name: opts.name,
|
|
45
|
+
type: opts.fifo ? "fifo" : "standard",
|
|
46
|
+
dlq: !!opts.dlq,
|
|
47
|
+
});
|
|
48
|
+
handleApiError("queue.create", resp);
|
|
49
|
+
agentOutput({ action: "queue.create", result: resp.data, next_steps: [] });
|
|
50
|
+
});
|
|
51
|
+
queueCmd
|
|
52
|
+
.command("show <id>")
|
|
53
|
+
.description("Show queue details + depth")
|
|
54
|
+
.action(async (id) => {
|
|
55
|
+
const resp = await apiRequest("GET", `/v1/queue/${id}`);
|
|
56
|
+
handleApiError("queue.show", resp);
|
|
57
|
+
agentOutput({ action: "queue.show", result: resp.data, next_steps: [] });
|
|
58
|
+
});
|
|
59
|
+
queueCmd
|
|
60
|
+
.command("delete <id>")
|
|
61
|
+
.description("Delete a queue")
|
|
62
|
+
.action(async (id) => {
|
|
63
|
+
const resp = await apiRequest("DELETE", `/v1/queue/${id}`);
|
|
64
|
+
handleApiError("queue.delete", resp);
|
|
65
|
+
agentOutput({ action: "queue.delete", result: resp.data, next_steps: [] });
|
|
66
|
+
});
|
|
67
|
+
queueCmd
|
|
68
|
+
.command("attributes <id>")
|
|
69
|
+
.description("Approximate depth / in-flight / delayed counts")
|
|
70
|
+
.action(async (id) => {
|
|
71
|
+
const resp = await apiRequest("GET", `/v1/queue/${id}/attributes`);
|
|
72
|
+
handleApiError("queue.attributes", resp);
|
|
73
|
+
agentOutput({ action: "queue.attributes", result: resp.data, next_steps: [] });
|
|
74
|
+
});
|
|
75
|
+
queueCmd
|
|
76
|
+
.command("send <id> <body>")
|
|
77
|
+
.description("Enqueue a message")
|
|
78
|
+
.option("--group <groupId>", "FIFO message group id")
|
|
79
|
+
.option("--dedup <dedupId>", "FIFO deduplication id")
|
|
80
|
+
.option("--delay <seconds>", "Delay delivery (0-900s)")
|
|
81
|
+
.action(async (id, body, opts) => {
|
|
82
|
+
const resp = await apiRequest("POST", `/v1/queue/${id}/messages`, {
|
|
83
|
+
body,
|
|
84
|
+
group_id: opts.group,
|
|
85
|
+
dedup_id: opts.dedup,
|
|
86
|
+
delay_seconds: opts.delay ? Number(opts.delay) : undefined,
|
|
87
|
+
});
|
|
88
|
+
handleApiError("queue.send", resp);
|
|
89
|
+
agentOutput({ action: "queue.send", result: resp.data, next_steps: [] });
|
|
90
|
+
});
|
|
91
|
+
queueCmd
|
|
92
|
+
.command("receive <id>")
|
|
93
|
+
.description("Long-poll for messages")
|
|
94
|
+
.option("--max <n>", "Max messages (1-10)", "1")
|
|
95
|
+
.option("--wait <seconds>", "Long-poll wait (0-20s)", "0")
|
|
96
|
+
.option("--visibility <seconds>", "Visibility timeout after receipt")
|
|
97
|
+
.action(async (id, opts) => {
|
|
98
|
+
const params = new URLSearchParams({ max: opts.max, wait: opts.wait });
|
|
99
|
+
if (opts.visibility)
|
|
100
|
+
params.set("visibility", opts.visibility);
|
|
101
|
+
const resp = await apiRequest("GET", `/v1/queue/${id}/messages?${params.toString()}`);
|
|
102
|
+
handleApiError("queue.receive", resp);
|
|
103
|
+
agentOutput({ action: "queue.receive", result: resp.data, next_steps: [] });
|
|
104
|
+
});
|
|
105
|
+
queueCmd
|
|
106
|
+
.command("ack <id> <receiptHandle>")
|
|
107
|
+
.description("Delete (acknowledge) a processed message")
|
|
108
|
+
.action(async (id, receiptHandle) => {
|
|
109
|
+
const resp = await apiRequest("DELETE", `/v1/queue/${id}/messages?receipt_handle=${encodeURIComponent(receiptHandle)}`);
|
|
110
|
+
handleApiError("queue.ack", resp);
|
|
111
|
+
agentOutput({ action: "queue.ack", result: resp.data, next_steps: [] });
|
|
112
|
+
});
|
|
113
|
+
queueCmd
|
|
114
|
+
.command("purge <id>")
|
|
115
|
+
.description("Delete all messages in a queue")
|
|
116
|
+
.action(async (id) => {
|
|
117
|
+
const resp = await apiRequest("POST", `/v1/queue/${id}/purge`);
|
|
118
|
+
handleApiError("queue.purge", resp);
|
|
119
|
+
agentOutput({ action: "queue.purge", result: resp.data, next_steps: [] });
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/commands/queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ Examples:
|
|
|
16
16
|
What this does:
|
|
17
17
|
1. Creates a user account (email + password)
|
|
18
18
|
2. Creates a company workspace
|
|
19
|
-
3. Provisions an API agent with
|
|
19
|
+
3. Provisions an API agent with 1 free credit
|
|
20
20
|
4. Returns an API key saved to ~/.naive/config.json
|
|
21
21
|
|
|
22
22
|
After registration:
|
|
@@ -47,7 +47,7 @@ After registration:
|
|
|
47
47
|
company_id: data.company_id,
|
|
48
48
|
company_name: data.company_name,
|
|
49
49
|
credentials_saved: "~/.naive/config.json",
|
|
50
|
-
initial_credits:
|
|
50
|
+
initial_credits: 1,
|
|
51
51
|
},
|
|
52
52
|
next_steps: [
|
|
53
53
|
{ command: "naive status", description: "Verify account status and available credits" },
|
|
@@ -58,11 +58,11 @@ After registration:
|
|
|
58
58
|
],
|
|
59
59
|
hints: [
|
|
60
60
|
"Your API key is saved locally — all future commands authenticate automatically",
|
|
61
|
-
"You start with
|
|
61
|
+
"You start with 1 free credit. Buy more with 'naive billing topup' once it runs out. Use 'naive usage' to track spending.",
|
|
62
62
|
"If you already have a Naive account from the dashboard, use 'naive login' instead",
|
|
63
63
|
],
|
|
64
64
|
related_commands: ["naive login", "naive link", "naive whoami", "naive status"],
|
|
65
|
-
help_markdown: "### Account Created\n\nYour agent is ready. The API key has been saved to `~/.naive/config.json` and will be used automatically for all subsequent commands.\n\n**Credit System**: You start with
|
|
65
|
+
help_markdown: "### Account Created\n\nYour agent is ready. The API key has been saved to `~/.naive/config.json` and will be used automatically for all subsequent commands.\n\n**Credit System**: You start with 1 free credit, then buy more with `naive billing topup`. Operations cost:\n- Web search: 1 credit\n- Email send: 1 credit\n- Image generation: varies (depends on model)\n- Video generation: varies (depends on model/duration)\n- Deep research: 3–8 credits (depth-dependent)\n\nUse `naive usage` to monitor spending.",
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
68
|
//# sourceMappingURL=register.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KAC/C,WAAW,CAAC,oDAAoD,CAAC;KACjE,cAAc,CAAC,eAAe,EAAE,kCAAkC,CAAC;KACnE,cAAc,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KACnF,cAAc,CAAC,uBAAuB,EAAE,yCAAyC,CAAC;KAClF,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;KAC7E,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;CAgBvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,mBAAmB,EAAE;QACzD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,IAAI,CAAC,OAAO;KAC3B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAErB,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAuF,CAAC;IAC1G,UAAU,CAAC;QACT,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC,CAAC;IAEH,WAAW,CAAC;QACV,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,iBAAiB,EAAE,sBAAsB;YACzC,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KAC/C,WAAW,CAAC,oDAAoD,CAAC;KACjE,cAAc,CAAC,eAAe,EAAE,kCAAkC,CAAC;KACnE,cAAc,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KACnF,cAAc,CAAC,uBAAuB,EAAE,yCAAyC,CAAC;KAClF,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;KAC7E,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;CAgBvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,mBAAmB,EAAE;QACzD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,IAAI,CAAC,OAAO;KAC3B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAErB,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAuF,CAAC;IAC1G,UAAU,CAAC;QACT,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC,CAAC;IAEH,WAAW,CAAC;QACV,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,iBAAiB,EAAE,sBAAsB;YACzC,eAAe,EAAE,CAAC;SACnB;QACD,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,6CAA6C,EAAE;YACvF,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,kDAAkD,EAAE;YAC9F,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,4CAA4C,EAAE;YAC7F,EAAE,OAAO,EAAE,mDAAmD,EAAE,WAAW,EAAE,yBAAyB,EAAE;YACxG,EAAE,OAAO,EAAE,iCAAiC,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAChF;QACD,KAAK,EAAE;YACL,gFAAgF;YAChF,0HAA0H;YAC1H,mFAAmF;SACpF;QACD,gBAAgB,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,CAAC;QAC/E,aAAa,EAAE,8fAA8f;KAC9gB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|