@hasna/machines 0.0.34 → 0.0.36
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 +33 -0
- package/dist/cli/index.js +358 -25
- package/dist/commands/doctor.d.ts +23 -2
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/consumer.js +188 -9
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +370 -25
- package/dist/manifests.d.ts +22 -1
- package/dist/manifests.d.ts.map +1 -1
- package/dist/mcp/index.js +351 -20
- package/dist/redaction.d.ts +11 -0
- package/dist/redaction.d.ts.map +1 -0
- package/dist/topology.d.ts.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/scripts/consumer-conformance.mjs +3 -2
package/dist/mcp/index.js
CHANGED
|
@@ -4158,7 +4158,103 @@ function ensureParentDir(filePath) {
|
|
|
4158
4158
|
}
|
|
4159
4159
|
}
|
|
4160
4160
|
|
|
4161
|
+
// src/redaction.ts
|
|
4162
|
+
var REDACTED_VALUE = "[redacted]";
|
|
4163
|
+
var SENSITIVE_KEY_PATTERN = /(password|passwd|token|credential|private[_-]?key|privateKey|api[_-]?key|github.*key|pem|secret)/i;
|
|
4164
|
+
var SECRET_REFERENCE_KEY_PATTERN = /(secret(ref(erence)?|key)?|secretRef|secretKey)$/i;
|
|
4165
|
+
var SENSITIVE_VALUE_PATTERNS = [
|
|
4166
|
+
/-----BEGIN [A-Z ]*PRIVATE KEY-----/,
|
|
4167
|
+
/\bghp_[A-Za-z0-9_]{20,}\b/,
|
|
4168
|
+
/\bgithub_pat_[A-Za-z0-9_]{20,}\b/,
|
|
4169
|
+
/\bxox[baprs]-[A-Za-z0-9-]{20,}\b/,
|
|
4170
|
+
/\bAKIA[0-9A-Z]{16}\b/,
|
|
4171
|
+
/\bsk-[A-Za-z0-9_-]{20,}\b/
|
|
4172
|
+
];
|
|
4173
|
+
function isSensitiveKey(key) {
|
|
4174
|
+
return SENSITIVE_KEY_PATTERN.test(key);
|
|
4175
|
+
}
|
|
4176
|
+
function isSecretReferenceKey(key) {
|
|
4177
|
+
return SECRET_REFERENCE_KEY_PATTERN.test(key);
|
|
4178
|
+
}
|
|
4179
|
+
function looksSensitiveString(value) {
|
|
4180
|
+
return SENSITIVE_VALUE_PATTERNS.some((pattern) => pattern.test(value));
|
|
4181
|
+
}
|
|
4182
|
+
function isRecord(value) {
|
|
4183
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
4184
|
+
}
|
|
4185
|
+
function redactPath(value) {
|
|
4186
|
+
return value.replace(/\/home\/[^/\s]+/g, "/home/<user>").replace(/\/Users\/[^/\s]+/g, "/Users/<user>").replace(/[A-Za-z]:\\Users\\[^\\\s]+/g, "C:\\Users\\<user>");
|
|
4187
|
+
}
|
|
4188
|
+
function redactPrivateRef(value) {
|
|
4189
|
+
const trimmed = value.trim();
|
|
4190
|
+
const scheme = trimmed.match(/^([a-z][a-z0-9+.-]*:\/\/)/i);
|
|
4191
|
+
if (scheme)
|
|
4192
|
+
return `${scheme[1]}<redacted>`;
|
|
4193
|
+
const colon = trimmed.match(/^([a-z][a-z0-9+.-]*):/i);
|
|
4194
|
+
if (colon)
|
|
4195
|
+
return `${colon[1]}:<redacted>`;
|
|
4196
|
+
return "<private-manifest-ref:redacted>";
|
|
4197
|
+
}
|
|
4198
|
+
function redactIdentifier(value) {
|
|
4199
|
+
return value.replace(/[^a-zA-Z0-9_.-]/g, "_").slice(0, 80) || "adapter";
|
|
4200
|
+
}
|
|
4201
|
+
function redactSensitiveValue(value, key = "") {
|
|
4202
|
+
if (typeof value === "string") {
|
|
4203
|
+
if (isSensitiveKey(key) && !(isSecretReferenceKey(key) && !looksSensitiveString(value))) {
|
|
4204
|
+
return REDACTED_VALUE;
|
|
4205
|
+
}
|
|
4206
|
+
if (looksSensitiveString(value))
|
|
4207
|
+
return REDACTED_VALUE;
|
|
4208
|
+
return redactPath(value);
|
|
4209
|
+
}
|
|
4210
|
+
if (Array.isArray(value)) {
|
|
4211
|
+
return value.map((entry) => redactSensitiveValue(entry, key));
|
|
4212
|
+
}
|
|
4213
|
+
if (isRecord(value)) {
|
|
4214
|
+
const redacted = {};
|
|
4215
|
+
for (const [entryKey, entryValue] of Object.entries(value)) {
|
|
4216
|
+
redacted[entryKey] = redactSensitiveValue(entryValue, entryKey);
|
|
4217
|
+
}
|
|
4218
|
+
return redacted;
|
|
4219
|
+
}
|
|
4220
|
+
return value;
|
|
4221
|
+
}
|
|
4222
|
+
function publicMetadataKeys(metadata) {
|
|
4223
|
+
return Object.keys(metadata ?? {}).filter((key) => !isSensitiveKey(key)).sort();
|
|
4224
|
+
}
|
|
4225
|
+
function redactMetadata(metadata) {
|
|
4226
|
+
return redactSensitiveValue(metadata ?? {});
|
|
4227
|
+
}
|
|
4228
|
+
function redactManifestForDiagnostics(machine) {
|
|
4229
|
+
const metadata = redactMetadata(machine.metadata);
|
|
4230
|
+
for (const key of ["user", "username", "login"]) {
|
|
4231
|
+
if (typeof metadata[key] === "string")
|
|
4232
|
+
metadata[key] = REDACTED_VALUE;
|
|
4233
|
+
}
|
|
4234
|
+
return {
|
|
4235
|
+
id: machine.id,
|
|
4236
|
+
hostname: machine.hostname ? REDACTED_VALUE : undefined,
|
|
4237
|
+
sshAddress: machine.sshAddress ? REDACTED_VALUE : undefined,
|
|
4238
|
+
tailscaleName: machine.tailscaleName ? REDACTED_VALUE : undefined,
|
|
4239
|
+
platform: machine.platform,
|
|
4240
|
+
connection: machine.connection,
|
|
4241
|
+
workspacePath: redactPath(machine.workspacePath),
|
|
4242
|
+
bunPath: machine.bunPath ? redactPath(machine.bunPath) : undefined,
|
|
4243
|
+
tags: machine.tags ?? [],
|
|
4244
|
+
metadata,
|
|
4245
|
+
packages: machine.packages?.map((pkg) => ({ ...pkg })),
|
|
4246
|
+
apps: machine.apps?.map((app) => ({ ...app })),
|
|
4247
|
+
files: machine.files?.map((file) => ({
|
|
4248
|
+
...file,
|
|
4249
|
+
source: redactPath(file.source),
|
|
4250
|
+
target: redactPath(file.target)
|
|
4251
|
+
}))
|
|
4252
|
+
};
|
|
4253
|
+
}
|
|
4254
|
+
|
|
4161
4255
|
// src/manifests.ts
|
|
4256
|
+
var PRIVATE_MANIFEST_REF_ENV = "HASNA_MACHINES_PRIVATE_MANIFEST_REF";
|
|
4257
|
+
var PRIVATE_MANIFEST_BACKEND_ENV = "HASNA_MACHINES_PRIVATE_MANIFEST_BACKEND";
|
|
4162
4258
|
var packageSchema = exports_external.object({
|
|
4163
4259
|
name: exports_external.string(),
|
|
4164
4260
|
manager: exports_external.enum(["bun", "brew", "apt", "custom"]).optional(),
|
|
@@ -4211,6 +4307,42 @@ function normalizePlatform() {
|
|
|
4211
4307
|
function normalizeMachines(machines) {
|
|
4212
4308
|
return [...machines].sort((left, right) => left.id.localeCompare(right.id));
|
|
4213
4309
|
}
|
|
4310
|
+
function inferPrivateBackend(rawRef, explicitBackend) {
|
|
4311
|
+
if (explicitBackend?.trim())
|
|
4312
|
+
return explicitBackend.trim();
|
|
4313
|
+
const scheme = rawRef.trim().match(/^([a-z][a-z0-9+.-]*)(?::\/\/|:)/i);
|
|
4314
|
+
return scheme?.[1] ?? null;
|
|
4315
|
+
}
|
|
4316
|
+
function fileSourceRef(path) {
|
|
4317
|
+
return {
|
|
4318
|
+
kind: "file",
|
|
4319
|
+
ref: redactPath(path),
|
|
4320
|
+
backend: "file",
|
|
4321
|
+
private: false,
|
|
4322
|
+
publicSafe: true
|
|
4323
|
+
};
|
|
4324
|
+
}
|
|
4325
|
+
function privateSourceRef(rawRef, backend) {
|
|
4326
|
+
return {
|
|
4327
|
+
kind: "private-ref",
|
|
4328
|
+
ref: redactPrivateRef(rawRef),
|
|
4329
|
+
backend: inferPrivateBackend(rawRef, backend),
|
|
4330
|
+
private: true,
|
|
4331
|
+
publicSafe: true
|
|
4332
|
+
};
|
|
4333
|
+
}
|
|
4334
|
+
function privateRefFromOptions(options) {
|
|
4335
|
+
const env = options.env ?? process.env;
|
|
4336
|
+
return options.privateRef?.trim() || env[PRIVATE_MANIFEST_REF_ENV]?.trim() || env["MACHINES_PRIVATE_MANIFEST_REF"]?.trim() || null;
|
|
4337
|
+
}
|
|
4338
|
+
function getManifestSourceRef(options = {}) {
|
|
4339
|
+
const rawPrivateRef = privateRefFromOptions(options);
|
|
4340
|
+
if (rawPrivateRef) {
|
|
4341
|
+
const env = options.env ?? process.env;
|
|
4342
|
+
return privateSourceRef(rawPrivateRef, options.privateBackend ?? env[PRIVATE_MANIFEST_BACKEND_ENV]);
|
|
4343
|
+
}
|
|
4344
|
+
return fileSourceRef(options.path ?? getManifestPath());
|
|
4345
|
+
}
|
|
4214
4346
|
function getDefaultManifest() {
|
|
4215
4347
|
return {
|
|
4216
4348
|
version: 1,
|
|
@@ -4225,6 +4357,53 @@ function readManifest(path = getManifestPath()) {
|
|
|
4225
4357
|
const raw = JSON.parse(readFileSync2(path, "utf8"));
|
|
4226
4358
|
return fleetSchema.parse(raw);
|
|
4227
4359
|
}
|
|
4360
|
+
function readManifestWithSource(options = {}) {
|
|
4361
|
+
const path = options.path ?? getManifestPath();
|
|
4362
|
+
const source = getManifestSourceRef(options);
|
|
4363
|
+
const warnings = [];
|
|
4364
|
+
if (source.kind === "private-ref") {
|
|
4365
|
+
const rawRef = privateRefFromOptions(options);
|
|
4366
|
+
if (rawRef && options.adapter) {
|
|
4367
|
+
try {
|
|
4368
|
+
const manifest2 = options.adapter.readManifest({ source, rawRef });
|
|
4369
|
+
if (manifest2) {
|
|
4370
|
+
return {
|
|
4371
|
+
manifest: fleetSchema.parse(manifest2),
|
|
4372
|
+
info: {
|
|
4373
|
+
source,
|
|
4374
|
+
loadedFrom: "private-ref",
|
|
4375
|
+
warnings
|
|
4376
|
+
}
|
|
4377
|
+
};
|
|
4378
|
+
}
|
|
4379
|
+
warnings.push(`private_manifest_adapter_empty:${redactIdentifier(options.adapter.id)}`);
|
|
4380
|
+
} catch (error) {
|
|
4381
|
+
warnings.push(`private_manifest_adapter_failed:${redactIdentifier(options.adapter.id)}`);
|
|
4382
|
+
}
|
|
4383
|
+
} else {
|
|
4384
|
+
warnings.push("private_manifest_ref_without_adapter");
|
|
4385
|
+
}
|
|
4386
|
+
const fallbackSource = fileSourceRef(path);
|
|
4387
|
+
const manifest = readManifest(path);
|
|
4388
|
+
return {
|
|
4389
|
+
manifest,
|
|
4390
|
+
info: {
|
|
4391
|
+
source,
|
|
4392
|
+
loadedFrom: existsSync3(path) ? "fallback" : "default",
|
|
4393
|
+
fallbackSource,
|
|
4394
|
+
warnings
|
|
4395
|
+
}
|
|
4396
|
+
};
|
|
4397
|
+
}
|
|
4398
|
+
return {
|
|
4399
|
+
manifest: readManifest(path),
|
|
4400
|
+
info: {
|
|
4401
|
+
source,
|
|
4402
|
+
loadedFrom: existsSync3(path) ? "file" : "default",
|
|
4403
|
+
warnings
|
|
4404
|
+
}
|
|
4405
|
+
};
|
|
4406
|
+
}
|
|
4228
4407
|
function validateManifest(path = getManifestPath()) {
|
|
4229
4408
|
return readManifest(path);
|
|
4230
4409
|
}
|
|
@@ -4567,7 +4746,7 @@ function buildEntry(input) {
|
|
|
4567
4746
|
},
|
|
4568
4747
|
route_hints: hints,
|
|
4569
4748
|
tags: manifest?.tags ?? [],
|
|
4570
|
-
metadata: manifest?.metadata
|
|
4749
|
+
metadata: redactMetadata(manifest?.metadata)
|
|
4571
4750
|
};
|
|
4572
4751
|
}
|
|
4573
4752
|
function discoverMachineTopology(options = {}) {
|
|
@@ -4805,7 +4984,7 @@ function resolveMachineRoute(machineId, options = {}) {
|
|
|
4805
4984
|
warnings
|
|
4806
4985
|
};
|
|
4807
4986
|
}
|
|
4808
|
-
function
|
|
4987
|
+
function isRecord2(value) {
|
|
4809
4988
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
4810
4989
|
}
|
|
4811
4990
|
function metadataString(metadata, keys) {
|
|
@@ -4835,13 +5014,13 @@ function metadataStringArray(metadata, keys) {
|
|
|
4835
5014
|
function readMappedPath(input) {
|
|
4836
5015
|
for (const containerName of input.containers) {
|
|
4837
5016
|
const container = input.metadata[containerName];
|
|
4838
|
-
if (!
|
|
5017
|
+
if (!isRecord2(container))
|
|
4839
5018
|
continue;
|
|
4840
5019
|
for (const key of input.keys) {
|
|
4841
5020
|
const value = container[key];
|
|
4842
5021
|
if (typeof value === "string" && value.trim())
|
|
4843
5022
|
return value.trim();
|
|
4844
|
-
if (
|
|
5023
|
+
if (isRecord2(value)) {
|
|
4845
5024
|
const path = metadataString(value, ["path", "root", "workspacePath", "workspace_path"]);
|
|
4846
5025
|
if (path)
|
|
4847
5026
|
return path;
|
|
@@ -5095,7 +5274,7 @@ function primaryMachine(machine, projectId, primaryMachineId) {
|
|
|
5095
5274
|
return machine.tags.includes("primary");
|
|
5096
5275
|
}
|
|
5097
5276
|
function metadataKeysForDiagnostics(metadata) {
|
|
5098
|
-
return
|
|
5277
|
+
return publicMetadataKeys(metadata);
|
|
5099
5278
|
}
|
|
5100
5279
|
function resolveMachineWorkspace(options) {
|
|
5101
5280
|
const now = options.now ?? new Date;
|
|
@@ -5605,12 +5784,28 @@ function diffMachines(leftMachineId, rightMachineId) {
|
|
|
5605
5784
|
}
|
|
5606
5785
|
|
|
5607
5786
|
// src/commands/doctor.ts
|
|
5608
|
-
|
|
5609
|
-
|
|
5787
|
+
var DOCTOR_OPTIONAL_ADAPTER_DOMAINS = ["secrets", "configs", "monitor", "repos", "mcps", "shield"];
|
|
5788
|
+
function makeCheck(id, status, summary, detail, extra = {}) {
|
|
5789
|
+
const { data, ...rest } = extra;
|
|
5790
|
+
return {
|
|
5791
|
+
...rest,
|
|
5792
|
+
id,
|
|
5793
|
+
status,
|
|
5794
|
+
summary,
|
|
5795
|
+
detail,
|
|
5796
|
+
data: data ? redactSensitiveValue(data) : undefined
|
|
5797
|
+
};
|
|
5610
5798
|
}
|
|
5611
5799
|
function parseKeyValueOutput(stdout) {
|
|
5612
|
-
|
|
5613
|
-
|
|
5800
|
+
const result = {};
|
|
5801
|
+
for (const line of stdout.trim().split(`
|
|
5802
|
+
`)) {
|
|
5803
|
+
const index = line.indexOf("=");
|
|
5804
|
+
if (index <= 0)
|
|
5805
|
+
continue;
|
|
5806
|
+
result[line.slice(0, index)] = line.slice(index + 1);
|
|
5807
|
+
}
|
|
5808
|
+
return result;
|
|
5614
5809
|
}
|
|
5615
5810
|
function buildDoctorCommand() {
|
|
5616
5811
|
return [
|
|
@@ -5618,9 +5813,11 @@ function buildDoctorCommand() {
|
|
|
5618
5813
|
'manifest_path="${HASNA_MACHINES_MANIFEST_PATH:-$data_dir/machines.json}"',
|
|
5619
5814
|
'db_path="${HASNA_MACHINES_DB_PATH:-$data_dir/machines.db}"',
|
|
5620
5815
|
'notifications_path="${HASNA_MACHINES_NOTIFICATIONS_PATH:-$data_dir/notifications.json}"',
|
|
5816
|
+
`printf 'data_dir=%s\\n' "$data_dir"`,
|
|
5621
5817
|
`printf 'manifest_path=%s\\n' "$manifest_path"`,
|
|
5622
5818
|
`printf 'db_path=%s\\n' "$db_path"`,
|
|
5623
5819
|
`printf 'notifications_path=%s\\n' "$notifications_path"`,
|
|
5820
|
+
`printf 'data_dir_exists=%s\\n' "$(test -d "$data_dir" && printf yes || printf no)"`,
|
|
5624
5821
|
`printf 'manifest_exists=%s\\n' "$(test -e "$manifest_path" && printf yes || printf no)"`,
|
|
5625
5822
|
`printf 'db_exists=%s\\n' "$(test -e "$db_path" && printf yes || printf no)"`,
|
|
5626
5823
|
`printf 'notifications_exists=%s\\n' "$(test -e "$notifications_path" && printf yes || printf no)"`,
|
|
@@ -5628,31 +5825,139 @@ function buildDoctorCommand() {
|
|
|
5628
5825
|
`printf 'ssh=%s\\n' "$(command -v ssh >/dev/null 2>&1 && printf ok || printf missing)"`,
|
|
5629
5826
|
`printf 'machines=%s\\n' "$(command -v machines 2>/dev/null || printf missing)"`,
|
|
5630
5827
|
`printf 'machines_agent=%s\\n' "$(command -v machines-agent 2>/dev/null || printf missing)"`,
|
|
5631
|
-
`printf 'machines_mcp=%s\\n' "$(command -v machines-mcp 2>/dev/null || printf missing)"
|
|
5828
|
+
`printf 'machines_mcp=%s\\n' "$(command -v machines-mcp 2>/dev/null || printf missing)"`,
|
|
5829
|
+
`printf 'sudo_noninteractive=%s\\n' "$(sudo -n true >/dev/null 2>&1 && printf ok || printf unavailable)"`,
|
|
5830
|
+
`printf 'ssh_cert_support=%s\\n' "$(ssh -Q key-cert 2>/dev/null | grep -q 'ssh-ed25519-cert-v01@openssh.com' && printf ok || printf unavailable)"`,
|
|
5831
|
+
`printf 'gh_cli=%s\\n' "$(command -v gh 2>/dev/null || printf missing)"`,
|
|
5832
|
+
`printf 'gh_auth=%s\\n' "$(gh auth status >/dev/null 2>&1 && printf ok || printf unavailable)"`,
|
|
5833
|
+
"printf 'github_app_ref=%s\\n' \"$(test -n \\\"${HASNA_GITHUB_APP_ID:-}\\\" -a -n \\\"${HASNA_GITHUB_APP_PRIVATE_KEY_REF:-}\\\" && printf configured || printf missing)\""
|
|
5632
5834
|
].join("; ");
|
|
5633
5835
|
}
|
|
5634
|
-
function
|
|
5635
|
-
|
|
5836
|
+
function fallbackAdapterCheck(domain) {
|
|
5837
|
+
return makeCheck(`${domain}-adapter`, "ok", `Optional ${domain} adapter`, `No ${domain} adapter configured; skipped optional private integration check.`, {
|
|
5838
|
+
optional: true,
|
|
5839
|
+
source: "open-machines",
|
|
5840
|
+
data: { configured: false, fallback: true }
|
|
5841
|
+
});
|
|
5842
|
+
}
|
|
5843
|
+
function sanitizeAdapterCheck(check, domain, adapterId) {
|
|
5844
|
+
const safeAdapterId = redactIdentifier(adapterId);
|
|
5845
|
+
return makeCheck(check.id.startsWith(`${domain}-`) || check.id.startsWith(`${domain}:`) ? check.id : `${domain}:${check.id}`, check.status, check.summary, String(redactSensitiveValue(check.detail)), {
|
|
5846
|
+
...check,
|
|
5847
|
+
optional: check.optional ?? true,
|
|
5848
|
+
source: check.source ? String(redactSensitiveValue(check.source)) : `adapter:${safeAdapterId}`,
|
|
5849
|
+
data: check.data ? redactSensitiveValue(check.data) : undefined
|
|
5850
|
+
});
|
|
5851
|
+
}
|
|
5852
|
+
function runOptionalAdapterChecks(context, adapters) {
|
|
5853
|
+
const checks = [];
|
|
5854
|
+
for (const domain of DOCTOR_OPTIONAL_ADAPTER_DOMAINS) {
|
|
5855
|
+
const adapter2 = adapters.find((candidate) => candidate.checks?.[domain]);
|
|
5856
|
+
const hook = adapter2?.checks?.[domain];
|
|
5857
|
+
if (!adapter2 || !hook) {
|
|
5858
|
+
checks.push(fallbackAdapterCheck(domain));
|
|
5859
|
+
continue;
|
|
5860
|
+
}
|
|
5861
|
+
try {
|
|
5862
|
+
const result = hook(context);
|
|
5863
|
+
const domainChecks = Array.isArray(result) ? result : result ? [result] : [fallbackAdapterCheck(domain)];
|
|
5864
|
+
checks.push(...domainChecks.map((check) => sanitizeAdapterCheck(check, domain, adapter2.id)));
|
|
5865
|
+
} catch {
|
|
5866
|
+
const safeAdapterId = redactIdentifier(adapter2.id);
|
|
5867
|
+
checks.push(makeCheck(`${domain}-adapter`, "warn", `Optional ${domain} adapter failed`, "Adapter failed; details are intentionally hidden to avoid leaking private refs or credentials.", {
|
|
5868
|
+
optional: true,
|
|
5869
|
+
source: `adapter:${safeAdapterId}`,
|
|
5870
|
+
data: { adapter: safeAdapterId, fallback: true }
|
|
5871
|
+
}));
|
|
5872
|
+
}
|
|
5873
|
+
}
|
|
5874
|
+
return checks;
|
|
5875
|
+
}
|
|
5876
|
+
function runDoctor(machineId = getLocalMachineId(), options = {}) {
|
|
5877
|
+
const now = options.now ?? new Date;
|
|
5878
|
+
const { manifest, info: manifestSource } = readManifestWithSource({ adapter: options.manifestAdapter ?? null });
|
|
5636
5879
|
const commandChecks = runMachineCommand(machineId, buildDoctorCommand());
|
|
5637
5880
|
const details = parseKeyValueOutput(commandChecks.stdout);
|
|
5638
5881
|
const machineInManifest = manifest.machines.find((machine) => machine.id === machineId);
|
|
5882
|
+
const optionalAdapterChecks = options.includeOptionalAdapters === false ? [] : runOptionalAdapterChecks({
|
|
5883
|
+
machineId,
|
|
5884
|
+
manifest,
|
|
5885
|
+
manifestSource,
|
|
5886
|
+
commandDetails: details,
|
|
5887
|
+
now
|
|
5888
|
+
}, options.adapters ?? []);
|
|
5639
5889
|
const checks = [
|
|
5640
|
-
makeCheck("manifest-
|
|
5641
|
-
|
|
5642
|
-
|
|
5643
|
-
|
|
5890
|
+
makeCheck("manifest-source", manifestSource.warnings.length > 0 ? "warn" : "ok", "Manifest source boundary", `${manifestSource.source.kind}:${manifestSource.source.ref} loaded from ${manifestSource.loadedFrom}`, {
|
|
5891
|
+
data: {
|
|
5892
|
+
source: manifestSource.source,
|
|
5893
|
+
loadedFrom: manifestSource.loadedFrom,
|
|
5894
|
+
fallbackSource: manifestSource.fallbackSource,
|
|
5895
|
+
warnings: manifestSource.warnings
|
|
5896
|
+
},
|
|
5897
|
+
remediation: manifestSource.warnings.length > 0 ? ["Provide a private manifest adapter or unset the private manifest ref to use the local manifest only."] : undefined
|
|
5898
|
+
}),
|
|
5899
|
+
makeCheck("manifest-entry", machineInManifest ? "ok" : "warn", machineInManifest ? "Machine exists in manifest" : "Machine missing from manifest", machineInManifest ? JSON.stringify(redactManifestForDiagnostics(machineInManifest)) : `No manifest entry for ${machineId}`, {
|
|
5900
|
+
data: {
|
|
5901
|
+
declared: Boolean(machineInManifest),
|
|
5902
|
+
machine: machineInManifest ? redactManifestForDiagnostics(machineInManifest) : null
|
|
5903
|
+
}
|
|
5904
|
+
}),
|
|
5905
|
+
makeCheck("data-dir", details["data_dir_exists"] === "yes" ? "ok" : "warn", "Data directory check", `${redactPath(details["data_dir"] || "unknown")} ${details["data_dir_exists"] === "yes" ? "exists" : "missing"}`, {
|
|
5906
|
+
data: {
|
|
5907
|
+
path: redactPath(details["data_dir"] || "unknown"),
|
|
5908
|
+
exists: details["data_dir_exists"] === "yes"
|
|
5909
|
+
}
|
|
5910
|
+
}),
|
|
5911
|
+
makeCheck("manifest-path", details["manifest_exists"] === "yes" ? "ok" : "warn", "Manifest path check", `${redactPath(details["manifest_path"] || "unknown")} ${details["manifest_exists"] === "yes" ? "exists" : "missing"}`, {
|
|
5912
|
+
data: {
|
|
5913
|
+
path: redactPath(details["manifest_path"] || "unknown"),
|
|
5914
|
+
exists: details["manifest_exists"] === "yes"
|
|
5915
|
+
}
|
|
5916
|
+
}),
|
|
5917
|
+
makeCheck("db-path", details["db_exists"] === "yes" ? "ok" : "warn", "DB path check", `${redactPath(details["db_path"] || "unknown")} ${details["db_exists"] === "yes" ? "exists" : "missing"}`, {
|
|
5918
|
+
data: {
|
|
5919
|
+
path: redactPath(details["db_path"] || "unknown"),
|
|
5920
|
+
exists: details["db_exists"] === "yes"
|
|
5921
|
+
}
|
|
5922
|
+
}),
|
|
5923
|
+
makeCheck("notifications-path", details["notifications_exists"] === "yes" ? "ok" : "warn", "Notifications path check", `${redactPath(details["notifications_path"] || "unknown")} ${details["notifications_exists"] === "yes" ? "exists" : "missing"}`, {
|
|
5924
|
+
data: {
|
|
5925
|
+
path: redactPath(details["notifications_path"] || "unknown"),
|
|
5926
|
+
exists: details["notifications_exists"] === "yes"
|
|
5927
|
+
}
|
|
5928
|
+
}),
|
|
5644
5929
|
makeCheck("bun", details["bun"] && details["bun"] !== "missing" ? "ok" : "fail", "Bun availability", details["bun"] || "missing"),
|
|
5645
5930
|
makeCheck("machines-cli", details["machines"] && details["machines"] !== "missing" ? "ok" : "warn", "machines CLI availability", details["machines"] || "missing"),
|
|
5646
5931
|
makeCheck("machines-agent-cli", details["machines_agent"] && details["machines_agent"] !== "missing" ? "ok" : "warn", "machines-agent availability", details["machines_agent"] || "missing"),
|
|
5647
5932
|
makeCheck("machines-mcp-cli", details["machines_mcp"] && details["machines_mcp"] !== "missing" ? "ok" : "warn", "machines-mcp availability", details["machines_mcp"] || "missing"),
|
|
5648
|
-
makeCheck("ssh", details["ssh"] === "ok" ? "ok" : "warn", "SSH availability", details["ssh"] || "missing")
|
|
5933
|
+
makeCheck("ssh", details["ssh"] === "ok" ? "ok" : "warn", "SSH availability", details["ssh"] || "missing"),
|
|
5934
|
+
makeCheck("sudo-noninteractive", details["sudo_noninteractive"] === "ok" ? "ok" : "warn", "Noninteractive sudo availability", details["sudo_noninteractive"] === "ok" ? "sudo -n is available" : "sudo -n unavailable; setup may require user-provided approval or password handling.", {
|
|
5935
|
+
data: { available: details["sudo_noninteractive"] === "ok" },
|
|
5936
|
+
remediation: details["sudo_noninteractive"] === "ok" ? undefined : ["Configure explicit sudo policy or run setup commands manually; do not store sudo passwords in public manifests."]
|
|
5937
|
+
}),
|
|
5938
|
+
makeCheck("ssh-cert-support", details["ssh_cert_support"] === "ok" ? "ok" : "warn", "SSH certificate support", details["ssh_cert_support"] === "ok" ? "OpenSSH reports ed25519 certificate support" : "OpenSSH certificate support not detected.", {
|
|
5939
|
+
data: { supported: details["ssh_cert_support"] === "ok" },
|
|
5940
|
+
remediation: details["ssh_cert_support"] === "ok" ? undefined : ["Install or update OpenSSH before adopting SSH certificate auth for this machine."]
|
|
5941
|
+
}),
|
|
5942
|
+
makeCheck("github-app-auth", details["github_app_ref"] === "configured" ? "ok" : "warn", "GitHub App auth references", details["github_app_ref"] === "configured" ? "GitHub App id and private-key reference are configured" : "GitHub App id/private-key reference missing; use secret references, not user tokens or raw private keys.", {
|
|
5943
|
+
data: {
|
|
5944
|
+
gh_cli: details["gh_cli"] && details["gh_cli"] !== "missing",
|
|
5945
|
+
gh_auth: details["gh_auth"] === "ok",
|
|
5946
|
+
app_ref_configured: details["github_app_ref"] === "configured"
|
|
5947
|
+
},
|
|
5948
|
+
remediation: details["github_app_ref"] === "configured" ? undefined : ["Set HASNA_GITHUB_APP_ID plus HASNA_GITHUB_APP_PRIVATE_KEY_REF or provide an equivalent open-secrets adapter."]
|
|
5949
|
+
}),
|
|
5950
|
+
...optionalAdapterChecks
|
|
5649
5951
|
];
|
|
5650
5952
|
return {
|
|
5651
5953
|
machineId,
|
|
5652
5954
|
source: commandChecks.source,
|
|
5653
|
-
|
|
5654
|
-
|
|
5655
|
-
|
|
5955
|
+
schemaVersion: 1,
|
|
5956
|
+
generatedAt: now.toISOString(),
|
|
5957
|
+
manifestSource,
|
|
5958
|
+
manifestPath: details["manifest_path"] ? redactPath(details["manifest_path"]) : undefined,
|
|
5959
|
+
dbPath: details["db_path"] ? redactPath(details["db_path"]) : undefined,
|
|
5960
|
+
notificationsPath: details["notifications_path"] ? redactPath(details["notifications_path"]) : undefined,
|
|
5656
5961
|
checks
|
|
5657
5962
|
};
|
|
5658
5963
|
}
|
|
@@ -6436,6 +6741,13 @@ function buildBaseSteps(machine) {
|
|
|
6436
6741
|
manager: "apt",
|
|
6437
6742
|
privileged: true
|
|
6438
6743
|
});
|
|
6744
|
+
steps.push({
|
|
6745
|
+
id: "linux-update-downloads",
|
|
6746
|
+
title: "Enable Linux package list refresh and download-only upgrades",
|
|
6747
|
+
command: `printf '%s\\n' 'APT::Periodic::Update-Package-Lists "1";' 'APT::Periodic::Download-Upgradeable-Packages "1";' 'APT::Periodic::Unattended-Upgrade "0";' | sudo tee /etc/apt/apt.conf.d/20auto-upgrades >/dev/null`,
|
|
6748
|
+
manager: "apt",
|
|
6749
|
+
privileged: true
|
|
6750
|
+
});
|
|
6439
6751
|
} else if (machine.platform === "macos") {
|
|
6440
6752
|
steps.push({
|
|
6441
6753
|
id: "brew-base",
|
|
@@ -6449,7 +6761,26 @@ function buildBaseSteps(machine) {
|
|
|
6449
6761
|
command: "brew install git coreutils",
|
|
6450
6762
|
manager: "brew"
|
|
6451
6763
|
});
|
|
6764
|
+
steps.push({
|
|
6765
|
+
id: "macos-update-downloads",
|
|
6766
|
+
title: "Enable macOS update checks and downloads without automatic install",
|
|
6767
|
+
command: "sudo softwareupdate --schedule on && sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticCheckEnabled -bool true && sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -int 1 && sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticallyInstallMacOSUpdates -int 0",
|
|
6768
|
+
manager: "custom",
|
|
6769
|
+
privileged: true
|
|
6770
|
+
});
|
|
6771
|
+
steps.push({
|
|
6772
|
+
id: "macos-management-readiness",
|
|
6773
|
+
title: "Report Apple management readiness without enrolling devices",
|
|
6774
|
+
command: "profiles status -type enrollment 2>/dev/null || true",
|
|
6775
|
+
manager: "custom"
|
|
6776
|
+
});
|
|
6452
6777
|
}
|
|
6778
|
+
steps.push({
|
|
6779
|
+
id: "github-app-auth-readiness",
|
|
6780
|
+
title: "Check GitHub CLI/App auth readiness without printing credentials",
|
|
6781
|
+
command: "command -v gh >/dev/null 2>&1 && gh auth status >/dev/null 2>&1 || true",
|
|
6782
|
+
manager: "custom"
|
|
6783
|
+
});
|
|
6453
6784
|
return steps;
|
|
6454
6785
|
}
|
|
6455
6786
|
function buildPackageSteps(machine) {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MachineManifest } from "./types.js";
|
|
2
|
+
export declare const REDACTED_VALUE = "[redacted]";
|
|
3
|
+
export declare function isSensitiveKey(key: string): boolean;
|
|
4
|
+
export declare function redactPath(value: string): string;
|
|
5
|
+
export declare function redactPrivateRef(value: string): string;
|
|
6
|
+
export declare function redactIdentifier(value: string): string;
|
|
7
|
+
export declare function redactSensitiveValue(value: unknown, key?: string): unknown;
|
|
8
|
+
export declare function publicMetadataKeys(metadata: Record<string, unknown> | undefined): string[];
|
|
9
|
+
export declare function redactMetadata(metadata: Record<string, unknown> | undefined): Record<string, unknown>;
|
|
10
|
+
export declare function redactManifestForDiagnostics(machine: MachineManifest): Record<string, unknown>;
|
|
11
|
+
//# sourceMappingURL=redaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../src/redaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,cAAc,eAAe,CAAC;AAa3C,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AAcD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,SAAK,GAAG,OAAO,CAsBtE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,EAAE,CAI1F;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErG;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyB9F"}
|
package/dist/topology.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../src/topology.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -35,6 +35,20 @@ export interface FleetManifest {
|
|
|
35
35
|
generatedAt?: string;
|
|
36
36
|
machines: MachineManifest[];
|
|
37
37
|
}
|
|
38
|
+
export type ManifestSourceKind = "file" | "private-ref";
|
|
39
|
+
export interface ManifestSourceRef {
|
|
40
|
+
kind: ManifestSourceKind;
|
|
41
|
+
ref: string;
|
|
42
|
+
backend: string | null;
|
|
43
|
+
private: boolean;
|
|
44
|
+
publicSafe: true;
|
|
45
|
+
}
|
|
46
|
+
export interface ManifestLoadInfo {
|
|
47
|
+
source: ManifestSourceRef;
|
|
48
|
+
loadedFrom: ManifestSourceKind | "default" | "fallback";
|
|
49
|
+
fallbackSource?: ManifestSourceRef;
|
|
50
|
+
warnings: string[];
|
|
51
|
+
}
|
|
38
52
|
export interface AgentHeartbeat {
|
|
39
53
|
machineId: string;
|
|
40
54
|
pid: number;
|
|
@@ -166,10 +180,17 @@ export interface DoctorCheck {
|
|
|
166
180
|
status: "ok" | "warn" | "fail";
|
|
167
181
|
summary: string;
|
|
168
182
|
detail: string;
|
|
183
|
+
optional?: boolean;
|
|
184
|
+
source?: string;
|
|
185
|
+
data?: Record<string, unknown>;
|
|
186
|
+
remediation?: string[];
|
|
169
187
|
}
|
|
170
188
|
export interface DoctorReport {
|
|
171
189
|
machineId: string;
|
|
172
190
|
source: "local" | "lan" | "tailscale" | "ssh";
|
|
191
|
+
schemaVersion?: 1;
|
|
192
|
+
generatedAt?: string;
|
|
193
|
+
manifestSource?: ManifestLoadInfo;
|
|
173
194
|
manifestPath?: string;
|
|
174
195
|
dbPath?: string;
|
|
175
196
|
notificationsPath?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -86,6 +86,7 @@ function packagePath(root, packageName) {
|
|
|
86
86
|
function copyPackage(source, target) {
|
|
87
87
|
if (!existsSync(source)) throw new Error(`Package source does not exist: ${source}`);
|
|
88
88
|
const sourceRoot = resolve(source);
|
|
89
|
+
const privateArtifactDir = `.${"takumi"}`;
|
|
89
90
|
cpSync(source, target, {
|
|
90
91
|
recursive: true,
|
|
91
92
|
filter: (path) => {
|
|
@@ -97,8 +98,8 @@ function copyPackage(source, target) {
|
|
|
97
98
|
&& !normalized.startsWith(".git/")
|
|
98
99
|
&& normalized !== ".hasna"
|
|
99
100
|
&& !normalized.startsWith(".hasna/")
|
|
100
|
-
&& normalized !==
|
|
101
|
-
&& !normalized.startsWith(
|
|
101
|
+
&& normalized !== privateArtifactDir
|
|
102
|
+
&& !normalized.startsWith(`${privateArtifactDir}/`);
|
|
102
103
|
},
|
|
103
104
|
});
|
|
104
105
|
}
|