@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/compute.js
DELETED
|
@@ -1,498 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { spawnSync } from "node:child_process";
|
|
3
|
-
import { apiRequest, handleApiError, handlePendingApproval } from "../client.js";
|
|
4
|
-
import { agentOutput } from "../output.js";
|
|
5
|
-
/**
|
|
6
|
-
* THE SUCCESS ENVELOPE.
|
|
7
|
-
*
|
|
8
|
-
* `naive --help` promises "every command returns structured JSON with result
|
|
9
|
-
* data, next steps, and contextual guidance for autonomous operation"
|
|
10
|
-
* (index.ts), /cli/overview documents the same shape, and the CLI's whole claim
|
|
11
|
-
* to be agent-native rests on it. Every `agentOutput` below therefore carries
|
|
12
|
-
* non-empty `next_steps` and `hints`; `compute` shipped with 15 of its 16
|
|
13
|
-
* success envelopes passing `next_steps: []`, so an agent that ran a workload
|
|
14
|
-
* got the data and no route onward.
|
|
15
|
-
*
|
|
16
|
-
* Both are DERIVED from the response the API just returned — the id in a
|
|
17
|
-
* suggested command is the id the API echoed, a hint restates a field it
|
|
18
|
-
* actually sent — so neither can drift from what the platform did. This is the
|
|
19
|
-
* same rule `creditCostHint` follows in output.ts. Where the API returns its own
|
|
20
|
-
* advisory `hint` (`compute logs` on a service with no running task), it is
|
|
21
|
-
* lifted into `hints` instead of being left buried inside `result`.
|
|
22
|
-
*/
|
|
23
|
-
/** The id for a suggested command: the one the API echoed, else what the caller
|
|
24
|
-
* typed, so a next step is copy-pasteable rather than a `<id>` placeholder. */
|
|
25
|
-
function wid(data, typed) {
|
|
26
|
-
const id = data?.id;
|
|
27
|
-
return typeof id === "string" && id ? id : (typed ?? "<id>");
|
|
28
|
-
}
|
|
29
|
-
/** Hints echoed off a workload the API returned — restated, never asserted. */
|
|
30
|
-
function workloadHints(data) {
|
|
31
|
-
const w = (data ?? {});
|
|
32
|
-
const out = [];
|
|
33
|
-
if (typeof w.type === "string")
|
|
34
|
-
out.push(`Type: ${w.type}`);
|
|
35
|
-
if (typeof w.status === "string")
|
|
36
|
-
out.push(`Status: ${w.status}`);
|
|
37
|
-
if (typeof w.desired_count === "number")
|
|
38
|
-
out.push(`Desired replicas: ${w.desired_count}`);
|
|
39
|
-
if (typeof w.public_url === "string" && w.public_url)
|
|
40
|
-
out.push(`Public URL: ${w.public_url}`);
|
|
41
|
-
return out;
|
|
42
|
-
}
|
|
43
|
-
/** The API's own advisory `hint`, lifted out of `result` where it sent one. */
|
|
44
|
-
function apiHint(data) {
|
|
45
|
-
const h = data?.hint;
|
|
46
|
-
return typeof h === "string" && h ? [h] : [];
|
|
47
|
-
}
|
|
48
|
-
/** `service` runs continuously (start/stop/scale); `job`/`schedule` are triggered (run). */
|
|
49
|
-
function isService(data, typed) {
|
|
50
|
-
const t = data?.type;
|
|
51
|
-
return (typeof t === "string" ? t : typed) === "service";
|
|
52
|
-
}
|
|
53
|
-
export const computeCmd = new Command("compute")
|
|
54
|
-
.description("Compute — run Docker containers, background workers & scheduled jobs on managed cloud compute (ECS/Fargate)")
|
|
55
|
-
.addHelpText("after", `
|
|
56
|
-
Subcommands:
|
|
57
|
-
naive compute list List your workloads
|
|
58
|
-
naive compute create Create a service / job / schedule
|
|
59
|
-
naive compute show <id> Show workload details
|
|
60
|
-
naive compute delete <id> Delete a workload
|
|
61
|
-
naive compute start <id> Wake a scaled-to-zero service
|
|
62
|
-
naive compute stop <id> Scale a service to zero
|
|
63
|
-
naive compute scale <id> <count> Set replica count
|
|
64
|
-
naive compute run <id> Trigger a job/schedule run now
|
|
65
|
-
naive compute runs <id> List runs
|
|
66
|
-
naive compute logs <id> [--run <runId>] Tail CloudWatch logs
|
|
67
|
-
naive compute exec <id> "<cmd>" One-off command (ECS Exec)
|
|
68
|
-
naive compute ssh <id> Interactive shell (ECS Exec/SSM)
|
|
69
|
-
naive compute secret set <id> <KEY> <VAL> Set an encrypted env var
|
|
70
|
-
naive compute secret list <id> List secret keys
|
|
71
|
-
naive compute secret delete <id> <KEY> Delete a secret
|
|
72
|
-
|
|
73
|
-
Types:
|
|
74
|
-
service long-running container (daemon/bot/API), optional public URL, scale-to-zero
|
|
75
|
-
job run-to-completion batch (ETL/scrape/render)
|
|
76
|
-
schedule a job on a cron/rate expression (e.g. 'cron(0 9 * * ? *)' or 'rate(1 hour)')
|
|
77
|
-
|
|
78
|
-
Governance:
|
|
79
|
-
Creating a workload and opening a shell (exec/ssh) are SENSITIVE and may
|
|
80
|
-
require human approval depending on the Account Kit (status "pending_approval").
|
|
81
|
-
|
|
82
|
-
Examples:
|
|
83
|
-
$ naive compute create --name bot --type service --image ghcr.io/me/bot:latest --port 8080
|
|
84
|
-
$ naive compute create --name nightly --type schedule --image me/etl --schedule "cron(0 9 * * ? *)"
|
|
85
|
-
$ naive compute run <id>
|
|
86
|
-
$ naive compute ssh <id>
|
|
87
|
-
`);
|
|
88
|
-
computeCmd
|
|
89
|
-
.command("list", { isDefault: true })
|
|
90
|
-
.description("List your compute workloads")
|
|
91
|
-
.action(async () => {
|
|
92
|
-
const resp = await apiRequest("GET", "/v1/compute");
|
|
93
|
-
handleApiError("compute.list", resp);
|
|
94
|
-
const workloads = (resp.data?.compute ?? []);
|
|
95
|
-
const first = workloads[0]?.id ?? "<id>";
|
|
96
|
-
agentOutput({
|
|
97
|
-
action: "compute.list",
|
|
98
|
-
result: resp.data,
|
|
99
|
-
next_steps: [
|
|
100
|
-
{ command: `naive compute show ${first}`, description: "Inspect a workload — type, status, replicas, public URL" },
|
|
101
|
-
{ command: `naive compute logs ${first}`, description: "Tail its logs", when: "it is not behaving as expected" },
|
|
102
|
-
{
|
|
103
|
-
command: "naive compute create --name <name> --type service --image <image>",
|
|
104
|
-
description: "Create another workload",
|
|
105
|
-
},
|
|
106
|
-
],
|
|
107
|
-
hints: [
|
|
108
|
-
`${workloads.length} workload${workloads.length === 1 ? "" : "s"}.`,
|
|
109
|
-
...(workloads.length === 0
|
|
110
|
-
? ["Nothing to act on yet — create a service, job or schedule first."]
|
|
111
|
-
: [`Statuses: ${[...new Set(workloads.map((w) => w.status ?? "unknown"))].join(", ")}.`]),
|
|
112
|
-
],
|
|
113
|
-
related_commands: ["naive compute create", "naive compute show", "naive compute logs"],
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
computeCmd
|
|
117
|
-
.command("create")
|
|
118
|
-
.description("Create a compute workload")
|
|
119
|
-
.requiredOption("--name <name>", "Workload name")
|
|
120
|
-
.requiredOption("--type <type>", "service | job | schedule")
|
|
121
|
-
.requiredOption("--image <image>", "OCI/Docker image")
|
|
122
|
-
// <command...> so unquoted multi-word commands (echo foo) are not excess args
|
|
123
|
-
.option("--command <command...>", "Container command (space-separated argv; unquoted multi-word OK)")
|
|
124
|
-
.option("--cpu <cpu>", "Fargate CPU units (256 = 0.25 vCPU)")
|
|
125
|
-
.option("--memory <mb>", "Memory in MB")
|
|
126
|
-
.option("--port <port>", "Container port to expose via the ALB (services; requires compute ALB config)")
|
|
127
|
-
.option("--env <kv...>", "Env vars KEY=VALUE (repeatable)")
|
|
128
|
-
.option("--schedule <expr>", "cron(...) or rate(...) expression (schedules)")
|
|
129
|
-
.action(async (opts) => {
|
|
130
|
-
const env = {};
|
|
131
|
-
for (const kv of opts.env ?? []) {
|
|
132
|
-
const i = String(kv).indexOf("=");
|
|
133
|
-
if (i > 0)
|
|
134
|
-
env[String(kv).slice(0, i)] = String(kv).slice(i + 1);
|
|
135
|
-
}
|
|
136
|
-
const commandArg = opts.command;
|
|
137
|
-
const command = Array.isArray(commandArg)
|
|
138
|
-
? commandArg
|
|
139
|
-
: commandArg
|
|
140
|
-
? String(commandArg).split(" ")
|
|
141
|
-
: undefined;
|
|
142
|
-
const body = {
|
|
143
|
-
name: opts.name,
|
|
144
|
-
type: opts.type,
|
|
145
|
-
image: opts.image,
|
|
146
|
-
command,
|
|
147
|
-
cpu: opts.cpu ? Number(opts.cpu) : undefined,
|
|
148
|
-
memory: opts.memory ? Number(opts.memory) : undefined,
|
|
149
|
-
port: opts.port ? Number(opts.port) : undefined,
|
|
150
|
-
env: Object.keys(env).length ? env : undefined,
|
|
151
|
-
schedule_expr: opts.schedule,
|
|
152
|
-
};
|
|
153
|
-
const resp = await apiRequest("POST", "/v1/compute", body);
|
|
154
|
-
if (handlePendingApproval("compute.create", resp))
|
|
155
|
-
return;
|
|
156
|
-
handleApiError("compute.create", resp);
|
|
157
|
-
const id = wid(resp.data);
|
|
158
|
-
agentOutput({
|
|
159
|
-
action: "compute.create",
|
|
160
|
-
result: resp.data,
|
|
161
|
-
next_steps: [
|
|
162
|
-
{ command: `naive compute show ${id}`, description: "Poll until status leaves provisioning" },
|
|
163
|
-
isService(resp.data, opts.type)
|
|
164
|
-
? { command: `naive compute scale ${id} 1`, description: "Set the running replica count" }
|
|
165
|
-
: { command: `naive compute run ${id}`, description: "Trigger the first run now" },
|
|
166
|
-
{ command: `naive compute logs ${id}`, description: "Tail its logs" },
|
|
167
|
-
{
|
|
168
|
-
command: `naive compute secret set ${id} <KEY> <VALUE>`,
|
|
169
|
-
description: "Set an encrypted env var",
|
|
170
|
-
when: "the container needs a credential",
|
|
171
|
-
},
|
|
172
|
-
],
|
|
173
|
-
hints: [
|
|
174
|
-
...workloadHints(resp.data),
|
|
175
|
-
"Provisioning is asynchronous — `compute show` reports when it is live.",
|
|
176
|
-
],
|
|
177
|
-
related_commands: ["naive compute show", "naive compute logs", "naive compute delete"],
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
computeCmd
|
|
181
|
-
.command("show <id>")
|
|
182
|
-
.description("Show workload details")
|
|
183
|
-
.action(async (id) => {
|
|
184
|
-
const resp = await apiRequest("GET", `/v1/compute/${id}`);
|
|
185
|
-
handleApiError("compute.show", resp);
|
|
186
|
-
const wl = wid(resp.data, id);
|
|
187
|
-
agentOutput({
|
|
188
|
-
action: "compute.show",
|
|
189
|
-
result: resp.data,
|
|
190
|
-
next_steps: [
|
|
191
|
-
{ command: `naive compute logs ${wl}`, description: "Tail its logs" },
|
|
192
|
-
...(isService(resp.data)
|
|
193
|
-
? [
|
|
194
|
-
{ command: `naive compute scale ${wl} <count>`, description: "Change the running replica count" },
|
|
195
|
-
{ command: `naive compute stop ${wl}`, description: "Scale to zero", when: "you are done with it" },
|
|
196
|
-
]
|
|
197
|
-
: [
|
|
198
|
-
{ command: `naive compute run ${wl}`, description: "Trigger a run now" },
|
|
199
|
-
{ command: `naive compute runs ${wl}`, description: "List past runs" },
|
|
200
|
-
]),
|
|
201
|
-
{ command: `naive compute delete ${wl}`, description: "Delete the workload", when: "it is no longer needed" },
|
|
202
|
-
],
|
|
203
|
-
hints: [...workloadHints(resp.data), "`compute logs` is the fastest way to see why a status is not what you expect."],
|
|
204
|
-
related_commands: ["naive compute list", "naive compute logs", "naive compute delete"],
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
computeCmd
|
|
208
|
-
.command("delete <id>")
|
|
209
|
-
.description("Delete a workload")
|
|
210
|
-
.action(async (id) => {
|
|
211
|
-
const resp = await apiRequest("DELETE", `/v1/compute/${id}`);
|
|
212
|
-
handleApiError("compute.delete", resp);
|
|
213
|
-
agentOutput({
|
|
214
|
-
action: "compute.delete",
|
|
215
|
-
result: resp.data,
|
|
216
|
-
next_steps: [
|
|
217
|
-
{ command: "naive compute list", description: "Confirm what is left" },
|
|
218
|
-
{
|
|
219
|
-
command: "naive compute create --name <name> --type service --image <image>",
|
|
220
|
-
description: "Create a replacement",
|
|
221
|
-
when: "you deleted it to redeploy",
|
|
222
|
-
},
|
|
223
|
-
],
|
|
224
|
-
hints: [
|
|
225
|
-
...workloadHints(resp.data),
|
|
226
|
-
"Deleting stops the workload's in-flight runs; its secrets go with it.",
|
|
227
|
-
],
|
|
228
|
-
related_commands: ["naive compute list", "naive compute create"],
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
for (const verb of ["start", "stop"]) {
|
|
232
|
-
computeCmd
|
|
233
|
-
.command(`${verb} <id>`)
|
|
234
|
-
.description(verb === "start" ? "Wake a scaled-to-zero service" : "Scale a service to zero")
|
|
235
|
-
.action(async (id) => {
|
|
236
|
-
const resp = await apiRequest("POST", `/v1/compute/${id}/${verb}`);
|
|
237
|
-
handleApiError(`compute.${verb}`, resp);
|
|
238
|
-
const wl = wid(resp.data, id);
|
|
239
|
-
agentOutput({
|
|
240
|
-
action: `compute.${verb}`,
|
|
241
|
-
result: resp.data,
|
|
242
|
-
next_steps: [
|
|
243
|
-
{ command: `naive compute show ${wl}`, description: "Confirm the new status and replica count" },
|
|
244
|
-
verb === "start"
|
|
245
|
-
? { command: `naive compute logs ${wl}`, description: "Watch it come up" }
|
|
246
|
-
: { command: `naive compute start ${wl}`, description: "Wake it again", when: "you need it back" },
|
|
247
|
-
],
|
|
248
|
-
hints: [
|
|
249
|
-
...workloadHints(resp.data),
|
|
250
|
-
verb === "start"
|
|
251
|
-
? "Start sets the desired replica count to 1; use `scale` for any other count."
|
|
252
|
-
: "Stop sets the desired replica count to 0 — the workload is kept, not deleted.",
|
|
253
|
-
],
|
|
254
|
-
related_commands: ["naive compute show", "naive compute scale", "naive compute logs"],
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
computeCmd
|
|
259
|
-
.command("scale <id> <count>")
|
|
260
|
-
.description("Set the running replica count")
|
|
261
|
-
.action(async (id, count) => {
|
|
262
|
-
const resp = await apiRequest("POST", `/v1/compute/${id}/scale`, { count: Number(count) });
|
|
263
|
-
handleApiError("compute.scale", resp);
|
|
264
|
-
const wl = wid(resp.data, id);
|
|
265
|
-
agentOutput({
|
|
266
|
-
action: "compute.scale",
|
|
267
|
-
result: resp.data,
|
|
268
|
-
next_steps: [
|
|
269
|
-
{ command: `naive compute show ${wl}`, description: "Confirm the running replica count" },
|
|
270
|
-
{ command: `naive compute logs ${wl}`, description: "Watch the new replicas start" },
|
|
271
|
-
],
|
|
272
|
-
hints: [...workloadHints(resp.data), "Scaling to 0 is the same as `compute stop` — the workload is kept."],
|
|
273
|
-
related_commands: ["naive compute show", "naive compute start", "naive compute stop"],
|
|
274
|
-
});
|
|
275
|
-
});
|
|
276
|
-
computeCmd
|
|
277
|
-
.command("run <id>")
|
|
278
|
-
.description("Trigger a job/schedule run now")
|
|
279
|
-
.option("--command <command>", "Override the container command (space-separated)")
|
|
280
|
-
.action(async (id, opts) => {
|
|
281
|
-
const body = opts.command ? { command: String(opts.command).split(" ") } : {};
|
|
282
|
-
const resp = await apiRequest("POST", `/v1/compute/${id}/run`, body);
|
|
283
|
-
handleApiError("compute.run", resp);
|
|
284
|
-
const runId = wid(resp.data);
|
|
285
|
-
agentOutput({
|
|
286
|
-
action: "compute.run",
|
|
287
|
-
result: resp.data,
|
|
288
|
-
next_steps: [
|
|
289
|
-
{ command: `naive compute logs ${id} --run ${runId}`, description: "Tail this run's logs" },
|
|
290
|
-
{ command: `naive compute runs ${id}`, description: "Poll the run's status" },
|
|
291
|
-
],
|
|
292
|
-
hints: [
|
|
293
|
-
...workloadHints(resp.data),
|
|
294
|
-
"The run is asynchronous — this returns the run id, not its result.",
|
|
295
|
-
],
|
|
296
|
-
related_commands: ["naive compute runs", "naive compute logs"],
|
|
297
|
-
});
|
|
298
|
-
});
|
|
299
|
-
computeCmd
|
|
300
|
-
.command("runs <id>")
|
|
301
|
-
.description("List runs for a workload")
|
|
302
|
-
.action(async (id) => {
|
|
303
|
-
const resp = await apiRequest("GET", `/v1/compute/${id}/runs`);
|
|
304
|
-
handleApiError("compute.runs", resp);
|
|
305
|
-
const runs = (resp.data?.runs ?? []);
|
|
306
|
-
const latest = runs[0]?.id ?? "<runId>";
|
|
307
|
-
agentOutput({
|
|
308
|
-
action: "compute.runs",
|
|
309
|
-
result: resp.data,
|
|
310
|
-
next_steps: [
|
|
311
|
-
{ command: `naive compute logs ${id} --run ${latest}`, description: "Tail a specific run's logs" },
|
|
312
|
-
{ command: `naive compute run ${id}`, description: "Trigger another run" },
|
|
313
|
-
],
|
|
314
|
-
hints: [
|
|
315
|
-
`${runs.length} run${runs.length === 1 ? "" : "s"}.`,
|
|
316
|
-
...(runs.length === 0
|
|
317
|
-
? ["No runs yet — `compute run <id>` triggers the first one."]
|
|
318
|
-
: [`Latest run status: ${runs[0]?.status ?? "unknown"}.`]),
|
|
319
|
-
],
|
|
320
|
-
related_commands: ["naive compute run", "naive compute logs"],
|
|
321
|
-
});
|
|
322
|
-
});
|
|
323
|
-
computeCmd
|
|
324
|
-
.command("logs <id>")
|
|
325
|
-
.description("Tail CloudWatch logs")
|
|
326
|
-
.option("--run <runId>", "Logs for a specific run")
|
|
327
|
-
.option("--limit <n>", "Max events", "200")
|
|
328
|
-
.action(async (id, opts) => {
|
|
329
|
-
const path = opts.run
|
|
330
|
-
? `/v1/compute/${id}/runs/${opts.run}/logs?limit=${opts.limit}`
|
|
331
|
-
: `/v1/compute/${id}/logs?limit=${opts.limit}`;
|
|
332
|
-
const resp = await apiRequest("GET", path);
|
|
333
|
-
handleApiError("compute.logs", resp);
|
|
334
|
-
const events = (resp.data?.events ?? []);
|
|
335
|
-
agentOutput({
|
|
336
|
-
action: "compute.logs",
|
|
337
|
-
result: resp.data,
|
|
338
|
-
next_steps: [
|
|
339
|
-
{ command: `naive compute show ${id}`, description: "Check the workload's status" },
|
|
340
|
-
{ command: `naive compute logs ${id} --limit 1000`, description: "Widen the window", when: "you need more history" },
|
|
341
|
-
{ command: `naive compute runs ${id}`, description: "Pick a specific run to tail" },
|
|
342
|
-
],
|
|
343
|
-
hints: [
|
|
344
|
-
`${events.length} log event${events.length === 1 ? "" : "s"}.`,
|
|
345
|
-
// The API returns its own advisory when there is no stream to read
|
|
346
|
-
// ("No running tasks…", "No runs yet…"). Surface it rather than leaving
|
|
347
|
-
// an agent to find it inside `result`.
|
|
348
|
-
...apiHint(resp.data),
|
|
349
|
-
],
|
|
350
|
-
related_commands: ["naive compute show", "naive compute runs"],
|
|
351
|
-
});
|
|
352
|
-
});
|
|
353
|
-
computeCmd
|
|
354
|
-
.command("exec <id> <command>")
|
|
355
|
-
.description("Run a one-off command in a running task (ECS Exec)")
|
|
356
|
-
.action(async (id, command) => {
|
|
357
|
-
const resp = await apiRequest("POST", `/v1/compute/${id}/exec`, { command });
|
|
358
|
-
if (handlePendingApproval("compute.exec", resp))
|
|
359
|
-
return;
|
|
360
|
-
handleApiError("compute.exec", resp);
|
|
361
|
-
agentOutput({
|
|
362
|
-
action: "compute.exec",
|
|
363
|
-
result: resp.data,
|
|
364
|
-
next_steps: [
|
|
365
|
-
{ command: `naive compute ssh ${id}`, description: "Open an interactive shell instead" },
|
|
366
|
-
{ command: `naive compute logs ${id}`, description: "Read what the command wrote to the log stream" },
|
|
367
|
-
],
|
|
368
|
-
hints: [
|
|
369
|
-
...apiHint(resp.data),
|
|
370
|
-
"exec brokers an SSM session against a RUNNING task — start/scale a service, or run a job, first.",
|
|
371
|
-
],
|
|
372
|
-
related_commands: ["naive compute ssh", "naive compute logs"],
|
|
373
|
-
});
|
|
374
|
-
});
|
|
375
|
-
computeCmd
|
|
376
|
-
.command("ssh <id>")
|
|
377
|
-
.description("Open an interactive shell into a running task (ECS Exec / SSM)")
|
|
378
|
-
.option("--command <command>", "Shell to launch", "/bin/sh")
|
|
379
|
-
.action(async (id, opts) => {
|
|
380
|
-
const resp = await apiRequest("POST", `/v1/compute/${id}/shell`, { command: opts.command });
|
|
381
|
-
if (handlePendingApproval("compute.ssh", resp))
|
|
382
|
-
return;
|
|
383
|
-
handleApiError("compute.ssh", resp);
|
|
384
|
-
const data = resp.data;
|
|
385
|
-
if (!data.session) {
|
|
386
|
-
agentOutput({
|
|
387
|
-
action: "compute.ssh",
|
|
388
|
-
result: resp.data,
|
|
389
|
-
next_steps: [
|
|
390
|
-
{ command: `naive compute show ${id}`, description: "Check the workload has a running task to attach to" },
|
|
391
|
-
{ command: `naive compute logs ${id}`, description: "Read the logs instead" },
|
|
392
|
-
],
|
|
393
|
-
hints: [
|
|
394
|
-
...apiHint(resp.data),
|
|
395
|
-
"No SSM session was returned, so there is nothing to attach to yet.",
|
|
396
|
-
],
|
|
397
|
-
related_commands: ["naive compute show", "naive compute exec"],
|
|
398
|
-
});
|
|
399
|
-
return;
|
|
400
|
-
}
|
|
401
|
-
const region = data.region ?? "us-east-1";
|
|
402
|
-
const sessionJson = JSON.stringify({
|
|
403
|
-
SessionId: data.session.sessionId,
|
|
404
|
-
StreamUrl: data.session.streamUrl,
|
|
405
|
-
TokenValue: data.session.tokenValue,
|
|
406
|
-
});
|
|
407
|
-
// Hand the brokered SSM session to the AWS session-manager-plugin, which
|
|
408
|
-
// owns the WebSocket + interactive TTY. No AWS creds are needed — the
|
|
409
|
-
// streamUrl + tokenValue ARE the short-lived, task-scoped credential.
|
|
410
|
-
const result = spawnSync("session-manager-plugin", [sessionJson, region, "StartSession", "", JSON.stringify({}), `https://ssm.${region}.amazonaws.com`], { stdio: "inherit" });
|
|
411
|
-
if (result.error) {
|
|
412
|
-
agentOutput({
|
|
413
|
-
action: "compute.ssh",
|
|
414
|
-
result: { session: data.session, region },
|
|
415
|
-
next_steps: [
|
|
416
|
-
{ command: `naive compute exec ${id} "<command>"`, description: "Run a one-off command without the plugin" },
|
|
417
|
-
{ command: `naive compute logs ${id}`, description: "Read the logs instead" },
|
|
418
|
-
],
|
|
419
|
-
hints: [
|
|
420
|
-
"The AWS session-manager-plugin is required for the interactive shell and was not found on PATH.",
|
|
421
|
-
"Install it: https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html",
|
|
422
|
-
"The returned session (streamUrl + tokenValue) can also be consumed by any SSM data-channel client.",
|
|
423
|
-
],
|
|
424
|
-
related_commands: ["naive compute exec", "naive compute logs"],
|
|
425
|
-
});
|
|
426
|
-
}
|
|
427
|
-
});
|
|
428
|
-
const secret = computeCmd.command("secret").description("Manage encrypted env vars for a workload");
|
|
429
|
-
secret
|
|
430
|
-
.command("set <id> <key> <value>")
|
|
431
|
-
.description("Set an encrypted env var")
|
|
432
|
-
.action(async (id, key, value) => {
|
|
433
|
-
const resp = await apiRequest("POST", `/v1/compute/${id}/secrets`, { key, value });
|
|
434
|
-
handleApiError("compute.secret.set", resp);
|
|
435
|
-
agentOutput({
|
|
436
|
-
action: "compute.secret.set",
|
|
437
|
-
result: resp.data,
|
|
438
|
-
next_steps: [
|
|
439
|
-
{ command: `naive compute secret list ${id}`, description: "Confirm the key is set" },
|
|
440
|
-
{
|
|
441
|
-
command: `naive compute run ${id}`,
|
|
442
|
-
description: "Re-run so the container picks the value up",
|
|
443
|
-
when: "it is a job or a schedule",
|
|
444
|
-
},
|
|
445
|
-
],
|
|
446
|
-
hints: [
|
|
447
|
-
`Key \`${key}\` is stored encrypted; its value is never returned by \`secret list\`.`,
|
|
448
|
-
"A running container keeps its old environment until it is restarted or re-run.",
|
|
449
|
-
],
|
|
450
|
-
related_commands: ["naive compute secret list", "naive compute secret delete"],
|
|
451
|
-
});
|
|
452
|
-
});
|
|
453
|
-
secret
|
|
454
|
-
.command("list <id>")
|
|
455
|
-
.description("List secret keys")
|
|
456
|
-
.action(async (id) => {
|
|
457
|
-
const resp = await apiRequest("GET", `/v1/compute/${id}/secrets`);
|
|
458
|
-
handleApiError("compute.secret.list", resp);
|
|
459
|
-
const secrets = (resp.data?.secrets ?? []);
|
|
460
|
-
agentOutput({
|
|
461
|
-
action: "compute.secret.list",
|
|
462
|
-
result: resp.data,
|
|
463
|
-
next_steps: [
|
|
464
|
-
{ command: `naive compute secret set ${id} <KEY> <VALUE>`, description: "Add or replace a secret" },
|
|
465
|
-
{ command: `naive compute secret delete ${id} <KEY>`, description: "Remove one", when: "it is no longer needed" },
|
|
466
|
-
],
|
|
467
|
-
hints: [
|
|
468
|
-
`${secrets.length} secret${secrets.length === 1 ? "" : "s"}.`,
|
|
469
|
-
"Keys only — values are encrypted at rest and are not returned here.",
|
|
470
|
-
],
|
|
471
|
-
related_commands: ["naive compute secret set", "naive compute secret delete"],
|
|
472
|
-
});
|
|
473
|
-
});
|
|
474
|
-
secret
|
|
475
|
-
.command("delete <id> <key>")
|
|
476
|
-
.description("Delete a secret")
|
|
477
|
-
.action(async (id, key) => {
|
|
478
|
-
const resp = await apiRequest("DELETE", `/v1/compute/${id}/secrets/${encodeURIComponent(key)}`);
|
|
479
|
-
handleApiError("compute.secret.delete", resp);
|
|
480
|
-
agentOutput({
|
|
481
|
-
action: "compute.secret.delete",
|
|
482
|
-
result: resp.data,
|
|
483
|
-
next_steps: [
|
|
484
|
-
{ command: `naive compute secret list ${id}`, description: "Confirm what is left" },
|
|
485
|
-
{
|
|
486
|
-
command: `naive compute run ${id}`,
|
|
487
|
-
description: "Re-run so the container loses the value",
|
|
488
|
-
when: "it is a job or a schedule",
|
|
489
|
-
},
|
|
490
|
-
],
|
|
491
|
-
hints: [
|
|
492
|
-
`Key \`${key}\` is removed from the workload's environment.`,
|
|
493
|
-
"A running container keeps its old environment until it is restarted or re-run.",
|
|
494
|
-
],
|
|
495
|
-
related_commands: ["naive compute secret set", "naive compute secret list"],
|
|
496
|
-
});
|
|
497
|
-
});
|
|
498
|
-
//# sourceMappingURL=compute.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../../src/commands/compute.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/config.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { loadConfig, saveConfig } from "../config.js";
|
|
3
|
-
import { agentOutput, agentError } from "../output.js";
|
|
4
|
-
export const configCmd = new Command("config").description("View or set CLI preferences (e.g. output format)");
|
|
5
|
-
configCmd
|
|
6
|
-
.command("output <mode>")
|
|
7
|
-
.description("Set output format: human (friendly, interactive) | json (machine, default)")
|
|
8
|
-
.action((mode) => {
|
|
9
|
-
if (mode !== "human" && mode !== "json") {
|
|
10
|
-
agentError({
|
|
11
|
-
action: "config.output",
|
|
12
|
-
error: { code: "invalid_input", message: "mode must be 'human' or 'json'" },
|
|
13
|
-
recovery_steps: [{ command: "naive config output human", description: "Enable friendly output" }],
|
|
14
|
-
});
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
saveConfig({ output: mode, human_hint_shown: true });
|
|
18
|
-
agentOutput({
|
|
19
|
-
action: "config.output",
|
|
20
|
-
result: { output: mode },
|
|
21
|
-
next_steps: [{ command: "naive voice list", description: "Try it" }],
|
|
22
|
-
hints: [mode === "human" ? "Friendly output enabled. Agents/scripts can still force JSON with --json or NAIVE_JSON=1." : "Machine JSON output set."],
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
configCmd
|
|
26
|
-
.command("show")
|
|
27
|
-
.description("Show current CLI preferences")
|
|
28
|
-
.action(() => {
|
|
29
|
-
const c = loadConfig();
|
|
30
|
-
agentOutput({
|
|
31
|
-
action: "config.show",
|
|
32
|
-
result: { output: c.output ?? "json (default)", base_url: c.base_url },
|
|
33
|
-
next_steps: [{ command: "naive config output human", description: "Switch to friendly output" }],
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,kDAAkD,CAAC,CAAC;AAE/G,SAAS;KACN,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,4EAA4E,CAAC;KACzF,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;IACvB,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACxC,UAAU,CAAC;YACT,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,gCAAgC,EAAE;YAC3E,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;SAClG,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,UAAU,CAAC,EAAE,MAAM,EAAE,IAAwB,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,WAAW,CAAC;QACV,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QACxB,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QACpE,KAAK,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,0BAA0B,CAAC;KACrJ,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,WAAW,CAAC;QACV,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;QACtE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;KACjG,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|