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
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
export declare const cattleSpawn: import("citty").CommandDef<{
|
|
2
|
-
runtimeDir: {
|
|
3
|
-
type: "string";
|
|
4
|
-
description: string;
|
|
5
|
-
};
|
|
6
|
-
host: {
|
|
7
|
-
type: "string";
|
|
8
|
-
description: string;
|
|
9
|
-
};
|
|
10
|
-
persona: {
|
|
11
|
-
type: "string";
|
|
12
|
-
description: string;
|
|
13
|
-
required: true;
|
|
14
|
-
};
|
|
15
|
-
taskFile: {
|
|
16
|
-
type: "string";
|
|
17
|
-
description: string;
|
|
18
|
-
required: true;
|
|
19
|
-
};
|
|
20
|
-
ttl: {
|
|
21
|
-
type: "string";
|
|
22
|
-
description: string;
|
|
23
|
-
};
|
|
24
|
-
image: {
|
|
25
|
-
type: "string";
|
|
26
|
-
description: string;
|
|
27
|
-
};
|
|
28
|
-
serverType: {
|
|
29
|
-
type: "string";
|
|
30
|
-
description: string;
|
|
31
|
-
};
|
|
32
|
-
location: {
|
|
33
|
-
type: "string";
|
|
34
|
-
description: string;
|
|
35
|
-
};
|
|
36
|
-
autoShutdown: {
|
|
37
|
-
type: "boolean";
|
|
38
|
-
description: string;
|
|
39
|
-
};
|
|
40
|
-
withGithubToken: {
|
|
41
|
-
type: "boolean";
|
|
42
|
-
description: string;
|
|
43
|
-
default: false;
|
|
44
|
-
};
|
|
45
|
-
socket: {
|
|
46
|
-
type: "string";
|
|
47
|
-
description: string;
|
|
48
|
-
};
|
|
49
|
-
requester: {
|
|
50
|
-
type: "string";
|
|
51
|
-
description: string;
|
|
52
|
-
};
|
|
53
|
-
idempotencyKey: {
|
|
54
|
-
type: "string";
|
|
55
|
-
description: string;
|
|
56
|
-
};
|
|
57
|
-
wait: {
|
|
58
|
-
type: "boolean";
|
|
59
|
-
description: string;
|
|
60
|
-
default: true;
|
|
61
|
-
};
|
|
62
|
-
waitTimeout: {
|
|
63
|
-
type: "string";
|
|
64
|
-
description: string;
|
|
65
|
-
default: string;
|
|
66
|
-
};
|
|
67
|
-
dryRun: {
|
|
68
|
-
type: "boolean";
|
|
69
|
-
description: string;
|
|
70
|
-
default: false;
|
|
71
|
-
};
|
|
72
|
-
}>;
|
|
73
|
-
//# sourceMappingURL=spawn.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/commands/cattle/spawn.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0JtB,CAAC"}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import process from "node:process";
|
|
3
|
-
import { defineCommand } from "citty";
|
|
4
|
-
import { CLF_PROTOCOL_VERSION, createClfClient } from "@clawdlets/clf-queue";
|
|
5
|
-
import { sanitizeOperatorId } from "@clawdlets/core/lib/identifiers";
|
|
6
|
-
import { openCattleState } from "@clawdlets/core/lib/cattle-state";
|
|
7
|
-
import { loadHostContextOrExit } from "../../lib/context.js";
|
|
8
|
-
import { loadTaskFromFile, requireEnabled, requireFile, requireTtlSeconds, unixSecondsNow, waitForClfJobTerminal } from "./common.js";
|
|
9
|
-
export const cattleSpawn = defineCommand({
|
|
10
|
-
meta: { name: "spawn", description: "Enqueue a cattle.spawn job via clf-orchestrator (no secrets in user_data)." },
|
|
11
|
-
args: {
|
|
12
|
-
runtimeDir: { type: "string", description: "Runtime directory (default: .clawdlets)." },
|
|
13
|
-
host: { type: "string", description: "Host name (defaults to clawdlets.json defaultHost / sole host)." },
|
|
14
|
-
persona: { type: "string", description: "Persona name.", required: true },
|
|
15
|
-
taskFile: { type: "string", description: "Task JSON file (schemaVersion 1).", required: true },
|
|
16
|
-
ttl: { type: "string", description: "TTL override (default: cattle.hetzner.defaultTtl)." },
|
|
17
|
-
image: { type: "string", description: "Hetzner image override (default: cattle.hetzner.image)." },
|
|
18
|
-
serverType: { type: "string", description: "Hetzner server type override (default: cattle.hetzner.serverType)." },
|
|
19
|
-
location: { type: "string", description: "Hetzner location override (default: cattle.hetzner.location)." },
|
|
20
|
-
autoShutdown: { type: "boolean", description: "Auto poweroff after task (default: cattle.defaults.autoShutdown)." },
|
|
21
|
-
withGithubToken: { type: "boolean", description: "Include GITHUB_TOKEN in cattle env (explicit).", default: false },
|
|
22
|
-
socket: { type: "string", description: "clf-orchestrator unix socket path (default: /run/clf/orchestrator.sock)." },
|
|
23
|
-
requester: { type: "string", description: "Requester id (default: $USER)." },
|
|
24
|
-
idempotencyKey: { type: "string", description: "Idempotency key (optional)." },
|
|
25
|
-
wait: { type: "boolean", description: "Wait for job completion.", default: true },
|
|
26
|
-
waitTimeout: { type: "string", description: "Wait timeout seconds.", default: "300" },
|
|
27
|
-
dryRun: { type: "boolean", description: "Print enqueue request without enqueueing.", default: false },
|
|
28
|
-
},
|
|
29
|
-
async run({ args }) {
|
|
30
|
-
const cwd = process.cwd();
|
|
31
|
-
const ctx = loadHostContextOrExit({ cwd, runtimeDir: args.runtimeDir, hostArg: args.host });
|
|
32
|
-
if (!ctx)
|
|
33
|
-
return;
|
|
34
|
-
const { layout, config } = ctx;
|
|
35
|
-
requireEnabled({
|
|
36
|
-
enabled: Boolean(config.cattle?.enabled),
|
|
37
|
-
hint: "cattle is disabled (set cattle.enabled=true in fleet/clawdlets.json)",
|
|
38
|
-
});
|
|
39
|
-
const persona = String(args.persona || "").trim();
|
|
40
|
-
if (!persona)
|
|
41
|
-
throw new Error("missing --persona");
|
|
42
|
-
const taskFileRaw = String(args.taskFile || "").trim();
|
|
43
|
-
if (!taskFileRaw)
|
|
44
|
-
throw new Error("missing --task-file");
|
|
45
|
-
const taskFile = path.isAbsolute(taskFileRaw) ? taskFileRaw : path.resolve(cwd, taskFileRaw);
|
|
46
|
-
requireFile(taskFile, "task file");
|
|
47
|
-
const taskFromFile = loadTaskFromFile(taskFile);
|
|
48
|
-
const task = { ...taskFromFile, callbackUrl: "" };
|
|
49
|
-
const ttlRaw = String(args.ttl || config.cattle?.hetzner?.defaultTtl || "").trim();
|
|
50
|
-
if (ttlRaw)
|
|
51
|
-
requireTtlSeconds(ttlRaw);
|
|
52
|
-
const payload = {
|
|
53
|
-
persona,
|
|
54
|
-
task,
|
|
55
|
-
ttl: ttlRaw,
|
|
56
|
-
image: String(args.image || config.cattle?.hetzner?.image || "").trim(),
|
|
57
|
-
serverType: String(args.serverType || config.cattle?.hetzner?.serverType || "").trim(),
|
|
58
|
-
location: String(args.location || config.cattle?.hetzner?.location || "").trim(),
|
|
59
|
-
...(typeof args.autoShutdown === "boolean"
|
|
60
|
-
? { autoShutdown: Boolean(args.autoShutdown) }
|
|
61
|
-
: typeof config.cattle?.defaults?.autoShutdown === "boolean"
|
|
62
|
-
? { autoShutdown: Boolean(config.cattle.defaults.autoShutdown) }
|
|
63
|
-
: {}),
|
|
64
|
-
...(args.withGithubToken ? { withGithubToken: true } : {}),
|
|
65
|
-
};
|
|
66
|
-
const socketPath = String(args.socket || process.env.CLF_SOCKET_PATH || "/run/clf/orchestrator.sock").trim();
|
|
67
|
-
if (!socketPath)
|
|
68
|
-
throw new Error("missing --socket (or set CLF_SOCKET_PATH)");
|
|
69
|
-
const requester = sanitizeOperatorId(String(args.requester || process.env.USER || "operator"));
|
|
70
|
-
const idempotencyKey = String(args.idempotencyKey || "").trim();
|
|
71
|
-
const request = {
|
|
72
|
-
protocolVersion: CLF_PROTOCOL_VERSION,
|
|
73
|
-
requester,
|
|
74
|
-
idempotencyKey,
|
|
75
|
-
kind: "cattle.spawn",
|
|
76
|
-
payload,
|
|
77
|
-
runAt: "",
|
|
78
|
-
priority: 0,
|
|
79
|
-
};
|
|
80
|
-
if (args.dryRun) {
|
|
81
|
-
console.log(JSON.stringify({ action: "clf.jobs.enqueue", socketPath, request }, null, 2));
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const client = createClfClient({ socketPath });
|
|
85
|
-
const res = await client.enqueue(request);
|
|
86
|
-
const waitTimeoutRaw = String(args.waitTimeout || "300").trim();
|
|
87
|
-
if (!/^\d+$/.test(waitTimeoutRaw) || Number(waitTimeoutRaw) <= 0) {
|
|
88
|
-
throw new Error(`invalid --wait-timeout: ${waitTimeoutRaw}`);
|
|
89
|
-
}
|
|
90
|
-
const timeoutMs = Number(waitTimeoutRaw) * 1000;
|
|
91
|
-
if (!args.wait) {
|
|
92
|
-
console.log(res.jobId);
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
const job = await waitForClfJobTerminal({
|
|
96
|
-
client,
|
|
97
|
-
jobId: res.jobId,
|
|
98
|
-
timeoutMs,
|
|
99
|
-
pollMs: 1_000,
|
|
100
|
-
});
|
|
101
|
-
if (job.status !== "done") {
|
|
102
|
-
const err = String(job.lastError || "").trim();
|
|
103
|
-
throw new Error(`spawn job ${res.jobId} ${job.status}${err ? `: ${err}` : ""}`);
|
|
104
|
-
}
|
|
105
|
-
const server = job.result?.server;
|
|
106
|
-
if (server && typeof server === "object") {
|
|
107
|
-
const id = String(server.id || "").trim();
|
|
108
|
-
const name = String(server.name || "").trim();
|
|
109
|
-
const ipv4 = String(server.ipv4 || "").trim();
|
|
110
|
-
const createdAtIso = String(server.createdAt || "").trim();
|
|
111
|
-
const expiresAtIso = String(server.expiresAt || "").trim();
|
|
112
|
-
const createdAt = Number.isFinite(Date.parse(createdAtIso)) ? Math.floor(Date.parse(createdAtIso) / 1000) : unixSecondsNow();
|
|
113
|
-
const expiresAt = Number.isFinite(Date.parse(expiresAtIso)) ? Math.floor(Date.parse(expiresAtIso) / 1000) : 0;
|
|
114
|
-
const ttlSeconds = typeof server.ttlSeconds === "number" && Number.isFinite(server.ttlSeconds)
|
|
115
|
-
? Math.max(0, Math.floor(server.ttlSeconds))
|
|
116
|
-
: Math.max(0, expiresAt - createdAt);
|
|
117
|
-
const labels = server.labels && typeof server.labels === "object" && !Array.isArray(server.labels)
|
|
118
|
-
? server.labels
|
|
119
|
-
: {};
|
|
120
|
-
if (id && name) {
|
|
121
|
-
const st = openCattleState(layout.cattleDbPath);
|
|
122
|
-
try {
|
|
123
|
-
st.upsertServer({
|
|
124
|
-
id,
|
|
125
|
-
name,
|
|
126
|
-
persona: String(server.persona || persona),
|
|
127
|
-
task: String(server.taskId || task.taskId),
|
|
128
|
-
taskId: String(server.taskId || task.taskId),
|
|
129
|
-
ttlSeconds,
|
|
130
|
-
createdAt,
|
|
131
|
-
expiresAt,
|
|
132
|
-
labels,
|
|
133
|
-
lastStatus: String(server.status || "unknown"),
|
|
134
|
-
lastIpv4: ipv4,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
finally {
|
|
138
|
-
st.close();
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
console.log(`ok: spawned ${name || "cattle"} (id=${id || "?"} ipv4=${ipv4 || "?"} job=${res.jobId})`);
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
console.log(`ok: spawn completed (job=${res.jobId})`);
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
|
-
//# sourceMappingURL=spawn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/commands/cattle/spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export declare const cattleSsh: 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
|
-
idOrName: {
|
|
15
|
-
type: "string";
|
|
16
|
-
description: string;
|
|
17
|
-
required: true;
|
|
18
|
-
};
|
|
19
|
-
}>;
|
|
20
|
-
//# sourceMappingURL=ssh.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../../src/commands/cattle/ssh.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;EA+BpB,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import process from "node:process";
|
|
2
|
-
import { defineCommand } from "citty";
|
|
3
|
-
import { loadDeployCreds } from "@clawdlets/core/lib/deploy-creds";
|
|
4
|
-
import { buildCattleLabelSelector, listCattleServers } from "@clawdlets/core/lib/hcloud-cattle";
|
|
5
|
-
import { run } from "@clawdlets/core/lib/run";
|
|
6
|
-
import { loadHostContextOrExit } from "../../lib/context.js";
|
|
7
|
-
import { requireEnabled, resolveOne, resolveTailscaleIpv4 } from "./common.js";
|
|
8
|
-
export const cattleSsh = defineCommand({
|
|
9
|
-
meta: { name: "ssh", description: "SSH into a cattle VM over tailnet (admin@<tailscale-ip>)." },
|
|
10
|
-
args: {
|
|
11
|
-
runtimeDir: { type: "string", description: "Runtime directory (default: .clawdlets)." },
|
|
12
|
-
envFile: { type: "string", description: "Env file for deploy creds (default: <runtimeDir>/env)." },
|
|
13
|
-
host: { type: "string", description: "Host name (defaults to clawdlets.json defaultHost / sole host)." },
|
|
14
|
-
idOrName: { type: "string", description: "Cattle server id or name.", required: true },
|
|
15
|
-
},
|
|
16
|
-
async run({ args }) {
|
|
17
|
-
const cwd = process.cwd();
|
|
18
|
-
const ctx = loadHostContextOrExit({ cwd, runtimeDir: args.runtimeDir, hostArg: args.host });
|
|
19
|
-
if (!ctx)
|
|
20
|
-
return;
|
|
21
|
-
const { config } = ctx;
|
|
22
|
-
requireEnabled({
|
|
23
|
-
enabled: Boolean(config.cattle?.enabled),
|
|
24
|
-
hint: "cattle is disabled (set cattle.enabled=true in fleet/clawdlets.json)",
|
|
25
|
-
});
|
|
26
|
-
const deployCreds = loadDeployCreds({ cwd, runtimeDir: args.runtimeDir, envFile: args.envFile });
|
|
27
|
-
const hcloudToken = String(deployCreds.values.HCLOUD_TOKEN || "").trim();
|
|
28
|
-
if (!hcloudToken)
|
|
29
|
-
throw new Error("missing HCLOUD_TOKEN (set in .clawdlets/env or env var; run: clawdlets env init)");
|
|
30
|
-
const servers = await listCattleServers({ token: hcloudToken, labelSelector: buildCattleLabelSelector() });
|
|
31
|
-
const server = resolveOne(servers, String(args.idOrName || ""));
|
|
32
|
-
const ip = await resolveTailscaleIpv4(server.name);
|
|
33
|
-
const targetHost = `admin@${ip}`;
|
|
34
|
-
await run("ssh", ["-t", "--", targetHost], { redact: [] });
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
//# sourceMappingURL=ssh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../../src/commands/cattle/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAChG,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAC;IACrC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,2DAA2D,EAAE;IAC/F,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;QACvF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wDAAwD,EAAE;QAClG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iEAAiE,EAAE;QACxG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,IAAI,EAAE;KACvF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,qBAAqB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAG,IAAY,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAEvB,cAAc,CAAC;YACb,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;YACxC,IAAI,EAAE,sEAAsE;SAC7E,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,UAAU,EAAG,IAAY,CAAC,UAAU,EAAE,OAAO,EAAG,IAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QACnH,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzE,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QAEtH,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAE,IAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,SAAS,EAAE,EAAE,CAAC;QAEjC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cattle.d.ts","sourceRoot":"","sources":["../../src/commands/cattle.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM,qDAWjB,CAAC"}
|
package/dist/commands/cattle.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { defineCommand } from "citty";
|
|
2
|
-
import { cattleDestroy } from "./cattle/destroy.js";
|
|
3
|
-
import { cattleList } from "./cattle/list.js";
|
|
4
|
-
import { cattleLogs } from "./cattle/logs.js";
|
|
5
|
-
import { cattlePersona } from "./cattle/persona.js";
|
|
6
|
-
import { cattleReap } from "./cattle/reap.js";
|
|
7
|
-
import { cattleSpawn } from "./cattle/spawn.js";
|
|
8
|
-
import { cattleSsh } from "./cattle/ssh.js";
|
|
9
|
-
export const cattle = defineCommand({
|
|
10
|
-
meta: { name: "cattle", description: "Cattle (ephemeral agents on Hetzner Cloud)." },
|
|
11
|
-
subCommands: {
|
|
12
|
-
spawn: cattleSpawn,
|
|
13
|
-
list: cattleList,
|
|
14
|
-
destroy: cattleDestroy,
|
|
15
|
-
reap: cattleReap,
|
|
16
|
-
logs: cattleLogs,
|
|
17
|
-
ssh: cattleSsh,
|
|
18
|
-
persona: cattlePersona,
|
|
19
|
-
},
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=cattle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cattle.js","sourceRoot":"","sources":["../../src/commands/cattle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC;IAClC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;IACpF,WAAW,EAAE;QACX,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,aAAa;KACvB;CACF,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AA0KA,eAAO,MAAM,MAAM,qDAGjB,CAAC"}
|
package/dist/commands/config.js
DELETED
|
@@ -1,163 +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 { ensureDir } from "@clawdlets/core/lib/fs-safe";
|
|
6
|
-
import { splitDotPath } from "@clawdlets/core/lib/dot-path";
|
|
7
|
-
import { findRepoRoot } from "@clawdlets/core/lib/repo";
|
|
8
|
-
import { getRepoLayout } from "@clawdlets/core/repo-layout";
|
|
9
|
-
import { createDefaultClawdletsConfig, ClawdletsConfigSchema, loadClawdletsConfig, loadClawdletsConfigRaw, writeClawdletsConfig, } from "@clawdlets/core/lib/clawdlets-config";
|
|
10
|
-
function getAtPath(obj, parts) {
|
|
11
|
-
let cur = obj;
|
|
12
|
-
for (const k of parts) {
|
|
13
|
-
if (cur == null || typeof cur !== "object")
|
|
14
|
-
return undefined;
|
|
15
|
-
cur = cur[k];
|
|
16
|
-
}
|
|
17
|
-
return cur;
|
|
18
|
-
}
|
|
19
|
-
function setAtPath(obj, parts, value) {
|
|
20
|
-
let cur = obj;
|
|
21
|
-
for (let i = 0; i < parts.length - 1; i++) {
|
|
22
|
-
const k = parts[i];
|
|
23
|
-
if (cur[k] == null || typeof cur[k] !== "object" || Array.isArray(cur[k]))
|
|
24
|
-
cur[k] = {};
|
|
25
|
-
cur = cur[k];
|
|
26
|
-
}
|
|
27
|
-
cur[parts[parts.length - 1]] = value;
|
|
28
|
-
}
|
|
29
|
-
function deleteAtPath(obj, parts) {
|
|
30
|
-
let cur = obj;
|
|
31
|
-
for (let i = 0; i < parts.length - 1; i++) {
|
|
32
|
-
const k = parts[i];
|
|
33
|
-
if (cur == null || typeof cur !== "object")
|
|
34
|
-
return false;
|
|
35
|
-
cur = cur[k];
|
|
36
|
-
}
|
|
37
|
-
const last = parts[parts.length - 1];
|
|
38
|
-
if (cur && typeof cur === "object" && Object.prototype.hasOwnProperty.call(cur, last)) {
|
|
39
|
-
delete cur[last];
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
const init = defineCommand({
|
|
45
|
-
meta: { name: "init", description: "Initialize fleet/clawdlets.json (canonical config)." },
|
|
46
|
-
args: {
|
|
47
|
-
host: { type: "string", description: "Initial host name.", default: "clawdbot-fleet-host" },
|
|
48
|
-
force: { type: "boolean", description: "Overwrite existing clawdlets.json.", default: false },
|
|
49
|
-
"dry-run": { type: "boolean", description: "Print planned writes without writing.", default: false },
|
|
50
|
-
},
|
|
51
|
-
async run({ args }) {
|
|
52
|
-
const repoRoot = findRepoRoot(process.cwd());
|
|
53
|
-
const host = String(args.host || "clawdbot-fleet-host").trim() || "clawdbot-fleet-host";
|
|
54
|
-
const configPath = getRepoLayout(repoRoot).clawdletsConfigPath;
|
|
55
|
-
if (fs.existsSync(configPath) && !args.force) {
|
|
56
|
-
throw new Error(`config already exists (pass --force to overwrite): ${configPath}`);
|
|
57
|
-
}
|
|
58
|
-
const config = createDefaultClawdletsConfig({ host });
|
|
59
|
-
if (args["dry-run"]) {
|
|
60
|
-
console.log(`planned: write ${path.relative(repoRoot, configPath)}`);
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
await ensureDir(path.dirname(configPath));
|
|
64
|
-
await writeClawdletsConfig({ configPath, config });
|
|
65
|
-
console.log(`ok: wrote ${path.relative(repoRoot, configPath)}`);
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
const show = defineCommand({
|
|
69
|
-
meta: { name: "show", description: "Print fleet/clawdlets.json." },
|
|
70
|
-
args: {
|
|
71
|
-
pretty: { type: "boolean", description: "Pretty-print JSON.", default: true },
|
|
72
|
-
},
|
|
73
|
-
async run({ args }) {
|
|
74
|
-
const repoRoot = findRepoRoot(process.cwd());
|
|
75
|
-
const { config } = loadClawdletsConfig({ repoRoot });
|
|
76
|
-
console.log(args.pretty ? JSON.stringify(config, null, 2) : JSON.stringify(config));
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
const validate = defineCommand({
|
|
80
|
-
meta: { name: "validate", description: "Validate fleet/clawdlets.json schema." },
|
|
81
|
-
args: {},
|
|
82
|
-
async run() {
|
|
83
|
-
const repoRoot = findRepoRoot(process.cwd());
|
|
84
|
-
loadClawdletsConfig({ repoRoot });
|
|
85
|
-
console.log("ok");
|
|
86
|
-
},
|
|
87
|
-
});
|
|
88
|
-
const get = defineCommand({
|
|
89
|
-
meta: { name: "get", description: "Get a value from fleet/clawdlets.json (dot path)." },
|
|
90
|
-
args: {
|
|
91
|
-
path: { type: "string", description: "Dot path (e.g. fleet.botOrder)." },
|
|
92
|
-
json: { type: "boolean", description: "JSON output.", default: false },
|
|
93
|
-
},
|
|
94
|
-
async run({ args }) {
|
|
95
|
-
const repoRoot = findRepoRoot(process.cwd());
|
|
96
|
-
const { config } = loadClawdletsConfig({ repoRoot });
|
|
97
|
-
const parts = splitDotPath(String(args.path || ""));
|
|
98
|
-
const v = getAtPath(config, parts);
|
|
99
|
-
if (args.json)
|
|
100
|
-
console.log(JSON.stringify({ path: parts.join("."), value: v }, null, 2));
|
|
101
|
-
else
|
|
102
|
-
console.log(typeof v === "string" ? v : JSON.stringify(v, null, 2));
|
|
103
|
-
},
|
|
104
|
-
});
|
|
105
|
-
const set = defineCommand({
|
|
106
|
-
meta: { name: "set", description: "Set a value in fleet/clawdlets.json (dot path)." },
|
|
107
|
-
args: {
|
|
108
|
-
path: { type: "string", description: "Dot path (e.g. fleet.botOrder)." },
|
|
109
|
-
value: { type: "string", description: "String value." },
|
|
110
|
-
"value-json": { type: "string", description: "JSON value (parsed)." },
|
|
111
|
-
delete: { type: "boolean", description: "Delete the key at path.", default: false },
|
|
112
|
-
},
|
|
113
|
-
async run({ args }) {
|
|
114
|
-
const repoRoot = findRepoRoot(process.cwd());
|
|
115
|
-
const { configPath, config } = loadClawdletsConfigRaw({ repoRoot });
|
|
116
|
-
const parts = splitDotPath(String(args.path || ""));
|
|
117
|
-
const next = structuredClone(config);
|
|
118
|
-
if (args.delete) {
|
|
119
|
-
const ok = deleteAtPath(next, parts);
|
|
120
|
-
if (!ok)
|
|
121
|
-
throw new Error(`path not found: ${parts.join(".")}`);
|
|
122
|
-
}
|
|
123
|
-
else if (args["value-json"] !== undefined) {
|
|
124
|
-
let parsed;
|
|
125
|
-
try {
|
|
126
|
-
parsed = JSON.parse(String(args["value-json"]));
|
|
127
|
-
}
|
|
128
|
-
catch {
|
|
129
|
-
throw new Error("invalid --value-json (must be valid JSON)");
|
|
130
|
-
}
|
|
131
|
-
setAtPath(next, parts, parsed);
|
|
132
|
-
}
|
|
133
|
-
else if (args.value !== undefined) {
|
|
134
|
-
setAtPath(next, parts, String(args.value));
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
throw new Error("set requires --value or --value-json (or --delete)");
|
|
138
|
-
}
|
|
139
|
-
try {
|
|
140
|
-
const validated = ClawdletsConfigSchema.parse(next);
|
|
141
|
-
await writeClawdletsConfig({ configPath, config: validated });
|
|
142
|
-
console.log("ok");
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
let details = "";
|
|
146
|
-
if (Array.isArray(err?.errors)) {
|
|
147
|
-
details = err.errors
|
|
148
|
-
.map((e) => (Array.isArray(e.path) ? e.path.join(".") : "") || e.message)
|
|
149
|
-
.filter(Boolean)
|
|
150
|
-
.join(", ");
|
|
151
|
-
}
|
|
152
|
-
const msg = details
|
|
153
|
-
? `config update failed; revert or fix validation errors: ${details}`
|
|
154
|
-
: "config update failed; revert or fix validation errors";
|
|
155
|
-
throw new Error(msg);
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
});
|
|
159
|
-
export const config = defineCommand({
|
|
160
|
-
meta: { name: "config", description: "Canonical config (fleet/clawdlets.json)." },
|
|
161
|
-
subCommands: { init, show, validate, get, set },
|
|
162
|
-
});
|
|
163
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export declare const doctor: 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
|
-
scope: {
|
|
15
|
-
type: "string";
|
|
16
|
-
description: string;
|
|
17
|
-
default: string;
|
|
18
|
-
};
|
|
19
|
-
json: {
|
|
20
|
-
type: "boolean";
|
|
21
|
-
description: string;
|
|
22
|
-
default: false;
|
|
23
|
-
};
|
|
24
|
-
"show-ok": {
|
|
25
|
-
type: "boolean";
|
|
26
|
-
description: string;
|
|
27
|
-
default: false;
|
|
28
|
-
};
|
|
29
|
-
strict: {
|
|
30
|
-
type: "boolean";
|
|
31
|
-
description: string;
|
|
32
|
-
default: false;
|
|
33
|
-
};
|
|
34
|
-
}>;
|
|
35
|
-
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDjB,CAAC"}
|
package/dist/commands/doctor.js
DELETED
|
@@ -1,65 +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 { collectDoctorChecks } from "@clawdlets/core/doctor";
|
|
6
|
-
import { findRepoRoot } from "@clawdlets/core/lib/repo";
|
|
7
|
-
import { resolveHostNameOrExit } from "../lib/host-resolve.js";
|
|
8
|
-
import { renderDoctorReport } from "../lib/doctor-render.js";
|
|
9
|
-
export const doctor = defineCommand({
|
|
10
|
-
meta: {
|
|
11
|
-
name: "doctor",
|
|
12
|
-
description: "Validate repo + runtime inputs for deploying a host.",
|
|
13
|
-
},
|
|
14
|
-
args: {
|
|
15
|
-
runtimeDir: { type: "string", description: "Runtime directory (default: .clawdlets)." },
|
|
16
|
-
envFile: { type: "string", description: "Env file for deploy creds (default: <runtimeDir>/env)." },
|
|
17
|
-
host: { type: "string", description: "Host name (defaults to clawdlets.json defaultHost / sole host)." },
|
|
18
|
-
scope: {
|
|
19
|
-
type: "string",
|
|
20
|
-
description: "Which checks to run: repo | bootstrap | server-deploy | cattle | all (default: all).",
|
|
21
|
-
default: "all",
|
|
22
|
-
},
|
|
23
|
-
json: { type: "boolean", description: "Output JSON.", default: false },
|
|
24
|
-
"show-ok": { type: "boolean", description: "Show ok checks too.", default: false },
|
|
25
|
-
strict: { type: "boolean", description: "Fail on warn too (deploy gating).", default: false },
|
|
26
|
-
},
|
|
27
|
-
async run({ args }) {
|
|
28
|
-
const cwd = process.cwd();
|
|
29
|
-
const scopeRaw = String(args.scope || "all").trim();
|
|
30
|
-
if (scopeRaw !== "repo" && scopeRaw !== "bootstrap" && scopeRaw !== "server-deploy" && scopeRaw !== "cattle" && scopeRaw !== "all") {
|
|
31
|
-
throw new Error(`invalid --scope: ${scopeRaw} (expected repo|bootstrap|server-deploy|cattle|all)`);
|
|
32
|
-
}
|
|
33
|
-
const scope = scopeRaw;
|
|
34
|
-
if (scope === "repo") {
|
|
35
|
-
const repoRoot = findRepoRoot(cwd);
|
|
36
|
-
const templateSource = path.join(repoRoot, "config", "template-source.json");
|
|
37
|
-
const clawdletsConfig = path.join(repoRoot, "fleet", "clawdlets.json");
|
|
38
|
-
if (fs.existsSync(templateSource) && !fs.existsSync(clawdletsConfig)) {
|
|
39
|
-
console.log("note: CLI repo detected; run doctor in a project repo or via template-e2e.");
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const hostName = resolveHostNameOrExit({ cwd, runtimeDir: args.runtimeDir, hostArg: args.host });
|
|
44
|
-
if (!hostName)
|
|
45
|
-
return;
|
|
46
|
-
const checks = await collectDoctorChecks({
|
|
47
|
-
cwd,
|
|
48
|
-
runtimeDir: args.runtimeDir,
|
|
49
|
-
envFile: args.envFile,
|
|
50
|
-
host: hostName,
|
|
51
|
-
scope,
|
|
52
|
-
});
|
|
53
|
-
if (args.json) {
|
|
54
|
-
console.log(JSON.stringify({ scope: scopeRaw, host: hostName, checks }, null, 2));
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
console.log(renderDoctorReport({ checks, host: hostName, scope, strict: args.strict, showOk: Boolean(args["show-ok"]) }));
|
|
58
|
-
}
|
|
59
|
-
if (checks.some((c) => c.status === "missing"))
|
|
60
|
-
process.exitCode = 1;
|
|
61
|
-
if (args.strict && checks.some((c) => c.status === "warn"))
|
|
62
|
-
process.exitCode = 1;
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC;IAClC,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sDAAsD;KACpE;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;QACvF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wDAAwD,EAAE;QAClG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iEAAiE,EAAE;QACxG,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,sFAAsF;YACnG,OAAO,EAAE,KAAK;SACf;QACD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE;QACtE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE;QAClF,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE;KAC9F;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,eAAe,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACnI,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,qDAAqD,CAAC,CAAC;QACrG,CAAC;QACD,MAAM,KAAK,GAAG,QAAqE,CAAC;QAEpF,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;YAC7E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACvE,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;gBAC1F,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAG,IAAY,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1G,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;YACvC,GAAG;YACH,UAAU,EAAG,IAAY,CAAC,UAAU;YACpC,OAAO,EAAG,IAAY,CAAC,OAAO;YAC9B,IAAI,EAAE,QAAQ;YACd,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAE,IAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrI,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnF,CAAC;CACF,CAAC,CAAC"}
|