clawdlets 0.2.2 → 0.2.4
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/main.mjs +5037 -0
- package/node_modules/@clawdlets/clf-queue/package.json +4 -2
- package/node_modules/@clawdlets/core/package.json +1 -1
- package/package.json +15 -12
- package/dist/commands/bootstrap.d.ts +0 -43
- package/dist/commands/bootstrap.d.ts.map +0 -1
- package/dist/commands/bootstrap.js +0 -318
- package/dist/commands/bootstrap.js.map +0 -1
- package/dist/commands/bot.d.ts +0 -2
- package/dist/commands/bot.d.ts.map +0 -1
- package/dist/commands/bot.js +0 -97
- package/dist/commands/bot.js.map +0 -1
- package/dist/commands/cattle/common.d.ts +0 -29
- package/dist/commands/cattle/common.d.ts.map +0 -1
- package/dist/commands/cattle/common.js +0 -102
- package/dist/commands/cattle/common.js.map +0 -1
- package/dist/commands/cattle/destroy.d.ts +0 -33
- package/dist/commands/cattle/destroy.d.ts.map +0 -1
- package/dist/commands/cattle/destroy.js +0 -72
- package/dist/commands/cattle/destroy.js.map +0 -1
- package/dist/commands/cattle/list.d.ts +0 -20
- package/dist/commands/cattle/list.d.ts.map +0 -1
- package/dist/commands/cattle/list.js +0 -78
- package/dist/commands/cattle/list.js.map +0 -1
- package/dist/commands/cattle/logs.d.ts +0 -34
- package/dist/commands/cattle/logs.d.ts.map +0 -1
- package/dist/commands/cattle/logs.js +0 -55
- package/dist/commands/cattle/logs.js.map +0 -1
- package/dist/commands/cattle/persona.d.ts +0 -2
- package/dist/commands/cattle/persona.d.ts.map +0 -1
- package/dist/commands/cattle/persona.js +0 -85
- package/dist/commands/cattle/persona.js.map +0 -1
- package/dist/commands/cattle/reap.d.ts +0 -20
- package/dist/commands/cattle/reap.d.ts.map +0 -1
- package/dist/commands/cattle/reap.js +0 -60
- package/dist/commands/cattle/reap.js.map +0 -1
- package/dist/commands/cattle/spawn.d.ts +0 -73
- package/dist/commands/cattle/spawn.d.ts.map +0 -1
- package/dist/commands/cattle/spawn.js +0 -147
- package/dist/commands/cattle/spawn.js.map +0 -1
- package/dist/commands/cattle/ssh.d.ts +0 -20
- package/dist/commands/cattle/ssh.d.ts.map +0 -1
- package/dist/commands/cattle/ssh.js +0 -37
- package/dist/commands/cattle/ssh.js.map +0 -1
- package/dist/commands/cattle.d.ts +0 -2
- package/dist/commands/cattle.d.ts.map +0 -1
- package/dist/commands/cattle.js +0 -21
- package/dist/commands/cattle.js.map +0 -1
- package/dist/commands/config.d.ts +0 -2
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -163
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -35
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -65
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/env.d.ts +0 -22
- package/dist/commands/env.d.ts.map +0 -1
- package/dist/commands/env.js +0 -132
- package/dist/commands/env.js.map +0 -1
- package/dist/commands/fleet.d.ts +0 -2
- package/dist/commands/fleet.d.ts.map +0 -1
- package/dist/commands/fleet.js +0 -61
- package/dist/commands/fleet.js.map +0 -1
- package/dist/commands/host.d.ts +0 -2
- package/dist/commands/host.d.ts.map +0 -1
- package/dist/commands/host.js +0 -277
- package/dist/commands/host.js.map +0 -1
- package/dist/commands/image.d.ts +0 -2
- package/dist/commands/image.d.ts.map +0 -1
- package/dist/commands/image.js +0 -133
- package/dist/commands/image.js.map +0 -1
- package/dist/commands/infra.d.ts +0 -2
- package/dist/commands/infra.d.ts.map +0 -1
- package/dist/commands/infra.js +0 -171
- package/dist/commands/infra.js.map +0 -1
- package/dist/commands/lockdown.d.ts +0 -25
- package/dist/commands/lockdown.d.ts.map +0 -1
- package/dist/commands/lockdown.js +0 -93
- package/dist/commands/lockdown.js.map +0 -1
- package/dist/commands/project.d.ts +0 -2
- package/dist/commands/project.d.ts.map +0 -1
- package/dist/commands/project.js +0 -264
- package/dist/commands/project.js.map +0 -1
- package/dist/commands/secrets/common.d.ts +0 -8
- package/dist/commands/secrets/common.d.ts.map +0 -1
- package/dist/commands/secrets/common.js +0 -20
- package/dist/commands/secrets/common.js.map +0 -1
- package/dist/commands/secrets/init.d.ts +0 -39
- package/dist/commands/secrets/init.d.ts.map +0 -1
- package/dist/commands/secrets/init.js +0 -455
- package/dist/commands/secrets/init.js.map +0 -1
- package/dist/commands/secrets/path.d.ts +0 -11
- package/dist/commands/secrets/path.d.ts.map +0 -1
- package/dist/commands/secrets/path.js +0 -24
- package/dist/commands/secrets/path.js.map +0 -1
- package/dist/commands/secrets/sync.d.ts +0 -25
- package/dist/commands/secrets/sync.d.ts.map +0 -1
- package/dist/commands/secrets/sync.js +0 -67
- package/dist/commands/secrets/sync.js.map +0 -1
- package/dist/commands/secrets/verify.d.ts +0 -28
- package/dist/commands/secrets/verify.d.ts.map +0 -1
- package/dist/commands/secrets/verify.js +0 -118
- package/dist/commands/secrets/verify.js.map +0 -1
- package/dist/commands/secrets.d.ts +0 -2
- package/dist/commands/secrets.d.ts.map +0 -1
- package/dist/commands/secrets.js +0 -18
- package/dist/commands/secrets.js.map +0 -1
- package/dist/commands/server/common.d.ts +0 -3
- package/dist/commands/server/common.d.ts.map +0 -1
- package/dist/commands/server/common.js +0 -3
- package/dist/commands/server/common.js.map +0 -1
- package/dist/commands/server/deploy.d.ts +0 -53
- package/dist/commands/server/deploy.d.ts.map +0 -1
- package/dist/commands/server/deploy.js +0 -177
- package/dist/commands/server/deploy.js.map +0 -1
- package/dist/commands/server/github-sync.d.ts +0 -2
- package/dist/commands/server/github-sync.d.ts.map +0 -1
- package/dist/commands/server/github-sync.js +0 -166
- package/dist/commands/server/github-sync.js.map +0 -1
- package/dist/commands/server/manifest.d.ts +0 -28
- package/dist/commands/server/manifest.d.ts.map +0 -1
- package/dist/commands/server/manifest.js +0 -82
- package/dist/commands/server/manifest.js.map +0 -1
- package/dist/commands/server.d.ts +0 -2
- package/dist/commands/server.d.ts.map +0 -1
- package/dist/commands/server.js +0 -267
- package/dist/commands/server.js.map +0 -1
- package/dist/commands/ssh-target.d.ts +0 -3
- package/dist/commands/ssh-target.d.ts.map +0 -1
- package/dist/commands/ssh-target.js +0 -15
- package/dist/commands/ssh-target.js.map +0 -1
- package/dist/lib/context.d.ts +0 -21
- package/dist/lib/context.d.ts.map +0 -1
- package/dist/lib/context.js +0 -19
- package/dist/lib/context.js.map +0 -1
- package/dist/lib/deploy-gate.d.ts +0 -9
- package/dist/lib/deploy-gate.d.ts.map +0 -1
- package/dist/lib/deploy-gate.js +0 -20
- package/dist/lib/deploy-gate.js.map +0 -1
- package/dist/lib/deploy-manifest.d.ts +0 -11
- package/dist/lib/deploy-manifest.d.ts.map +0 -1
- package/dist/lib/deploy-manifest.js +0 -46
- package/dist/lib/deploy-manifest.js.map +0 -1
- package/dist/lib/doctor-render.d.ts +0 -14
- package/dist/lib/doctor-render.d.ts.map +0 -1
- package/dist/lib/doctor-render.js +0 -131
- package/dist/lib/doctor-render.js.map +0 -1
- package/dist/lib/host-resolve.d.ts +0 -6
- package/dist/lib/host-resolve.d.ts.map +0 -1
- package/dist/lib/host-resolve.js +0 -20
- package/dist/lib/host-resolve.js.map +0 -1
- package/dist/lib/linux-build.d.ts +0 -8
- package/dist/lib/linux-build.d.ts.map +0 -1
- package/dist/lib/linux-build.js +0 -15
- package/dist/lib/linux-build.js.map +0 -1
- package/dist/lib/manifest-signature.d.ts +0 -17
- package/dist/lib/manifest-signature.d.ts.map +0 -1
- package/dist/lib/manifest-signature.js +0 -52
- package/dist/lib/manifest-signature.js.map +0 -1
- package/dist/lib/template-spec.d.ts +0 -9
- package/dist/lib/template-spec.d.ts.map +0 -1
- package/dist/lib/template-spec.js +0 -50
- package/dist/lib/template-spec.js.map +0 -1
- package/dist/lib/version.d.ts +0 -3
- package/dist/lib/version.d.ts.map +0 -1
- package/dist/lib/version.js +0 -17
- package/dist/lib/version.js.map +0 -1
- package/dist/lib/wizard.d.ts +0 -10
- package/dist/lib/wizard.d.ts.map +0 -1
- package/dist/lib/wizard.js +0 -25
- package/dist/lib/wizard.js.map +0 -1
- package/dist/main.d.ts +0 -3
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js +0 -50
- package/dist/main.js.map +0 -1
package/dist/commands/image.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import process from "node:process";
|
|
4
|
-
import { defineCommand } from "citty";
|
|
5
|
-
import { resolveGitRev } from "@clawdlets/core/lib/git";
|
|
6
|
-
import { capture, run } from "@clawdlets/core/lib/run";
|
|
7
|
-
import { withFlakesEnv } from "@clawdlets/core/lib/nix-flakes";
|
|
8
|
-
import { loadDeployCreds } from "@clawdlets/core/lib/deploy-creds";
|
|
9
|
-
import { loadHostContextOrExit } from "../lib/context.js";
|
|
10
|
-
async function buildRawImage(params) {
|
|
11
|
-
if (process.platform !== "linux") {
|
|
12
|
-
throw new Error("image build requires Linux; run in CI or a Linux builder");
|
|
13
|
-
}
|
|
14
|
-
const attr = `.#packages.x86_64-linux.${params.host}-image`;
|
|
15
|
-
const out = await capture(params.nixBin, ["build", "--json", "--no-link", attr], {
|
|
16
|
-
cwd: params.repoRoot,
|
|
17
|
-
env: withFlakesEnv(process.env),
|
|
18
|
-
});
|
|
19
|
-
let parsed;
|
|
20
|
-
try {
|
|
21
|
-
parsed = JSON.parse(out);
|
|
22
|
-
}
|
|
23
|
-
catch (e) {
|
|
24
|
-
throw new Error(`nix build --json returned invalid JSON (${String(e?.message || e)})`);
|
|
25
|
-
}
|
|
26
|
-
const imagePath = parsed?.[0]?.outputs?.out;
|
|
27
|
-
if (!imagePath || typeof imagePath !== "string") {
|
|
28
|
-
throw new Error("nix build did not return an image store path");
|
|
29
|
-
}
|
|
30
|
-
if (!fs.existsSync(imagePath))
|
|
31
|
-
throw new Error(`image path missing: ${imagePath}`);
|
|
32
|
-
return imagePath;
|
|
33
|
-
}
|
|
34
|
-
const imageBuild = defineCommand({
|
|
35
|
-
meta: {
|
|
36
|
-
name: "build",
|
|
37
|
-
description: "Build a raw NixOS image for a host (nixos-generators).",
|
|
38
|
-
},
|
|
39
|
-
args: {
|
|
40
|
-
runtimeDir: { type: "string", description: "Runtime directory (default: .clawdlets)." },
|
|
41
|
-
host: { type: "string", description: "Host name (defaults to clawdlets.json defaultHost / sole host)." },
|
|
42
|
-
rev: { type: "string", description: "Git rev to name the image (HEAD/sha/tag).", default: "HEAD" },
|
|
43
|
-
out: { type: "string", description: "Output path (default: .clawdlets/images/<host>/clawdlets-<host>-<rev>.raw)." },
|
|
44
|
-
nixBin: { type: "string", description: "Override nix binary (default: nix)." },
|
|
45
|
-
},
|
|
46
|
-
async run({ args }) {
|
|
47
|
-
const cwd = process.cwd();
|
|
48
|
-
const ctx = loadHostContextOrExit({ cwd, runtimeDir: args.runtimeDir, hostArg: args.host });
|
|
49
|
-
if (!ctx)
|
|
50
|
-
return;
|
|
51
|
-
const { repoRoot, layout, hostName } = ctx;
|
|
52
|
-
const revRaw = String(args.rev || "").trim() || "HEAD";
|
|
53
|
-
const resolved = await resolveGitRev(repoRoot, revRaw);
|
|
54
|
-
if (!resolved)
|
|
55
|
-
throw new Error(`unable to resolve git rev: ${revRaw}`);
|
|
56
|
-
const nixBin = String(args.nixBin || process.env.NIX_BIN || "nix").trim() || "nix";
|
|
57
|
-
const imagePath = await buildRawImage({ repoRoot, nixBin, host: hostName });
|
|
58
|
-
const outRaw = String(args.out || "").trim();
|
|
59
|
-
const outPath = outRaw
|
|
60
|
-
? (path.isAbsolute(outRaw) ? outRaw : path.resolve(cwd, outRaw))
|
|
61
|
-
: path.join(layout.runtimeDir, "images", hostName, `clawdlets-${hostName}-${resolved}.raw`);
|
|
62
|
-
fs.mkdirSync(path.dirname(outPath), { recursive: true });
|
|
63
|
-
fs.copyFileSync(imagePath, outPath);
|
|
64
|
-
console.log(`ok: built raw image ${outPath}`);
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
const imageUpload = defineCommand({
|
|
68
|
-
meta: {
|
|
69
|
-
name: "upload",
|
|
70
|
-
description: "Upload a raw image to Hetzner using hcloud-upload-image.",
|
|
71
|
-
},
|
|
72
|
-
args: {
|
|
73
|
-
runtimeDir: { type: "string", description: "Runtime directory (default: .clawdlets)." },
|
|
74
|
-
envFile: { type: "string", description: "Env file for deploy creds (default: <runtimeDir>/env)." },
|
|
75
|
-
host: { type: "string", description: "Host name (defaults to clawdlets.json defaultHost / sole host)." },
|
|
76
|
-
"image-url": { type: "string", description: "Public URL for the raw image (Hetzner must reach it)." },
|
|
77
|
-
compression: { type: "string", description: "Compression type (none|gz|bz2|xz).", default: "none" },
|
|
78
|
-
architecture: { type: "string", description: "Architecture (x86 or arm).", default: "x86" },
|
|
79
|
-
location: { type: "string", description: "Hetzner location (default: host hetzner.location)." },
|
|
80
|
-
name: { type: "string", description: "Image name override (optional)." },
|
|
81
|
-
dryRun: { type: "boolean", description: "Print commands without executing.", default: false },
|
|
82
|
-
bin: { type: "string", description: "Override hcloud-upload-image binary (default: hcloud-upload-image)." },
|
|
83
|
-
},
|
|
84
|
-
async run({ args }) {
|
|
85
|
-
const cwd = process.cwd();
|
|
86
|
-
const ctx = loadHostContextOrExit({ cwd, runtimeDir: args.runtimeDir, hostArg: args.host });
|
|
87
|
-
if (!ctx)
|
|
88
|
-
return;
|
|
89
|
-
const { hostName, hostCfg } = ctx;
|
|
90
|
-
const deployCreds = loadDeployCreds({ cwd, runtimeDir: args.runtimeDir, envFile: args.envFile });
|
|
91
|
-
const hcloudToken = String(deployCreds.values.HCLOUD_TOKEN || "").trim();
|
|
92
|
-
if (!hcloudToken)
|
|
93
|
-
throw new Error("missing HCLOUD_TOKEN (set in .clawdlets/env or env var; run: clawdlets env init)");
|
|
94
|
-
const imageUrl = String(args["image-url"] || "").trim();
|
|
95
|
-
if (!imageUrl)
|
|
96
|
-
throw new Error("missing --image-url");
|
|
97
|
-
const compression = String(args.compression || "").trim();
|
|
98
|
-
const compressionArg = compression === "none" ? "" : compression;
|
|
99
|
-
if (compressionArg && !["gz", "bz2", "xz"].includes(compressionArg)) {
|
|
100
|
-
throw new Error("invalid --compression (expected none|gz|bz2|xz)");
|
|
101
|
-
}
|
|
102
|
-
const architecture = String(args.architecture || "").trim() || "x86";
|
|
103
|
-
if (!["x86", "arm"].includes(architecture)) {
|
|
104
|
-
throw new Error("invalid --architecture (expected x86|arm)");
|
|
105
|
-
}
|
|
106
|
-
const location = String(args.location || hostCfg.hetzner.location || "nbg1").trim() || "nbg1";
|
|
107
|
-
const name = String(args.name || "").trim();
|
|
108
|
-
const bin = String(args.bin || "hcloud-upload-image").trim() || "hcloud-upload-image";
|
|
109
|
-
const cmd = ["upload", "--image-url", imageUrl, "--architecture", architecture, "--location", location];
|
|
110
|
-
if (compressionArg)
|
|
111
|
-
cmd.push("--compression", compressionArg);
|
|
112
|
-
if (name)
|
|
113
|
-
cmd.push("--name", name);
|
|
114
|
-
await run(bin, cmd, {
|
|
115
|
-
env: { ...process.env, HCLOUD_TOKEN: hcloudToken },
|
|
116
|
-
dryRun: args.dryRun,
|
|
117
|
-
redact: [hcloudToken],
|
|
118
|
-
});
|
|
119
|
-
console.log(`ok: upload complete for ${hostName}`);
|
|
120
|
-
console.log(`hint: set hetzner.image in fleet/clawdlets.json to the new image ID/name`);
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
export const image = defineCommand({
|
|
124
|
-
meta: {
|
|
125
|
-
name: "image",
|
|
126
|
-
description: "Image build/upload helpers (Hetzner custom images).",
|
|
127
|
-
},
|
|
128
|
-
subCommands: {
|
|
129
|
-
build: imageBuild,
|
|
130
|
-
upload: imageUpload,
|
|
131
|
-
},
|
|
132
|
-
});
|
|
133
|
-
//# sourceMappingURL=image.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/commands/image.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/infra.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../../src/commands/infra.ts"],"names":[],"mappings":"AA+JA,eAAO,MAAM,KAAK,qDAShB,CAAC"}
|
package/dist/commands/infra.js
DELETED
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import process from "node:process";
|
|
4
|
-
import { defineCommand } from "citty";
|
|
5
|
-
import * as p from "@clack/prompts";
|
|
6
|
-
import { applyOpenTofuVars, destroyOpenTofuVars } from "@clawdlets/core/lib/opentofu";
|
|
7
|
-
import { loadDeployCreds } from "@clawdlets/core/lib/deploy-creds";
|
|
8
|
-
import { expandPath } from "@clawdlets/core/lib/path-expand";
|
|
9
|
-
import { findRepoRoot } from "@clawdlets/core/lib/repo";
|
|
10
|
-
import { getSshExposureMode, getTailnetMode, loadClawdletsConfig } from "@clawdlets/core/lib/clawdlets-config";
|
|
11
|
-
import { getHostOpenTofuDir } from "@clawdlets/core/repo-layout";
|
|
12
|
-
import { resolveHostNameOrExit } from "../lib/host-resolve.js";
|
|
13
|
-
const infraApply = defineCommand({
|
|
14
|
-
meta: {
|
|
15
|
-
name: "apply",
|
|
16
|
-
description: "Apply Hetzner OpenTofu for a host (driven by fleet/clawdlets.json).",
|
|
17
|
-
},
|
|
18
|
-
args: {
|
|
19
|
-
runtimeDir: { type: "string", description: "Runtime directory (default: .clawdlets)." },
|
|
20
|
-
envFile: { type: "string", description: "Env file for deploy creds (default: <runtimeDir>/env)." },
|
|
21
|
-
host: { type: "string", description: "Host name (defaults to clawdlets.json defaultHost / sole host)." },
|
|
22
|
-
dryRun: { type: "boolean", description: "Print commands without executing.", default: false },
|
|
23
|
-
},
|
|
24
|
-
async run({ args }) {
|
|
25
|
-
const cwd = process.cwd();
|
|
26
|
-
const repoRoot = findRepoRoot(cwd);
|
|
27
|
-
const hostName = resolveHostNameOrExit({ cwd, runtimeDir: args.runtimeDir, hostArg: args.host });
|
|
28
|
-
if (!hostName)
|
|
29
|
-
return;
|
|
30
|
-
const { layout, config: clawdletsConfig } = loadClawdletsConfig({ repoRoot, runtimeDir: args.runtimeDir });
|
|
31
|
-
const hostCfg = clawdletsConfig.hosts[hostName];
|
|
32
|
-
if (!hostCfg)
|
|
33
|
-
throw new Error(`missing host in fleet/clawdlets.json: ${hostName}`);
|
|
34
|
-
const opentofuDir = getHostOpenTofuDir(layout, hostName);
|
|
35
|
-
const deployCreds = loadDeployCreds({ cwd, runtimeDir: args.runtimeDir, envFile: args.envFile });
|
|
36
|
-
if (deployCreds.envFile?.status === "invalid")
|
|
37
|
-
throw new Error(`deploy env file rejected: ${deployCreds.envFile.path} (${deployCreds.envFile.error || "invalid"})`);
|
|
38
|
-
if (deployCreds.envFile?.status === "missing")
|
|
39
|
-
throw new Error(`missing deploy env file: ${deployCreds.envFile.path}`);
|
|
40
|
-
const hcloudToken = String(deployCreds.values.HCLOUD_TOKEN || "").trim();
|
|
41
|
-
if (!hcloudToken)
|
|
42
|
-
throw new Error("missing HCLOUD_TOKEN (set in .clawdlets/env or env var; run: clawdlets env init)");
|
|
43
|
-
const adminCidr = String(hostCfg.provisioning.adminCidr || "").trim();
|
|
44
|
-
if (!adminCidr)
|
|
45
|
-
throw new Error(`missing provisioning.adminCidr for ${hostName} (set via: clawdlets host set --admin-cidr ...)`);
|
|
46
|
-
const sshPubkeyFileRaw = String(hostCfg.provisioning.sshPubkeyFile || "").trim();
|
|
47
|
-
if (!sshPubkeyFileRaw)
|
|
48
|
-
throw new Error(`missing provisioning.sshPubkeyFile for ${hostName} (set via: clawdlets host set --ssh-pubkey-file ...)`);
|
|
49
|
-
const sshPubkeyFileExpanded = expandPath(sshPubkeyFileRaw);
|
|
50
|
-
const sshPubkeyFile = path.isAbsolute(sshPubkeyFileExpanded)
|
|
51
|
-
? sshPubkeyFileExpanded
|
|
52
|
-
: path.resolve(repoRoot, sshPubkeyFileExpanded);
|
|
53
|
-
if (!fs.existsSync(sshPubkeyFile))
|
|
54
|
-
throw new Error(`ssh pubkey file not found: ${sshPubkeyFile}`);
|
|
55
|
-
const image = String(hostCfg.hetzner.image || "").trim();
|
|
56
|
-
const location = String(hostCfg.hetzner.location || "").trim();
|
|
57
|
-
await applyOpenTofuVars({
|
|
58
|
-
opentofuDir,
|
|
59
|
-
vars: {
|
|
60
|
-
hostName,
|
|
61
|
-
hcloudToken,
|
|
62
|
-
adminCidr,
|
|
63
|
-
adminCidrIsWorldOpen: Boolean(hostCfg.provisioning.adminCidrAllowWorldOpen),
|
|
64
|
-
sshPubkeyFile,
|
|
65
|
-
serverType: hostCfg.hetzner.serverType,
|
|
66
|
-
image,
|
|
67
|
-
location,
|
|
68
|
-
sshExposureMode: getSshExposureMode(hostCfg),
|
|
69
|
-
tailnetMode: getTailnetMode(hostCfg),
|
|
70
|
-
},
|
|
71
|
-
nixBin: String(deployCreds.values.NIX_BIN || "nix").trim() || "nix",
|
|
72
|
-
dryRun: args.dryRun,
|
|
73
|
-
redact: [hcloudToken, deployCreds.values.GITHUB_TOKEN].filter(Boolean),
|
|
74
|
-
});
|
|
75
|
-
console.log(`ok: provisioning applied for ${hostName}`);
|
|
76
|
-
console.log(`hint: outputs in ${opentofuDir}`);
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
const infraDestroy = defineCommand({
|
|
80
|
-
meta: {
|
|
81
|
-
name: "destroy",
|
|
82
|
-
description: "Destroy Hetzner OpenTofu resources for a host (DANGEROUS).",
|
|
83
|
-
},
|
|
84
|
-
args: {
|
|
85
|
-
runtimeDir: { type: "string", description: "Runtime directory (default: .clawdlets)." },
|
|
86
|
-
envFile: { type: "string", description: "Env file for deploy creds (default: <runtimeDir>/env)." },
|
|
87
|
-
host: { type: "string", description: "Host name (defaults to clawdlets.json defaultHost / sole host)." },
|
|
88
|
-
force: { type: "boolean", description: "Skip confirmation prompt (non-interactive).", default: false },
|
|
89
|
-
dryRun: { type: "boolean", description: "Print commands without executing.", default: false },
|
|
90
|
-
},
|
|
91
|
-
async run({ args }) {
|
|
92
|
-
const cwd = process.cwd();
|
|
93
|
-
const repoRoot = findRepoRoot(cwd);
|
|
94
|
-
const hostName = resolveHostNameOrExit({ cwd, runtimeDir: args.runtimeDir, hostArg: args.host });
|
|
95
|
-
if (!hostName)
|
|
96
|
-
return;
|
|
97
|
-
const { layout, config: clawdletsConfig } = loadClawdletsConfig({ repoRoot, runtimeDir: args.runtimeDir });
|
|
98
|
-
const hostCfg = clawdletsConfig.hosts[hostName];
|
|
99
|
-
if (!hostCfg)
|
|
100
|
-
throw new Error(`missing host in fleet/clawdlets.json: ${hostName}`);
|
|
101
|
-
const opentofuDir = getHostOpenTofuDir(layout, hostName);
|
|
102
|
-
const deployCreds = loadDeployCreds({ cwd, runtimeDir: args.runtimeDir, envFile: args.envFile });
|
|
103
|
-
if (deployCreds.envFile?.status === "invalid")
|
|
104
|
-
throw new Error(`deploy env file rejected: ${deployCreds.envFile.path} (${deployCreds.envFile.error || "invalid"})`);
|
|
105
|
-
if (deployCreds.envFile?.status === "missing")
|
|
106
|
-
throw new Error(`missing deploy env file: ${deployCreds.envFile.path}`);
|
|
107
|
-
const hcloudToken = String(deployCreds.values.HCLOUD_TOKEN || "").trim();
|
|
108
|
-
if (!hcloudToken)
|
|
109
|
-
throw new Error("missing HCLOUD_TOKEN (set in .clawdlets/env or env var; run: clawdlets env init)");
|
|
110
|
-
const adminCidr = String(hostCfg.provisioning.adminCidr || "").trim();
|
|
111
|
-
if (!adminCidr)
|
|
112
|
-
throw new Error(`missing provisioning.adminCidr for ${hostName} (set via: clawdlets host set --admin-cidr ...)`);
|
|
113
|
-
const sshPubkeyFileRaw = String(hostCfg.provisioning.sshPubkeyFile || "").trim();
|
|
114
|
-
if (!sshPubkeyFileRaw)
|
|
115
|
-
throw new Error(`missing provisioning.sshPubkeyFile for ${hostName} (set via: clawdlets host set --ssh-pubkey-file ...)`);
|
|
116
|
-
const sshPubkeyFileExpanded = expandPath(sshPubkeyFileRaw);
|
|
117
|
-
const sshPubkeyFile = path.isAbsolute(sshPubkeyFileExpanded)
|
|
118
|
-
? sshPubkeyFileExpanded
|
|
119
|
-
: path.resolve(repoRoot, sshPubkeyFileExpanded);
|
|
120
|
-
if (!fs.existsSync(sshPubkeyFile))
|
|
121
|
-
throw new Error(`ssh pubkey file not found: ${sshPubkeyFile}`);
|
|
122
|
-
const image = String(hostCfg.hetzner.image || "").trim();
|
|
123
|
-
const location = String(hostCfg.hetzner.location || "").trim();
|
|
124
|
-
const force = Boolean(args.force);
|
|
125
|
-
const interactive = process.stdin.isTTY && process.stdout.isTTY;
|
|
126
|
-
if (!force) {
|
|
127
|
-
if (!interactive)
|
|
128
|
-
throw new Error("refusing to destroy without --force (no TTY)");
|
|
129
|
-
p.intro("clawdlets infra destroy");
|
|
130
|
-
const ok = await p.confirm({
|
|
131
|
-
message: `Destroy Hetzner resources for host ${hostName}?`,
|
|
132
|
-
initialValue: false,
|
|
133
|
-
});
|
|
134
|
-
if (p.isCancel(ok) || !ok) {
|
|
135
|
-
p.cancel("canceled");
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
await destroyOpenTofuVars({
|
|
140
|
-
opentofuDir,
|
|
141
|
-
vars: {
|
|
142
|
-
hostName,
|
|
143
|
-
hcloudToken,
|
|
144
|
-
adminCidr,
|
|
145
|
-
adminCidrIsWorldOpen: Boolean(hostCfg.provisioning.adminCidrAllowWorldOpen),
|
|
146
|
-
sshPubkeyFile,
|
|
147
|
-
serverType: hostCfg.hetzner.serverType,
|
|
148
|
-
image,
|
|
149
|
-
location,
|
|
150
|
-
sshExposureMode: getSshExposureMode(hostCfg),
|
|
151
|
-
tailnetMode: getTailnetMode(hostCfg),
|
|
152
|
-
},
|
|
153
|
-
nixBin: String(deployCreds.values.NIX_BIN || "nix").trim() || "nix",
|
|
154
|
-
dryRun: args.dryRun,
|
|
155
|
-
redact: [hcloudToken, deployCreds.values.GITHUB_TOKEN].filter(Boolean),
|
|
156
|
-
});
|
|
157
|
-
console.log(`ok: provisioning destroyed for ${hostName}`);
|
|
158
|
-
console.log(`hint: state in ${opentofuDir}`);
|
|
159
|
-
},
|
|
160
|
-
});
|
|
161
|
-
export const infra = defineCommand({
|
|
162
|
-
meta: {
|
|
163
|
-
name: "infra",
|
|
164
|
-
description: "Infrastructure operations (Hetzner OpenTofu).",
|
|
165
|
-
},
|
|
166
|
-
subCommands: {
|
|
167
|
-
apply: infraApply,
|
|
168
|
-
destroy: infraDestroy,
|
|
169
|
-
},
|
|
170
|
-
});
|
|
171
|
-
//# sourceMappingURL=infra.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../../src/commands/infra.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export declare const lockdown: import("citty").CommandDef<{
|
|
2
|
-
runtimeDir: {
|
|
3
|
-
type: "string";
|
|
4
|
-
description: string;
|
|
5
|
-
};
|
|
6
|
-
envFile: {
|
|
7
|
-
type: "string";
|
|
8
|
-
description: string;
|
|
9
|
-
};
|
|
10
|
-
host: {
|
|
11
|
-
type: "string";
|
|
12
|
-
description: string;
|
|
13
|
-
};
|
|
14
|
-
skipTofu: {
|
|
15
|
-
type: "boolean";
|
|
16
|
-
description: string;
|
|
17
|
-
default: false;
|
|
18
|
-
};
|
|
19
|
-
dryRun: {
|
|
20
|
-
type: "boolean";
|
|
21
|
-
description: string;
|
|
22
|
-
default: false;
|
|
23
|
-
};
|
|
24
|
-
}>;
|
|
25
|
-
//# sourceMappingURL=lockdown.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lockdown.d.ts","sourceRoot":"","sources":["../../src/commands/lockdown.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;EA6EnB,CAAC"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import process from "node:process";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { defineCommand } from "citty";
|
|
5
|
-
import { applyOpenTofuVars } from "@clawdlets/core/lib/opentofu";
|
|
6
|
-
import { expandPath } from "@clawdlets/core/lib/path-expand";
|
|
7
|
-
import { loadDeployCreds } from "@clawdlets/core/lib/deploy-creds";
|
|
8
|
-
import { findRepoRoot } from "@clawdlets/core/lib/repo";
|
|
9
|
-
import { getSshExposureMode, getTailnetMode, loadClawdletsConfig } from "@clawdlets/core/lib/clawdlets-config";
|
|
10
|
-
import { getHostOpenTofuDir } from "@clawdlets/core/repo-layout";
|
|
11
|
-
import { requireDeployGate } from "../lib/deploy-gate.js";
|
|
12
|
-
import { resolveHostNameOrExit } from "../lib/host-resolve.js";
|
|
13
|
-
export const lockdown = defineCommand({
|
|
14
|
-
meta: {
|
|
15
|
-
name: "lockdown",
|
|
16
|
-
description: "Remove public SSH from Hetzner firewall (OpenTofu only).",
|
|
17
|
-
},
|
|
18
|
-
args: {
|
|
19
|
-
runtimeDir: { type: "string", description: "Runtime directory (default: .clawdlets)." },
|
|
20
|
-
envFile: { type: "string", description: "Env file for deploy creds (default: <runtimeDir>/env)." },
|
|
21
|
-
host: { type: "string", description: "Host name (defaults to clawdlets.json defaultHost / sole host)." },
|
|
22
|
-
skipTofu: { type: "boolean", description: "Skip provisioning apply.", default: false },
|
|
23
|
-
dryRun: { type: "boolean", description: "Print commands without executing.", default: false },
|
|
24
|
-
},
|
|
25
|
-
async run({ args }) {
|
|
26
|
-
const cwd = process.cwd();
|
|
27
|
-
const repoRoot = findRepoRoot(cwd);
|
|
28
|
-
const hostName = resolveHostNameOrExit({ cwd, runtimeDir: args.runtimeDir, hostArg: args.host });
|
|
29
|
-
if (!hostName)
|
|
30
|
-
return;
|
|
31
|
-
const { layout, config: clawdletsConfig } = loadClawdletsConfig({ repoRoot, runtimeDir: args.runtimeDir });
|
|
32
|
-
const hostCfg = clawdletsConfig.hosts[hostName];
|
|
33
|
-
if (!hostCfg)
|
|
34
|
-
throw new Error(`missing host in fleet/clawdlets.json: ${hostName}`);
|
|
35
|
-
const opentofuDir = getHostOpenTofuDir(layout, hostName);
|
|
36
|
-
const sshExposureMode = getSshExposureMode(hostCfg);
|
|
37
|
-
if (sshExposureMode !== "tailnet") {
|
|
38
|
-
throw new Error(`sshExposure.mode=${sshExposureMode}; set sshExposure.mode=tailnet before lockdown (clawdlets host set --host ${hostName} --ssh-exposure tailnet)`);
|
|
39
|
-
}
|
|
40
|
-
await requireDeployGate({
|
|
41
|
-
runtimeDir: args.runtimeDir,
|
|
42
|
-
envFile: args.envFile,
|
|
43
|
-
host: hostName,
|
|
44
|
-
scope: "server-deploy",
|
|
45
|
-
strict: true,
|
|
46
|
-
skipGithubTokenCheck: true,
|
|
47
|
-
});
|
|
48
|
-
const deployCreds = loadDeployCreds({ cwd, runtimeDir: args.runtimeDir, envFile: args.envFile });
|
|
49
|
-
if (deployCreds.envFile?.status === "invalid")
|
|
50
|
-
throw new Error(`deploy env file rejected: ${deployCreds.envFile.path} (${deployCreds.envFile.error || "invalid"})`);
|
|
51
|
-
if (deployCreds.envFile?.status === "missing")
|
|
52
|
-
throw new Error(`missing deploy env file: ${deployCreds.envFile.path}`);
|
|
53
|
-
const hcloudToken = String(deployCreds.values.HCLOUD_TOKEN || "").trim();
|
|
54
|
-
const githubToken = String(deployCreds.values.GITHUB_TOKEN || "").trim();
|
|
55
|
-
if (!args.skipTofu) {
|
|
56
|
-
if (!hcloudToken)
|
|
57
|
-
throw new Error("missing HCLOUD_TOKEN (set in .clawdlets/env or env var; run: clawdlets env init)");
|
|
58
|
-
const adminCidr = String(hostCfg.provisioning.adminCidr || "").trim();
|
|
59
|
-
if (!adminCidr)
|
|
60
|
-
throw new Error(`missing provisioning.adminCidr for ${hostName} (set via: clawdlets host set --admin-cidr ...)`);
|
|
61
|
-
const sshPubkeyFileRaw = String(hostCfg.provisioning.sshPubkeyFile || "").trim();
|
|
62
|
-
if (!sshPubkeyFileRaw)
|
|
63
|
-
throw new Error(`missing provisioning.sshPubkeyFile for ${hostName} (set via: clawdlets host set --ssh-pubkey-file ...)`);
|
|
64
|
-
const sshPubkeyFileExpanded = expandPath(sshPubkeyFileRaw);
|
|
65
|
-
const sshPubkeyFile = path.isAbsolute(sshPubkeyFileExpanded)
|
|
66
|
-
? sshPubkeyFileExpanded
|
|
67
|
-
: path.resolve(repoRoot, sshPubkeyFileExpanded);
|
|
68
|
-
if (!fs.existsSync(sshPubkeyFile))
|
|
69
|
-
throw new Error(`ssh pubkey file not found: ${sshPubkeyFile}`);
|
|
70
|
-
const image = String(hostCfg.hetzner.image || "").trim();
|
|
71
|
-
const location = String(hostCfg.hetzner.location || "").trim();
|
|
72
|
-
await applyOpenTofuVars({
|
|
73
|
-
opentofuDir,
|
|
74
|
-
vars: {
|
|
75
|
-
hostName,
|
|
76
|
-
hcloudToken,
|
|
77
|
-
adminCidr,
|
|
78
|
-
adminCidrIsWorldOpen: Boolean(hostCfg.provisioning.adminCidrAllowWorldOpen),
|
|
79
|
-
sshPubkeyFile,
|
|
80
|
-
serverType: hostCfg.hetzner.serverType,
|
|
81
|
-
image,
|
|
82
|
-
location,
|
|
83
|
-
sshExposureMode,
|
|
84
|
-
tailnetMode: getTailnetMode(hostCfg),
|
|
85
|
-
},
|
|
86
|
-
nixBin: String(deployCreds.values.NIX_BIN || "nix").trim() || "nix",
|
|
87
|
-
dryRun: args.dryRun,
|
|
88
|
-
redact: [hcloudToken, githubToken].filter(Boolean),
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
//# sourceMappingURL=lockdown.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lockdown.js","sourceRoot":"","sources":["../../src/commands/lockdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AAgRA,eAAO,MAAM,OAAO,qDAGlB,CAAC"}
|