@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/sandbox.js
DELETED
|
@@ -1,558 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { readFileSync } from "node:fs";
|
|
3
|
-
import { apiRequest, handleApiError } 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), and /cli/overview documents the same shape. `sandbox` shipped with
|
|
11
|
-
* 16 of its 20 success envelopes passing `next_steps: []` and none carrying
|
|
12
|
-
* `hints`, so an agent that created a sandbox and ran a command in it got the
|
|
13
|
-
* data and no route onward — on the one primitive where the route onward
|
|
14
|
-
* (`park`, `sleep`, `destroy`) is what stops the meter.
|
|
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. Same rule as
|
|
19
|
-
* `creditCostHint` in output.ts. The API's own advisory `note` (`sleep` explains
|
|
20
|
-
* what wakes the sandbox) is lifted into `hints` rather than left buried inside
|
|
21
|
-
* `result`.
|
|
22
|
-
*/
|
|
23
|
-
/** The sandbox id for a suggested command: the one the API echoed (top level or
|
|
24
|
-
* nested under `sandbox`), else what the caller typed, so a next step is
|
|
25
|
-
* copy-pasteable rather than a `<id>` placeholder. */
|
|
26
|
-
function sid(data, typed) {
|
|
27
|
-
const d = (data ?? {});
|
|
28
|
-
const id = d.sandbox_id ?? d.sandbox?.sandbox_id;
|
|
29
|
-
return typeof id === "string" && id ? id : (typed ?? "<id>");
|
|
30
|
-
}
|
|
31
|
-
/** Hints echoed off a sandbox the API returned — restated, never asserted. */
|
|
32
|
-
function sandboxHints(data) {
|
|
33
|
-
const d = (data ?? {});
|
|
34
|
-
const sb = (d.sandbox && typeof d.sandbox === "object" ? d.sandbox : d);
|
|
35
|
-
const out = [];
|
|
36
|
-
if (typeof sb.status === "string")
|
|
37
|
-
out.push(`Status: ${sb.status}`);
|
|
38
|
-
if (typeof sb.size === "string")
|
|
39
|
-
out.push(`Size: ${sb.size}`);
|
|
40
|
-
if (typeof sb.metered_credits === "number" && Number.isFinite(sb.metered_credits)) {
|
|
41
|
-
const credits = Math.round(sb.metered_credits * 10000) / 10000;
|
|
42
|
-
out.push(`Metered so far: ${credits} ${credits === 1 ? "credit" : "credits"}`);
|
|
43
|
-
}
|
|
44
|
-
// Why a sandbox is in its current status ("Auto-destroyed: credits exhausted…")
|
|
45
|
-
// — the only way a tenant learns why one stopped, so it belongs in `hints`.
|
|
46
|
-
if (typeof sb.error === "string" && sb.error)
|
|
47
|
-
out.push(sb.error);
|
|
48
|
-
return out;
|
|
49
|
-
}
|
|
50
|
-
/** The API's own advisory `note`/`hint`, lifted out of `result` where it sent one. */
|
|
51
|
-
function apiNote(data) {
|
|
52
|
-
const d = (data ?? {});
|
|
53
|
-
const out = [];
|
|
54
|
-
if (typeof d.note === "string" && d.note)
|
|
55
|
-
out.push(d.note);
|
|
56
|
-
if (typeof d.hint === "string" && d.hint)
|
|
57
|
-
out.push(d.hint);
|
|
58
|
-
return out;
|
|
59
|
-
}
|
|
60
|
-
export const sandboxCmd = new Command("sandbox")
|
|
61
|
-
.description("Sandbox — disposable micro-VM code sandboxes (usage billed from credits)")
|
|
62
|
-
.addHelpText("after", `
|
|
63
|
-
Subcommands:
|
|
64
|
-
naive sandbox status Primitive status + sizes + usage rates
|
|
65
|
-
naive sandbox list List your sandboxes
|
|
66
|
-
naive sandbox create [--name n] [--size s] Create a sandbox (may require approval)
|
|
67
|
-
naive sandbox show <id> Show a sandbox
|
|
68
|
-
naive sandbox exec <id> <command...> Run a shell command (may require approval)
|
|
69
|
-
naive sandbox write <id> <path> [--file f] Write a file into the sandbox
|
|
70
|
-
naive sandbox read <id> <path> Read a file from the sandbox
|
|
71
|
-
naive sandbox ls <id> <path> List a directory in the sandbox
|
|
72
|
-
naive sandbox mkdir <id> <path> Create a directory (mkdir -p)
|
|
73
|
-
naive sandbox rm <id> <path> Remove a file or directory tree
|
|
74
|
-
naive sandbox expose <id> <port> Expose a guest port at a public URL (may require approval)
|
|
75
|
-
naive sandbox unexpose <id> <port> Stop exposing a guest port
|
|
76
|
-
naive sandbox ports <id> List the sandbox's exposed ports
|
|
77
|
-
naive sandbox checkpoint <id> Durable checkpoint of the machine state
|
|
78
|
-
naive sandbox fork <id> New sandbox from a checkpoint (may require approval)
|
|
79
|
-
naive sandbox park <id> Checkpoint + stop the sandbox and its meter
|
|
80
|
-
naive sandbox sleep <id> Idle the sandbox; wakes on the next exec or resume
|
|
81
|
-
naive sandbox resume <id> Resume a parked or sleeping sandbox
|
|
82
|
-
naive sandbox destroy <id> Destroy a sandbox (stops billing)
|
|
83
|
-
|
|
84
|
-
Billing:
|
|
85
|
-
Sandboxes bill from your Naive credits while running — the CPU, memory,
|
|
86
|
-
and disk provisioned for the size, plus a small one-time creation fee.
|
|
87
|
-
Sleeping and parked sandboxes are free. Running out of credits auto-destroys
|
|
88
|
-
the sandbox. \`naive sandbox status\` prints the current per-hour rates.
|
|
89
|
-
|
|
90
|
-
Sizes (the resources provisioned and billed while running):
|
|
91
|
-
s 1 vCPU · 16 GiB memory · 32 GiB disk
|
|
92
|
-
m 4 vCPU · 32 GiB memory · 100 GiB disk (default)
|
|
93
|
-
|
|
94
|
-
Examples:
|
|
95
|
-
$ naive sandbox create --name scratch --size s
|
|
96
|
-
$ naive sandbox exec <id> "python3 -c 'print(40+2)'"
|
|
97
|
-
$ naive sandbox write <id> /app/server.py --file ./server.py
|
|
98
|
-
$ naive sandbox exec <id> "python3 /app/server.py &"
|
|
99
|
-
$ naive sandbox expose <id> 8000
|
|
100
|
-
$ naive sandbox checkpoint <id> && naive sandbox fork <id> --name variant-b
|
|
101
|
-
$ naive sandbox park <id>
|
|
102
|
-
`);
|
|
103
|
-
sandboxCmd
|
|
104
|
-
.command("status")
|
|
105
|
-
.description("Primitive status (configured, reachable, counts, sizes, usage rates)")
|
|
106
|
-
.action(async () => {
|
|
107
|
-
const resp = await apiRequest("GET", "/v1/sandboxes/status");
|
|
108
|
-
handleApiError("sandbox.status", resp);
|
|
109
|
-
const s = (resp.data ?? {});
|
|
110
|
-
agentOutput({
|
|
111
|
-
action: "sandbox.status",
|
|
112
|
-
result: resp.data,
|
|
113
|
-
next_steps: [
|
|
114
|
-
{ command: "naive sandbox list", description: "List the sandboxes you have" },
|
|
115
|
-
{ command: "naive sandbox create --size s", description: "Create one", when: "configured and reachable" },
|
|
116
|
-
],
|
|
117
|
-
hints: [
|
|
118
|
-
`Provider configured: ${s.configured === true}; reachable: ${s.reachable === true}.`,
|
|
119
|
-
`${s.sandboxes ?? 0} sandbox(es), ${s.running_sandboxes ?? 0} running.`,
|
|
120
|
-
...(s.error ? [s.error] : []),
|
|
121
|
-
"`rates` in the result are the per-hour rates the meter charges.",
|
|
122
|
-
],
|
|
123
|
-
related_commands: ["naive sandbox list", "naive sandbox create"],
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
sandboxCmd
|
|
127
|
-
.command("list", { isDefault: true })
|
|
128
|
-
.description("List your sandboxes")
|
|
129
|
-
.action(async () => {
|
|
130
|
-
const resp = await apiRequest("GET", "/v1/sandboxes");
|
|
131
|
-
handleApiError("sandbox.list", resp);
|
|
132
|
-
const boxes = (resp.data?.sandboxes ?? []);
|
|
133
|
-
const first = boxes[0]?.sandbox_id ?? "<id>";
|
|
134
|
-
const running = boxes.filter((b) => b.status === "running").length;
|
|
135
|
-
agentOutput({
|
|
136
|
-
action: "sandbox.list",
|
|
137
|
-
result: resp.data,
|
|
138
|
-
next_steps: [
|
|
139
|
-
{ command: `naive sandbox show ${first}`, description: "Inspect one — status, size, metered credits" },
|
|
140
|
-
{ command: `naive sandbox exec ${first} "<command>"`, description: "Run a shell command in it" },
|
|
141
|
-
{ command: `naive sandbox park ${first}`, description: "Checkpoint and stop its meter", when: "it is running and idle" },
|
|
142
|
-
],
|
|
143
|
-
hints: [
|
|
144
|
-
`${boxes.length} sandbox${boxes.length === 1 ? "" : "es"}, ${running} running.`,
|
|
145
|
-
...(running > 0
|
|
146
|
-
? ["Running sandboxes bill while running — `park` or `sleep` stops the meter without losing state."]
|
|
147
|
-
: ["Nothing is metering right now."]),
|
|
148
|
-
],
|
|
149
|
-
related_commands: ["naive sandbox show", "naive sandbox park", "naive sandbox destroy"],
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
sandboxCmd
|
|
153
|
-
.command("create")
|
|
154
|
-
.description("Create a sandbox (usage-billed; may require approval)")
|
|
155
|
-
.option("--name <name>", "Display name")
|
|
156
|
-
.option("--size <size>", "Size: s | m (default m)")
|
|
157
|
-
.option("--memory <gib>", "Memory ceiling override in GiB")
|
|
158
|
-
.option("--disk <gib>", "Disk ceiling override in GiB")
|
|
159
|
-
.action(async (opts) => {
|
|
160
|
-
const resp = await apiRequest("POST", "/v1/sandboxes", {
|
|
161
|
-
name: opts.name,
|
|
162
|
-
size: opts.size,
|
|
163
|
-
memory_gib: opts.memory ? Number(opts.memory) : undefined,
|
|
164
|
-
disk_gib: opts.disk ? Number(opts.disk) : undefined,
|
|
165
|
-
});
|
|
166
|
-
handleApiError("sandbox.create", resp);
|
|
167
|
-
const id = sid(resp.data);
|
|
168
|
-
agentOutput({
|
|
169
|
-
action: "sandbox.create",
|
|
170
|
-
result: resp.data,
|
|
171
|
-
next_steps: [
|
|
172
|
-
{ command: `naive sandbox exec ${id} "<command>"`, description: "Run a shell command in the sandbox" },
|
|
173
|
-
{ command: `naive sandbox write ${id} <path> --file <local>`, description: "Upload a file into it" },
|
|
174
|
-
{ command: `naive sandbox park ${id}`, description: "Checkpoint and stop the usage meter", when: "done for now" },
|
|
175
|
-
],
|
|
176
|
-
hints: [
|
|
177
|
-
...sandboxHints(resp.data),
|
|
178
|
-
"The meter runs while the sandbox is running — `park` or `sleep` is free, `destroy` is final.",
|
|
179
|
-
],
|
|
180
|
-
related_commands: ["naive sandbox exec", "naive sandbox park", "naive sandbox destroy"],
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
sandboxCmd
|
|
184
|
-
.command("show <id>")
|
|
185
|
-
.description("Show a sandbox")
|
|
186
|
-
.action(async (id) => {
|
|
187
|
-
const resp = await apiRequest("GET", `/v1/sandboxes/${id}`);
|
|
188
|
-
handleApiError("sandbox.show", resp);
|
|
189
|
-
const sb = sid(resp.data, id);
|
|
190
|
-
agentOutput({
|
|
191
|
-
action: "sandbox.show",
|
|
192
|
-
result: resp.data,
|
|
193
|
-
next_steps: [
|
|
194
|
-
{ command: `naive sandbox exec ${sb} "<command>"`, description: "Run a shell command in it" },
|
|
195
|
-
{ command: `naive sandbox ports ${sb}`, description: "See which guest ports are exposed" },
|
|
196
|
-
{ command: `naive sandbox park ${sb}`, description: "Checkpoint and stop the meter", when: "it is running and idle" },
|
|
197
|
-
],
|
|
198
|
-
hints: [
|
|
199
|
-
...sandboxHints(resp.data),
|
|
200
|
-
"`metered_credits` is what this sandbox has cost so far, not a forecast.",
|
|
201
|
-
],
|
|
202
|
-
related_commands: ["naive sandbox exec", "naive sandbox park", "naive sandbox destroy"],
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
sandboxCmd
|
|
206
|
-
.command("exec <id> <command...>")
|
|
207
|
-
.description("Run a shell command in the sandbox (may require approval)")
|
|
208
|
-
.option("--cwd <dir>", "Working directory")
|
|
209
|
-
.option("--timeout <ms>", "Command timeout in ms")
|
|
210
|
-
.action(async (id, commandParts, opts) => {
|
|
211
|
-
const resp = await apiRequest("POST", `/v1/sandboxes/${id}/exec`, {
|
|
212
|
-
command: commandParts.join(" "),
|
|
213
|
-
cwd: opts.cwd,
|
|
214
|
-
timeout_ms: opts.timeout ? Number(opts.timeout) : undefined,
|
|
215
|
-
});
|
|
216
|
-
handleApiError("sandbox.exec", resp);
|
|
217
|
-
const sb = sid(resp.data, id);
|
|
218
|
-
const exit = resp.data?.exit_code;
|
|
219
|
-
agentOutput({
|
|
220
|
-
action: "sandbox.exec",
|
|
221
|
-
result: resp.data,
|
|
222
|
-
next_steps: [
|
|
223
|
-
{ command: `naive sandbox exec ${sb} "<command>"`, description: "Run the next command" },
|
|
224
|
-
{ command: `naive sandbox ls ${sb} <path>`, description: "Inspect what the command wrote" },
|
|
225
|
-
{ command: `naive sandbox park ${sb}`, description: "Checkpoint and stop the meter", when: "done for now" },
|
|
226
|
-
],
|
|
227
|
-
hints: [
|
|
228
|
-
typeof exit === "number"
|
|
229
|
-
? `Exit code: ${exit}${exit === 0 ? "" : " — stderr in the result has the reason"}.`
|
|
230
|
-
: "The command ran; `stdout`/`stderr` are in the result.",
|
|
231
|
-
"Output is truncated past 256 KiB — write large output to a file and `sandbox read` it.",
|
|
232
|
-
],
|
|
233
|
-
related_commands: ["naive sandbox read", "naive sandbox ls", "naive sandbox park"],
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
sandboxCmd
|
|
237
|
-
.command("write <id> <path>")
|
|
238
|
-
.description("Write a file into the sandbox (--file or --content)")
|
|
239
|
-
.option("--file <local>", "Local file to upload")
|
|
240
|
-
.option("--content <text>", "Inline content")
|
|
241
|
-
.action(async (id, path, opts) => {
|
|
242
|
-
const content = opts.file ? readFileSync(opts.file, "utf8") : (opts.content ?? "");
|
|
243
|
-
const resp = await apiRequest("POST", `/v1/sandboxes/${id}/files`, { path, content });
|
|
244
|
-
handleApiError("sandbox.write", resp);
|
|
245
|
-
const sb = sid(resp.data, id);
|
|
246
|
-
const size = resp.data?.size;
|
|
247
|
-
agentOutput({
|
|
248
|
-
action: "sandbox.write",
|
|
249
|
-
result: resp.data,
|
|
250
|
-
next_steps: [
|
|
251
|
-
{ command: `naive sandbox read ${sb} ${path}`, description: "Read it back" },
|
|
252
|
-
{ command: `naive sandbox exec ${sb} "<command>"`, description: "Run it" },
|
|
253
|
-
],
|
|
254
|
-
hints: [
|
|
255
|
-
typeof size === "number" ? `Wrote ${size} byte${size === 1 ? "" : "s"} to ${path}.` : `Wrote ${path}.`,
|
|
256
|
-
"This surface caps a file at 4 MiB — use `sandbox exec` to fetch anything larger inside the VM.",
|
|
257
|
-
],
|
|
258
|
-
related_commands: ["naive sandbox read", "naive sandbox ls", "naive sandbox exec"],
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
sandboxCmd
|
|
262
|
-
.command("read <id> <path>")
|
|
263
|
-
.description("Read a file from the sandbox")
|
|
264
|
-
.action(async (id, path) => {
|
|
265
|
-
const resp = await apiRequest("GET", `/v1/sandboxes/${id}/files?path=${encodeURIComponent(path)}`);
|
|
266
|
-
handleApiError("sandbox.read", resp);
|
|
267
|
-
const sb = sid(resp.data, id);
|
|
268
|
-
const size = resp.data?.size;
|
|
269
|
-
agentOutput({
|
|
270
|
-
action: "sandbox.read",
|
|
271
|
-
result: resp.data,
|
|
272
|
-
next_steps: [
|
|
273
|
-
{ command: `naive sandbox write ${sb} ${path} --content "<text>"`, description: "Overwrite it" },
|
|
274
|
-
{ command: `naive sandbox ls ${sb} <dir>`, description: "List the directory it lives in" },
|
|
275
|
-
],
|
|
276
|
-
hints: [
|
|
277
|
-
typeof size === "number" ? `${size} byte${size === 1 ? "" : "s"} from ${path}.` : `Read ${path}.`,
|
|
278
|
-
"Content comes back inside the envelope — binary files should be base64-encoded in the sandbox first.",
|
|
279
|
-
],
|
|
280
|
-
related_commands: ["naive sandbox write", "naive sandbox ls"],
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
sandboxCmd
|
|
284
|
-
.command("ls <id> <path>")
|
|
285
|
-
.description("List a directory's entries in the sandbox")
|
|
286
|
-
.action(async (id, path) => {
|
|
287
|
-
const resp = await apiRequest("GET", `/v1/sandboxes/${id}/files/ls?path=${encodeURIComponent(path)}`);
|
|
288
|
-
handleApiError("sandbox.ls", resp);
|
|
289
|
-
const sb = sid(resp.data, id);
|
|
290
|
-
const entries = (resp.data?.entries ?? []);
|
|
291
|
-
agentOutput({
|
|
292
|
-
action: "sandbox.ls",
|
|
293
|
-
result: resp.data,
|
|
294
|
-
next_steps: [
|
|
295
|
-
{ command: `naive sandbox read ${sb} ${path}/<name>`, description: "Read one of the entries" },
|
|
296
|
-
{ command: `naive sandbox rm ${sb} ${path}/<name>`, description: "Remove one", when: "you are cleaning up" },
|
|
297
|
-
],
|
|
298
|
-
hints: [
|
|
299
|
-
`${entries.length} entr${entries.length === 1 ? "y" : "ies"} in ${path}.`,
|
|
300
|
-
"This lists immediate entries only — it does not recurse.",
|
|
301
|
-
],
|
|
302
|
-
related_commands: ["naive sandbox read", "naive sandbox mkdir", "naive sandbox rm"],
|
|
303
|
-
});
|
|
304
|
-
});
|
|
305
|
-
sandboxCmd
|
|
306
|
-
.command("mkdir <id> <path>")
|
|
307
|
-
.description("Create a directory and any missing parents in the sandbox")
|
|
308
|
-
.action(async (id, path) => {
|
|
309
|
-
const resp = await apiRequest("POST", `/v1/sandboxes/${id}/files/mkdir`, { path });
|
|
310
|
-
handleApiError("sandbox.mkdir", resp);
|
|
311
|
-
const sb = sid(resp.data, id);
|
|
312
|
-
agentOutput({
|
|
313
|
-
action: "sandbox.mkdir",
|
|
314
|
-
result: resp.data,
|
|
315
|
-
next_steps: [
|
|
316
|
-
{ command: `naive sandbox write ${sb} ${path}/<name> --file <local>`, description: "Put a file in it" },
|
|
317
|
-
{ command: `naive sandbox ls ${sb} ${path}`, description: "Confirm what is there" },
|
|
318
|
-
],
|
|
319
|
-
hints: [
|
|
320
|
-
`Created ${path} (and any missing parents).`,
|
|
321
|
-
"It behaves like `mkdir -p` — creating an existing directory is not an error.",
|
|
322
|
-
],
|
|
323
|
-
related_commands: ["naive sandbox write", "naive sandbox ls"],
|
|
324
|
-
});
|
|
325
|
-
});
|
|
326
|
-
sandboxCmd
|
|
327
|
-
.command("rm <id> <path>")
|
|
328
|
-
.description("Remove a file or directory tree in the sandbox (like rm -rf)")
|
|
329
|
-
.action(async (id, path) => {
|
|
330
|
-
const resp = await apiRequest("DELETE", `/v1/sandboxes/${id}/files?path=${encodeURIComponent(path)}`);
|
|
331
|
-
handleApiError("sandbox.rm", resp);
|
|
332
|
-
const sb = sid(resp.data, id);
|
|
333
|
-
agentOutput({
|
|
334
|
-
action: "sandbox.rm",
|
|
335
|
-
result: resp.data,
|
|
336
|
-
next_steps: [
|
|
337
|
-
{ command: `naive sandbox ls ${sb} <dir>`, description: "Confirm what is left" },
|
|
338
|
-
{ command: `naive sandbox destroy ${sb}`, description: "Throw the whole sandbox away", when: "you are done with it" },
|
|
339
|
-
],
|
|
340
|
-
hints: [
|
|
341
|
-
`Removed ${path}.`,
|
|
342
|
-
"This is recursive, like `rm -rf` — a checkpoint taken before it is the only way back.",
|
|
343
|
-
],
|
|
344
|
-
related_commands: ["naive sandbox ls", "naive sandbox checkpoint"],
|
|
345
|
-
});
|
|
346
|
-
});
|
|
347
|
-
sandboxCmd
|
|
348
|
-
.command("expose <id> <port>")
|
|
349
|
-
.description("Expose a guest port at a public HTTP preview URL (raw TCP not supported); may require approval")
|
|
350
|
-
.option("--protocol <proto>", "http (the only supported protocol)")
|
|
351
|
-
.action(async (id, port, opts) => {
|
|
352
|
-
const resp = await apiRequest("POST", `/v1/sandboxes/${id}/expose`, {
|
|
353
|
-
port: Number(port),
|
|
354
|
-
protocol: opts.protocol,
|
|
355
|
-
});
|
|
356
|
-
handleApiError("sandbox.expose", resp);
|
|
357
|
-
const sb = sid(resp.data, id);
|
|
358
|
-
const url = resp.data?.url;
|
|
359
|
-
agentOutput({
|
|
360
|
-
action: "sandbox.expose",
|
|
361
|
-
result: resp.data,
|
|
362
|
-
next_steps: [
|
|
363
|
-
{ command: `naive sandbox ports ${sb}`, description: "See every port this sandbox exposes" },
|
|
364
|
-
{ command: `naive sandbox unexpose ${sb} ${port}`, description: "Take it down again", when: "you are done" },
|
|
365
|
-
],
|
|
366
|
-
hints: [
|
|
367
|
-
typeof url === "string" && url ? `Reachable at ${url}` : `Port ${port} is exposed; the URL is in the result.`,
|
|
368
|
-
"A public port is reachable by anyone who has the URL — unexpose it when you are finished.",
|
|
369
|
-
],
|
|
370
|
-
related_commands: ["naive sandbox ports", "naive sandbox unexpose"],
|
|
371
|
-
});
|
|
372
|
-
});
|
|
373
|
-
sandboxCmd
|
|
374
|
-
.command("unexpose <id> <port>")
|
|
375
|
-
.description("Stop exposing a guest port")
|
|
376
|
-
.action(async (id, port) => {
|
|
377
|
-
const resp = await apiRequest("DELETE", `/v1/sandboxes/${id}/expose/${Number(port)}`);
|
|
378
|
-
handleApiError("sandbox.unexpose", resp);
|
|
379
|
-
const sb = sid(resp.data, id);
|
|
380
|
-
agentOutput({
|
|
381
|
-
action: "sandbox.unexpose",
|
|
382
|
-
result: resp.data,
|
|
383
|
-
next_steps: [
|
|
384
|
-
{ command: `naive sandbox ports ${sb}`, description: "Confirm what is still exposed" },
|
|
385
|
-
{ command: `naive sandbox expose ${sb} ${port}`, description: "Expose it again", when: "you need it back" },
|
|
386
|
-
],
|
|
387
|
-
hints: [
|
|
388
|
-
`Port ${port} is no longer exposed.`,
|
|
389
|
-
"The process inside the sandbox keeps running — only the public listener is gone.",
|
|
390
|
-
],
|
|
391
|
-
related_commands: ["naive sandbox ports", "naive sandbox expose"],
|
|
392
|
-
});
|
|
393
|
-
});
|
|
394
|
-
sandboxCmd
|
|
395
|
-
.command("ports <id>")
|
|
396
|
-
.description("List the sandbox's exposed ports (does not wake it)")
|
|
397
|
-
.action(async (id) => {
|
|
398
|
-
const resp = await apiRequest("GET", `/v1/sandboxes/${id}/expose`);
|
|
399
|
-
handleApiError("sandbox.ports", resp);
|
|
400
|
-
const sb = sid(resp.data, id);
|
|
401
|
-
const ports = (resp.data?.ports ?? []);
|
|
402
|
-
agentOutput({
|
|
403
|
-
action: "sandbox.ports",
|
|
404
|
-
result: resp.data,
|
|
405
|
-
next_steps: [
|
|
406
|
-
{ command: `naive sandbox expose ${sb} <port>`, description: "Expose another guest port" },
|
|
407
|
-
...(ports.length > 0
|
|
408
|
-
? [{ command: `naive sandbox unexpose ${sb} ${ports[0].port ?? "<port>"}`, description: "Take one down" }]
|
|
409
|
-
: []),
|
|
410
|
-
{ command: `naive sandbox show ${sb}`, description: "Check the sandbox's status" },
|
|
411
|
-
],
|
|
412
|
-
hints: [
|
|
413
|
-
`${ports.length} exposed port${ports.length === 1 ? "" : "s"}.`,
|
|
414
|
-
"Listing ports does not wake a sleeping sandbox.",
|
|
415
|
-
],
|
|
416
|
-
related_commands: ["naive sandbox expose", "naive sandbox unexpose"],
|
|
417
|
-
});
|
|
418
|
-
});
|
|
419
|
-
sandboxCmd
|
|
420
|
-
.command("checkpoint <id>")
|
|
421
|
-
.description("Take a durable checkpoint of the machine state without stopping")
|
|
422
|
-
.option("--name <name>", "Checkpoint name")
|
|
423
|
-
.action(async (id, opts) => {
|
|
424
|
-
const resp = await apiRequest("POST", `/v1/sandboxes/${id}/checkpoints`, { name: opts.name });
|
|
425
|
-
handleApiError("sandbox.checkpoint", resp);
|
|
426
|
-
const sb = sid(resp.data, id);
|
|
427
|
-
const cp = resp.data ?? {};
|
|
428
|
-
agentOutput({
|
|
429
|
-
action: "sandbox.checkpoint",
|
|
430
|
-
result: resp.data,
|
|
431
|
-
next_steps: [
|
|
432
|
-
{ command: `naive sandbox fork ${sb}`, description: "Start a new sandbox from the checkpoint" },
|
|
433
|
-
{ command: `naive sandbox park ${sb}`, description: "Checkpoint and stop the meter", when: "done for now" },
|
|
434
|
-
],
|
|
435
|
-
hints: [
|
|
436
|
-
typeof cp.checkpoint_id === "string" ? `Checkpoint ${cp.checkpoint_id}.` : "Checkpoint taken.",
|
|
437
|
-
...(typeof cp.expires_at === "string" ? [`Expires ${cp.expires_at}.`] : []),
|
|
438
|
-
"The sandbox keeps running — checkpointing does not stop the meter, `park` does.",
|
|
439
|
-
],
|
|
440
|
-
related_commands: ["naive sandbox fork", "naive sandbox park"],
|
|
441
|
-
});
|
|
442
|
-
});
|
|
443
|
-
sandboxCmd
|
|
444
|
-
.command("fork <id>")
|
|
445
|
-
.description("Start a NEW sandbox from a checkpoint of this one (may require approval)")
|
|
446
|
-
.option("--name <name>", "Name for the fork")
|
|
447
|
-
.option("--checkpoint <checkpointId>", "Fork a specific checkpoint (defaults to latest)")
|
|
448
|
-
.action(async (id, opts) => {
|
|
449
|
-
const resp = await apiRequest("POST", `/v1/sandboxes/${id}/fork`, {
|
|
450
|
-
name: opts.name,
|
|
451
|
-
checkpoint_id: opts.checkpoint,
|
|
452
|
-
});
|
|
453
|
-
handleApiError("sandbox.fork", resp);
|
|
454
|
-
const forked = sid(resp.data);
|
|
455
|
-
agentOutput({
|
|
456
|
-
action: "sandbox.fork",
|
|
457
|
-
result: resp.data,
|
|
458
|
-
next_steps: [
|
|
459
|
-
{ command: `naive sandbox exec ${forked} "<command>"`, description: "Run a command in the fork" },
|
|
460
|
-
{ command: `naive sandbox park ${forked}`, description: "Checkpoint and stop the fork's meter", when: "done for now" },
|
|
461
|
-
{ command: "naive sandbox list", description: "See the original and the fork side by side" },
|
|
462
|
-
],
|
|
463
|
-
hints: [
|
|
464
|
-
...sandboxHints(resp.data),
|
|
465
|
-
`The fork is a separate sandbox with its own meter — ${id} keeps running independently.`,
|
|
466
|
-
],
|
|
467
|
-
related_commands: ["naive sandbox list", "naive sandbox exec", "naive sandbox park"],
|
|
468
|
-
});
|
|
469
|
-
});
|
|
470
|
-
sandboxCmd
|
|
471
|
-
.command("park <id>")
|
|
472
|
-
.description("Checkpoint and stop the sandbox and its meter (free while parked)")
|
|
473
|
-
.action(async (id) => {
|
|
474
|
-
const resp = await apiRequest("POST", `/v1/sandboxes/${id}/park`, {});
|
|
475
|
-
handleApiError("sandbox.park", resp);
|
|
476
|
-
const sb = sid(resp.data, id);
|
|
477
|
-
agentOutput({
|
|
478
|
-
action: "sandbox.park",
|
|
479
|
-
result: resp.data,
|
|
480
|
-
next_steps: [
|
|
481
|
-
{ command: `naive sandbox resume ${sb}`, description: "Restore the checkpoint and restart the meter" },
|
|
482
|
-
{ command: `naive sandbox destroy ${sb}`, description: "Throw it away for good", when: "you will not come back to it" },
|
|
483
|
-
],
|
|
484
|
-
hints: [
|
|
485
|
-
...sandboxHints(resp.data),
|
|
486
|
-
...apiNote(resp.data),
|
|
487
|
-
"Parked sandboxes are free — the meter is stopped, the checkpointed state is kept.",
|
|
488
|
-
],
|
|
489
|
-
related_commands: ["naive sandbox resume", "naive sandbox destroy"],
|
|
490
|
-
});
|
|
491
|
-
});
|
|
492
|
-
sandboxCmd
|
|
493
|
-
.command("sleep <id>")
|
|
494
|
-
.description("Idle the sandbox (free while asleep; wakes on the next exec, file op, or resume)")
|
|
495
|
-
.option("--wake-at <iso>", "Requested wall-clock wake (ISO-8601) — not honored; scheduled wake is unsupported")
|
|
496
|
-
.action(async (id, opts) => {
|
|
497
|
-
const resp = await apiRequest("POST", `/v1/sandboxes/${id}/sleep`, opts.wakeAt ? { wake_at: opts.wakeAt } : {});
|
|
498
|
-
handleApiError("sandbox.sleep", resp);
|
|
499
|
-
const sb = sid(resp.data, id);
|
|
500
|
-
const wakeAt = resp.data?.wake_at;
|
|
501
|
-
agentOutput({
|
|
502
|
-
action: "sandbox.sleep",
|
|
503
|
-
result: resp.data,
|
|
504
|
-
next_steps: [
|
|
505
|
-
{ command: `naive sandbox resume ${sb}`, description: "Wake it now and restart the meter" },
|
|
506
|
-
{ command: `naive sandbox ports ${sb}`, description: "Check its exposed ports without waking it" },
|
|
507
|
-
],
|
|
508
|
-
hints: [
|
|
509
|
-
...sandboxHints(resp.data),
|
|
510
|
-
// The API explains what wakes it; that advisory is the point of the call.
|
|
511
|
-
...apiNote(resp.data),
|
|
512
|
-
...(typeof wakeAt === "string" ? [`Scheduled wake: ${wakeAt}.`] : []),
|
|
513
|
-
],
|
|
514
|
-
related_commands: ["naive sandbox resume", "naive sandbox park"],
|
|
515
|
-
});
|
|
516
|
-
});
|
|
517
|
-
sandboxCmd
|
|
518
|
-
.command("resume <id>")
|
|
519
|
-
.description("Resume a parked or sleeping sandbox (restarts the usage meter)")
|
|
520
|
-
.action(async (id) => {
|
|
521
|
-
const resp = await apiRequest("POST", `/v1/sandboxes/${id}/resume`, {});
|
|
522
|
-
handleApiError("sandbox.resume", resp);
|
|
523
|
-
const sb = sid(resp.data, id);
|
|
524
|
-
agentOutput({
|
|
525
|
-
action: "sandbox.resume",
|
|
526
|
-
result: resp.data,
|
|
527
|
-
next_steps: [
|
|
528
|
-
{ command: `naive sandbox exec ${sb} "<command>"`, description: "Carry on where you left off" },
|
|
529
|
-
{ command: `naive sandbox park ${sb}`, description: "Stop the meter again", when: "done for now" },
|
|
530
|
-
],
|
|
531
|
-
hints: [
|
|
532
|
-
...sandboxHints(resp.data),
|
|
533
|
-
"The meter restarts from the resume time — park or sleep it again when you stop working.",
|
|
534
|
-
],
|
|
535
|
-
related_commands: ["naive sandbox exec", "naive sandbox park"],
|
|
536
|
-
});
|
|
537
|
-
});
|
|
538
|
-
sandboxCmd
|
|
539
|
-
.command("destroy <id>")
|
|
540
|
-
.description("Destroy a sandbox (stops billing; un-checkpointed state is lost)")
|
|
541
|
-
.action(async (id) => {
|
|
542
|
-
const resp = await apiRequest("DELETE", `/v1/sandboxes/${id}`);
|
|
543
|
-
handleApiError("sandbox.destroy", resp);
|
|
544
|
-
agentOutput({
|
|
545
|
-
action: "sandbox.destroy",
|
|
546
|
-
result: resp.data,
|
|
547
|
-
next_steps: [
|
|
548
|
-
{ command: "naive sandbox list", description: "Confirm what is left" },
|
|
549
|
-
{ command: "naive sandbox create --size s", description: "Start a fresh one", when: "you need another" },
|
|
550
|
-
],
|
|
551
|
-
hints: [
|
|
552
|
-
...sandboxHints(resp.data),
|
|
553
|
-
"Destroy is final and stops billing — un-checkpointed state is gone.",
|
|
554
|
-
],
|
|
555
|
-
related_commands: ["naive sandbox list", "naive sandbox create"],
|
|
556
|
-
});
|
|
557
|
-
});
|
|
558
|
-
//# sourceMappingURL=sandbox.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/commands/sandbox.ts"],"names":[],"mappings":"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"}
|