Select the types of activity you want to include in your feed.
Add SSH/Tailscale commands and update env handlers
Change env functions to accept sandboxId and key/value where applicable. Add sshkey and tailscale command groups with put/get subcommands and stub handler files, and wire them into the CLI.
···11-export async function listEnvs() {}
11+export async function listEnvs(sandboxId: string) {}
2233-export async function putEnv() {}
33+export async function putEnv(sandboxId: string, key: string, value: string) {}
4455-export async function deleteEnv() {}
55+export async function deleteEnv(sandboxId: string, key: string) {}
+3
apps/cli/src/cmd/sshkeys.ts
···11+export async function getSshKey(sandboxId: string) {}
22+33+export async function putKeys(sandboxId: string) {}
+3
apps/cli/src/cmd/tailscale.ts
···11+export async function putAuthKey(sandboxId: string) {}
22+33+export async function getTailscaleAuthKey(sandboxId: string) {}
+33
apps/cli/src/index.ts
···1212import deleteSandbox from "./cmd/rm";
1313import { deleteSecret, listSecrets, putSecret } from "./cmd/secret";
1414import { deleteEnv, listEnvs, putEnv } from "./cmd/env";
1515+import { getSshKey, putKeys } from "./cmd/sshkeys";
1616+import { getTailscaleAuthKey, putAuthKey } from "./cmd/tailscale";
15171618const program = new Command();
1719···127129 .command("put")
128130 .argument("<sandbox>", "the sandbox to put the environment variable in")
129131 .argument("<key>", "the key of the environment variable")
132132+ .argument("<value>", "the value of the environment variable")
130133 .description("put an environment variable in the given sandbox")
131134 .action(putEnv);
132135···144147 .argument("<key>", "the key of the environment variable to delete")
145148 .description("delete an environment variable from the given sandbox")
146149 .action(deleteEnv);
150150+151151+const sshkey = program.command("sshkey").description("manage SSH keys");
152152+153153+sshkey
154154+ .command("put")
155155+ .argument("<sandbox>", "the sandbox to put the SSH key in")
156156+ .option("--private-key", "the path to the SSH private key")
157157+ .option("--public-key", "the path to the SSH public key")
158158+ .description("put an SSH key in the given sandbox")
159159+ .action(putKeys);
160160+161161+sshkey
162162+ .command("get")
163163+ .argument("<sandbox>", "the sandbox to get the SSH key from")
164164+ .description("get an SSH key (public key only) from the given sandbox")
165165+ .action(getSshKey);
166166+167167+const tailscale = program.command("tailscale").description("manage Tailscale");
168168+169169+tailscale
170170+ .command("put")
171171+ .argument("<sandbox>", "the sandbox to put the Tailscale Auth Key in")
172172+ .description("put a Tailscale key in the given sandbox")
173173+ .action(putAuthKey);
174174+175175+tailscale
176176+ .command("get")
177177+ .argument("<sandbox>", "the sandbox to get the Tailscale key from")
178178+ .description("get a Tailscale key (redacted) from the given sandbox")
179179+ .action(getTailscaleAuthKey);
147180148181if (process.argv.length <= 2) {
149182 program.help();